@aplus-frontend/ui
Version:
272 lines (271 loc) • 8.18 kB
JavaScript
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
};