@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 11.3 kB
JavaScript
(function(b,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("vue"),require("../button-edit/index.umd.js"),require("lodash-es"),require("../tree-view/index.umd.js"),require("../common/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","../button-edit/index.umd.js","lodash-es","../tree-view/index.umd.js","../common/index.umd.js"],i):(b=typeof globalThis<"u"?globalThis:b||self,i(b["combo-tree"]={},b.Vue,b.FButtonEdit,b.LodashES,b.FTreeView,b.common))})(this,function(b,i,M,C,N,I){"use strict";const k={},D={};function O(e){const{properties:r,title:s,ignore:a}=e,o=a&&Array.isArray(a),p=Object.keys(r).reduce((m,y)=>((!o||!a.find(g=>g===y))&&(m[y]=r[y].type==="object"&&r[y].properties?O(r[y]):C.cloneDeep(r[y].default)),m),{});if(s&&(!o||!a.find(m=>m==="id"))){const m=s.toLowerCase().replace(/-/g,"_");p.id=`${m}_${Math.random().toString().slice(2,6)}`}return p}function $(e,r){const s=O(r);return Object.keys(s).reduce((a,o)=>(Object.prototype.hasOwnProperty.call(e,o)&&(a[o]&&C.isPlainObject(a[o])&&C.isPlainObject(e[o]||!e[o])?Object.assign(a[o],e[o]||{}):a[o]=e[o]),a),s),s}function j(e,r){return Object.keys(e).filter(a=>e[a]!=null).reduce((a,o)=>{if(r.has(o)){const p=r.get(o);if(typeof p=="string")a[p]=e[o];else{const m=p(o,e[o],e);Object.assign(a,m)}}else a[o]=e[o];return a},{})}function E(e,r,s=new Map){const a=$(e,r);return j(a,s)}function H(e={}){function r(l,u,t,n){if(typeof t=="number")return n[l].length===t;if(typeof t=="object"){const c=Object.keys(t)[0],f=t[c];if(c==="not")return Number(n[l].length)!==Number(f);if(c==="moreThan")return Number(n[l].length)>=Number(f);if(c==="lessThan")return Number(n[l].length)<=Number(f)}return!1}function s(l,u,t,n){return n[l]&&n[l].propertyValue&&String(n[l].propertyValue.value)===String(t)}const a=new Map([["length",r],["getProperty",s]]);Object.keys(e).reduce((l,u)=>(l.set(u,e[u]),l),a);function o(l,u){const t=l;return typeof u=="number"?[{target:t,operator:"length",param:null,value:Number(u)}]:typeof u=="boolean"?[{target:t,operator:"getProperty",param:l,value:!!u}]:typeof u=="object"?Object.keys(u).map(n=>{if(n==="length")return{target:t,operator:"length",param:null,value:u[n]};const c=n,f=u[n];return{target:t,operator:"getProperty",param:c,value:f}}):[]}function p(l){return Object.keys(l).reduce((t,n)=>{const c=o(n,l[n]);return t.push(...c),t},[])}function m(l,u){if(a.has(l.operator)){const t=a.get(l.operator);return t&&t(l.target,l.param,l.value,u)||!1}return!1}function y(l,u){return p(l).reduce((c,f)=>c&&m(f,u),!0)}function g(l,u){const t=Object.keys(l),n=t.includes("allOf"),c=t.includes("anyOf"),f=n||c,x=(f?l[f?n?"allOf":"anyOf":"allOf"]:[l]).map(w=>y(w,u));return n?!x.includes(!1):x.includes(!0)}return{parseValueSchema:g}}const L={},q={};H();function A(e,r,s=new Map,a=(m,y,g,l)=>y,o={},p=m=>m){return k[r.title]=r,D[r.title]=a,L[r.title]=o,q[r.title]=p,(m={},y=!0)=>{if(!y)return j(m,s);const g=E(m,r,s),l=Object.keys(e).reduce((u,t)=>(u[t]=e[t].default,u),{});return Object.assign(l,g)}}function W(e,r){return{customClass:r.class,customStyle:r.style}}const _=new Map([["appearance",W]]),U={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/combo-list.schema.json",title:"combo-tree",description:"A Farris Input Component",type:"object",properties:{id:{description:"The unique identifier for a combo list",type:"string"},type:{description:"The type string of number combo list component",type:"string",default:"combo-tree"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},binding:{description:"",type:"object",default:{}},editable:{description:"",type:"boolean",default:!0},enableLinkLabel:{description:"",type:"boolean",default:!1},label:{description:"",type:"string",default:""},lableWidth:{description:"",type:"number"},placeholder:{description:"",type:"string",default:""},valueField:{description:"",type:"string",default:"id"},titleField:{description:"",type:"string",default:"name"},textField:{description:"",type:"string",default:"name"},data:{description:"",type:"array"},readonly:{description:"",type:"boolean",default:!1},required:{description:"",type:"boolean",default:!1},tabindex:{description:"",type:"number",default:-1},textAlign:{description:"",type:"string",enum:["left","middle","right"],default:"left"},visible:{description:"",type:"boolean",default:!0},onBlur:{description:"",type:"string",default:""},onClickLinkLabel:{description:"",type:"sting",default:""},formatter:{type:"object",default:null},customRowStatus:{type:"object",default:null},minPanelWidth:{description:"",type:"number",default:160}},required:["id","type"]};function z(e,r,s){return r}var P=(e=>(e.Text="text",e.Tag="tag",e))(P||{}),V=(e=>(e.top="top",e.bottom="bottom",e.auto="auto",e))(V||{});const T={id:{type:String},data:{type:Array,default:[]},displayText:{type:String,default:""},disabled:{type:Boolean,default:!1},dropDownIcon:{type:String,default:'<span class="f-icon f-icon-arrow-60-down"></span>'},editable:{type:Boolean,default:!1},enableClear:{type:Boolean,default:!0},enableSearch:{type:Boolean,default:!1},enableTitle:{type:Boolean,default:!0},fitEditor:{type:Boolean,default:!1},forcePlaceholder:{type:Boolean,default:!1},hidePanelOnClear:{type:Boolean,default:!0},idField:{type:String,default:"id"},mapFields:{type:Object},maxHeight:{type:Number,default:350},maxLength:{type:Number},multiSelect:{type:Boolean,default:!1},modelValue:{type:String,default:""},placeholder:{type:String},placement:{type:String,default:"auto"},readonly:{type:Boolean,default:!1},remoteSearch:{type:Boolean,default:!1},separator:{type:String,default:","},tabIndex:{type:Number,default:-1},textField:{type:String,default:"name"},titleField:{type:String,default:"name"},valueField:{type:String,default:"id"},viewType:{type:String,default:"text"},focusOnCreated:{type:Boolean,default:!1},selectOnCreated:{type:Boolean,default:!1},formatter:{type:Function,default:null},editorParams:{type:Object},repositoryToken:{type:Symbol,default:null},customRowStatus:{type:Object,default:null},minPanelWidth:{type:Number,default:160}},B=A(T,U,_,z),G={data:{type:Array,default:[]},enableSearch:{type:Boolean,default:!1},idField:{type:String,default:"id"},multiSelect:{default:!1,type:Boolean},selectedValues:{type:String,default:""},separator:{type:String,default:","},textField:{type:String,default:"name"},titleField:{type:String,default:"name"},width:{type:Number},height:{type:Number},valueField:{type:String,default:"id"},formatter:{type:Function},maxHeight:{type:Number,default:350},repositoryToken:{type:Symbol,default:null},editorParams:{type:Object},customRowStatus:{type:Object,default:null}},J=i.defineComponent({name:"FComboTreeContainer",props:G,emits:["selectionChange"],setup(e,r){const s=i.ref(e.data),a=i.ref([]),o=i.ref(e.separator),p=i.ref(e.width),m=i.ref(e.height),y=i.ref(e.maxHeight),g=i.ref(String(e.selectedValues).split(o.value)),l=i.ref(),u={customRowStatus:e.customRowStatus};let t=null;e.repositoryToken&&(t=i.inject(e.repositoryToken));const n=i.computed(()=>[{field:e.textField,title:"",dataType:"string",formatter:e.formatter,width:400}]),c=i.computed(()=>{const d={};return p.value!==void 0&&(d.width=`${p.value}px`),m.value!==void 0&&(d.height=`${m.value}px`),y.value!==void 0&&y.value>0&&(d.maxHeight=`${y.value}px`,d.overflow="auto"),d});function f(d){a.value=d.map(v=>Object.assign({},v)),g.value=d.map(v=>v[e.idField]),r.emit("selectionChange",a.value)}return i.onMounted(()=>{t&&t.getData(e.editorParams).then(d=>{s.value=d}),g.value&&l.value.activeRowById(g.value[0])}),()=>i.createVNode("div",{class:"f-combo-tree-container",style:c.value},[i.createVNode(N,{ref:l,data:s.value,idField:e.idField,columns:n.value,"selection-values":g.value,onSelectionChange:f,rowOption:u},null)])}});function Q(e){const r=i.ref(""),s=i.ref(e.modelValue),a=i.ref(e.data||[]),o=i.ref(e.editable);function p(t,n=[]){return t=t||[],t.reduce((c,f)=>(c.push(f),f.children&&f.children.length&&p(f.children,c),c),n)}function m(t){const n=String(t).split(e.separator).map(d=>[d,!0]),c=new Map(n),f=[];return p(a.value,f),f.filter(d=>d.data?c.has(String(d.data[e.valueField])):c.has(String(d[e.valueField]))).map(d=>d.data?d.data:d)}function y(t){const n=m(t).map(c=>c[e.textField]).join(e.separator);r.value=o.value?n||t:n}function g(t){const n=t.split(e.separator).map(d=>[d,!0]),c=new Map(n);let f=[];return a.value[0].data?p(a.value,f):f=a.value,f=f.map(d=>d.data?d.data:d),f.filter(d=>c.has(d[e.textField])||c.has(d[e.valueField]))}function l(t){const n={};return n[e.idField]=t,n[e.textField]=t,[n]}function u(t){let n=g(t);const c=n&&n.length>0;return o.value&&!c&&(n=l(t)),n}return i.watch(()=>e.data,()=>{a.value=e.data}),i.watch([a],([t])=>{if(e.modelValue){const n=t.find(c=>c[e.valueField]===e.modelValue);n&&(r.value=n[e.textField])}}),i.watch(()=>e.modelValue,(t,n)=>{t!==n&&(s.value=t,y(t))}),y(e.modelValue),{dataSource:a,displayText:r,editable:o,modelValue:s,getItemsByDisplayText:g,getItemsByValue:m,getSelectedItemsByDisplayText:u}}const F=i.defineComponent({name:"FComboTree",props:T,emits:["clear","update:modelValue","change"],setup(e,r){const s=i.ref(),a=i.ref(e.disabled),o=i.ref(e.enableClear),p=i.ref(e.enableSearch),m=i.ref(e.readonly),{dataSource:y,displayText:g,editable:l,modelValue:u,getSelectedItemsByDisplayText:t}=Q(e),n=i.computed(()=>e.multiSelect);i.computed(()=>s.value?s.value.elementRef.getBoundingClientRect().width:0);function c(){!n.value&&s.value&&s.value.hidePopup()}function f(h){g.value=h.map(S=>S[e.textField]).join(e.separator),u.value=h.map(S=>S[e.valueField]).join(e.separator),r.emit("update:modelValue",u.value),r.emit("change",h,u.value),c()}function d(h){u.value="",r.emit("update:modelValue",""),r.emit("clear")}function v(h){const S=t(h);f(S)}i.watch([()=>e.disabled,()=>e.editable,()=>e.enableClear,()=>e.enableSearch,()=>e.readonly],([h,S,Y,Z,K])=>{a.value=h,l.value=S,o.value=Y,p.value=Z,m.value=K});const x=i.ref(),R=()=>{x.value=C.cloneDeep(y.value)},w=i.computed(()=>{var S;const h=(S=s.value)==null?void 0:S.popoverRef;return h?h.shown:!1});return()=>i.createVNode(M,{ref:s,id:e.id,disable:a.value,readonly:m.value,forcePlaceholder:e.forcePlaceholder,editable:l.value,buttonContent:e.dropDownIcon,placeholder:e.placeholder,enableClear:o.value,maxLength:e.maxLength,tabIndex:e.tabIndex,enableTitle:e.enableTitle,multiSelect:e.multiSelect,inputType:e.multiSelect?"tag":"text",popupOnClick:!0,modelValue:g.value,"onUpdate:modelValue":h=>g.value=h,onClear:d,onChange:v,focusOnCreated:e.focusOnCreated,selectOnCreated:e.selectOnCreated,beforeOpen:R,placement:e.placement,popupMinWidth:e.minPanelWidth},{default:()=>[w.value&&i.createVNode(J,{maxHeight:e.maxHeight,idField:e.idField,valueField:e.valueField,textField:e.textField,titleField:e.titleField,data:x.value,selectedValues:u.value,onSelectionChange:f,formatter:e.formatter,editorParams:e.editorParams,repositoryToken:e.repositoryToken,customRowStatus:e.customRowStatus},null)]})}});F.register=(e,r,s,a)=>{e["combo-tree"]=F,r["combo-tree"]=B};const X=I.withInstall(F);b.FComboTree=F,b.Placement=V,b.ViewType=P,b.comboTreeProps=T,b.default=X,b.propsResolver=B,Object.defineProperties(b,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});