@aplus-frontend/ui
Version:
247 lines (246 loc) • 6.92 kB
JavaScript
import { isVNode as O, defineComponent as z, useSlots as E, ref as d, watch as $, cloneVNode as q, computed as A, createVNode as n, mergeProps as m, unref as o, createElementBlock as D, openBlock as p, Fragment as L, createBlock as T, createCommentVNode as K, withCtx as b, createElementVNode as W, normalizeClass as G, normalizeStyle as H, renderSlot as C, resolveDynamicComponent as B, createTextVNode as J, toDisplayString as Q } from "vue";
import { Button as v, Flex as X, Space as Y, Modal as Z } from "@aplus-frontend/antdv";
import { omit as ee } from "lodash-unified";
import "../../config-provider/index.mjs";
import "../../hooks/index.mjs";
import { getSingleVNode as te } from "../../utils/slot.mjs";
import "../ap-form.vue.mjs";
import le from "../style/modal-form.mjs";
import { useControllableValue as ae } from "../../hooks/useControllableValue.mjs";
import { useLocale as oe } from "../../config-provider/hooks/use-locale.mjs";
import { useNamespace as se } from "../../config-provider/hooks/use-namespace.mjs";
import ne from "../ap-form.vue2.mjs";
function k(r) {
return typeof r == "function" || Object.prototype.toString.call(r) === "[object Object]" && !O(r);
}
const Ne = /* @__PURE__ */ z({
name: "ApFormModalForm",
__name: "index",
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: {},
onFinishFailed: {},
onValidate: {},
variant: {},
initialValues: {},
onValuesChange: {},
syncToUrl: {
type: [Boolean, Function]
},
syncToUrlPriority: {
type: Boolean
},
open: {
type: Boolean,
default: void 0
},
"onUpdate:open": {},
modalProps: {
default: () => ({})
},
title: {},
width: {
default: 800
},
onFinish: {},
submitter: {
type: [Boolean, Object],
default: () => ({
resetButtonProps: !1
})
},
showCancel: {
type: Boolean,
default: !0
},
submitTimeout: {}
},
emits: ["update:open"],
setup(r, {
expose: P,
emit: S
}) {
const t = r, c = E(), w = S, a = d(), y = d(0), i = d(), s = d(!1), {
value: N,
updateValue: u
} = ae(t, w, {
valuePropName: "open",
defaultValue: !1,
beforeUpdateValue(e) {
return e && (y.value += 1), !0;
}
}), {
t: f
} = oe(), x = le("ap-form-modal-form"), {
b: R,
e: F
} = se("ap-form-modal-form");
$(() => a.value, (e) => {
e && i.value && (e.setFieldsValue?.(i.value), i.value = void 0);
});
const h = te(c.trigger), g = h ? q(h, {
onClick: () => {
u(!0);
}
}) : null, _ = A(() => {
const e = [];
if (t.submitter === !1)
return null;
if (t.showCancel) {
let l;
e.push(n(v, {
onClick: V,
disabled: s.value
}, k(l = f("ap.common.cancelText")) ? l : {
default: () => [l]
}));
}
return t.submitter?.resetButtonProps !== !1 && e.push(n(v, m(t.submitter?.resetButtonProps || {}, {
key: "reset",
disabled: s.value,
onClick: I,
htmlType: "reset"
}), {
default: () => [t.submitter?.resetText || f("ap.common.resetText")]
})), t.submitter?.submitButtonProps !== !1 && e.push(n(v, m({
type: "primary",
key: "submit",
htmlType: "submit"
}, t.submitter?.submitButtonProps || {}, {
loading: s.value
}), {
default: () => [t.submitter?.submitText || f("ap.common.okText")]
})), n(X, {
justify: "flex-end",
key: o(y),
class: [F("footer")]
}, {
default: () => [c.submitter ? c.submitter(e) : n(Y, null, k(e) ? e : {
default: () => [e]
})]
});
});
function I() {
t.submitter !== !1 && (a.value?.resetFields(), t.submitter?.onReset?.());
}
async function M(e) {
if (t.submitter !== !1)
try {
t.submitter?.onSubmit?.(), s.value = !0;
const l = t.onFinish?.(e);
if (t.submitTimeout && l instanceof Promise) {
const j = setTimeout(() => s.value = !1, t.submitTimeout);
l.finally(() => {
clearTimeout(j), s.value = !1;
});
}
await l && u(!1);
} finally {
s.value = !1;
}
}
function V() {
o(s) || u(!1);
}
function U(e) {
!e && o(s) || u(e);
}
return P({
resetFields: async () => {
a.value?.resetFields();
},
clearValidate: (e) => {
a.value?.clearValidate(e);
},
validateFields: (e, l) => a.value?.validateFields(e, l),
getFieldsValue: (e) => a.value?.getFieldsValue(e),
validate: (e, l) => a.value?.validate(e, l),
scrollToField: (e, l = {}) => {
a.value?.scrollToField(e, l);
},
setFieldValue: (e, l) => {
a.value?.setFieldValue?.(e, l);
},
setFieldsValue: (e) => {
if (!a.value) {
i.value = e;
return;
}
a.value?.setFieldsValue?.(e);
},
getInternalInstance: (e) => a.value?.getInternalInstance(e),
getFieldsValueTransformed(e) {
return a.value?.getFieldsValueTransformed(e);
},
validateFieldsReturnTransformed(e, l) {
return a.value?.validateFieldsReturnTransformed(e, l);
}
}), (e, l) => (p(), D(L, null, [n(o(Z), m(e.modalProps, {
open: o(N),
footer: null,
width: e.width,
class: [o(R)(), o(x)],
"body-style": {
padding: "0px !important"
},
"onUpdate:open": U,
onCancel: V
}), {
title: b(() => [C(e.$slots, "title", {}, () => [J(Q(t.title), 1)])]),
default: b(() => [n(ne, m({
ref_key: "formRef",
ref: a
}, o(ee)(t, ["modalProps", "open", "onUpdate:open", "title", "width", "onFinish", "submitter"]), {
onFinish: M
}), {
default: b(() => [W("div", {
style: H(e.modalProps?.bodyStyle),
class: G(o(F)("content"))
}, [C(e.$slots, "default")], 6), (p(), T(B(_.value)))]),
_: 3
}, 16)]),
_: 3
}, 16, ["open", "width", "class"]), o(g) ? (p(), T(B(o(g)), {
key: 0
})) : K("", !0)], 64));
}
});
export {
Ne as default
};