UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 19.5 kB
(function(h,S){typeof exports=="object"&&typeof module<"u"?module.exports=S(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"],S):(h=typeof globalThis<"u"?globalThis:h||self,h.section=S(h.Section,h.common,h.FResponseToolbarDesign,h.dynamicResolver,h.responseToolbar,h.designerCanvas,h.Vue,h.propertyPanel))})(this,function(h,S,k,A,G,C,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=A.createPropsResolver(h.sectionToolbarItemProps,_);function K(t,e,o){return e?{enableAccordion:o.accordionMode}:{enableAccordion:""}}function Z(t,e){var o;return{buttons:e.buttons,buttonPosition:e.position,buttonsClass:(o=e.appearance)==null?void 0:o.class,buttonsVisible:e.visible}}const D=new Map([["appearance",A.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)||"",l=e.elementRef,a=window.getComputedStyle(l);a&&a.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),l=e.parentComponentInstance,a=t.getSchemaByType("section");Object.assign(a,{id:`section-${o}`,appearance:{class:"f-section-in-mainsubcard"},mainTitle:e.mainTitle||a.mainTitle||"标题"});const d=t.getSchemaByType("content-container");Object.assign(d,{id:`container-${o}`,appearance:{class:"f-struct-wrapper"},contents:[a]});const p=l.schema,x=((f=p.appearance)==null?void 0:f.class)||"";switch(p&&p.type){case C.DgControl["splitter-pane"].type:{a.appearance.class="f-section-in-main",x.includes("f-page-child-fill")&&(d.appearance.class+=" f-struct-wrapper-child",a.fill=!0);break}case C.DgControl["content-container"].type:p.isLikeCardContainer&&x.includes("f-struct-like-card-child-fill")&&(d.appearance.class+=" f-struct-wrapper-child",a.fill=!0)}return J(d,l),d}function F(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:""},extendClass:{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},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=A.createPropsResolver(h.sectionProps,R,D,F),Y=A.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:""}}),ee=A.createPropsResolver(G.responseToolbarProps,W,D,k.schemaResolver),te=A.createPropsResolver(B,R,D,F);class ne extends U.BaseControlProperty{constructor(e,o){super(e,o)}getPropertyConfig(e){const o=this.getBasicPropConfig(e),l=this.getAppearanceProperties(e),a=this.getBehaviorConfig(e,""),d=this.getExtendConfig(e),p=this.getHeaderTemplateConfig(e);return this.propertyConfig.categories={basic:o,appearance:l,behavior:a,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}},enableAccordion:{title:"面板收折",type:"enum",description:"是否启用分组面板的收折特性",editor:{type:"combo-list",textField:"value",valueField:"key",idField:"key",editable:!1,data:[{key:"",value:"不启用"},{key:"default",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,l){if(o)switch(o&&o.propertyID){case"mainTitle":{o.needRefreshControlTree=!0;break}case"showHeader":{const a=document.getElementsByClassName("dgComponentFocused");Array.from(a).forEach(d=>d.classList.remove("dgComponentFocused")),C.canvasChanged.value++;break}}}}}getExtendConfig(e){return{title:"扩展",description:"",properties:{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"}},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"}},toolbarHtml:{title:"工具栏模板",type:"string",description:"为工具栏区域指定HTML模板",refreshPanelAfterChanged:!0,editor:{type:"code-editor",language:"html"}}}}}}function oe(t,e){const o=new C.UseTemplateDragAndDropRules,l=t.schema;function a(i){return new ne(i,e).getPropertyConfig(l)}function d(i){var u;const{componentType:r,sourceType:s,sourceElement:c}=i;return!!(s==="control"&&r===C.DgControl["filter-bar"].type||s==="move"&&r===C.DgControl["content-container"].type&&((u=c==null?void 0:c.className)!=null&&u.includes("f-filter-container")))}function p(i,r){var u,m;const c=(e==null?void 0:e.schemaService).getTreeGridUdtFields(i);if(c){const v=c.find(j=>j.key===r),$=v&&v.field;if((m=(u=$==null?void 0:$.type)==null?void 0:u.name)!=null&&m.includes("PathHierarchyInfo"))return!0}}function x(i){var j;if(!e)return!1;const r=(j=l.appearance)==null?void 0:j.class,{sourceType:s}=i,{formSchemaUtils:c}=e;if(!(r&&(r.includes("f-section-grid")||r.includes("f-section-treegrid"))))return!1;const m=c.getViewModelIdByComponentId(t.componentInstance.value.belongedComponentId),v=c.getViewModelById(m);if(v&&v.bindTo!=="/")return!1;const $=c.selectNode(l,E=>E.type==="tree-grid");if($&&!p(m,$.udtField))return!1;if(s==="move")return!0;if(s==="control"){if(l.contents&&l.contents.find(V=>{var I,z;return V.type===C.DgControl["content-container"].type&&((z=(I=V.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===C.DgControl["query-solution"].type))return!1}return!0}function f(i){if(d(i))return x(i);if(!C.useDragulaCommonRule().basalDragulaRuleForContainer(i,e))return!1;const{canAccept:s}=o.getTemplateRule(t,e);return s}function w(){const{canDelete:i}=o.getTemplateRule(t,e);return i}function g(){const{canMove:i}=o.getTemplateRule(t,e);return i}function y(){const{canMove:i,canDelete:r}=o.getTemplateRule(t,e);return!i&&!r}function b(i){i&&(i.stopPropagation(),i.preventDefault());const{schema:r}=t;(!r.toolbar||!r.toolbar.buttons)&&(r.toolbar={id:`${r.id}_toolbar`,type:"section-toolbar",buttons:[]});const s=A.getSchemaByType("section-toolbar-item");s.id=`section_toolbar_item_${Math.random().toString().slice(2,6)}`,r.toolbar.buttons.push(s)}function T(){var u;const{schema:i}=t,r=e==null?void 0:e.formSchemaUtils;if(i.showHeader===!1||!r)return;const s=r.selectNode(i,m=>m.type===C.DgControl["response-form"].type),c=((u=i.toolbar)==null?void 0:u.buttons)||[];if(!s&&c.length===0)return[{id:"appendToolbar",title:"新增按钮",icon:"f-icon f-icon-plus-circle text-white",onClick:m=>b(m)}]}function P(){var c,u;if(!e)return;const i=e.formSchemaUtils.getExpressions();if(!i||!i.length)return;const{schema:r}=t;if(!((u=(c=r.toolbar)==null?void 0:c.buttons)!=null&&u.length))return;const s=m=>{m.forEach(v=>{const $=i.findIndex(j=>j.target===v.id);$>-1&&i.splice($,1),v.children&&v.children.length&&s(v.children)})};s(r.toolbar.buttons)}function N(){P()}function M(){var i,r;if(t&&e){const{formSchemaUtils:s}=e,c=s.getControlBasicInfoMap(),{schema:u}=t;c.set(u.id,{componentTitle:u.mainTitle,parentPathName:u.mainTitle}),(r=(i=u.toolbar)==null?void 0:i.buttons)!=null&&r.length&&u.toolbar.buttons.map(m=>{var v;c.set(m.id,{componentTitle:m.text,parentPathName:`${u.mainTitle} > ${m.text}`}),(v=m.children)!=null&&v.length&&m.children.map($=>{c.set($.id,{componentTitle:$.text,parentPathName:`${u.mainTitle} > ${$.text}`})})})}}return{canAccepts:f,checkCanDeleteComponent:w,checkCanMoveComponent:g,hideNestedPaddingInDesginerView:y,getPropsConfig:a,getCustomButtons:T,onRemoveComponent:N,setComponentBasicInfoMap:M}}function ie(t,e,o){let l;function a(f=1){const w=["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"],g=Array.from(document.body.querySelectorAll(w.join(","))).filter(b=>b).map(b=>{const{display:T,zIndex:P}=window.getComputedStyle(b);return T==="none"?0:parseInt(P,10)}).filter(b=>b);let y=Math.max(...g);return y<1040&&(y=1040),y+f}function d(){l=t.value.nextElementSibling;const f=document&&document.querySelector("body");f&&(f.appendChild(t.value),t.value.style.zIndex=a())}function p(){l?e.value.insertBefore(t.value,l):e.value.appendChild(t.value),t.value.style.zIndex=null}function x(){!t||!e.value||(o.value=!o.value,o.value?d():p())}return{onClickMaxMinIcon:x}}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:"")),l=n.ref(t.buttons),a=n.ref(e.schema.toolbar);a.value&&!a.value.type&&(a.value.type="section-toolbar");const d=t.componentId,p=`${d}-toolbar`,x=n.computed(()=>t.buttonPosition==="inHead"?"right":"left");function f(b,T,P,N){var M;(M=e.setupContext)==null||M.emit("selectionChange",b,T,P,N)}function w(){var b,T;return(T=(b=a.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(C.FDesignerInnerItem,{modelValue:a.value,"onUpdate:modelValue":P=>a.value=P,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:l.value,alignment:x.value,componentId:d},null)]})])]):null}function g(){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()?g():w()}function re(t,e,o,l,a,d,p){const x=n.computed(()=>t.buttonPosition),{onClickMaxMinIcon:f}=ie(l,a,d),w=n.computed(()=>t.enableMaximize),g=n.computed(()=>t.enableAccordion!==""),y=n.computed(()=>{let s={"f-section-header":!0};return e.slots.header&&(s=S.getCustomClass(s,t.headerClass)),s});function b(s){s.stopPropagation(),t.enableAccordion!==""&&(o.value=!o.value,n.nextTick(()=>{C.setPositionOfSelectedComponentBtnGroup()}))}function T(){const s=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"},[w.value?n.createVNode("span",{class:c.value,onClick:f},null):"",g.value?n.createVNode("button",{class:s.value,onClick:b},[n.createVNode("span",null,[o.value?t.collapseLabel:t.expandLabel])]):""])}function P(){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 N(){const s=n.computed(()=>{const c={"f-content":!0};return S.getCustomClass(c,t.headerContentClass)});return e.slots.headerContent?n.createVNode("div",{class:s.value},[e.slots.headerContent()]):t.headerContentHtml?n.createVNode("div",{class:s.value,innerHTML:t.headerContentHtml},null):null}function M(){return e.slots.headerTitle?e.slots.headerTitle():t.headerTitleHtml?n.createVNode("div",{innerHTML:t.headerTitleHtml},null):P()}function i(){return n.createVNode("div",{class:y.value},[M(),N(),x.value==="inHead"&&q(t,p),(w.value||g.value)&&T()])}function r(){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&&r()}const H=n.defineComponent({name:"FSectionDesign",props:B,emits:[],setup(t,e){const o=n.ref(),l=n.ref(),a=n.ref(),d=n.inject("designer-host-service"),p=n.inject("design-item-context"),x=oe(p,d),f=C.useDesignerComponent(o,p,x);f.value.styles="display: inherit;",n.onMounted(()=>{o.value.componentInstance=f}),e.expose(f.value);const w=n.ref(t.customClass),g=n.computed(()=>t.enableAccordion),y=n.ref(!0),b=n.computed(()=>t.buttonPosition),T=n.ref(!1),P=re(t,e,y,l,a,T,p),N=n.computed(()=>{const u={"f-section":!0,"f-section-accordion":g.value==="default","f-state-collapse":(g.value==="default"||g.value==="custom")&&!y.value,"f-section-custom-accordion":g.value==="custom","f-section-fill":t.fill,"f-section-maximize":T.value,"f-utils-fill":!0,"p-0":!0};return S.getCustomClass(u,w.value)}),M=n.computed(()=>{const u={"f-section-content":!0,"drag-container":!0};return S.getCustomClass(u,t.contentClass)}),i=n.computed(()=>({visibility:(g.value==="default"||g.value==="custom")&&!y.value?"hidden":"visible"})),r=n.computed(()=>{const u={"f-section-extend":!0};return S.getCustomClass(u,r.value)});function s(){return e.slots.extend&&n.createVNode("div",{class:r.value},[e.slots.extend()])}function c(){return n.createVNode("div",{class:M.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:N.value,ref:l,style:t.customStyle},[P(),s(),c()])}});return H.register=(t,e,o,l)=>{t.section=h,e.section=X,l.section={eventHandlerResolver:Y}},H.registerDesigner=(t,e,o)=>{t.section=H,e.section=te,e["section-toolbar-item"]=O,t["section-toolbar"]=k.FResponseToolbarDesign,e["section-toolbar"]=ee},S.withInstall(H)});