tdesign-pro-component
Version:
ProComponents tdesign-vue-next + Vue3 + TS
486 lines (485 loc) • 18.8 kB
JavaScript
import { a as W, w as K } from "./utils-DU1amZow.js";
import { defineComponent as Q, useCssVars as X, ref as E, useSlots as Z, onMounted as j, watch as ee, resolveComponent as i, openBlock as u, createBlock as c, mergeProps as f, unref as h, withCtx as g, createVNode as U, createElementBlock as _, Fragment as I, renderList as ae, createCommentVNode as b, renderSlot as B, createTextVNode as Y, toDisplayString as L } from "vue";
import { P as le } from "./ProFormText-DtTOW5h3.js";
import { P as oe } from "./ProFormCheckbox-CRYQ-khh.js";
import { P as re } from "./ProFormSelect-BVLxiVvQ.js";
import { P as ne } from "./ProFormRadio-DMjyfxq_.js";
import { P as de } from "./ProFormDatepicker-CN6X0J_I.js";
import { P as te } from "./ProFormInputNumber-BBBIvV3B.js";
import { P as ue } from "./ProFormTextarea-Dp6OBJij.js";
import { P as se } from "./ProFormTreeSelect-CU3vDiPL.js";
import { u as pe } from "./hooks-9GWkbKry.js";
function R(s) {
const p = {};
return s.forEach((n) => {
[null, void 0].includes(n.initalValue) ? p[n.name] = null : p[n.name] = n.initalValue;
}), p;
}
function $(s, p) {
const n = {};
return Object.keys(s).forEach((o) => {
const l = p.find((m) => m.name === o);
l && ([null, void 0].includes(s[l.name]) ? l.type === void 0 || ["text", "textarea", "radio", "number"].includes(l.type) ? n[l.name] = "" : ["select", "treeSelect"].includes(l.type) ? n[l.name] = l.multiple ? [] : "" : ["checkbox", "upload"].includes(l.type) ? n[l.name] = [] : l.type === "datepicker" ? n[l.name] = l.range ? [] : null : n[l.name] = "" : l.type === "upload" ? typeof s[l.name] == "string" ? n[l.name] = s[l.name].split(",").map((m) => ({
url: `${m}`,
name: m.split("/").pop()
})) : (n[l.name] = [], s[l.name].forEach((m) => {
typeof m == "string" ? n[l.name].push({
url: `${m}`,
name: m.split("/").pop()
}) : n[l.name].push({
...m,
url: m[l.urlName || "url"]
});
})) : n[l.name] = s[l.name]);
}), n;
}
function T(s, p, n = {}) {
for (let o in s)
if (p.hasOwnProperty(o))
if (typeof s[o] == "object" && typeof p[o] == "object") {
let l = {};
T(s[o], p[o], l), Object.keys(l).length > 0 && (n[o] = l);
} else s[o] !== p[o] && (n[o] = p[o]);
else
n[o] = void 0;
for (let o in p)
s.hasOwnProperty(o) || (n[o] = p[o]);
return n;
}
function A(s) {
const p = {};
for (let n in s)
if (s.hasOwnProperty(n)) {
const o = s[n];
if (typeof o == "object" && o !== null) {
const l = A(o);
Object.keys(l).length > 0 && (p[n] = l);
} else o !== "" && o !== void 0 && o !== null && (p[n] = o);
}
return p;
}
const me = {
key: 0,
class: "pro-form-item"
}, fe = {
key: 0,
class: "pro-form-footer"
}, ce = /* @__PURE__ */ Q({
name: "ProForm",
__name: "ProForm",
props: {
options: {},
request: {},
rules: {},
labelAlign: {},
labelWidth: {},
marginY: {
default: 24
},
readonly: {
type: Boolean
},
disabled: {
type: Boolean
},
layout: {},
footerAligin: {
default: "right"
},
resetText: {
default: "重置"
},
submitText: {
default: "提交"
},
showReset: {
type: Boolean,
default: !0
},
formProps: {},
filterEmptyStr: {
type: Boolean
},
submitFilter: {
type: Boolean,
default: !0
},
submitButtonProps: {},
resetButtonProps: {},
hideFooter: {
type: Boolean
},
footer: {},
loading: {
type: Boolean
},
loadingText: {},
loadingProps: {}
},
emits: ["submit", "error", "reset", "update:loading"],
setup(s, {
expose: p,
emit: n
}) {
X((t) => ({
"2fd01f3a": a.footerAligin
}));
const o = {
text: {
propsName: "textProps",
componentName: "ProFormText"
},
select: {
propsName: "selectProps",
componentName: "ProFormSelect"
},
radio: {
propsName: "radioProps",
componentName: "ProFormRadio"
},
textarea: {
propsName: "textareaProps",
componentName: "ProFormTextarea"
},
datepicker: {
propsName: "datepickerProps",
componentName: "ProFormDatepicker"
},
checkbox: {
propsName: "checkboxProps",
componentName: "ProFormCheckbox"
},
number: {
propsName: "numberProps",
componentName: "ProFormInputNumber"
},
treeSelect: {
propsName: "treeSelectProps",
componentName: "ProFormTreeSelect"
}
}, l = E(), m = n, a = s, V = Z(), v = E([]), O = pe(a, "loading", m, !0);
let k = {};
const d = E();
j(() => {
w();
});
function w() {
v.value = a.options.filter((t) => !t.hidden), a.request ? a.request().then((t) => {
t ? x(t, !0) : x(R(v.value));
}) : x(R(v.value));
}
function x(t, N = !1) {
k = $(t, v.value);
let P = {};
d.value && (P = T(k, d.value)), d.value = {
...$(JSON.parse(JSON.stringify(N ? t : k)), v.value),
...P
};
}
function M() {
a.request().then((t) => {
t ? d.value = {
...$(JSON.parse(JSON.stringify(t)), v.value)
} : x(R(v.value));
});
}
function q() {
return l.value.validate().then((t) => {
if (t === !0) {
const N = a.submitFilter ? T(k, C()) : C();
m("submit", a.filterEmptyStr ? A(N) : N);
} else
W("请查看表单"), m("error", t, "请检查表单");
});
}
function D() {
m("reset"), l.value.reset();
}
function C() {
return d.value;
}
return p({
initForm: w,
getFormValue: C,
submit: () => q(),
reset: () => D(),
setItem: (t, N) => {
d.value[t] = N;
},
resetRequest: M,
validate: () => new Promise((t, N) => {
l.value.validate().then((P) => {
if (P === !0) {
const F = a.submitFilter ? T(k, C()) : C(), S = a.filterEmptyStr ? A(F) : F;
t(S);
} else
W("请查看表单"), N(P);
});
})
}), ee(() => a.options, () => {
w();
}, {
deep: !0
}), (t, N) => {
const P = i("t-upload"), F = i("t-form-item"), S = i("t-col"), J = i("t-button"), z = i("t-row"), G = i("t-form"), H = i("t-loading");
return u(), c(H, f({
loading: h(O),
text: a.loadingText
}, a.loadingProps), {
default: g(() => [U(G, f({
class: "pro-form",
ref_key: "formRef",
ref: l,
labelAlign: a.labelAlign,
labelWidth: a.labelWidth,
rules: a.rules
}, a.formProps, {
onSubmit: q,
onReset: D,
data: d.value
}), {
default: g(() => [V.default ? (u(), _(I, {
key: 1
}, [d.value ? B(t.$slots, "default", {
key: 0,
form: d.value
}) : b("", !0)], 64)) : (u(), _(I, {
key: 0
}, [d.value ? (u(), c(z, {
key: 0,
align: "center",
gutter: [48, a.marginY]
}, {
default: g(() => [(u(!0), _(I, null, ae(v.value, (e, y) => (u(), c(S, {
span: e.span || 6,
key: y
}, {
default: g(() => [e.type != "upload" ? (u(), _("div", me, [V[`form-${e.name}`] ? B(t.$slots, `form-${e.name}`, f({
key: 1,
form: d.value,
ref_for: !0
}, e)) : (u(), _(I, {
key: 0
}, [!e.type || e.type === "text" ? (u(), c(h(le), f({
modelValue: d.value[e.name],
"onUpdate:modelValue": (r) => d.value[e.name] = r,
key: e.name + y,
label: e.label,
labelName: e.labelName,
valueName: e.valueName,
childrenName: e.childrenName,
rules: e.rules,
multiple: e.multiple,
name: e.name,
data: e.data,
readonly: a.readonly || e.readonly,
range: e.range,
disabled: a.disabled || e.disabled,
placeholder: e.placeholder,
formItemProps: e.formItemProps,
onChange: (r) => e.onChange && e.onChange(r, e.name),
ref_for: !0
}, e[o[e.type || "text"].propsName]), null, 16, ["modelValue", "onUpdate:modelValue", "label", "labelName", "valueName", "childrenName", "rules", "multiple", "name", "data", "readonly", "range", "disabled", "placeholder", "formItemProps", "onChange"])) : b("", !0), e.type === "select" ? (u(), c(h(re), f({
modelValue: d.value[e.name],
"onUpdate:modelValue": (r) => d.value[e.name] = r,
key: e.name + y,
label: e.label,
labelName: e.labelName,
valueName: e.valueName,
childrenName: e.childrenName,
rules: e.rules,
multiple: e.multiple,
name: e.name,
data: e.data,
readonly: a.readonly || e.readonly,
range: e.range,
disabled: a.disabled || e.disabled,
placeholder: e.placeholder,
formItemProps: e.formItemProps,
onChange: (r) => e.onChange && e.onChange(r, e.name),
ref_for: !0
}, e[o[e.type || "text"].propsName]), null, 16, ["modelValue", "onUpdate:modelValue", "label", "labelName", "valueName", "childrenName", "rules", "multiple", "name", "data", "readonly", "range", "disabled", "placeholder", "formItemProps", "onChange"])) : b("", !0), e.type === "radio" ? (u(), c(h(ne), f({
modelValue: d.value[e.name],
"onUpdate:modelValue": (r) => d.value[e.name] = r,
key: e.name + y,
label: e.label,
labelName: e.labelName,
valueName: e.valueName,
childrenName: e.childrenName,
rules: e.rules,
multiple: e.multiple,
name: e.name,
data: e.data,
readonly: a.readonly || e.readonly,
range: e.range,
disabled: a.disabled || e.disabled,
placeholder: e.placeholder,
formItemProps: e.formItemProps,
onChange: (r) => e.onChange && e.onChange(r, e.name),
ref_for: !0
}, e[o[e.type || "text"].propsName]), null, 16, ["modelValue", "onUpdate:modelValue", "label", "labelName", "valueName", "childrenName", "rules", "multiple", "name", "data", "readonly", "range", "disabled", "placeholder", "formItemProps", "onChange"])) : b("", !0), e.type === "checkbox" ? (u(), c(h(oe), f({
modelValue: d.value[e.name],
"onUpdate:modelValue": (r) => d.value[e.name] = r,
key: e.name + y,
label: e.label,
labelName: e.labelName,
valueName: e.valueName,
childrenName: e.childrenName,
rules: e.rules,
multiple: e.multiple,
name: e.name,
data: e.data,
readonly: a.readonly || e.readonly,
range: e.range,
disabled: a.disabled || e.disabled,
placeholder: e.placeholder,
formItemProps: e.formItemProps,
onChange: (r) => e.onChange && e.onChange(r, e.name),
ref_for: !0
}, e[o[e.type || "text"].propsName]), null, 16, ["modelValue", "onUpdate:modelValue", "label", "labelName", "valueName", "childrenName", "rules", "multiple", "name", "data", "readonly", "range", "disabled", "placeholder", "formItemProps", "onChange"])) : b("", !0), e.type === "datepicker" ? (u(), c(h(de), f({
modelValue: d.value[e.name],
"onUpdate:modelValue": (r) => d.value[e.name] = r,
key: e.name + y,
label: e.label,
labelName: e.labelName,
valueName: e.valueName,
childrenName: e.childrenName,
rules: e.rules,
multiple: e.multiple,
name: e.name,
data: e.data,
readonly: a.readonly || e.readonly,
range: e.range,
disabled: a.disabled || e.disabled,
placeholder: e.placeholder,
formItemProps: e.formItemProps,
onChange: (r) => e.onChange && e.onChange(r, e.name),
ref_for: !0
}, e[o[e.type || "text"].propsName]), null, 16, ["modelValue", "onUpdate:modelValue", "label", "labelName", "valueName", "childrenName", "rules", "multiple", "name", "data", "readonly", "range", "disabled", "placeholder", "formItemProps", "onChange"])) : b("", !0), e.type === "textarea" ? (u(), c(h(ue), f({
modelValue: d.value[e.name],
"onUpdate:modelValue": (r) => d.value[e.name] = r,
key: e.name + y,
label: e.label,
labelName: e.labelName,
valueName: e.valueName,
childrenName: e.childrenName,
rules: e.rules,
multiple: e.multiple,
name: e.name,
data: e.data,
readonly: a.readonly || e.readonly,
range: e.range,
disabled: a.disabled || e.disabled,
placeholder: e.placeholder,
formItemProps: e.formItemProps,
onChange: (r) => e.onChange && e.onChange(r, e.name),
ref_for: !0
}, e[o[e.type || "text"].propsName]), null, 16, ["modelValue", "onUpdate:modelValue", "label", "labelName", "valueName", "childrenName", "rules", "multiple", "name", "data", "readonly", "range", "disabled", "placeholder", "formItemProps", "onChange"])) : b("", !0), e.type === "number" ? (u(), c(h(te), f({
modelValue: d.value[e.name],
"onUpdate:modelValue": (r) => d.value[e.name] = r,
key: e.name + y,
label: e.label,
labelName: e.labelName,
valueName: e.valueName,
childrenName: e.childrenName,
rules: e.rules,
multiple: e.multiple,
name: e.name,
data: e.data,
readonly: a.readonly || e.readonly,
range: e.range,
disabled: a.disabled || e.disabled,
placeholder: e.placeholder,
formItemProps: e.formItemProps,
onChange: (r) => e.onChange && e.onChange(r, e.name),
ref_for: !0
}, e[o[e.type || "text"].propsName]), null, 16, ["modelValue", "onUpdate:modelValue", "label", "labelName", "valueName", "childrenName", "rules", "multiple", "name", "data", "readonly", "range", "disabled", "placeholder", "formItemProps", "onChange"])) : b("", !0), e.type === "treeSelect" ? (u(), c(h(se), f({
modelValue: d.value[e.name],
"onUpdate:modelValue": (r) => d.value[e.name] = r,
key: e.name + y,
label: e.label,
labelName: e.labelName,
valueName: e.valueName,
childrenName: e.childrenName,
rules: e.rules,
multiple: e.multiple,
name: e.name,
data: e.data,
readonly: a.readonly || e.readonly,
range: e.range,
disabled: a.disabled || e.disabled,
placeholder: e.placeholder,
formItemProps: e.formItemProps,
onChange: (r) => e.onChange && e.onChange(r, e.name),
ref_for: !0
}, e[o[e.type || "text"].propsName]), null, 16, ["modelValue", "onUpdate:modelValue", "label", "labelName", "valueName", "childrenName", "rules", "multiple", "name", "data", "readonly", "range", "disabled", "placeholder", "formItemProps", "onChange"])) : b("", !0)], 64))])) : (u(), c(F, f({
key: e.name + y,
label: e.label,
rules: e.rules,
name: e.name,
ref_for: !0
}, e.formItemProps), {
default: g(() => [U(P, f({
modelValue: d.value[e.name],
"onUpdate:modelValue": (r) => d.value[e.name] = r,
multiple: e.multiple,
readonly: a.readonly || e.readonly,
disabled: a.disabled || e.disabled,
ref_for: !0
}, e.uploadProps), null, 16, ["modelValue", "onUpdate:modelValue", "multiple", "readonly", "disabled"])]),
_: 2
}, 1040, ["label", "rules", "name"]))]),
_: 2
}, 1032, ["span"]))), 128)), U(S, {
span: 12
}, {
default: g(() => [a.hideFooter ? b("", !0) : (u(), c(F, {
key: 0
}, {
default: g(() => [V.footer ? b("", !0) : (u(), _("div", fe, [!a.hideFooter && !V.footer ? (u(), _(I, {
key: 0
}, [U(J, f({
loading: h(O)
}, a.submitButtonProps, {
class: "pro-form-submit-button",
type: "submit"
}), {
default: g(() => [Y(L(a.submitText), 1)]),
_: 1
}, 16, ["loading"]), a.showReset ? (u(), c(J, f({
key: 0,
loading: h(O),
style: {
"margin-left": "12px"
}
}, a.resetButtonProps, {
theme: "default",
type: "reset"
}), {
default: g(() => [Y(L(a.resetText), 1)]),
_: 1
}, 16, ["loading"])) : b("", !0), V.actions ? B(t.$slots, "actions", {
key: 1
}) : b("", !0)], 64)) : B(t.$slots, "footer", {
key: 1
})]))]),
_: 3
}))]),
_: 3
})]),
_: 3
}, 8, ["gutter"])) : b("", !0)], 64))]),
_: 3
}, 16, ["labelAlign", "labelWidth", "rules", "data"])]),
_: 3
}, 16, ["loading", "text"]);
};
}
}), Ce = K(ce);
export {
Ce as P,
$ as a,
T as f,
R as i,
A as r
};