vxe-pc-ui
Version:
A vue based PC component library
1 lines • 2.5 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.ViewItemComponent=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_core=require("@vxe-ui/core"),_button=_interopRequireDefault(require("../../button/src/button"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const ViewItemComponent=exports.ViewItemComponent=(0,_vue.defineComponent)({name:"FormDesignLayoutViewItem",props:{item:{type:Object,default:()=>({})},itemIndex:{type:Number,default:0},items:{type:Array,default:()=>[]}},emits:[],setup(a,{slots:o}){const s=(0,_vue.inject)("$xeFormDesign",null);if(!s)return()=>[];const u=s["reactData"],l=e=>{var t=u["widgetObjList"],e=e.currentTarget;const i=Number(e.getAttribute("data-widget-id"));e=_xeUtils.default.findTree(t,e=>e&&e.id===i,{children:"children"});e&&(u.dragWidget=null,u.sortWidget=e.item)},c=()=>{u.activeWidget=u.sortWidget,u.sortWidget=null},g=e=>{const{widgetObjList:t,sortWidget:i}=u;var r=s.internalData,n=r["lastDragTime"];if(n&&n>Date.now()-300)e.preventDefault();else if(i){var d,n=e.currentTarget;e.preventDefault();const a=Number(n.getAttribute("data-widget-id"));a!==i.id&&(n=_xeUtils.default.findTree(t,e=>e&&e.id===a,{children:"children"}))&&(d=_xeUtils.default.findTree(t,e=>e&&e.id===i.id,{children:"children"}))&&(d.parent&&"row"===d.parent.name?d.items[d.index]=s.createEmptyWidget():d.items.splice(d.index,1),n.items.splice(n.index,0,d.item),r.lastDragTime=Date.now(),s.dispatchEvent("drag-widget",{widget:d.item},e))}};return()=>{var{dragWidget:e,activeWidget:t,sortWidget:i}=u;const r=a["item"];var n=r["name"],t=t&&t.id===r.id,d=o.default;return(0,_vue.h)("div",{key:r.id,"data-widget-id":r.id,draggable:!0,class:["vxe-form-design--preview-item","widget-"+_xeUtils.default.kebabCase(n),{"is--active":t,"is--sort":i&&i.id===r.id,"is--drag":e&&e.id===r.id}],onDragstart:l,onDragend:c,onDragenter:g,onClick(e){var t;e=e,t=r,s.handleClickWidget(e,t)}},[(0,_vue.h)("div",{class:"vxe-form-design--preview-item-view vxe-form--item-row"},d?d({}):[]),t?(0,_vue.h)("div",{class:"vxe-form-design--preview-item-operate"},[(0,_vue.h)(_button.default,{icon:(0,_core.getIcon)().FORM_DESIGN_WIDGET_COPY,status:"primary",size:"mini",circle:!0,onClick(e){s.handleCopyWidget(e.$event,r)}}),(0,_vue.h)(_button.default,{icon:(0,_core.getIcon)().FORM_DESIGN_WIDGET_DELETE,status:"danger",size:"mini",circle:!0,onClick(e){s.handleRemoveWidget(e.$event,r)}})]):(0,_vue.createCommentVNode)()])}}});