UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 11.9 kB
(function(S,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("vue"),require("../button-edit/index.umd.js"),require("lodash-es"),require("../list-view/index.umd.js"),require("../loading/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","../button-edit/index.umd.js","lodash-es","../list-view/index.umd.js","../loading/index.umd.js"],r):(S=typeof globalThis<"u"?globalThis:S||self,r(S["search-box"]={},S.Vue,S.FButtonEdit,S.LodashES,S.FListView,S.FLoading))})(this,function(S,r,L,w,_,U){"use strict";const N={},D={};function R(t){const{properties:e,title:s,ignore:o}=t,a=o&&Array.isArray(o),f=Object.keys(e).reduce((u,h)=>((!a||!o.find(b=>b===h))&&(u[h]=e[h].type==="object"&&e[h].properties?R(e[h]):w.cloneDeep(e[h].default)),u),{});if(s&&(!a||!o.find(u=>u==="id"))){const u=s.toLowerCase().replace(/-/g,"_");f.id=`${u}_${Math.random().toString().slice(2,6)}`}return f}function X(t){const{properties:e,title:s,required:o}=t;if(o&&Array.isArray(o)){const a=o.reduce((f,u)=>(f[u]=e[u].type==="object"&&e[u].properties?R(e[u]):w.cloneDeep(e[u].default),f),{});if(s&&o.find(f=>f==="id")){const f=s.toLowerCase().replace(/-/g,"_");a.id=`${f}_${Math.random().toString().slice(2,6)}`}return a}return{type:s}}function $(t,e={},s){const o=N[t];if(o){let a=X(o);const f=D[t];return a=f?f({getSchemaByType:$},a,e,s):a,a}return null}function W(t,e){const s=R(e);return Object.keys(s).reduce((o,a)=>(Object.prototype.hasOwnProperty.call(t,a)&&(o[a]&&w.isPlainObject(o[a])&&w.isPlainObject(t[a]||!t[a])?Object.assign(o[a],t[a]||{}):o[a]=t[a]),o),s),s}function E(t,e){return Object.keys(t).filter(o=>t[o]!=null).reduce((o,a)=>{if(e.has(a)){const f=e.get(a);if(typeof f=="string")o[f]=t[a];else{const u=f(a,t[a],t);Object.assign(o,u)}}else o[a]=t[a];return o},{})}function x(t,e,s=new Map){const o=W(t,e);return E(o,s)}function z(t={}){function e(i,n,l,p){if(typeof l=="number")return p[i].length===l;if(typeof l=="object"){const c=Object.keys(l)[0],m=l[c];if(c==="not")return Number(p[i].length)!==Number(m);if(c==="moreThan")return Number(p[i].length)>=Number(m);if(c==="lessThan")return Number(p[i].length)<=Number(m)}return!1}function s(i,n,l,p){return p[i]&&p[i].propertyValue&&String(p[i].propertyValue.value)===String(l)}const o=new Map([["length",e],["getProperty",s]]);Object.keys(t).reduce((i,n)=>(i.set(n,t[n]),i),o);function a(i,n){const l=i;return typeof n=="number"?[{target:l,operator:"length",param:null,value:Number(n)}]:typeof n=="boolean"?[{target:l,operator:"getProperty",param:i,value:!!n}]:typeof n=="object"?Object.keys(n).map(p=>{if(p==="length")return{target:l,operator:"length",param:null,value:n[p]};const c=p,m=n[p];return{target:l,operator:"getProperty",param:c,value:m}}):[]}function f(i){return Object.keys(i).reduce((l,p)=>{const c=a(p,i[p]);return l.push(...c),l},[])}function u(i,n){if(o.has(i.operator)){const l=o.get(i.operator);return l&&l(i.target,i.param,i.value,n)||!1}return!1}function h(i,n){return f(i).reduce((c,m)=>c&&u(m,n),!0)}function b(i,n){const l=Object.keys(i),p=l.includes("allOf"),c=l.includes("anyOf"),m=p||c,F=(m?i[m?p?"allOf":"anyOf":"allOf"]:[i]).map(M=>h(M,n));return p?!F.includes(!1):F.includes(!0)}return{parseValueSchema:b}}const C={},G={};z();function J(t,e,s=new Map,o=(u,h,b,i)=>h,a={},f=u=>u){return N[e.title]=e,D[e.title]=o,C[e.title]=a,G[e.title]=f,(u={},h=!0)=>{if(!h)return E(u,s);const b=x(u,e,s),i=Object.keys(t).reduce((n,l)=>(n[l]=t[l].default,n),{});return Object.assign(i,b)}}function Q(t,e){return{customClass:e.class,customStyle:e.style}}const Y=new Map([["appearance",Q]]),Z={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/search-box.schema.json",title:"search-box",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for a search-box",type:"string"},type:{description:"The type string of search-box component",type:"string",default:"search-box"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},binding:{description:"",type:"object",default:{}},disable:{type:"string",default:!1},editable:{description:"",type:"boolean",default:!0},placeholder:{description:"",type:"string",default:""},readonly:{description:"",type:"boolean",default:!1},require:{description:"",type:"boolean",default:!1},tabindex:{description:"",type:"number",default:-1},visible:{description:"",type:"boolean",default:!0}},required:["id","type"]};function K(t,e,s){return e}const I={title:"search-box",description:"A Farris Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"waiting for modification",enum:[]}}}}}},O={buttonContent:{type:String,default:'<i class="f-icon f-icon-search"></i>'},customClass:{type:String,default:""},modelValue:{type:String,default:""},popupHost:{type:Object},popupRightBoundary:{type:Object},popupOffsetX:{type:Object},data:{type:Array,default:[]},placeholder:{type:String,default:"请输入关键词"},idField:{default:"id",type:String},textField:{default:"name",type:String},maxHeight:{default:350,type:Number},loading:{default:!1,type:Boolean},disable:{default:!1,type:Boolean},showDropdown:{default:!0,type:Boolean},updateOn:{default:"blur",type:String}},P=J(O,Z,Y,K,I),ee={data:{type:Array,default:[]},onConfirmResult:{type:Function,default:()=>{}},onSearchedValue:{type:Function,default:()=>{}},idField:{default:"id",type:String},textField:{default:"name",type:String},maxHeight:{default:350,type:Number},loading:{default:!1,type:Boolean}},T=r.defineComponent({name:"FSearchBoxContainer",props:ee,emits:["confirmResult","searchedValue"],setup(t,e){const s=r.ref(t.data),o=r.ref(),{slots:a}=e,f=r.computed(()=>({"search-box-container":!0,"f-utils-overflow-xhya":!0,"position-relative":!0}));function u(n){var l;(l=o.value)==null||l.search(n)}function h(n){n.length&&(e.emit("confirmResult",n[0].name),e.emit("searchedValue",n))}function b(n){return a.default?r.createVNode(r.Fragment,null,[a.default(n)]):r.createVNode("span",null,[n.item[t.textField]])}const i=r.computed(()=>{const n={};return n.padding="8px",t.maxHeight!==void 0&&t.maxHeight>0&&(n.maxHeight=`${t.maxHeight}px`),n});return r.watch(()=>t.loading,n=>{}),r.watch(()=>t.data,n=>{n!==s.value&&(s.value=n),o.value.updateDataSource(n)}),e.expose({search:u}),()=>{const n={content:b};return r.createVNode("div",{class:f.value,style:i.value},[r.createVNode(U,{ref:"loadingInstance",isActive:t.loading},null),r.createVNode(_,{ref:o,itemClass:"dropdown-item",data:s.value,view:"ContentView",onClickItem:l=>h(l.data),idField:t.idField,textField:t.textField,titleField:t.textField,valueField:t.idField},n)])}}}),j=r.defineComponent({name:"FSearchBox",props:O,emits:["update:modelValue","change","selectedValue","clickButton"],setup(t,e){r.ref(t.data);const s=r.ref(),o=r.ref(),a=r.ref(t.placeholder),f='<i class="f-icon f-icon-clockwise f-icon-spin"></i>',u=r.computed(()=>t.loading?f:t.buttonContent);r.ref(t.editable);const h=r.ref(t.modelValue);r.watch(h,c=>{var m;(m=o.value)==null||m.search(c),e.emit("update:modelValue",c)}),r.watch(()=>t.modelValue,c=>{h.value=c});function b(c){s.value.commitValue(c)}function i(c){e.emit("change",c)}function n(c){e.emit("selectedValue",c)}function l(c){e.emit("clickButton",c)}function p(){s.value.togglePopup()}return e.expose({togglePopup:p}),()=>{const c={default:e.slots.default};return r.createVNode(L,{ref:s,"button-content":u.value,"custom-class":t.customClass,updateOn:t.updateOn,placeholder:a.value,onChange:m=>i(m),onClickButton:m=>l(m),disable:t.disable,"enable-clear":!0,"button-behavior":"Execute",modelValue:h.value,"onUpdate:modelValue":m=>h.value=m,"popup-host":t.popupHost,"popup-right-boundary":t.popupRightBoundary,"popup-offset-x":t.popupOffsetX,"popup-on-input":t.showDropdown,"popup-on-focus":t.showDropdown},{default:()=>[t.showDropdown&&r.createVNode(T,{ref:o,data:t.data,onConfirmResult:b,onSearchedValue:m=>n(m),loading:t.loading,maxHeight:t.maxHeight},c)],...e.slots})}}});function te(t,e,s){var A;const o="",a="",f=r.ref();function u(){return(e==null?void 0:e.schema.componentType)!=="frame"}function h(){return!1}function b(){return(e==null?void 0:e.schema.componentType)!=="frame"}function i(){return(e==null?void 0:e.schema.componentType)==="frame"}function n(d){if(!d||!d.value)return null;if(d.value.schema&&d.value.schema.type==="component")return d.value;const g=r.ref(d==null?void 0:d.value.parent),y=n(g);return y||null}function l(d=e){var B;const{componentInstance:g,designerItemElementRef:y}=d;if(!g||!g.value)return null;const{getCustomButtons:V}=g.value;return g.value.canMove||V&&((B=V())!=null&&B.length)?y:l(d.parent)}function p(d){return!!s}function c(){return(e==null?void 0:e.schema.label)||(e==null?void 0:e.schema.title)||(e==null?void 0:e.schema.name)}function m(){}function v(d,g){var y;!d||!g||(y=e==null?void 0:e.setupContext)==null||y.emit("dragEnd")}function k(d,g){const{componentType:y}=d;let V=$(y,d,g);const B=y.toLowerCase().replace(/-/g,"_");return V&&!V.id&&V.type===y&&(V.id=`${B}_${Math.random().toString().slice(2,6)}`),V}function F(d){}function q(...d){}function M(d){if(!d)return;const g=e==null?void 0:e.schema,{formSchemaUtils:y}=d;if(g&&y.getExpressions().length){const V=y.getExpressions().findIndex(B=>B.target===g.id);V>-1&&y.getExpressions().splice(V,1)}}function re(d){M(d),e!=null&&e.schema.contents&&e.schema.contents.map(g=>{let y=g.id;g.type==="component-ref"&&(y=g.component);const V=t.value.querySelectorAll(`#${y}-design-item`);V!=null&&V.length&&Array.from(V).map(B=>{var H;(H=B==null?void 0:B.componentInstance)!=null&&H.value.onRemoveComponent&&B.componentInstance.value.onRemoveComponent(d)})})}function oe(){}function ae(d){}return f.value={canMove:u(),canSelectParent:h(),canDelete:b(),canNested:!i(),contents:e==null?void 0:e.schema.contents,elementRef:t,parent:(A=e==null?void 0:e.parent)==null?void 0:A.componentInstance,schema:e==null?void 0:e.schema,styles:o,designerClass:a,canAccepts:p,getBelongedComponentInstance:n,getDraggableDesignItemElement:l,getDraggingDisplayText:c,getPropConfig:q,getDragScopeElement:m,onAcceptMovedChildElement:v,onChildElementMovedOut:F,addNewChildComponentSchema:k,triggerBelongedComponentToMoveWhenMoved:r.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:r.ref(!1),onRemoveComponent:re,getCustomButtons:oe,onPropertyChanged:ae},f}const ne=r.defineComponent({name:"FSearchBoxDesign",props:O,emits:["update:modelValue","change"],setup(t,e){const s=r.ref(t.data),o=r.ref(),a=r.ref(),f=r.ref("请输入关键词"),u=r.ref('<i class="f-icon f-icon-search"></i>'),h=r.ref(t.modelValue),b=r.ref(),i=r.inject("design-item-context"),n=te(b,i);r.onMounted(()=>{b.value.componentInstance=n}),e.expose(n.value),r.watch(h,c=>{var m;(m=a.value)==null||m.search(c),e.emit("update:modelValue",c)}),r.watch(()=>t.modelValue,c=>{h.value=c});function l(c){o.value.commitValue(c)}function p(c){e.emit("change",c)}return()=>r.createVNode("div",{ref:b},[r.createVNode(r.resolveComponent("f-button-edit"),{ref:o,"button-content":u.value,placeholder:f.value,onChange:p,"enable-clear":!0,"button-behavior":"Execute",modelValue:h.value,"onUpdate:modelValue":c=>h.value=c,"popup-host":t.popupHost,"popup-right-boundary":t.popupRightBoundary,"popup-offset-x":t.popupOffsetX,"popup-on-input":!0,"popup-on-focus":!0},{default:()=>[r.createVNode(T,{ref:a,data:s.value,onConfirmResult:l},null)]})])}});j.install=t=>{t.component(j.name,j)},j.register=(t,e,s,o)=>{t["search-box"]=j,e["search-box"]=P},j.registerDesigner=(t,e,s)=>{t["search-box"]=ne,e["search-box"]=P},S.FSearchBox=j,S.default=j,S.propsResolver=P,S.searchBoxProps=O,Object.defineProperties(S,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});