@jecloud/ui
Version:
JECloud UI库,基于ant-design-vue封装
1 lines • 2.3 kB
JavaScript
var e=this&&this.__assign||function(){return e=Object.assign||function(e){for(var l,t=1,a=arguments.length;t<a;t++)for(var n in l=arguments[t])Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);return e},e.apply(this,arguments)};import{mergeProps as l,createVNode as t}from"vue";import{defineComponent as a,ref as n}from"vue";import o from"../../auto-complete";import i from"../../input";import{debounce as r,isNotEmpty as u,omit as c}from"@jecloud/utils";import{useModelValue as s}from"../../hooks";export default a({name:"JeSearch",components:{AutoComplete:o,Input:i},inheritAttrs:!1,props:{labelField:{type:String,default:"label"},subLabelField:String,valueField:{type:String,default:"value"},iconField:{type:String,default:"icon"},value:{type:String}},emits:["search","select","update:value"],slots:["icon"],setup:function(a,p){var v=p.slots,d=p.attrs,f=p.emit,h=s({props:a,context:p,changeEvent:!0}),m=n([]),b=function(e,l){m.value=[l],h.value=l.label,f("select",e,l.data)},g=r((function(e){if(u(e)){var l=e.toString().toLocaleLowerCase();new Promise((function(e,t){f("search",l,e,t)})).then((function(e){m.value=(null!=e?e:[]).map((function(e){return{label:e[a.labelField],value:e[a.labelField],data:e}}))})).catch((function(){m.value=[]}))}else m.value=[]}),300),S=function(e){var l=e.data;if(v.option)return v.option(l);var n=h.value,o="`__`",i=[];return[{cls:"label",label:l[a.labelField],icon:l[a.iconField]},{cls:"sublabel",label:l[a.subLabelField]}].forEach((function(e){var a,r,u,c,s,p;if(e.label){var d=null===(c=null===(u=null===(r=(a=e.label).toString)||void 0===r?void 0:r.call(a))||void 0===u?void 0:u.replaceAll(n,o+n+o))||void 0===c?void 0:c.split(o),f=e.icon?t("i",{class:["label-icon",e.icon]},null):null;i.push(t("div",{class:e.cls},[null!==(p=null===(s=v.icon)||void 0===s?void 0:s.call(v,l))&&void 0!==p?p:f,d.map((function(e){return e===n?t("span",{class:"keyword"},[e]):e}))]))}})),t("div",{class:"je-search-option"},[i])};return function(){return t(o,l({class:"je-search","allow-clear":!0},c(d,["placeholder"]),{options:m.value,value:h.value,"onUpdate:value":function(e){return h.value=e},onSearch:g,onSelect:b}),e(e({default:function(){return[t(i,{placeholder:d.placeholder},{prefix:function(){return t("i",{class:"fal fa-search"},null)}})]}},v),{option:S}))}}});