UNPKG

vue-amazing-ui

Version:

An Amazing Vue3 UI Components Library, Using TypeScript.

2 lines (1 loc) 3.94 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),p=require("../select/index.cjs"),C=l.defineComponent({__name:"Cascader",props:{options:{default:()=>[]},label:{default:"label"},value:{default:"value"},children:{default:"children"},placeholder:{default:"请选择"},disabled:{type:[Boolean,Array],default:!1},width:{default:"auto"},height:{default:void 0},size:{default:"middle"},gap:{default:void 0},changeOnSelect:{type:Boolean,default:!1},allowClear:{type:Boolean,default:!1},search:{type:Boolean,default:!1},filter:{type:[Function,Boolean],default:!0},maxDisplay:{default:6},modelValue:{default:()=>[]}},emits:["update:modelValue","change"],setup(m,{emit:g}){const d=m,a=l.ref([]),o=l.ref([]),n=l.ref([]),t=l.ref([]),h=l.ref([]),s=g,y=l.computed(()=>{const e={small:4,middle:6,large:8};return d.gap!==void 0?`${d.gap}px`:`${e[d.size]}px`});l.watchEffect(()=>{n.value=[...d.options]}),l.watchEffect(()=>{a.value=[...d.modelValue]}),l.watchEffect(()=>{c(a.value),b(a.value)});function v(e,r){const i=e.length;for(let u=0;u<i;u++)if(e[u][d.value]===a.value[r])return e[u][d.children]||[];return[]}function c(e){t.value=v(n.value,0),h.value=[],e.length>1&&(h.value=v(t.value,1))}function f(e,r){const i=e.length;for(let u=0;u<i;u++)if(e[u][d.value]===a.value[r])return e[u][d.label];return a.value[r]}function b(e){o.value[0]=f(n.value,0),e.length>1&&(o.value[1]=f(t.value,1)),e.length>2&&(o.value[2]=f(h.value,2))}function w(e,r){d.changeOnSelect?(s("update:modelValue",[e]),s("change",[e],[r])):(a.value=[e],o.value=[r])}function A(e,r){d.changeOnSelect?(s("update:modelValue",[a.value[0],e]),s("change",[a.value[0],e],[o.value[0],r])):(a.value=[a.value[0],e],o.value=[o.value[0],r])}function V(e,r){s("update:modelValue",[...a.value.slice(0,2),e]),s("change",[...a.value.slice(0,2),e],[...o.value.slice(0,2),r])}return(e,r)=>(l.openBlock(),l.createElementBlock("div",{class:"m-cascader",style:l.normalizeStyle(`--cascader-select-gap: ${y.value};`)},[l.createVNode(l.unref(p.default),l.mergeProps({options:n.value,label:e.label,value:e.value,placeholder:Array.isArray(e.placeholder)?e.placeholder[0]:e.placeholder,disabled:Array.isArray(e.disabled)?e.disabled[0]:e.disabled,width:Array.isArray(e.width)?e.width[0]:e.width,height:e.height,size:e.size,"allow-clear":e.allowClear,search:e.search,filter:e.filter,"max-display":e.maxDisplay,modelValue:a.value[0],"onUpdate:modelValue":r[0]||(r[0]=i=>a.value[0]=i),onChange:w},e.$attrs),null,16,["options","label","value","placeholder","disabled","width","height","size","allow-clear","search","filter","max-display","modelValue"]),l.createVNode(l.unref(p.default),l.mergeProps({options:t.value,label:e.label,value:e.value,placeholder:Array.isArray(e.placeholder)?e.placeholder[1]:e.placeholder,disabled:Array.isArray(e.disabled)?e.disabled[1]:e.disabled,width:Array.isArray(e.width)?e.width[1]:e.width,height:e.height,size:e.size,"allow-clear":e.allowClear,search:e.search,filter:e.filter,"max-display":e.maxDisplay,modelValue:a.value[1],"onUpdate:modelValue":r[1]||(r[1]=i=>a.value[1]=i),onChange:A},e.$attrs),null,16,["options","label","value","placeholder","disabled","width","height","size","allow-clear","search","filter","max-display","modelValue"]),l.createVNode(l.unref(p.default),l.mergeProps({options:h.value,label:e.label,value:e.value,placeholder:Array.isArray(e.placeholder)?e.placeholder[2]:e.placeholder,disabled:Array.isArray(e.disabled)?e.disabled[2]:e.disabled,width:Array.isArray(e.width)?e.width[2]:e.width,height:e.height,size:e.size,"allow-clear":e.allowClear,search:e.search,filter:e.filter,"max-display":e.maxDisplay,modelValue:a.value[2],"onUpdate:modelValue":r[2]||(r[2]=i=>a.value[2]=i),onChange:V},e.$attrs),null,16,["options","label","value","placeholder","disabled","width","height","size","allow-clear","search","filter","max-display","modelValue"])],4))}});exports.default=C;