@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 11.7 kB
JavaScript
(function(b,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):(b=typeof globalThis<"u"?globalThis:b||self,r(b["search-box"]={},b.Vue,b.FButtonEdit,b.LodashES,b.FListView,b.FLoading))})(this,function(b,r,H,w,L,_){"use strict";const N={},D={};function R(t){const{properties:e,title:u,ignore:o}=t,a=o&&Array.isArray(o),f=Object.keys(e).reduce((s,p)=>((!a||!o.find(y=>y===p))&&(s[p]=e[p].type==="object"&&e[p].properties?R(e[p]):w.cloneDeep(e[p].default)),s),{});if(u&&(!a||!o.find(s=>s==="id"))){const s=u.toLowerCase().replace(/-/g,"_");f.id=`${s}_${Math.random().toString().slice(2,6)}`}return f}function C(t){const{properties:e,title:u,required:o}=t;if(o&&Array.isArray(o)){const a=o.reduce((f,s)=>(f[s]=e[s].type==="object"&&e[s].properties?R(e[s]):w.cloneDeep(e[s].default),f),{});if(u&&o.find(f=>f==="id")){const f=u.toLowerCase().replace(/-/g,"_");a.id=`${f}_${Math.random().toString().slice(2,6)}`}return a}return{type:u}}function $(t,e={},u){const o=N[t];if(o){let a=C(o);const f=D[t];return a=f?f({getSchemaByType:$},a,e,u):a,a}return null}function X(t,e){const u=R(e);return Object.keys(u).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),u),u}function T(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 s=f(a,t[a],t);Object.assign(o,s)}}else o[a]=t[a];return o},{})}function U(t,e,u=new Map){const o=X(t,e);return T(o,u)}function W(t={}){function e(i,n,l,d){if(typeof l=="number")return d[i].length===l;if(typeof l=="object"){const c=Object.keys(l)[0],h=l[c];if(c==="not")return Number(d[i].length)!==Number(h);if(c==="moreThan")return Number(d[i].length)>=Number(h);if(c==="lessThan")return Number(d[i].length)<=Number(h)}return!1}function u(i,n,l,d){return d[i]&&d[i].propertyValue&&String(d[i].propertyValue.value)===String(l)}const o=new Map([["length",e],["getProperty",u]]);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(d=>{if(d==="length")return{target:l,operator:"length",param:null,value:n[d]};const c=d,h=n[d];return{target:l,operator:"getProperty",param:c,value:h}}):[]}function f(i){return Object.keys(i).reduce((l,d)=>{const c=a(d,i[d]);return l.push(...c),l},[])}function s(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 p(i,n){return f(i).reduce((c,h)=>c&&s(h,n),!0)}function y(i,n){const l=Object.keys(i),d=l.includes("allOf"),c=l.includes("anyOf"),h=d||c,F=(h?i[h?d?"allOf":"anyOf":"allOf"]:[i]).map(M=>p(M,n));return d?!F.includes(!1):F.includes(!0)}return{parseValueSchema:y}}const z={},G={};W();function J(t,e,u=new Map,o=(s,p,y,i)=>p,a={},f=s=>s){return N[e.title]=e,D[e.title]=o,z[e.title]=a,G[e.title]=f,(s={},p=!0)=>{if(!p)return T(s,u);const y=U(s,e,u),i=Object.keys(t).reduce((n,l)=>(n[l]=t[l].default,n),{});return Object.assign(i,y)}}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 x(t,e,u){return e}const K={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,x,K),I={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}},k=r.defineComponent({name:"FSearchBoxContainer",props:I,emits:["confirmResult","searchedValue"],setup(t,e){const u=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 s(n){var l;(l=o.value)==null||l.search(n)}function p(n){n.length&&(e.emit("confirmResult",n[0].name),e.emit("searchedValue",n))}function y(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!==u.value&&(u.value=n),o.value.updateDataSource(n)}),e.expose({search:s}),()=>{const n={content:y};return r.createVNode("div",{class:f.value,style:i.value},[r.createVNode(_,{ref:"loadingInstance",isActive:t.loading},null),r.createVNode(L,{ref:o,itemClass:"dropdown-item",data:u.value,view:"ContentView",onClickItem:l=>p(l.data),idField:t.idField,textField:t.textField,titleField:t.textField,valueField:t.idField},n)])}}}),B=r.defineComponent({name:"FSearchBox",props:O,emits:["update:modelValue","change","selectedValue","clickButton"],setup(t,e){r.ref(t.data);const u=r.ref(),o=r.ref(),a=r.ref(t.placeholder),f='<i class="f-icon f-icon-clockwise f-icon-spin"></i>',s=r.computed(()=>t.loading?f:t.buttonContent);r.ref(t.editable);const p=r.ref(t.modelValue);r.watch(p,c=>{var h;(h=o.value)==null||h.search(c),e.emit("update:modelValue",c)}),r.watch(()=>t.modelValue,c=>{p.value=c});function y(c){u.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 d(){u.value.togglePopup()}return e.expose({togglePopup:d}),()=>{const c={default:e.slots.default};return r.createVNode(H,{ref:u,"button-content":s.value,"custom-class":t.customClass,updateOn:t.updateOn,placeholder:a.value,onChange:h=>i(h),onClickButton:h=>l(h),disable:t.disable,"enable-clear":!0,"button-behavior":"Execute",modelValue:p.value,"onUpdate:modelValue":h=>p.value=h,"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(k,{ref:o,data:t.data,onConfirmResult:y,onSearchedValue:h=>n(h),loading:t.loading,maxHeight:t.maxHeight},c)],...e.slots})}}});function ee(t,e,u){var E;const o="",a="",f=r.ref();function s(){return(e==null?void 0:e.schema.componentType)!=="frame"}function p(){return!1}function y(){return(e==null?void 0:e.schema.componentType)!=="frame"}function i(){return(e==null?void 0:e.schema.componentType)==="frame"}function n(m){if(!m||!m.value)return null;if(m.value.schema&&m.value.schema.type==="component")return m.value;const V=r.ref(m==null?void 0:m.value.parent),g=n(V);return g||null}function l(m=e){var j;const{componentInstance:V,designerItemElementRef:g}=m;if(!V||!V.value)return null;const{getCustomButtons:S}=V.value;return V.value.canMove||S&&((j=S())!=null&&j.length)?g:l(m.parent)}function d(m){return!!u}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 h(){}function v(m,V){var g;!m||!V||(g=e==null?void 0:e.setupContext)==null||g.emit("dragEnd")}function q(m,V){const{componentType:g}=m;let S=$(g,m,V);const j=g.toLowerCase().replace(/-/g,"_");return S&&!S.id&&S.type===g&&(S.id=`${j}_${Math.random().toString().slice(2,6)}`),S}function F(m){}function A(...m){}function M(){e!=null&&e.schema.contents&&e.schema.contents.map(m=>{let V=m.id;m.type==="component-ref"&&(V=m.component);const g=t.value.querySelectorAll(`#${V}-design-item`);g!=null&&g.length&&Array.from(g).map(S=>{var j;(j=S==null?void 0:S.componentInstance)!=null&&j.value.onRemoveComponent&&S.componentInstance.value.onRemoveComponent()})})}function ne(){}function re(m){}return f.value={canMove:s(),canSelectParent:p(),canDelete:y(),canNested:!i(),contents:e==null?void 0:e.schema.contents,elementRef:t,parent:(E=e==null?void 0:e.parent)==null?void 0:E.componentInstance,schema:e==null?void 0:e.schema,styles:o,designerClass:a,canAccepts:d,getBelongedComponentInstance:n,getDraggableDesignItemElement:l,getDraggingDisplayText:c,getPropConfig:A,getDragScopeElement:h,onAcceptMovedChildElement:v,onChildElementMovedOut:F,addNewChildComponentSchema:q,triggerBelongedComponentToMoveWhenMoved:r.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:r.ref(!1),onRemoveComponent:M,getCustomButtons:ne,onPropertyChanged:re},f}const te=r.defineComponent({name:"FSearchBoxDesign",props:O,emits:["update:modelValue","change"],setup(t,e){const u=r.ref(t.data),o=r.ref(),a=r.ref(),f=r.ref("请输入关键词"),s=r.ref('<i class="f-icon f-icon-search"></i>'),p=r.ref(t.modelValue),y=r.ref(),i=r.inject("design-item-context"),n=ee(y,i);r.onMounted(()=>{y.value.componentInstance=n}),e.expose(n.value),r.watch(p,c=>{var h;(h=a.value)==null||h.search(c),e.emit("update:modelValue",c)}),r.watch(()=>t.modelValue,c=>{p.value=c});function l(c){o.value.commitValue(c)}function d(c){e.emit("change",c)}return()=>r.createVNode("div",{ref:y},[r.createVNode(r.resolveComponent("f-button-edit"),{ref:o,"button-content":s.value,placeholder:f.value,onChange:d,"enable-clear":!0,"button-behavior":"Execute",modelValue:p.value,"onUpdate:modelValue":c=>p.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(k,{ref:a,data:u.value,onConfirmResult:l},null)]})])}});B.install=t=>{t.component(B.name,B)},B.register=(t,e,u,o)=>{t["search-box"]=B,e["search-box"]=P},B.registerDesigner=(t,e,u)=>{t["search-box"]=te,e["search-box"]=P},b.FSearchBox=B,b.default=B,b.propsResolver=P,b.searchBoxProps=O,Object.defineProperties(b,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});