UNPKG

adverich-kun-ui

Version:

Una librería de componentes Vue.js con Tailwind CSS

160 lines (159 loc) 5.04 kB
import { ref as d, computed as M, watch as H, nextTick as F } from "vue"; import { isArray as S, isObject as O, fullCopy as L } from "../../../../utils/utils.js"; function U(t, y, c, v) { const l = d(null), b = d(null), x = d(null), i = d(!1), g = d(""), N = (e, n) => { if (t.returnObject) return s(e, t.itemTitle); const u = l.value.find((f) => f[t.itemValue] === e); return s(u, t.itemTitle); }, B = M(() => l.value !== null && l.value !== void 0 ? S(l.value) ? l.value.length ? s(l.value, t.itemTitle, "hasDefault") : t.placeholderText : O(l.value) ? s(l.value, t.itemTitle, "hasDefault") : l.value.toString() : v.value.length ? t.placeholderText : t.textNoItems), R = M(() => { const e = t.itemText; return typeof e == "string" && e.includes(",") ? e.split(",") : e; }); function s(e, n, u) { var f; if (O(e)) { if (n) { if (S(n)) return n.map((r) => { if (r.includes(".")) { const o = r.split("."); let a = e; for (const h of o) a = a != null ? a[h] : ""; return a ?? "No definido"; } return e[r] ?? "No definido"; }).join(" - "); if (n.includes(",")) return n.split(",").map((r) => e[r]).join(" - "); if (n.includes(".")) { const r = n.split("."); let o = e; for (const a of r) o = o != null ? o[a] : ""; return o; } return !t.returnObject && typeof e[n] == "number" || e[n] !== void 0 && e[n] !== null ? e[n].toString() : ""; } if (u) return Object.values(e)[0]; } return S(e) ? t.returnObject ? e.map((r) => r[n]).join(" - ") : e.map((r) => r).join(" - ") : u && typeof e != "number" ? e.includes(",") ? e.split(",") : e : ((f = e == null ? void 0 : e.toString) == null ? void 0 : f.call(e)) ?? ""; } function C(e) { try { let n = null; if (l.value = L(e), !t.multiple) t.returnObject ? n = e : O(e) ? t.itemValue ? n = e[t.itemValue] : n = Object.values(e)[0] : n = e, i.value = !1, j(); else if (T(e)) { e && I(e); return; } else { const u = t.returnObject ? e : O(e) ? t.itemValue ? e[t.itemValue] : Object.values(e)[0] : e; n = [...c.value || [], u]; } c.value === n ? y("update:modelValue", n) : c.value = n, y("selectedItem", l.value); } catch (n) { console.log(n); } finally { F(() => { A(); }); } } H( [() => c.value, () => v.value], ([e]) => { const n = D(e); JSON.stringify(l.value) !== JSON.stringify(n) && (l.value = n); }, { immediate: !0 } ); function D(e) { return e == null ? null : t.multiple && Array.isArray(e) ? t.returnObject ? e : e.map((u) => v.value.find((f) => f[t.itemValue] === u)).filter(Boolean) : t.returnObject ? e : v.value.find( (u) => typeof u == "object" ? u[t.itemValue] === e : u === e ) ?? e; } function T(e) { if (!c.value || !e) return !1; const n = t.returnObject ? e : e[t.itemValue]; return c.value.some((u) => u === n); } function I(e) { const n = t.returnObject ? e : e[t.itemValue]; c.value = c.value.filter((u) => u !== n); } function A(e) { t.clearSearchOnSelect && (g.value = ""), t.clearOnSelect && E(), t.focusOnSelect && j(); } function k() { i.value || (i.value = !0); } function J() { i.value && (i.value = !1); } function V() { i.value = !i.value; } function w(e) { return e.length === 1 && e.match(/\w/); } function j() { b.value.inputField.focus(); } function K() { i.value = !0, x.value && b.value.$el.focus(); } function $(e) { const n = e.key; (w(n) || n === "Backspace") && (k(), j(), F(() => { var f; const u = (f = b.value) == null ? void 0 : f.inputField; if (u) { const r = u.selectionStart, o = u.selectionEnd, a = u.value, h = e.key.length === 1 ? e.key : ""; u.value = a.slice(0, r) + h + a.slice(o), u.selectionStart = u.selectionEnd = r + h.length, u.dispatchEvent(new Event("input", { bubbles: !0 })); } })); } function q() { i.value = !1, y("createItem"); } function z(e) { let n = c.value.indexOf(e); c.value.splice(n, 1); } function E() { g.value !== "" && (g.value = ""), c.value !== null && (c.value = null), l.value !== null && (l.value = null); } function G(e) { return !!e.disabled; } return { selectedItem: l, textFieldRef: b, listRef: x, menuModel: i, search: g, getArrayText: N, placeholder: B, textArr: R, itemToString: s, getSelectedItem: C, checkIfValueExist: T, removeFromArray: I, lightReset: A, openMenu: k, closeMenu: J, toggleMenu: V, focusOnMenu: K, onMenuKeydown: $, createItem: q, removeItem: z, clearSelection: E, checkDisabled: G, isAlphanumeric: w }; } export { U as useAutocomplete };