# doesburg Doesburg(杜斯伯格),是一个布局设计器,支持拖拽布局、拖拽设置大小。 ## 如何使用 ```html
``` ```js import VueGrid from 'alt-vue-grid-layout' let Grid = VueGrid.createGrid() let layout = [ {"x":0,"y":0,"w":2,"h":2,"i":"0"}, {"x":2,"y":0,"w":2,"h":4,"i":"1"}, {"x":4,"y":0,"w":2,"h":5,"i":"2"}, {"x":6,"y":0,"w":2,"h":3,"i":"3"}, {"x":8,"y":0,"w":2,"h":3,"i":"4"} ] new Vue({ components: { Grid }, mounted(){ this.$refs.grid.setLayout(layout) } } ``` ## 全局配置属性 属性 | 说明 | 默认值 -- | -- | -- isDraggable | Boolean类型,是否支持拖拽布局,true - 支持,false - 不支持 | true isResizable | Boolean类型,是否支持拖拽控制元素大小,true - 支持,false - 不支持 | true margin | Array类型,如 [3, 3],设置可拖拽模块左侧和下侧间距,最小值为[2, 2],表示没有间距 | [10, 10] verticalCompact | Boolean类型,设置垂直方向是否自动忽略空白向上填充 | true useCssTransforms | Boolean类型,是否使用css的transform属性 | true colNum | Number类型,栅格列数 | 12 rowHeight | Number类型,每一行的高度 | 150 maxRows | Number类型,设置布局设计器最大行数 | Infinity backgroundColor | String类型,css-like,设置所有卡片的背景颜色和透明度 | 'rgba(255,255,255,0.5)' gridItemClass | String类型,统一设置卡片的自定义class | <空> closeHandlerClass | String类型,统一设置关闭按钮的class | <空> resizeHandlerClass | String类型,统一设置 拖拽大小的class | <空> placeholderClass | String类型,统一设置占位符的class | <空> isShowOriginCloseBtn | Boolean类型,统一设置是否显示自带的关闭按钮,可以使用注册组件的this.altCardProps.close()来关闭组件 | true ## 方法 * `addWidgetType`注册组件类型 1. 注册单个组件: addWidgetType(name, widget) * 参数: * {String} name * {Object} widget * 用法: 通过layout中每一项的type类型,从注册的组件中渲染对应组件 * 示例: ```javascript import VueGrid from 'alt-vue-grid-layout' import Type1 from './Type1.vue'; let Grid = VueGrid.createGrid() Grid.addWidgetType('type1', Type1) let layout = [ {x:0, y:0, w:2, h:2, i:"0", type:"Type1"} ] ``` 2. 批量注册组件: addWidgetType(typeMap) * 参数: * {Object} typeMap * 用法: 通过layout中每一项的type类型,从注册的组件中渲染对应组件 * 示例: ```javascript import VueGrid from 'alt-vue-grid-layout' import Type1 from './Type1.vue'; import Type2 from './Type2.vue'; let Grid = VueGrid.createGrid() Grid.addWidgetType({ type1: Type1, type2: Type2 }) let layout = [ {x:0, y:0, w:2, h:2, i:"0", type:"Type1"}, {x:0, y:0, w:2, h:2, i:"0", type:"Type2"} ] ``` ## 实例方法 * setLayout(layout) * 参数: * {array} layout * {String} i * {Number} x * {Number} y * {Number} w * {Number} h * {string} type 卡片使用的组件类型 * {Number} minH 可选,设置卡片最小高度 * {Number} maxH 可选,设置卡片最大高度 * {Number} minW 可选,设置卡片最小宽度 * {Number} maxW 可选,设置卡片最大宽度 * {Boolean} isDraggable 可选,设置卡片是否可拖拽位置 * {Boolean} isResizable 可选,设置卡片是否可拖拽大小 * {Boolean} isShowOriginCloseBtn 可选,设置卡片是否显示自带的关闭按钮 * {String} gridItemClass 可选,单个卡片的class * {String} closeHandlerClass 可选,单个卡片关闭按钮的class * {String} resizeHandlerClass 可选,单个卡片拖拽大小的class * 用法: 设置布局数组,卡片内部可以通过`this.close()`来关闭卡片 * addItem(itemInfo) * 参数: * {Object} itemInfo * {Number} itemInfo.x 坐标x * {Number} itemInfo.y 坐标y * {Number} itemInfo.w 宽度 * {Number} itemInfo.h 高度 * {string} type 卡片使用的组件类型 * {Number} minH 可选,设置卡片最小高度 * {Number} maxH 可选,设置卡片最大高度 * {Number} minW 可选,设置卡片最小宽度 * {Number} maxW 可选,设置卡片最大宽度 * {Boolean} isDraggable 可选,设置卡片是否可拖拽位置 * {Boolean} isResizable 可选,设置卡片是否可拖拽大小 * {Boolean} isShowOriginCloseBtn 可选,设置卡片是否显示自带的关闭按钮 * {String} gridItemClass 可选,单个卡片的class * {String} closeHandlerClass 可选,单个卡片关闭按钮的class * {String} resizeHandlerClass 可选,单个卡片拖拽大小的class * deleteItem(id) * 参数: * {String} id 卡片id ## 事件 * move(item) 移动任意卡片 * 参数: * {Object} item 被移动的元素 * moved(item) 移动结束触发 * 参数: * {Object} item 被移动的元素 * resize(item, newSize) 拖动设置大小 * 参数: * {Object} item 被改变大小的元素 * {Object} newSize 改变后的像素大小,{width: 20px, height: 30px} * resized(item, newSize) 拖动设置大小 * 参数: * {Object} item 被改变大小的元素 * {Object} newSize 改变后的像素大小,{width: 20px, height: 30px} ## 组件 组件是一个Object,类vue对象结构,暂时不支持vue子类,如 ```javascript let type1 = { mounted(){ console.log('mounted') } } ``` 组件内部支持vue的生命周期 ### 组件事件 组件内部可以通过this.$on('eventName', fn)来监听事件 * move(item) 移动当前卡片 * 参数: * {Object} item 当前元素 * moved(item) 移动结束触发 * 参数: * {Object} item 当前元素 * resize(item, newSize) 拖动设置大小 * 参数: * {Object} item 当前元素 * {Object} newSize 改变后的像素大小,{width: 20px, height: 30px} * resized(item, newSize) 拖动设置大小 * 参数: * {Object} item 当前元素 * {Object} newSize 改变后的像素大小,{width: 20px, height: 30px} ### 组件方法 组件内部可以通过`this.altCardProps.close()`来关闭当前组件 ### 组件公共属性 组件内部可以通过`this.altCardProps.card`获取layout中当前组件的参数 ## 项目启动 ``` yarn install ``` ### 开发模式 ``` yarn run serve ``` ### 编译为页面 ``` yarn run build ``` ### 编译为库 ``` yarn run build-lib ```