UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

36 lines (35 loc) 1.39 kB
import { ref as c, watch as f } from "vue"; import { Utils as V } from "@vuux/utils"; const A = (a, u) => { const e = c(a.multiple ? a.modelValue : a.modelValue ? [a.modelValue] : []), t = c(!1), i = c(null), m = () => { a.disabled || (t.value = !t.value); }, v = (l) => { if (a.multiple) if (Array.isArray(a.modelValue)) { const d = a.modelValue; d.includes(l) ? e.value = d.filter((n) => n !== l) : e.value = [...d, l], u("update:modelValue", e.value), u("change", e.value); } else e.value = a.modelValue === void 0 ? [l] : [a.modelValue, l], u("update:modelValue", e.value); else e.value = [l], u("update:modelValue", e.value[0]), u("change", e.value[0]), t.value = !1; }, o = (l) => Array.isArray(e.value) ? e.value.includes(l) : [e.value].includes(l), r = (l) => { Array.isArray(e.value) ? (e.value.splice(l, 1), u("update:modelValue", e.value)) : (e.value = "", u("update:modelValue", e.value)); }, s = (l) => a.data?.find((n) => n[a.value] === l)?.[a.label] || ""; return f([() => a.modelValue, () => a.multiple], ([l, d]) => { e.value = d ? l : l ? [l] : []; }), V.useClickOutside(i, () => { t.value = !1; }), { items: e, isOpen: t, selectEl: i, handleOpen: m, handleClick: v, handleIsSelected: o, handleRemoveItem: r, handleGetValue: s }; }; export { A as useSelect };