0.9.1 • Published 2 years ago

xw-drag-drop-layout v0.9.1

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

xw-drag-drop-layout

Vue实现的拖拽布局组件

使用说明

  1. 安装
npm i xw-drag-drop-layout
  1. 入口文件中引入组件定义
import 'xw-drag-drop-layout'
import 'xw-drag-drop-layout/dist/xw-drag-drop-layout.css'
  1. 使用
<xw-drag-drop-layout></xw-drag-drop-layout>

参数说明

参数说明类型默认值是否必须
defaultList拖拽节点列表Array\<draggerNode>[]true
defaultDraggerMargin拖拽节点之间的间距number5false
defaultCols水平方向网格数量number36false
defaultCanExceedHorizontalViewingArea拖拽节点是否可超出水平可视区域booleanfalsefalse
defaultShowGridLine是否展示网格线booleanfalsefalse
defaultAnimation是否启动拖拽动画booleantruefalse
defaultCanvasMode画布模式'preview' | 'design''preview'false
defaultCanOverlap是否可重叠booleanfalsefalse
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;
}
0.8.9

2 years ago

0.8.8

2 years ago

0.9.0

2 years ago

0.9.1

2 years ago

0.8.5

2 years ago

0.6.7

2 years ago

0.4.9

2 years ago

0.8.4

2 years ago

0.6.6

2 years ago

0.4.8

2 years ago

0.6.9

2 years ago

0.8.6

2 years ago

0.6.8

2 years ago

0.7.2

2 years ago

0.5.4

2 years ago

0.7.1

2 years ago

0.5.3

2 years ago

0.7.4

2 years ago

0.5.6

2 years ago

0.7.3

2 years ago

0.5.5

2 years ago

0.5.0

2 years ago

0.7.0

2 years ago

0.5.2

2 years ago

0.5.1

2 years ago

0.7.9

2 years ago

0.7.6

2 years ago

0.5.8

2 years ago

0.7.5

2 years ago

0.5.7

2 years ago

0.7.7

2 years ago

0.5.9

2 years ago

0.8.1

2 years ago

0.6.3

2 years ago

0.4.5

2 years ago

0.8.0

2 years ago

0.6.2

2 years ago

0.4.4

2 years ago

0.8.3

2 years ago

0.6.5

2 years ago

0.4.7

2 years ago

0.8.2

2 years ago

0.6.4

2 years ago

0.4.6

2 years ago

0.6.1

2 years ago

0.6.0

2 years ago

0.4.3

2 years ago

0.4.2

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.3.9

2 years ago

0.3.8

2 years ago

0.3.7

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.0

2 years ago

0.2.9

2 years ago

0.2.8

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago