@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
106 lines (105 loc) • 2.56 kB
JavaScript
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