@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 16.1 kB
JavaScript
(function(N,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("vue"),require("lodash-es")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es"],c):(N=typeof globalThis<"u"?globalThis:N||self,c(N["list-nav"]={},N.Vue,N.LodashES))})(this,function(N,c,P){"use strict";const j={},$={};function A(r){const{properties:e,title:t,ignore:s}=r,a=s&&Array.isArray(s),o=Object.keys(e).reduce((n,m)=>((!a||!s.find(d=>d===m))&&(n[m]=e[m].type==="object"&&e[m].properties?A(e[m]):P.cloneDeep(e[m].default)),n),{});if(t&&(!a||!s.find(n=>n==="id"))){const n=t.toLowerCase().replace(/-/g,"_");o.id=`${n}_${Math.random().toString().slice(2,6)}`}return o}function q(r){const{properties:e,title:t,required:s}=r;if(s&&Array.isArray(s)){const a=s.reduce((o,n)=>(o[n]=e[n].type==="object"&&e[n].properties?A(e[n]):P.cloneDeep(e[n].default),o),{});if(t&&s.find(o=>o==="id")){const o=t.toLowerCase().replace(/-/g,"_");a.id=`${o}_${Math.random().toString().slice(2,6)}`}return a}return{type:t}}function B(r,e={},t){const s=j[r];if(s){let a=q(s);const o=$[r];return a=o?o({getSchemaByType:B},a,e,t):a,a}return null}function _(r,e){const t=A(e);return Object.keys(t).reduce((s,a)=>(Object.prototype.hasOwnProperty.call(r,a)&&(s[a]&&P.isPlainObject(s[a])&&P.isPlainObject(r[a]||!r[a])?Object.assign(s[a],r[a]||{}):s[a]=r[a]),s),t),t}function E(r,e){return Object.keys(r).filter(s=>r[s]!=null).reduce((s,a)=>{if(e.has(a)){const o=e.get(a);if(typeof o=="string")s[o]=r[a];else{const n=o(a,r[a],r);Object.assign(s,n)}}else s[a]=r[a];return s},{})}function z(r,e,t=new Map){const s=_(r,e);return E(s,t)}function W(r={}){function e(l,i,p,f){if(typeof p=="number")return f[l].length===p;if(typeof p=="object"){const y=Object.keys(p)[0],b=p[y];if(y==="not")return Number(f[l].length)!==Number(b);if(y==="moreThan")return Number(f[l].length)>=Number(b);if(y==="lessThan")return Number(f[l].length)<=Number(b)}return!1}function t(l,i,p,f){return f[l]&&f[l].propertyValue&&String(f[l].propertyValue.value)===String(p)}const s=new Map([["length",e],["getProperty",t]]);Object.keys(r).reduce((l,i)=>(l.set(i,r[i]),l),s);function a(l,i){const p=l;return typeof i=="number"?[{target:p,operator:"length",param:null,value:Number(i)}]:typeof i=="boolean"?[{target:p,operator:"getProperty",param:l,value:!!i}]:typeof i=="object"?Object.keys(i).map(f=>{if(f==="length")return{target:p,operator:"length",param:null,value:i[f]};const y=f,b=i[f];return{target:p,operator:"getProperty",param:y,value:b}}):[]}function o(l){return Object.keys(l).reduce((p,f)=>{const y=a(f,l[f]);return p.push(...y),p},[])}function n(l,i){if(s.has(l.operator)){const p=s.get(l.operator);return p&&p(l.target,l.param,l.value,i)||!1}return!1}function m(l,i){return o(l).reduce((y,b)=>y&&n(b,i),!0)}function d(l,i){const p=Object.keys(l),f=p.includes("allOf"),y=p.includes("anyOf"),b=f||y,C=(b?l[b?f?"allOf":"anyOf":"allOf"]:[l]).map(O=>m(O,i));return f?!C.includes(!1):C.includes(!0)}return{parseValueSchema:d}}const D={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:"抽屉"}},U={},G={};W();function J(r,e,t=new Map,s=(n,m,d,l)=>m,a={},o=n=>n){return j[e.title]=e,$[e.title]=s,U[e.title]=a,G[e.title]=o,(n={},m=!0)=>{if(!m)return E(n,t);const d=z(n,e,t),l=Object.keys(r).reduce((i,p)=>(i[p]=r[p].default,i),{});return Object.assign(l,d)}}function Q(r,e){return{customClass:e.class,customStyle:e.style}}const X=new Map([["appearance",Q]]);function Y(r,e,t){return e}const Z={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/list-nav.schema.json",title:"list-nav",description:"A Farris Container Component",type:"object",properties:{id:{description:"The unique identifier for a list-nav",type:"string"},type:{description:"The type string of list-nav component",type:"string",default:"list-nav"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},contents:{description:"",type:"array",default:[]},size:{description:"",type:"object",properties:{width:{type:"number"},height:{type:"number"}},default:null},visible:{description:"",type:"boolean",default:!0}},required:["id","type","contents"]},H={title:"list-nav",description:"A Farris Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"类型",title:"类型",type:"string",readonly:!0}}}}},k={position:{Type:String,default:"left"},title:{Type:String,default:""},size:{Type:Number||String,default:218},collapsible:{Type:Boolean,default:!0},folded:{Type:Boolean,default:!1},disabled:{Type:Boolean,default:!1},draggable:{Type:Boolean,default:!1}},w=J(k,Z,X,Y,H),S=c.defineComponent({name:"FListNav",props:k,emits:["collapse"],setup(r,e){const t=c.ref(r.position),s=c.ref(r.title),a=c.ref(r.folded),o=c.ref(!1);function n(d){d&&d.stopPropagation(),!r.disabled&&(o.value=!0,a.value=!a.value,e.emit("collapse",a.value))}const m=c.computed(()=>{const d={},l=["top","bottom"].indexOf(t.value)>-1?"height":"width";return d[l]=a.value?"0px":r.size+"px",d});return()=>c.createVNode("div",{class:`f-list-nav f-list-nav-${t.value}`},[c.createVNode("div",{class:"f-list-nav-in",style:m.value},[c.createVNode("div",{class:"f-list-nav-main"},[e.slots.navHeader&&c.createVNode("div",{class:"f-list-nav-header"},[e.slots.navHeader()]),!e.slots.navHeader&&s.value&&c.createVNode("div",{class:"f-list-nav-header"},[c.createVNode("div",{class:"f-list-nav-title"},[s.value])]),e.slots.navContent&&c.createVNode("div",{class:"f-list-nav-content"},[e.slots.navContent()]),e.slots.navFooter&&c.createVNode("div",{class:"f-list-nav-footer"},[e.slots.navFooter()])]),r.collapsible&&c.createVNode("div",{class:["f-list-nav-toggle-sidebar",{disabled:r.disabled,active:a.value,"splitter-pane-collapse-animate":o.value}],onClick:d=>n(d)},[c.createVNode("span",{class:"triangle"},null)])])])}});function R(r,e,t){var F;const s=t&&t.getStyles&&t.getStyles()||"",a=t&&t.getDesignerClass&&t.getDesignerClass()||"",o=c.ref();function n(){return(e==null?void 0:e.schema.componentType)==="frame"?!1:t&&t.checkCanMoveComponent?t.checkCanMoveComponent():!0}function m(){return!1}function d(){return(e==null?void 0:e.schema.componentType)==="frame"?!1:t&&t.checkCanDeleteComponent?t.checkCanDeleteComponent():!0}function l(){return(e==null?void 0:e.schema.componentType)==="frame"?!0:t&&t.hideNestedPaddingInDesginerView?t.hideNestedPaddingInDesginerView():!1}function i(u){if(!u||!u.value)return null;if(u.value.schema&&u.value.schema.type==="component")return u.value;const g=c.ref(u==null?void 0:u.value.parent),h=i(g);return h||null}function p(u=e){var T;if(t!=null&&t.getDraggableDesignItemElement)return t.getDraggableDesignItemElement(u);const{componentInstance:g,designerItemElementRef:h}=u;if(!g||!g.value)return null;const{getCustomButtons:v}=g.value;return g.value.canMove||v&&((T=v())!=null&&T.length)?h:p(u.parent)}function f(u){return!!t&&t.canAccepts(u)}function y(){return(e==null?void 0:e.schema.label)||(e==null?void 0:e.schema.title)||(e==null?void 0:e.schema.name)}function b(){}function M(u,g){var h;!u||!g||(t!=null&&t.onAcceptMovedChildElement&&t.onAcceptMovedChildElement(u,g),(h=e==null?void 0:e.setupContext)==null||h.emit("dragEnd"))}function L(u,g){const{componentType:h}=u;let v=B(h,u,g);t&&t.onResolveNewComponentSchema&&(v=t.onResolveNewComponentSchema(u,v));const T=h.toLowerCase().replace(/-/g,"_");return v&&!v.id&&v.type===h&&(v.id=`${T}_${Math.random().toString().slice(2,6)}`),v}function C(u){u&&t!=null&&t.onChildElementMovedOut&&t.onChildElementMovedOut(u)}function V(...u){if(t&&t.getPropsConfig)return t.getPropsConfig(...u)}function O(){t&&t.onRemoveComponent&&t.onRemoveComponent(),e!=null&&e.schema.contents&&e.schema.contents.map(u=>{let g=u.id;u.type==="component-ref"&&(g=u.component);const h=r.value.querySelectorAll(`#${g}-design-item`);h!=null&&h.length&&Array.from(h).map(v=>{var T;(T=v==null?void 0:v.componentInstance)!=null&&T.value.onRemoveComponent&&v.componentInstance.value.onRemoveComponent()})})}function ne(){if(t&&t.getCustomButtons)return t.getCustomButtons()}function ae(u){if(t&&t.onPropertyChanged)return t.onPropertyChanged(u)}return o.value={canMove:n(),canSelectParent:m(),canDelete:d(),canNested:!l(),contents:e==null?void 0:e.schema.contents,elementRef:r,parent:(F=e==null?void 0:e.parent)==null?void 0:F.componentInstance,schema:e==null?void 0:e.schema,styles:s,designerClass:a,canAccepts:f,getBelongedComponentInstance:i,getDraggableDesignItemElement:p,getDraggingDisplayText:y,getPropConfig:V,getDragScopeElement:b,onAcceptMovedChildElement:M,onChildElementMovedOut:C,addNewChildComponentSchema:L,triggerBelongedComponentToMoveWhenMoved:!!t&&t.triggerBelongedComponentToMoveWhenMoved||c.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:!!t&&t.triggerBelongedComponentToDeleteWhenDeleted||c.ref(!1),onRemoveComponent:O,getCustomButtons:ne,onPropertyChanged:ae},o}function K(){function r(e,t){var n;if(!e)return!1;const s=((n=e.targetContainer)==null?void 0:n.componentInstance)&&e.targetContainer.componentInstance.value;if(!s)return!1;const a=s.schema.type,o=t==null?void 0:t.formSchemaUtils.getComponentById(s.belongedComponentId);return!((e.componentCategory==="input"||e.componentType==="form-group")&&![D["response-layout-item"].type,D["response-form"].type,D.fieldset.type].includes(a)||(e.componentType===D.tabs.type||e.componentType===D.section.type)&&((o==null?void 0:o.componentType)!=="frame"||![D["content-container"].type,D["splitter-pane"].type,D["response-layout-item"].type].includes(a))||e.componentType===D["query-solution"].type||e.componentType===D.fieldset.type&&a!==D["response-form"].type)}return{basalDragulaRuleForContainer:r}}class I{getTemplateRule(e,t){const s=t==null?void 0:t.formSchemaUtils,a=s==null?void 0:s.getFormTemplateRule(),o={canAccept:!0,canDelete:!0,canMove:!0};if(!a)return o;const n=this.getComponentContext(e),{componentClassList:m}=n;return m.forEach(d=>{if(!d||!a[d])return;const{canMove:l,canDelete:i,canAccept:p}=a[d];o.canMove=o.canMove&&this.resolveRuleValue(l,n),o.canDelete=o.canDelete&&this.resolveRuleValue(i,n),o.canAccept=o.canAccept&&this.resolveRuleValue(p,n)}),o}resolveRuleValue(e,t){return typeof e=="boolean"?e:this.parseRuleValueSchema(e,t)}parseRuleValueSchema(e,t){const s=e.invalidContext||[];let a=!0;for(const o of s){if(o.firstLevelChild){if(o.firstLevelChild.class){const{firstLevelChildClassList:n}=t;if(n&&!n.includes(o.firstLevelChild.class)){a=!1;continue}}if(o.firstLevelChild.type){const{firstLevelChildSchema:n}=t;if(!n||n.type!==o.firstLevelChild.type){a=!1;continue}}}if(o.secondLevelChild){if(o.secondLevelChild.class){const{secondLevelChildClassList:n}=t;if(n&&!n.includes(o.secondLevelChild.class)){a=!1;continue}}if(o.secondLevelChild.type){const{secondLevelChildSchema:n}=t;if(!n||n.type!==o.secondLevelChild.type){a=!1;continue}}}if(o.parent){if(o.parent.class){const{parentClassList:n}=t;if(n&&!n.includes(o.parent.class)){a=!1;continue}}if(o.parent.type){const{parentSchema:n}=t;if(n&&n.type!==o.parent.type){a=!1;continue}}}a=!0;break}return!a}getComponentContext(e){var M,L,C,V;const t=e.schema,s=t.appearance&&t.appearance.class||"",a=s.split(" ")||[],o=t.contents||[],n=o.length?o[0]:null,m=n&&n.appearance?n.appearance.class:"",d=m?m.split(" "):[],l=(M=n==null?void 0:n.contents)!=null&&M.length?n==null?void 0:n.contents[0]:null,i=l&&l.appearance?l.appearance.class:"",p=i?i.split(" "):[],f=t.type==="component"?(C=(L=e.parent)==null?void 0:L.parent)==null?void 0:C.schema:(V=e.parent)==null?void 0:V.schema,y=f&&f.appearance&&f.appearance.class||"",b=y?y.split(" "):[];return{componentClass:s,componentClassList:a,childContents:o,firstLevelChildSchema:n,firstLevelChildClass:m,firstLevelChildClassList:d,secondLevelChildSchema:l,secondLevelChildClass:i,secondLevelChildClassList:p,parentSchema:f,parentClass:y,parentClassList:b}}}function x(r,e){const t=new I,{canMove:s,canAccept:a,canDelete:o}=t.getTemplateRule(r,e);function n(p){return K().basalDragulaRuleForContainer(p,e)?a:!1}function m(){return"display: flex;flex-direction:column;height:100%"}function d(){return s}function l(){return o}function i(){return!s&&!o}return{canAccepts:n,getStyles:m,checkCanMoveComponent:d,checkCanDeleteComponent:l,hideNestedPaddingInDesginerView:i}}const ee=c.defineComponent({name:"FListNavDesign",props:k,emits:[],setup(r,e){const t=c.ref(),s=c.inject("designer-host-service"),a=c.inject("design-item-context"),o=x(a,s),n=R(t,a,o);n.value.canMove=!1,n.value.canNested=!1;const m=c.ref(r.position),d=c.ref(r.title),l=c.ref(!1),i=c.ref(!1),p=c.computed(()=>{const f={},y=["top","bottom"].indexOf(m.value)>-1?"height":"width";return f[y]=l.value?"0px":r.size+"px",f});return c.onMounted(()=>{t.value.componentInstance=n}),e.expose(n.value),()=>c.createVNode("div",{class:`f-list-nav f-list-nav-${m.value}`},[c.createVNode("div",{class:"f-list-nav-in",style:p.value},[c.createVNode("div",{class:"f-list-nav-main"},[e.slots.navHeader&&c.createVNode("div",{class:"f-list-nav-header"},[e.slots.navHeader()]),!e.slots.navHeader&&d.value&&c.createVNode("div",{class:"f-list-nav-header"},[c.createVNode("div",{class:"f-list-nav-title"},[d.value])]),e.slots.navContent&&c.createVNode("div",{class:"f-list-nav-content"},[e.slots.navContent()]),e.slots.navFooter&&c.createVNode("div",{class:"f-list-nav-footer"},[e.slots.navFooter()])]),r.collapsible&&c.createVNode("div",{class:["f-list-nav-toggle-sidebar",{disabled:r.disabled,active:l.value,"splitter-pane-collapse-animate":i.value}]},[c.createVNode("span",{class:"triangle"},null)])])])}}),te={install(r){r.component(S.name,S)},register(r,e,t,s){r["list-nav"]=S,e["list-nav"]=w},registerDesigner(r,e,t){r["list-nav"]=ee,e["list-nav"]=w}};N.FListNav=S,N.default=te,N.listNavProps=k,N.propsResolver=w,Object.defineProperties(N,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});