UNPKG

vxe-pc-ui

Version:
1 lines 2.44 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_core=require("@vxe-ui/core"),_vn=require("../../ui/src/vn"),_widgetInfo=require("./widget-info");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({props:{},emits:[],setup(){const g=(0,_vue.inject)("$xeFormDesign",null);if(!g)return()=>[];const n=g["reactData"],a=e=>{var t,i=e.currentTarget,r=e.dataTransfer,i=i.getAttribute("data-widget-name")||"";g.validWidgetUnique(i)?(t=g.createWidget(i),r&&r.setData("text/plain",i),n.sortWidget=null,n.dragWidget=t):e.preventDefault()},s=e=>{var t;e.preventDefault(),n.dragWidget&&(t=n.dragWidget,n.activeWidget=t,g.dispatchEvent("add-widget",{newWidget:t},e)),n.dragWidget=null,n.sortWidget=null},o=(e,t)=>{var i;g.validWidgetUnique(t)&&(i=n["widgetObjList"],t=g.createWidget(t),i.push(t),n.activeWidget=t,n.sortWidget=null,n.dragWidget=null,g.dispatchEvent("add-widget",{newWidget:t},e))},e=()=>{var e=n["widgetConfigs"];return e.map((d,e)=>{var{title:t,group:i}=d;return(0,_vue.h)("div",{key:e,class:"vxe-form-design--widget-group"},[(0,_vue.h)("div",{class:"vxe-form-design--widget-title"},i?(0,_core.getI18n)("vxe.formDesign.widget.group."+i):""+(t||"")),(0,_vue.h)("div",{class:"vxe-form-design--widget-list",onDragover(e){{var t=d;const{widgetObjList:i,dragWidget:r}=n;r&&t.children.some(e=>e.name===r.name)&&(t=_xeUtils.default.findTree(i,e=>e&&e.id===r.id,{children:"children"}))&&t.items.splice(t.index,1)}}},(e=>{const n=[];return e.children&&e.children.forEach((e,t)=>{const i=e["name"];var e=(0,_widgetInfo.getWidgetConfigTitle)(i,g),r=_core.renderer.get(i)||{},d=(0,_widgetInfo.getWidgetConfig)(i),r=r.renderFormDesignWidgetItem;n.push((0,_vue.h)("div",{key:t,class:"vxe-form-design--widget-item"},(0,_vue.h)("div",{class:"vxe-form-design--widget-box","data-widget-name":i,title:e,draggable:!0,onDragstart:a,onDragend:s},r?(0,_vn.getSlotVNs)(r({},{$formDesign:g})):[(0,_vue.h)("i",{class:["vxe-form-design--widget-item-icon",d&&d.icon||""]}),(0,_vue.h)("span",{class:"vxe-form-design--widget-item-name"},e),(0,_vue.h)("span",{class:"vxe-form-design--widget-item-add",onClick(e){o(e,i)}},[(0,_vue.h)("i",{class:(0,_core.getIcon)().FORM_DESIGN_WIDGET_ADD})])])))}),n})(d))])})};return()=>(0,_vue.h)("div",{class:"vxe-form-design--widget"},e())}});