xw-drag-drop-layout
Vue实现的拖拽布局组件
1,758
| Install | |
|---|---|
npm install xw-drag-drop-layout |
|
| Latest Version: | 0.9.1 |
| Vue: | 2 |
| Last Updated: | Aug 10, 2022 |
| Links: | npm |
Maintainer: xwinfo-front
xw-drag-drop-layout
Vue实现的拖拽布局组件
使用说明
- 安装
npm i xw-drag-drop-layout
- 入口文件中引入组件定义
import 'xw-drag-drop-layout'
import 'xw-drag-drop-layout/dist/xw-drag-drop-layout.css'
- 使用
<xw-drag-drop-layout></xw-drag-drop-layout>
参数说明
| 参数 | 说明 | 类型 | 默认值 | 是否必须 |
|---|---|---|---|---|
| defaultList | 拖拽节点列表 | Array<draggerNode> | [] | true |
| defaultDraggerMargin | 拖拽节点之间的间距 | number | 5 | false |
| defaultCols | 水平方向网格数量 | number | 36 | false |
| defaultCanExceedHorizontalViewingArea | 拖拽节点是否可超出水平可视区域 | boolean | false | false |
| defaultShowGridLine | 是否展示网格线 | boolean | false | false |
| defaultAnimation | 是否启动拖拽动画 | boolean | true | false |
| defaultCanvasMode | 画布模式 | 'preview' | 'design' | 'preview' | false |
| defaultCanOverlap | 是否可重叠 | boolean | false | false |
| theme | 主题 | 'xw-white' | 'xw-black' | 'xw-white' | false |
| change | 节点列表发生变化回调 | EventEmitter<draggerNode[]> | - | - |
| drag-node-detail | 编辑节点回调 | EventEmitter | - | - |
| drag-node-export | 拖拽节点回调 | EventEmitter | - | - |
| defaultUsage | 使用方式 | string | 'dashboard' | 'generator' | false |
方法说明
setState(states: DragLayoutContainer.states): void
设置xw-drag-drop-layout组件状态,比如:
this.dragLayoutContainerRef.setState({
draggerMargin: 5,
cols: 36,
canExceedHorizontalViewingArea: true,
showGridLine: true,
animation: true
})
appendDraggerNode(node: draggerNode): void
添加拖拽节点,比如:
this.dragLayoutContainerRef.appendDraggerNode({
id: uuidv4(),
comp: 'XanwayEmpty',
w: 2,
h: 4
})
initOutsideDragNode(node: draggerNode): void
添加从外部拖拽进入画布的节点,比如:
this.$refs.dragLayoutContainer.initOutsideDragNode(
{
comp: {
tag: 'XanwayEmpty',
data: {
props: {
meta: {
a: 1,
b: 2,
c: 3
}
}
}
},
w: 5,
h: 3
}
)
类型说明
拖拽节点类型draggerNode
// contentVNode类型与vue中createElement的参数对象类型对应
interface contentVNode {
tag: string;
data?: VNodeData;
children?: VNodeChildren;
}
interface draggerNode {
id: string; // 唯一标识
title: string; // 标题
comp: contentVNode; // 内容组件对象
x: number; // 拖拽节点左上角横坐标网格索引
y: number; // 拖拽节点左上角纵坐标网格索引
w: number; // 拖拽节点宽度(占据网格数)
h: number; // 拖拽节点高度(占据网格数)
}
// from vue.d.ts
interface VNodeData {
key?: string | number;
slot?: string;
scopedSlots?: { [key: string]: ScopedSlot | undefined };
ref?: string;
refInFor?: boolean;
tag?: string;
staticClass?: string;
class?: any;
staticStyle?: { [key: string]: any };
style?: string | object[] | object;
props?: { [key: string]: any };
attrs?: { [key: string]: any };
domProps?: { [key: string]: any };
hook?: { [key: string]: Function };
on?: { [key: string]: Function | Function[] };
nativeOn?: { [key: string]: Function | Function[] };
transition?: object;
show?: boolean;
inlineTemplate?: {
render: Function;
staticRenderFns: Function[];
};
directives?: VNodeDirective[];
keepAlive?: boolean;
}
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 0.9.1 | ^2.6.11 | ||
| 0.9.0 | ^2.6.11 | ||
| 0.8.9 | ^2.6.11 | ||
| 0.8.8 | ^2.6.11 | ||
| 0.8.6 | ^2.6.11 | ||
| 0.8.5 | ^2.6.11 | ||
| 0.8.4 | ^2.6.11 | ||
| 0.8.3 | ^2.6.11 | ||
| 0.8.2 | ^2.6.11 | ||
| 0.8.1 | ^2.6.11 | ||
| 0.8.0 | ^2.6.11 | ||
| 0.7.9 | ^2.6.11 | ||
| 0.7.7 | ^2.6.11 | ||
| 0.7.6 | ^2.6.11 | ||
| 0.7.5 | ^2.6.11 | ||
| 0.7.4 | ^2.6.11 | ||
| 0.7.3 | ^2.6.11 | ||
| 0.7.2 | ^2.6.11 | ||
| 0.7.1 | ^2.6.11 | ||
| 0.7.0 | ^2.6.11 | ||
| 0.6.9 | ^2.6.11 | ||
| 0.6.8 | ^2.6.11 | ||
| 0.6.7 | ^2.6.11 | ||
| 0.6.6 | ^2.6.11 | ||
| 0.6.5 | ^2.6.11 | ||
| 0.6.4 | ^2.6.11 | ||
| 0.6.3 | ^2.6.11 | ||
| 0.6.2 | ^2.6.11 | ||
| 0.6.1 | ^2.6.11 | ||
| 0.6.0 | ^2.6.11 |
Showing the latest 30 of 80. See every release on npm