UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 20.6 kB
(function(h,P){typeof exports=="object"&&typeof module<"u"?module.exports=P(require("../../components/section/index.umd.js"),require("../../components/common/index.umd.js"),require("../response-toolbar/index.umd.js"),require("../../components/dynamic-resolver/index.umd.js"),require("../../components/response-toolbar/index.umd.js"),require("../../components/designer-canvas/index.umd.js"),require("vue"),require("../../components/property-panel/index.umd.js")):typeof define=="function"&&define.amd?define(["../../components/section/index.umd.js","../../components/common/index.umd.js","../response-toolbar/index.umd.js","../../components/dynamic-resolver/index.umd.js","../../components/response-toolbar/index.umd.js","../../components/designer-canvas/index.umd.js","vue","../../components/property-panel/index.umd.js"],P):(h=typeof globalThis<"u"?globalThis:h||self,h.section=P(h.Section,h.common,h.FResponseToolbarDesign,h.dynamicResolver,h.responseToolbar,h.designerCanvas,h.Vue,h.propertyPanel))})(this,function(h,P,k,H,G,g,n,U){"use strict";const _={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/section-toolbar-item.schema.json",title:"section-toolbar-item",description:"A Farris Toolbar Item Component",type:"object",properties:{id:{description:"The unique identifier for a Response Toolbar",type:"string"},type:{description:"The type string of Response Toolbar",type:"string",default:"section-toolbar-item"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},text:{description:"按钮",type:"string",default:"按钮"},icon:{description:"图标",type:"string",default:""},disabled:{description:"禁用",type:"boolean",default:!1},visible:{description:"是否可见",type:"boolean",default:!0},onClick:{description:"点击事件",type:"string",default:""},tipsEnable:{description:"",type:"boolean",default:!1},tipsText:{description:"",type:"string",default:""},dropdownClass:{description:"处于下拉菜单时的样式",type:"string",default:""},split:{description:"",type:"boolean",default:!1}},required:["id","type","text"],events:{onClick:"点击事件"}},O=H.createPropsResolver(h.sectionToolbarItemProps,_);function K(t,e,o){return e?{enableAccordion:e}:{enableAccordion:""}}function Z(t,e){var a,r;const o={buttons:e.buttons,buttonPosition:e.position,buttonsVisible:e.visible};return(a=e.appearance)!=null&&a.class&&(o.buttonsClass=(r=e.appearance)==null?void 0:r.class),o}const V=new Map([["appearance",H.resolveAppearance],["expanded","expandStatus"],["enableAccordion",K],["toolbar",Z]]);function J(t,e){var d,p;if(!(e!=null&&e.schema))return;const o=((p=(d=e.schema)==null?void 0:d.appearance)==null?void 0:p.class)||"",a=e.elementRef,r=window.getComputedStyle(a);r&&r.display==="flex"&&!o.includes("f-page-child-fill")&&(t.appearance.class+=" d-block")}function Q(t,e){var f;const o=Math.random().toString().slice(2,6),a=e.parentComponentInstance,r=t.getSchemaByType("section");Object.assign(r,{id:`section-${o}`,appearance:{class:"f-section-in-mainsubcard"},mainTitle:e.mainTitle||r.mainTitle||"标题"});const d=t.getSchemaByType("content-container");Object.assign(d,{id:`container-${o}`,appearance:{class:"f-struct-wrapper"},contents:[r]});const p=a.schema,$=((f=p.appearance)==null?void 0:f.class)||"";switch(p&&p.type){case g.DgControl["splitter-pane"].type:{r.appearance.class="f-section-in-main",$.includes("f-page-child-fill")&&(d.appearance.class+=" f-struct-wrapper-child",r.fill=!0);break}case g.DgControl["content-container"].type:p.isLikeCardContainer&&$.includes("f-struct-like-card-child-fill")&&(d.appearance.class+=" f-struct-wrapper-child",r.fill=!0)}return J(d,a),d}function D(t,e,o){return o.parentComponentInstance?Q(t,o):e}const R={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/section.schema.json",title:"section",description:"A Farris Container Component",type:"object",properties:{id:{description:"The unique identifier for a Section",type:"string"},type:{description:"The type string of Section component",type:"string",default:"section"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},contentClass:{description:"",type:"string",default:""},contents:{description:"",type:"array",default:[]},enableAccordion:{description:"",type:"string",default:""},accordionMode:{description:"",type:"string",default:"default"},enableMaximize:{description:"",type:"boolean",default:!1},expanded:{description:"",type:"boolean",default:!0},fill:{description:"",type:"boolean",default:!1},headerClass:{description:"",type:"string",default:""},size:{description:"",type:"object",properties:{width:{type:"number"},height:{type:"number"}},default:null},showHeader:{description:"",type:"string",default:!0},mainTitle:{description:"",type:"string",default:""},subTitle:{description:"",type:"string",default:""},headerContentClass:{description:"",type:"string",default:""},extendedAreaClass:{description:"",type:"string",default:""},visible:{description:"",type:"boolean",default:!0},expandStatus:{description:"",type:"boolean",default:!0},toolbar:{description:"",type:"object",properties:{type:{type:"string",default:"section-toolbar"},position:{type:"string",default:"inHead"},buttons:{type:"array",default:[]},appearance:{description:"",type:"object",properties:{class:{type:"string",default:""}}}},default:null},headerTitleHtml:{description:"",type:"string",default:""},headerTitleRenderFunction:{description:"",type:"function",default:null},headerHtml:{description:"",type:"string",default:""},headerRenderFunction:{description:"",type:"function",default:null},headerContentHtml:{description:"",type:"string",default:""},headerContentRenderFunction:{description:"",type:"function",default:null},toolbarHtml:{description:"",type:"string",default:""},toolbarRenderFunction:{description:"",type:"function",default:null},extendedAreaHtml:{description:"",type:"string",default:""},extendedAreaRenderFunction:{description:"",type:"function",default:null},footerClass:{description:"",type:"string",default:""},footerRenderFunction:{description:"",type:"function",default:null},moreButtonClass:{description:"���������˵�ʱ����ʽ",type:"string",default:"btn-secondary"}},required:["id","type","contents"]},W={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/section-toolbar.schema.json",title:"section-toolbar",description:"A Farris Toolbar Component",type:"object",properties:{id:{description:"The unique identifier for a Section Toolbar",type:"string"},type:{description:"The type string of Section Toolbar",type:"string",default:"section-toolbar"},appearance:{description:"",type:"object",properties:{class:{type:"string",default:""}}},alignment:{description:"The alignment of Section Toolbar Button.",type:"string",default:"right"},buttons:{description:"The items of Section Toolbar.",type:"array",default:[]},buttonSize:{type:"string",default:""},visible:{description:"",type:"boolean",default:!0},moreButtonClass:{description:"处于下拉菜单时的样式",type:"string",default:"btn-secondary"}},required:["id","type","buttons"],events:{onClick:"点击事件"}},X=H.createPropsResolver(h.sectionProps,R,V,D),Y=H.createSectionEventHandlerResolver(),B=Object.assign({},h.sectionProps,{componentId:{type:String,default:""},headerTitleHtml:{type:String,default:""},headerHtml:{type:String,default:""},headerContentHtml:{type:String,default:""},toolbarHtml:{type:String,default:""},extendedAreaHtml:{type:String,default:""}}),ee=H.createPropsResolver(G.responseToolbarProps,W,V,k.schemaResolver),te=H.createPropsResolver(B,R,V,D);class ne extends U.BaseControlProperty{constructor(e,o){super(e,o)}getPropertyConfig(e){const o=this.getBasicPropConfig(e),a=this.getAppearanceProperties(e),r=this.getBehaviorConfig(e,""),d=this.getExtendConfig(e),p=this.getHeaderTemplateConfig(e);return this.propertyConfig.categories={basic:o,appearance:a,behavior:r,headerTemplate:p,extend:d},this.propertyConfig}getAppearanceProperties(e){return{title:"外观",description:"Appearance",properties:{class:{description:"组件的CSS样式",title:"class样式"},style:{description:"组件的内容样式",title:"style样式"},fill:{title:"填充内容区域",type:"boolean",description:""},showHeader:{title:"显示标题栏区域",type:"boolean",description:"",refreshPanelAfterChanged:!0},mainTitle:{title:"主标题",type:"string",description:"",visible:{showHeader:!0}},subTitle:{title:"副标题",type:"string",description:"",visible:{showHeader:!0}},enableMaximize:{title:"启用最大化",type:"boolean",description:"是否显示最大化按钮",visible:{showHeader:!0}},enableAccordion:{title:"面板收折",type:"enum",description:"是否启用分组面板的收折特性",editor:{type:"combo-list",textField:"value",valueField:"key",idField:"key",editable:!1,data:[{key:"",value:"不启用"},{key:"default",value:"启用默认收折"},{key:"custom",value:"启用自定义收折"}]},refreshPanelAfterChanged:!0},expandStatus:{title:"默认状态",type:"boolean",description:"默认面板是展开还是收起",editor:{type:"combo-list",textField:"name",valueField:"value",data:[{name:"展开",value:!0},{name:"收起",value:!1}],enableClear:!1},visible:e.enableAccordion==="default"}},setPropertyRelates(o,a){if(o)switch(o&&o.propertyID){case"mainTitle":{o.needRefreshControlTree=!0;break}case"showHeader":{const r=document.getElementsByClassName("dgComponentFocused");Array.from(r).forEach(d=>d.classList.remove("dgComponentFocused")),g.canvasChanged.value++;break}}}}}getExtendConfig(e){return{title:"扩展",description:"",properties:{extendedAreaHtml:{title:"扩展区域模板",type:"string",description:"为标题栏下方的扩展区域设置HTML模板",refreshPanelAfterChanged:!0,editor:{type:"code-editor",language:"html"}},extendedAreaClass:{title:"扩展区域class",type:"string",description:"指定扩展区域class样式"},contentClass:{title:"主内容区域class",type:"string",description:"指定主要内容区域class样式"}}}}getHeaderTemplateConfig(e){return{title:"标题栏模板配置",description:"",hide:e.showHeader===!1,properties:{headerHtml:{title:"标题栏模板",type:"string",description:"设置标题栏HTML模板,会影响收折、最大化这些展示,其他自定义模版指定失效。",refreshPanelAfterChanged:!0,editor:{type:"code-editor",language:"html"}},headerClass:{title:"标题栏class",type:"string",description:"指定标题栏整体区域class样式"},headerTitleHtml:{title:"标题模板",type:"string",description:"为标题区域指定HTML模板",refreshPanelAfterChanged:!0,editor:{type:"code-editor",language:"html"}},headerContentHtml:{title:"内容模板",type:"string",description:"为跟在标题后面的内容,指定HTML模板",refreshPanelAfterChanged:!0,editor:{type:"code-editor",language:"html"}},headerContentClass:{title:"内容区域class",type:"string",description:"指定标题栏内容区域class样式"},toolbarHtml:{title:"工具栏模板",type:"string",description:"为工具栏区域指定HTML模板",refreshPanelAfterChanged:!0,editor:{type:"code-editor",language:"html"}},buttonsClass:{title:"工具栏class",type:"string",description:"指定工具栏区域class样式",visible:e.toolbarHtml}}}}}function oe(t,e){const o=new g.UseTemplateDragAndDropRules,a=t.schema;function r(i){return new ne(i,e).getPropertyConfig(a)}function d(i){var u;const{componentType:s,sourceType:l,sourceElement:c}=i;return!!(l==="control"&&s===g.DgControl["filter-bar"].type||l==="move"&&s===g.DgControl["content-container"].type&&((u=c==null?void 0:c.className)!=null&&u.includes("f-filter-container")))}function p(i,s){var u,m;const c=(e==null?void 0:e.schemaService).getTreeGridUdtFields(i);if(c){const x=c.find(N=>N.key===s),v=x&&x.field;if((m=(u=v==null?void 0:v.type)==null?void 0:u.name)!=null&&m.includes("PathHierarchyInfo"))return!0}}function $(i){var N;if(!e)return!1;const s=(N=a.appearance)==null?void 0:N.class,{sourceType:l}=i,{formSchemaUtils:c}=e;if(!(s&&(s.includes("f-section-grid")||s.includes("f-section-treegrid"))))return!1;const m=c.getViewModelIdByComponentId(t.componentInstance.value.belongedComponentId),x=c.getViewModelById(m);if(x&&x.bindTo!=="/")return!1;const v=c.selectNode(a,E=>E.type==="tree-grid");if(v&&!p(m,v.udtField))return!1;if(l==="move")return!0;if(l==="control"){if(a.contents&&a.contents.find(F=>{var I,z;return F.type===g.DgControl["content-container"].type&&((z=(I=F.appearance)==null?void 0:I.class)==null?void 0:z.includes("f-filter-container"))}))return!1;const L=c.getComponentById("root-component");if(L&&c.selectNode(L,I=>I.type===g.DgControl["query-solution"].type))return!1}return!0}function f(i){if(d(i))return $(i);if(!g.useDragulaCommonRule().basalDragulaRuleForContainer(i,e))return!1;const{canAccept:l}=o.getTemplateRule(t,e);return l}function S(){const{canDelete:i}=o.getTemplateRule(t,e);return i}function C(){const{canMove:i}=o.getTemplateRule(t,e);return i}function y(){const{canMove:i,canDelete:s}=o.getTemplateRule(t,e);return!i&&!s}function b(i){i&&(i.stopPropagation(),i.preventDefault());const{schema:s}=t;(!s.toolbar||!s.toolbar.buttons)&&(s.toolbar={id:`${s.id}_toolbar`,type:"section-toolbar",buttons:[]});const l=H.getSchemaByType("section-toolbar-item");l.id=`section_toolbar_item_${Math.random().toString().slice(2,6)}`,s.toolbar.buttons.push(l)}function T(){var u;const{schema:i}=t,s=e==null?void 0:e.formSchemaUtils;if(i.showHeader===!1||!s)return;const l=s.selectNode(i,m=>m.type===g.DgControl["response-form"].type),c=((u=i.toolbar)==null?void 0:u.buttons)||[];if(!l&&c.length===0)return[{id:"appendToolbar",title:"新增按钮",icon:"f-icon f-icon-plus-circle text-white",onClick:m=>b(m)}]}function A(){var c,u;if(!e)return;const i=e.formSchemaUtils.getExpressions();if(!i||!i.length)return;const{schema:s}=t;if(!((u=(c=s.toolbar)==null?void 0:c.buttons)!=null&&u.length))return;const l=m=>{m.forEach(x=>{const v=i.findIndex(N=>N.target===x.id);v>-1&&i.splice(v,1),x.children&&x.children.length&&l(x.children)})};l(s.toolbar.buttons)}function M(){A()}function w(){var i,s;if(t&&e){const{formSchemaUtils:l}=e,c=l.getControlBasicInfoMap(),{schema:u}=t;c.set(u.id,{componentTitle:u.mainTitle,parentPathName:u.mainTitle}),(s=(i=u.toolbar)==null?void 0:i.buttons)!=null&&s.length&&u.toolbar.buttons.map(m=>{var x;c.set(m.id,{componentTitle:m.text,parentPathName:`${u.mainTitle} > ${m.text}`}),(x=m.children)!=null&&x.length&&m.children.map(v=>{c.set(v.id,{componentTitle:v.text,parentPathName:`${u.mainTitle} > ${v.text}`})})})}}return{canAccepts:f,checkCanDeleteComponent:S,checkCanMoveComponent:C,hideNestedPaddingInDesginerView:y,getPropsConfig:r,getCustomButtons:T,onRemoveComponent:M,setComponentBasicInfoMap:w}}function ie(t,e,o){let a;function r(f=1){const S=["body>.f-datagrid-settings-simple-host","body>div","body>farris-dialog>.farris-modal.show","body>.farris-modal.show","body>farris-filter-panel>.f-filter-panel-wrapper","body .f-sidebar-show>.f-sidebar-main","body>.popover.show","body>filter-row-panel>.f-datagrid-filter-panel","body>.f-section-maximize"],C=Array.from(document.body.querySelectorAll(S.join(","))).filter(b=>b).map(b=>{const{display:T,zIndex:A}=window.getComputedStyle(b);return T==="none"?0:parseInt(A,10)}).filter(b=>b);let y=Math.max(...C);return y<1040&&(y=1040),y+f}function d(){a=t.value.nextElementSibling;const f=document&&document.querySelector("body");f&&(f.appendChild(t.value),t.value.style.zIndex=r())}function p(){a?e.value.insertBefore(t.value,a):e.value.appendChild(t.value),t.value.style.zIndex=null}function $(){!t||!e.value||(o.value=!o.value,o.value?d():p())}return{onClickMaxMinIcon:$}}function q(t,e){var y;const o=n.computed(()=>"f-section-toolbar col-6"+(t.buttonPosition==="inHead"?" f-toolbar f-section-header--toolbar":" f-section-content--toolbar")+(t.buttonsClass?" "+t.buttonsClass:"")),a=n.ref(t.buttons),r=n.ref(e.schema.toolbar);r.value&&!r.value.type&&(r.value.type="section-toolbar");const d=t.componentId,p=`${d}-toolbar`,$=n.computed(()=>t.buttonPosition==="inHead"?"right":"left");function f(b,T,A,M){var w;(w=e.setupContext)==null||w.emit("selectionChange",b,T,A,M)}function S(){var b,T;return(T=(b=r.value)==null?void 0:b.buttons)!=null&&T.length?n.createVNode("div",{class:o.value},[n.createVNode("div",{class:"w-100",style:"flex:1"},[n.createVNode(g.FDesignerInnerItem,{modelValue:r.value,"onUpdate:modelValue":A=>r.value=A,class:"w-100 position-relative",canAdd:!1,childType:"section-toolbar-item",childLabel:"按钮",contentKey:"buttons",id:p,onSelectionChange:f,componentId:d},{default:()=>[n.createVNode(k,{customClass:"d-block text-right",moreButtonClass:t.moreButtonClass,items:a.value,alignment:$.value,componentId:d},null)]})])]):null}function C(){return n.createVNode("div",{class:o.value},[n.createVNode("div",{class:"w-100",style:"flex:1",innerHTML:t.toolbarHtml.trim()},null)])}return(y=t.toolbarHtml)!=null&&y.trim()?C():S()}function se(t,e,o,a,r,d,p){const $=n.computed(()=>t.buttonPosition),{onClickMaxMinIcon:f}=ie(a,r,d),S=n.computed(()=>t.enableMaximize),C=n.computed(()=>t.enableAccordion!==""),y=n.computed(()=>{const l={"f-section-header":!0};return P.getCustomClass(l,t.headerClass)});function b(l){l.stopPropagation(),t.enableAccordion!==""&&(o.value=!o.value,n.nextTick(()=>{g.setPositionOfSelectedComponentBtnGroup()}))}function T(){const l=n.computed(()=>({btn:!0,"f-btn-collapse-expand":!0,"f-btn-mx":!0,"f-state-expand":o.value})),c=n.computed(()=>({"f-icon":!0,"f-icon-maximize":!d.value,"f-icon-minimize":d.value}));return n.createVNode("div",{class:"f-max-accordion"},[S.value?n.createVNode("span",{class:c.value,onClick:f},null):"",C.value?n.createVNode("button",{class:l.value,onClick:b},[n.createVNode("span",null,[o.value?t.collapseLabel:t.expandLabel])]):""])}function A(){return n.createVNode("div",{class:"f-title"},[n.createVNode("h4",{class:"f-title-text"},[t.mainTitle]),t.subTitle&&n.createVNode("span",null,[t.subTitle])])}function M(){const l=n.computed(()=>{const c={"f-content":!0};return P.getCustomClass(c,t.headerContentClass)});return e.slots.headerContent?n.createVNode("div",{class:l.value},[e.slots.headerContent()]):t.headerContentHtml?n.createVNode("div",{class:l.value,innerHTML:t.headerContentHtml},null):null}function w(){return e.slots.headerTitle?e.slots.headerTitle():t.headerTitleHtml?n.createVNode("div",{innerHTML:t.headerTitleHtml},null):A()}function i(){return n.createVNode("div",{class:y.value},[w(),M(),$.value==="inHead"&&q(t,p),(S.value||C.value)&&T()])}function s(){return e.slots.header?n.createVNode("div",{class:y.value},[e.slots.header()]):t.headerHtml?n.createVNode("div",{class:y.value,innerHTML:t.headerHtml},null):i()}return()=>t.showHeader&&s()}const j=n.defineComponent({name:"FSectionDesign",props:B,emits:[],setup(t,e){const o=n.ref(),a=n.ref(),r=n.ref(),d=n.inject("designer-host-service"),p=n.inject("design-item-context"),$=oe(p,d),f=g.useDesignerComponent(o,p,$);f.value.styles="display: inherit;",n.onMounted(()=>{o.value.componentInstance=f}),e.expose(f.value);const S=n.ref(t.customClass),C=n.computed(()=>t.enableAccordion),y=n.ref(!0),b=n.computed(()=>t.buttonPosition),T=n.ref(!1),A=se(t,e,y,a,r,T,p),M=n.computed(()=>{const u={"f-section":!0,"f-section-accordion":C.value==="default","f-state-collapse":C.value&&!y.value,"f-section-custom-accordion":C.value==="custom","f-section-fill":t.fill,"f-section-maximize":T.value,"f-utils-fill":!0,"p-0":!0};return P.getCustomClass(u,S.value)}),w=n.computed(()=>{const u={"f-section-content":!0,"drag-container":!0};return P.getCustomClass(u,t.contentClass)}),i=n.computed(()=>({visibility:C.value&&!y.value?"hidden":"visible"})),s=n.computed(()=>{const u={"f-section-extend":!0};return P.getCustomClass(u,t.extendedAreaClass)});function l(){if(e.slots.extend)return n.createVNode("div",{class:s.value},[e.slots.extend()]);if(t.extendedAreaHtml)return n.createVNode("div",{class:s.value,innerHTML:t.extendedAreaHtml},null)}function c(){return n.createVNode("div",{class:w.value,ref:o,"data-dragref":`${p.schema.id}-container`,style:i.value},[b.value==="inContent"&&q(t,p),e.slots.default&&e.slots.default()])}return()=>n.createVNode("div",{class:M.value,ref:a,style:t.customStyle},[A(),l(),c()])}});return j.register=(t,e,o,a)=>{t.section=h,e.section=X,a.section={eventHandlerResolver:Y}},j.registerDesigner=(t,e,o)=>{t.section=j,e.section=te,e["section-toolbar-item"]=O,t["section-toolbar"]=k.FResponseToolbarDesign,e["section-toolbar"]=ee},P.withInstall(j)});