UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 8.27 kB
(function(f,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("vue"),require("../tree-view/index.umd.js"),require("lodash-es")):typeof define=="function"&&define.amd?define(["exports","vue","../tree-view/index.umd.js","lodash-es"],o):(f=typeof globalThis<"u"?globalThis:f||self,o(f["designer-outline"]={},f.Vue,f.treeView,f.LodashES))})(this,function(f,o,F,x){"use strict";const T={data:{type:Object,default:[]},selectable:{type:Boolean,default:!1},autoCheckChildren:{type:Boolean,default:!0},cascade:{type:Boolean,default:!0},showTreeNodeIcons:{type:Boolean,default:!0},showLines:{type:Boolean,default:!1},newDataItem:{type:Object,default:{}},lineColor:{type:String,default:"#9399a0"},cellHeight:{type:Number,default:28}},h={button:{type:"button",name:"按钮"},"response-toolbar":{type:"response-toolbar",name:"工具栏"},"response-toolbar-item":{type:"response-toolbar-item",name:"按钮"},"content-container":{type:"content-container",name:"容器"},"input-group":{type:"input-group",name:"文本"},textarea:{type:"textarea",name:"多行文本"},lookup:{type:"lookup",name:"帮助"},"number-spinner":{type:"number-spinner",name:"数值"},"date-picker":{type:"date-picker",name:"日期"},switch:{type:"switch",name:"开关"},"radio-group":{type:"radio-group",name:"单选组"},"check-box":{type:"check-box",name:"复选框"},"check-group":{type:"check-group",name:"复选框组"},"combo-list":{type:"combo-list",name:"下拉列表"},"response-form":{type:"response-form",name:"卡片面板"},"response-layout":{type:"response-layout",name:"布局容器",icon:"response-layout-3"},"response-layout-item":{type:"response-layout-item",name:"布局",icon:"response-layout-1"},"tree-grid":{type:"tree-grid",name:"树表格"},"tree-grid-column":{type:"tree-grid-column",name:"树表格列"},"data-grid":{type:"data-grid",name:"表格"},"data-grid-column":{type:"data-grid-column",name:"表格列"},module:{type:"Module",name:"模块"},component:{type:"component",name:"组件"},tabs:{type:"tabs",name:"标签页"},"tab-page":{type:"tab-page",name:"标签页项",dependentParentControl:"Tab"},"tab-toolbar-item":{type:"tab-toolbar-item",name:"标签页工具栏按钮"},"time-picker":{type:"time-picker",name:"时间选择"},section:{type:"section",name:"分组面板"},"section-toolbar":{type:"section-toolbar",name:"分组面板工具栏"},"section-toolbar-item":{type:"section-toolbar-item",name:"分组面板按钮"},splitter:{type:"splitter",name:"分栏面板"},"splitter-pane":{type:"splitter-pane",name:"分栏面板项",dependentParentControl:"Splitter"},"component-ref":{type:"component-ref",name:"组件引用节点"},uploader:{type:"uploader",name:"附件上传"},"page-header":{type:"page-header",name:"页头"},"page-footer":{type:"page-footer",name:"页脚"},"tab-toolbar":{type:"tab-toolbar",name:"标签页工具栏"},fieldset:{type:"fieldset",name:"分组"},"query-solution":{type:"query-solution",name:"筛选方案"},drawer:{type:"drawer",name:"抽屉"}};var y=(a=>(a.Frame="frame",a.dataGrid="data-grid",a.listView="list-view",a.form="form",a.attachmentPanel="attachment-panel",a.modalFrame="modal-frame",a.table="table",a.appointmentCalendar="appointment-calendar",a))(y||{});function O(a,g){const c=o.ref("");function b(t){var n;let r="controlIcon mr-2 fd-i-Family ",e="";switch(t==null?void 0:t.type){case"form-group":{e=t.editor&&t.editor.type?`fd_pc-${t.editor.type}`:"";break}default:{const l=((n=h[t.type])==null?void 0:n.icon)||t.type;r+=`fd_pc-${l}`}}return r+=e,r}function m(t,r){var l;let e=t.id;const n=r==null?void 0:r.contents;if((r==null?void 0:r.type)==="splitter"&&n&&n.length===2){const d=r.direction!=="column";t.id===((l=n[0])==null?void 0:l.id)?e=d?"左侧区域":"上方区域":e=d?"右侧区域":"下方区域"}return e}function w(t){if(t.isLikeCardContainer)return"区块";const r=t.appearance&&t.appearance.class||"",e=r.split(" ");return t.id==="page-header"&&r&&r==="f-page-header"?"页头":e.includes("f-page-header-base")?"页头容器":e.includes("f-page-header-extend")?"页头扩展容器":e.includes("f-title")?"标题容器":e.includes("f-page")?"根容器":e.includes("f-page-main")?"内容区域":e.includes("f-scrollspy-content")&&t.isScrollspyContainer?"滚动监听容器":e.includes("f-grid-is-sub")?"表格容器":e.includes("f-filter-container")?"筛选条容器":"容器"}function p(t){const{componentType:r}=t;switch(r){case y.Frame:return"根组件";case y.dataGrid:case y.table:return(a==null?void 0:a.formSchemaUtils.selectNode(t,n=>n.type===(h["tree-grid"]&&h["tree-grid"].type)))?"树表格组件":"表格组件";case y.attachmentPanel:return"附件组件";case y.listView:return"列表视图组件";case y.modalFrame:return"弹窗页面";case y.appointmentCalendar:return"预约日历组件";default:if(r.startsWith("form"))return"卡片组件"}return"组件"}function S(t,r){const e=t.name||t.text||t.label||t.title||t.mainTitle;if(e&&typeof e=="string")return e.trim();switch(t.type){case"content-container":return w(t);case"splitter-pane":return m(t,r);case"component":return p(t);default:return h[t.type]&&h[t.type].name||t.id}}function k(t){const r=t.length?t[0]:null;if(!r)return;c.value=r.originalId;const e=r?`${r.originalId}-design-item`:"",n=document.getElementById(e);n&&n.click(),g.emit("selectionChanged",r.rawSchema)}return{getIcon:b,getTitle:S,onChanged:k,currentSelectedNodeId:c}}function V(a,g){const c=a.data.module?o.ref(a.data.module.components[0]):o.ref(a.data),{getIcon:b,getTitle:m}=g;function w(e,n,l,d){var s;const i=(s=a.data.module)==null?void 0:s.components.find(u=>u.id===e.component);i&&p([i],n,l,d)}function p(e,n,l,d){return e.forEach(i=>{if(i.type==="component-ref"){w(i,n,l,d);return}const s={originalId:i.id,layer:l,originalParent:d==null?void 0:d.id,name:m(i,d),type:i.type,controlIcon:b(i),rawSchema:i};n.push(x.cloneDeep(s)),(i.contents||i.buttons)&&p(i.contents||i.buttons,n,l+1,i)}),n}function S(e){const n=[],l=e.find(u=>u.layer===0);e=e.filter(u=>u.layer!==0),n.push(l);let d=l.originalId,i=0,s=1e3;for(;e.length!==0||s===0;){const u=e.find(C=>C.originalParent===d);u?(n.push(u),d=u.originalId,e=e.filter(C=>C.originalId!==d),i=0):(i-=1,d=n.slice(i)[0].originalId),s-=1}return n}function k(e){return e.forEach((n,l)=>{n.id=(l+1).toString()}),e.forEach(n=>{var l;n.parent=((l=e.find(d=>d.originalId===n.originalParent))==null?void 0:l.id)||""}),e.forEach(n=>{n.hasChildren=e.findIndex(l=>l.parent===n.id)>0}),e}function t(e){const n={originalId:a.data.module.id,layer:0,originalParent:null,name:"页面",type:"module",controlIcon:"fd-i-Family fd_pc-module",rawSchema:a.data.module};return e[0].originalParent=n.originalId,e.unshift(n),n}function r(){let e;if(c.value){const n=[];n.push(c.value);const i=p(n,[],1,null);t(i);const s=S(i);e=k(s)}return e}return{getData:r}}const E=o.defineComponent({name:"FDesignerOutline",props:T,emits:["outputValue","currentEvent","selectionChanged"],setup(a,g){const c=o.ref(),b=o.ref(a.selectable),m=o.ref(a.autoCheckChildren),w=o.ref(a.cascade),p=o.ref(a.showTreeNodeIcons),S=o.ref(a.showLines),k=o.ref(a.newDataItem),t=o.ref(a.lineColor),r=o.ref(a.cellHeight),e=o.ref([{field:"name",title:"",dataType:"string",width:400}]),n=o.inject("designer-host-service"),l=O(n,g),{onChanged:d,currentSelectedNodeId:i}=l,{getData:s}=V(a,l);let u=s();function C(){u=s(),c.value&&c.value.updateDataSource&&(c.value.updateDataSource(u),i&&c.value.clearSelection&&(c.value.clearSelection(),v({id:i.value})))}function v(N){if(!N&&c.value&&c.value.clearSelection&&c.value.clearSelection(),N&&c.value&&c.value.selectItem){const P=u.find(j=>j.originalId===N.id);P?(c.value.selectItemById(P.id),i&&(i.value=P.originalId)):i&&(i.value="")}}return g.expose({selectControlTreeNode:v,refreshControlTree:C}),o.onMounted(()=>{u.length&&c.value&&v({id:u[0].originalId})}),()=>o.createVNode("div",{class:"designer-control-tree"},[o.createVNode(F.FTreeView,{ref:c,data:u,columns:e.value,selectable:b.value,autoCheckChildren:m.value,cascade:w.value,showTreeNodeIcons:p.value,showLines:S.value,newDataItem:k.value,lineColor:t.value,cellHeight:r.value,fit:!0,iconField:"controlIcon",onSelectionChange:d},null)])}});f.ComponentType=y,f.FDesignerOutline=E,f.designerOutlineProps=T,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});