UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 5.94 kB
(function(n,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue"),require("../button-edit/index.umd.js"),require("../notify/index.umd.js"),require("../tree-grid/index.umd.js"),require("../common/index.umd.js"),require("../dynamic-resolver/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","../button-edit/index.umd.js","../notify/index.umd.js","../tree-grid/index.umd.js","../common/index.umd.js","../dynamic-resolver/index.umd.js"],t):(n=typeof globalThis<"u"?globalThis:n||self,t(n["field-selector"]={},n.Vue,n.FButtonEdit,n.notify,n.treeGrid,n.common,n.dynamicResolver))})(this,function(n,t,j,x,T,v,V){"use strict";const C={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/field-selector.schema.json",title:"field-selector",description:"A Farris Input Component",type:"object",properties:{disabled:{description:"",type:"boolean",default:!1},readonly:{description:"",type:"boolean",default:"false"},modelValue:{description:"",type:"object",default:null},data:{description:"",type:"array",default:[]},idField:{description:"",type:"string",default:"id"},columns:{description:"",type:"array",default:[]},title:{description:"",type:"string",default:"字段选择器"},modalWidth:{description:"",type:"number",default:800},modalHeight:{description:"",type:"number",default:600},multiSelect:{description:"",type:"boolean",default:!1},separator:{description:"",type:"string",default:","},bindingData:{description:"",type:"array",default:[]},textField:{description:"",type:"string",default:"code"},beforeOpenDialog:{description:"",type:"object",default:null},editorParams:{description:"",type:"object",default:null},onSubmitModal:{description:"",type:"object",default:null},onFieldSelected:{description:"",type:"object",default:null},repositoryToken:{description:"",type:"object",default:null}}},O=[{field:"code",title:"绑定字段"},{field:"name",title:"名称"},{field:"fieldType",title:"字段类型"}],D=Symbol("Field_Selector Component Repository Service Token"),m={disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},modelValue:{type:[String,Array],default:null},data:{type:Array,default:[]},idField:{type:String,default:"id"},columns:{type:Array,default:O},title:{type:String,default:"字段选择器"},modalWidth:{type:Number,default:800},modalHeight:{type:Number,default:600},multiSelect:{type:Boolean,default:!1},separator:{type:String,default:","},bindingData:{type:Array,default:[]},textField:{type:String,default:"code"},beforeOpenDialog:{type:Function,default:null},editorParams:{type:Object,default:null},onSubmitModal:{type:Function,default:null},onFieldSelected:{type:Function,default:null},repositoryToken:{type:Symbol,default:null}},h=V.createPropsResolver(m,C),g=t.defineComponent({name:"FFieldSelectorContainer",props:m,emits:["selected","bindingTypeChange"],setup(e,p){var b,s;const c=t.ref(e.data),l=t.ref(e.bindingData),a=t.ref();t.watch(()=>e.data,d=>{c.value=d,a.value.updateDataSource(d),e.modelValue&&a.value.selectItemById(e.modelValue)});const S={"f-utils-fill":!0,"m-2":(b=e.bindingType)==null?void 0:b.enable,"mx-2":!((s=e.bindingType)!=null&&s.enable),border:!0};function o(d){l.value=d,p.emit("selected",d)}const r={customRowStatus:d=>(d.raw.$type!==v.FormSchemaEntityField$Type.SimpleField&&(d.disabled=!0),d)};function u(){return t.createVNode(T.FTreeGrid,{ref:a,fit:!0,data:c.value,idField:e.idField,columns:e.columns,rowNumber:{enable:!1},columnOption:{fitColumns:!0},onSelectionChange:o,rowOption:r},null)}return()=>t.createVNode("div",{class:"h-100 d-flex flex-column"},[t.createVNode("div",{class:S,style:"position:relative;border-radius:10px;"},[u()])])}}),y=t.defineComponent({name:"FFieldSelector",props:m,emits:["selected"],setup(e,p){const c='<i class="f-icon f-icon-lookup"></i>',l=t.ref(e.bindingData),a=t.ref(e.data),S=t.ref(),o=t.inject(x.F_NOTIFY_SERVICE_TOKEN);o&&(o.globalConfig={position:"top-center"});const r=t.inject(e.repositoryToken);t.watch(()=>e.data,i=>{a.value=i});const u=t.ref(e.modelValue);function b(i){l.value=i}function s(){let i="";l.value&&l.value.length&&(i=l.value.map(f=>f[e.textField]).join(e.separator)),u.value=i}t.watch(()=>e.modelValue,i=>{typeof i=="string"?u.value=i:s()});function d(i){a.value=i}function M(){return t.createVNode(g,{ref:S,data:a.value,columns:e.columns,onSelected:b,modelValue:e.modelValue,idField:e.idField,bindingData:l.value},null)}function N(){return!l.value||!l.value.length?(o.warning({message:"请先选择一条数据!"}),!1):!0}const w={title:e.title,fitContent:!1,height:e.modalHeight,width:e.modalWidth,minWidth:300,minHeight:200,showMaxButton:!0,buttons:[{name:"cancel",text:"取消",class:"btn btn-secondary",handle:i=>!0},{name:"accept",text:"确定",class:"btn btn-primary",handle:i=>N()?(s(),e.onSubmitModal&&typeof e.onSubmitModal=="function"&&!e.onSubmitModal(l.value)||e.onFieldSelected&&typeof e.onFieldSelected=="function"&&e.onFieldSelected(l.value),!0):!1}],resizeable:!0,draggable:!0};function $(){var f,F;if(!((F=(f=e.editorParams)==null?void 0:f.propertyData)==null?void 0:F.helpId))return o==null||o.warning({message:"请先配置数据源!"}),!1;if(e.beforeOpenDialog){e.beforeOpenDialog({instance:{loadData:d}});return}r&&(r==null||r.getData(e.editorParams).then(B=>d(B)))}return()=>t.createVNode(j,{modelValue:u.value,"onUpdate:modelValue":i=>u.value=i,editable:!1,disable:e.disabled,readonly:e.readonly,inputType:"text",enableClear:!1,buttonContent:c,buttonBehavior:"Modal",modalOptions:w,beforeOpen:$},{default:()=>[t.createVNode("div",{class:"h-100 d-flex flex-column"},[M()])]})}}),R={install(e){e.component(y.name,y),e.component(g.name,g)},register(e,p,c,l){e["field-selector"]=y,p["field-selector"]=h}};n.FieldSelector=y,n.FieldSelectorRepositoryToken=D,n.default=R,n.fieldSelectorProps=m,n.propsResolver=h,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});