UNPKG

@extclp/vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

106 lines (105 loc) 2.56 kB
import { computed as a, getCurrentInstance as g, inject as v, provide as m, onBeforeUnmount as S } from "vue"; import { isNull as d, noop as s, toFalse as V } from "@vexip-ui/utils"; import { FIELD_OPTIONS as o } from "./symbol.mjs"; function A(i, e, r = !1) { if (!i || !e) return null; if (typeof e == "string") { if (e in i) return i[e]; e = e.split("."); } if (Array.isArray(e) && e.length) { const t = e.pop(); if (!t) return null; for (let l = 0, n = e.length; l < n; ++l) { const u = String(e[l]); if (!u) break; if (i = i[u], d(i)) { if (r) throw new Error("[vexip-ui:Form] Get value by an invalid path"); return i; } } if (r && d(i[t])) throw new Error("[vexip-ui:Form] Get value by an invalid path"); return i[t]; } return null; } function z(i, e, r, t = !1) { if (!i || !e) return !1; if (typeof e == "string") { if (e in i) return i[e] = r, !0; e = e.split("."); } if (Array.isArray(e) && e.length) { const l = e.pop(); if (!l) return !1; for (let n = 0, u = e.length; n < u; ++n) { const f = String(e[n]); if (!f) return !1; if (typeof i[f] != "object") { if (t) throw new Error("[vexip-ui:Form] Set value by an invalid path"); i[f] = {}; } i = i[f]; } if (t && typeof i != "object") throw new Error("[vexip-ui:Form] Set value by an invalid path"); return i[l] = r, !0; } return !1; } const c = a(() => { }), w = a(() => "default"), y = a(() => !1), p = a(() => "default"); function F() { return { isField: !1, idFor: c, labelId: c, state: w, disabled: y, loading: y, size: p, validateField: s, clearField: s, resetField: V, getFieldValue: (i) => i, setFieldValue: s }; } function k(i) { const e = g(); if (!e) return F(); const r = v(o, null); if (!r) return F(); m(o, null), r.sync(e), i && r.emitter.on("focus", i), S(() => { r.unSync(e), i && r.emitter.off("focus", i); }); function t(l) { r && (r.setValue(l), r.clearError()); } return { isField: !0, idFor: r.idFor, labelId: r.labelId, state: r.state, disabled: r.disabled, loading: r.loading, size: r.size, validateField: r.validate, clearField: t, resetField: r.reset, getFieldValue: r.getValue, setFieldValue: r.setValue }; } export { A as getValueByPath, z as setValueByPath, k as useFieldStore }; //# sourceMappingURL=helper.mjs.map