yk-element-components
Version:
2 lines (1 loc) • 3.47 kB
JavaScript
(function(e,i){typeof exports=="object"&&typeof module<"u"?module.exports=i(require("vue")):typeof define=="function"&&define.amd?define(["vue"],i):(e=typeof globalThis<"u"?globalThis:e||self,e.index=i(e.Vue))})(this,function(e){"use strict";const i={class:"custom_select_box"},g=["src"],k=["onClick"],B={class:"custom_select_option"},C=["src"],N={style:{"margin-left":"10px"}},S=e.defineComponent({__name:"index",props:{disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},labelKey:{type:String,default:""},valueKey:{type:String,default:""},placeholder:{type:String,default:"\u8BF7\u9009\u62E9"},size:{type:String,default:""},data:{type:Array,default:()=>[]},optionColumn:{type:Array,default:()=>[]},filterable:{type:Boolean,default:!0},value:{type:String,default:""}},emits:["visible-change","input","clear","blur","focus","change"],setup(t,{emit:r}){const a=t;let c=e.ref(""),s=e.ref([]),u=e.ref(!1),d=e.ref({});e.watch(()=>a.data,l=>{s.value=JSON.parse(JSON.stringify(l))},{deep:!0}),e.onMounted(()=>{s.value=JSON.parse(JSON.stringify(a.data)),c.value=a.value,f(c.value)});const f=l=>{l?(a.data.forEach(o=>{l==o[a.valueKey?a.valueKey:"value"]&&(d.value=o)}),u.value=!0):(u.value=!1,d.value={})};let p=e.ref();const V=()=>{a.disabled||(u.value=!1,p.value.focus())},x=l=>{l?s.value=JSON.parse(JSON.stringify(a.data)):f(c.value),r("visible-change",l)},b=l=>{s.value=JSON.parse(JSON.stringify(a.data)),f(),c.value="",r("input",""),r("clear",l)},E=l=>{r("blur",l)},_=l=>{r("focus",l)},O=l=>{f(l),r("input",l),r("change",l)},J=l=>{let o=[];l?o=a.data.filter(y=>{let m=!1;return a.optionColumn.forEach(n=>{y[n.key].indexOf(l)!=-1&&(m=!0)}),m}):o=a.data,s.value=JSON.parse(JSON.stringify(o))};return(l,o)=>{const y=e.resolveComponent("el-option"),m=e.resolveComponent("el-select");return e.openBlock(),e.createElementBlock("div",i,[e.unref(u)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["custom_value",{disabledBg:t.disabled}]),onClick:V},[e.createElementVNode("img",{src:e.unref(d).image},null,8,g),e.createElementVNode("div",null,e.toDisplayString(t.labelKey?e.unref(d)[t.labelKey]:e.unref(d).label),1),t.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("i",{key:0,class:"el-icon-circle-close",onClick:e.withModifiers(b,["stop"])},null,8,k))],2)):e.createCommentVNode("",!0),e.createVNode(m,{ref_key:"custom_select",ref:p,size:t.size,modelValue:e.unref(c),"onUpdate:modelValue":o[0]||(o[0]=n=>e.isRef(c)?c.value=n:c=n),placeholder:t.placeholder,"popper-class":"custom_select",filterable:!0,disabled:t.disabled,clearable:t.clearable,remote:"","reserve-keyword":"","remote-method":J,onVisibleChange:x,onClear:b,onBlur:E,onFocus:_,onChange:O},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),(n,K)=>(e.openBlock(),e.createBlock(y,{key:"f"+K,label:t.labelKey?n[t.labelKey]:n.label,value:t.valueKey?n[t.valueKey]:n.value},{default:e.withCtx(()=>[e.createElementVNode("div",B,[e.createElementVNode("img",{src:n.image},null,8,C),e.createElementVNode("div",N,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.optionColumn,(h,w)=>(e.openBlock(),e.createElementBlock("div",{key:"child"+w},e.toDisplayString(h.name)+": "+e.toDisplayString(n[h.key]),1))),128))])])]),_:2},1032,["label","value"]))),128))]),_:1},8,["size","modelValue","placeholder","disabled","clearable"])])}}}),z="";return{install(t){t.component("yk-custom-select",S)}}});