UNPKG

@aplus-frontend/ui

Version:

272 lines (271 loc) 8.18 kB
import { isVNode as J, defineComponent as K, useSlots as Q, ref as p, computed as z, unref as o, watch as P, cloneVNode as Y, createVNode as l, mergeProps as v, createElementBlock as N, openBlock as h, Fragment as Z, createBlock as M, createCommentVNode as S, withCtx as b, renderSlot as _, withModifiers as ee, normalizeClass as te, resolveDynamicComponent as L, createTextVNode as ie, toDisplayString as ne } from "vue"; import { Button as w, Flex as oe, Space as ae, Drawer as le } from "@aplus-frontend/antdv"; import "../ap-form.vue.mjs"; import "../../hooks/index.mjs"; import { getSingleVNode as se } from "../../utils/slot.mjs"; import "../../config-provider/index.mjs"; import { isBoolean as re, isUndefined as ue, omit as de } from "lodash-unified"; import { convertReactiveToRaw as me } from "../../utils/index.mjs"; import { useControllableValue as ce } from "../../hooks/useControllableValue.mjs"; import { useLocale as fe } from "../../config-provider/hooks/use-locale.mjs"; import { useNamespace as pe } from "../../config-provider/hooks/use-namespace.mjs"; import ve from "../ap-form.vue2.mjs"; function U(r) { return typeof r == "function" || Object.prototype.toString.call(r) === "[object Object]" && !J(r); } const Le = /* @__PURE__ */ K({ name: "ApFormDrawerForm", __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": {}, drawerProps: { default: () => ({}) }, title: {}, width: { default: 378 }, onFinish: {}, submitter: { type: [Boolean, Object], default: () => ({ resetButtonProps: !1 }) }, showCancel: { type: Boolean, default: !0 }, submitTimeout: {}, resize: { type: [Object, Boolean], default: !1 } }, emits: ["update:open"], setup(r, { expose: j, emit: E }) { const t = r, g = Q(), I = E, n = p(), d = p(), a = p(!1), { value: C, updateValue: m } = ce(t, I, { valuePropName: "open", defaultValue: !1 }), s = z(() => { const e = { onResize: () => { }, minWidth: 300, maxWidth: window.innerWidth * 0.8, resizeOnOpen: !0 }; return re(t.resize) ? t.resize ? e : {} : { minWidth: t.resize?.minWidth ?? e.minWidth, maxWidth: t.resize?.maxWidth ?? e.maxWidth, onResize: t.resize?.onResize ?? e.onResize, resizeOnOpen: ue(t.resize?.resizeOnOpen) ? e.onResize : t.resize.resizeOnOpen }; }), u = p(T()), { t: F } = fe(), { e: D, em: V } = pe("ap-form-drawer-form"), $ = z(() => [D("resize-bar"), { [V("resize-bar", "min-disabled")]: o(u) === o(s).minWidth }, { [V("resize-bar", "max-disabled")]: o(u) === o(s).maxWidth }]); P(() => n.value, (e) => { e && d.value && (e.setFieldsValue?.(d.value), d.value = void 0); }), P(() => o(C), (e) => { e && o(s)?.resizeOnOpen && (u.value = T()); }); function T() { const e = o(s)?.minWidth; return !e || e && e < t.width ? t.width : e; } const W = se(g.trigger), R = W ? Y(W, { onClick: () => { m(!0); } }) : null, q = z(() => { const e = []; if (t.submitter === !1) return null; if (t.showCancel) { let i; e.push(l(w, { onClick: k, disabled: a.value }, U(i = F("ap.common.cancelText")) ? i : { default: () => [i] })); } return t.submitter?.resetButtonProps !== !1 && e.push(l(w, v(t.submitter?.resetButtonProps || {}, { key: "submit", disabled: a.value, onClick: X }), { default: () => [t.submitter?.resetText || F("ap.common.resetText")] })), t.submitter?.submitButtonProps !== !1 && e.push(l(w, v({ type: "primary", key: "submit" }, t.submitter?.submitButtonProps || {}, { loading: a.value, onClick: G }), { default: () => [t.submitter?.submitText || F("ap.common.okText")] })), l(oe, { justify: "flex-end" }, { default: () => [g.submitter ? g.submitter(e) : l(ae, null, U(e) ? e : { default: () => [e] })] }); }); function A() { s.value?.onResize?.(), document.addEventListener("mousemove", B), document.addEventListener("mouseup", x); } function B(e) { const i = o(s), c = (document.body.offsetWidth || 1e3) - (e.clientX - document.body.offsetLeft), f = i?.minWidth ?? (t.width || 800), O = i?.maxWidth ?? window.innerWidth * 0.8; let y = c; c < f && (y = f), c > O && (y = O), u.value = y; } function x() { document.removeEventListener("mousemove", B), document.removeEventListener("mouseup", x); } function X() { t.submitter !== !1 && (n.value?.resetFields(), t.submitter?.onReset?.()); } async function G() { if (t.submitter !== !1) try { const e = await n.value?.validateFieldsReturnTransformed(); t.submitter?.onSubmit?.(), a.value = !0; const i = t.onFinish?.(me(e)); if (t.submitTimeout && i instanceof Promise) { const f = setTimeout(() => a.value = !1, t.submitTimeout); i.finally(() => { clearTimeout(f), a.value = !1; }); } await i && m(!1); } finally { a.value = !1; } } function k() { o(a) || m(!1); } function H(e) { !e && o(a) || m(e); } return j({ resetFields: async () => { n.value?.resetFields(); }, clearValidate: (e) => { n.value?.clearValidate(e); }, validateFields: (e, i) => n.value?.validateFields(e, i), getFieldsValue: (e) => n.value?.getFieldsValue(e), validate: (e, i) => n.value?.validate(e, i), scrollToField: (e, i = {}) => { n.value?.scrollToField(e, i); }, setFieldValue: (e, i) => { n.value?.setFieldValue?.(e, i); }, setFieldsValue: (e) => { if (!n.value) { d.value = e; return; } n.value?.setFieldsValue?.(e); }, getInternalInstance: (e) => n.value?.getInternalInstance(e), getFieldsValueTransformed: (e) => n.value?.getFieldsValueTransformed(e), validateFieldsReturnTransformed: (e) => n.value?.validateFieldsReturnTransformed(e) }), (e, i) => (h(), N(Z, null, [l(o(le), v(e.drawerProps, { open: o(C), width: u.value, "onUpdate:open": H, onCancel: k }), { title: b(() => [_(e.$slots, "title", {}, () => [ie(ne(t.title), 1)])]), footer: b(() => [(h(), M(L(q.value)))]), default: b(() => [l(ve, v({ ref_key: "formRef", ref: n }, o(de)(t, ["drawerProps", "open", "onUpdate:open", "title", "width", "onFinish", "submitter"])), { default: b(() => [_(e.$slots, "default")]), _: 3 }, 16), e.resize ? (h(), N("div", { key: 0, class: te($.value), onMousedown: ee(A, ["stop", "prevent"]) }, null, 34)) : S("", !0)]), _: 3 }, 16, ["open", "width"]), o(R) ? (h(), M(L(o(R)), { key: 0 })) : S("", !0)], 64)); } }); export { Le as default };