@aplus-frontend/ui
Version:
246 lines (245 loc) • 6.47 kB
JavaScript
import { defineComponent as Y, reactive as Z, shallowRef as z, ref as ee, unref as g, nextTick as te, toRaw as U, watch as re, onWatcherCleanup as oe, computed as ne, createBlock as ie, openBlock as le, mergeProps as ae, withCtx as se, renderSlot as ue } from "vue";
import { Form as fe } from "@aplus-frontend/antdv";
import { useUrlSearchParams as ce } from "@vueuse/core";
import { isArray as P, cloneDeep as b, isEqual as de, omit as ge } from "lodash-unified";
import { useDevWarning as pe } from "../utils/warning.mjs";
import { getRouteType as me } from "../utils/index.mjs";
import { INTERNAL_FORM_INSTANCE_MARK as E } from "./constant.mjs";
import { useProvideForm as he } from "./context.mjs";
import { useInjectFormProvider as Fe } from "./provider/context.mjs";
import { getModelValue as x } from "./utils/get.mjs";
import { genParams as R, setToParams as O } from "./utils/params.mjs";
import ye from "./utils/set.mjs";
import { transformValues as h } from "./utils/transform.mjs";
import { isDef as F } from "../utils/is.mjs";
const Ee = /* @__PURE__ */ Y({
name: "ApForm",
__name: "ap-form",
props: {
layout: { default: "horizontal" },
labelCol: {},
wrapperCol: {},
colon: { type: Boolean, default: !0 },
labelAlign: { default: "right" },
labelWrap: { type: Boolean },
prefixCls: {},
requiredMark: {},
hideRequiredMark: { type: Boolean, default: !1 },
rules: {},
validateMessages: {},
validateOnRuleChange: { type: Boolean, default: !0 },
scrollToFirstError: {},
onSubmit: {},
name: {},
validateTrigger: { default: "change" },
size: {},
disabled: { type: Boolean },
onFieldsChange: {},
onFinish: {},
onFinishFailed: {},
onValidate: {},
variant: {},
initialValues: {},
onValuesChange: {},
syncToUrl: { type: [Boolean, Function], default: !1 },
syncToUrlPriority: { type: Boolean }
},
setup(W, { expose: j }) {
const r = W;
function y(e, t, o = !0, i) {
if (P(e)) {
let l = n;
for (let d = 0; d < e.length - 1; d++)
e[d] in l || (l[e[d]] = {}), l = l[e[d]];
i ? i(l, e[e.length - 1]) : l[e[e.length - 1]] = t;
} else
i ? i(n, e) : n[e] = t;
let A = P(e) ? e[0] : e;
if (o) {
const l = { [A]: n[A] };
p.triggerFormChange(r.name, l), r.onValuesChange?.(l, n, e);
}
m();
}
const a = z(), T = ce(me()), p = Fe(), k = pe("ApForm"), V = ee(
r.syncToUrl ? R(r.syncToUrl, T, "get") : {}
);
let s = b(M()), u = {};
const n = Z(M());
let c = [];
function M() {
const e = r.initialValues || {};
return r.syncToUrlPriority ? {
...e,
...g(V)
} : {
...g(V),
...e
};
}
function N(e) {
const t = h(
e,
u,
f
);
p.triggerFormFinish(r.name, e), r.syncToUrl && O(T, R(r.syncToUrl, t, "set")), r.onFinish?.(t);
}
const S = async () => {
a.value?.resetFields(), await te(() => {
Object.keys(n).forEach((e) => delete n[e]), Object.assign(n, b(s)), m(), r.syncToUrl && O(
T,
R(
r.syncToUrl,
h(
s,
u,
f
),
"set"
)
);
});
}, q = (e) => {
a.value?.clearValidate(e);
}, D = (e, t) => a.value?.validateFields(e, t), K = async (e, t) => {
const o = await a.value?.validateFields(
e,
t
);
return h(
o,
u,
f
);
}, f = (e) => e === !0 ? U(n) : a.value?.getFieldsValue(e), L = (e) => {
const t = f(e);
return h(t, u, f);
}, $ = (e, t) => a.value?.validate(e, t), G = (e, t = {}) => {
a.value?.scrollToField(e, t);
}, H = (e) => {
Object.assign(n, e), m();
}, v = (e, t, o = !0, i) => {
y(e, t, o, i), m();
};
function C(e) {
return e(U(n)), c.push(e), () => {
c = c.filter((t) => t !== e);
};
}
function I(e, t) {
if (P(e)) {
let o = s;
for (let i = 0; i < e.length - 1; i++)
F(o[e[i]]) || (o[e[i]] = {}), o = o[e[i]];
o[e[e.length - 1]] = t;
} else
s[e] = t;
}
function J(e, t) {
if (!F(e) || !F(t))
return;
const o = x(s, t);
if (de(o, e))
return;
const i = x(g(V), t);
F(i) && r.syncToUrlPriority || (y(t, e, !1), I(t, e));
}
function Q(e, t) {
t && (u = ye(
u,
[e].flat(1),
t,
!0
));
}
function B({ initialValue: e, name: t, transform: o }) {
J(e, t), Q(t, o);
}
function _() {
return s;
}
function X(e) {
if (k(
e === E,
"usage",
"getInternalInstance should only used at internal"
), e === E)
return {
registerField: B,
registerWatch: C,
setFieldValue: v,
getInitialValues: _,
updateInitialModel: I
};
}
function m() {
if (c.length) {
const e = U(n);
c.forEach((t) => {
t(e);
});
}
}
const w = {
resetFields: S,
clearValidate: q,
validateFields: D,
getFieldsValue: f,
validate: $,
scrollToField: G,
setFieldsValue: H,
setFieldValue: v,
registerWatch: C,
validateFieldsReturnTransformed: K,
getFieldsValueTransformed: L,
getInternalInstance: X
};
return re(
() => r.name,
(e) => {
e && (p.registerForm(e, w), oe(() => {
p.unregisterForm(r.name);
}));
},
{
immediate: !0
}
), he({
model: ne(() => n),
updateModel: y,
internalInstance: {
registerWatch: C,
registerField: B,
setFieldValue: v,
getInitialValues: _,
updateInitialModel: I
}
}), j(w), (e, t) => (le(), ie(g(fe), ae(
{
ref_key: "formRef",
ref: a
},
g(ge)(r, [
"initialValues",
"onValuesChange",
"onFinish",
"syncToUrl",
"syncToUrlPriority"
]),
{
model: n,
"data-form-name": e.name,
onFinish: N
}
), {
default: se(() => [
ue(e.$slots, "default")
]),
_: 3
}, 16, ["model", "data-form-name"]));
}
});
export {
Ee as default
};