UNPKG

tdesign-pro-component

Version:

ProComponents tdesign-vue-next + Vue3 + TS

486 lines (485 loc) 18.8 kB
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 };