UNPKG

@form-renderer/preset-element-plus

Version:

ElementPlus preset for form-renderer

1,477 lines (1,476 loc) 43 kB
import { buildValidationContext as J } from "@form-renderer/adapter-vue3"; import { defineComponent as y, createBlock as f, openBlock as r, unref as h, mergeProps as g, withCtx as w, createElementBlock as p, Fragment as M, renderList as A, createTextVNode as L, toDisplayString as T, ref as j, watch as Q, createVNode as V, createElementVNode as P, createCommentVNode as x, resolveComponent as F, renderSlot as E, computed as $, normalizeClass as Y, createSlots as X } from "vue"; import { ElInput as G, ElInputNumber as Z, ElSwitch as _, ElCheckboxGroup as ee, ElCheckbox as te, ElRadioGroup as ae, ElRadio as le, ElSelect as oe, ElOption as ne, ElDatePicker as re, ElCascader as se, ElTimePicker as ie, ElSlider as de, ElRate as ce, ElColorPicker as ue, ElUpload as me, ElIcon as O, ElButton as fe, ElFormItem as he } from "element-plus"; import { Plus as pe, UploadFilled as ge } from "@element-plus/icons-vue"; const R = { toComponent: (e) => e == null ? "" : String(e), fromComponent: (e) => e }, U = { toComponent: (e) => { if (e == null || e === "") return; const o = Number(e); return isNaN(o) ? void 0 : o; }, fromComponent: (e) => e }, ve = { toComponent: (e) => typeof e == "boolean" ? e : typeof e == "string" ? e === "true" || e === "1" : typeof e == "number" ? e !== 0 : !!e, fromComponent: (e) => e }, ye = { toComponent: (e) => { if (Array.isArray(e)) return e; if (e == null) return []; if (typeof e == "string") try { const o = JSON.parse(e); return Array.isArray(o) ? o : [e]; } catch { return [e]; } return [e]; }, fromComponent: (e) => e }, q = { toComponent: (e) => { if (e == null || e === "") return null; if (e instanceof Date) return e; if (typeof e == "string") { const o = new Date(e); return isNaN(o.getTime()) ? null : e; } return typeof e == "number" ? new Date(e) : null; }, fromComponent: (e) => e == null ? null : e instanceof Date ? e.toISOString().split("T")[0] : e }, H = { toComponent: (e) => e, fromComponent: (e) => e ?? "" }, be = { toComponent: (e) => Array.isArray(e) ? e : e == null || e === "" ? [] : [e], fromComponent: (e) => e }, we = { toComponent: (e) => Array.isArray(e) ? e : e == null ? [] : [e], fromComponent: (e) => e }; function C(e) { return { input: R, textarea: R, number: U, switch: ve, "checkbox-group": be, "radio-group": H, select: H, "date-picker": q, "time-picker": q, cascader: ye, slider: U, rate: U, "color-picker": R, upload: we }[e]; } const I = { onChange: "change", onFocus: "focus", onBlur: "blur", onClear: "clear" }, W = { ...I, onInput: "input", onKeydown: "keydown", onKeyup: "keyup", onEnter: "keydown.enter" }, Ce = { ...I, onInput: "input" }, xe = { onChange: "update:modelValue" }, D = { ...I, onVisibleChange: "visible-change", onRemoveTag: "remove-tag" }, N = { ...I, onCalendarChange: "calendar-change", onPanelChange: "panel-change", onVisibleChange: "visible-change" }, Be = { onValidate: "validate", onSubmit: "submit", onReset: "reset" }, Te = { onChange: "update:modelValue", onAdd: "add", onRemove: "remove", onSort: "sort", onMove: "move" }, ke = { onChange: "change", onTabChange: "tab-change", onCollapseChange: "change" }, ze = { ...I, onVisibleChange: "visible-change", onExpandChange: "expand-change" }, Ee = { onChange: "change", onInput: "input" }, Pe = { onChange: "update:modelValue" }, Me = { onChange: "update:modelValue", onActiveChange: "active-change" }, Ie = { onChange: "change", onPreview: "preview", onRemove: "remove", onSuccess: "success", onError: "error", onProgress: "progress", onExceed: "exceed" }; function b(e) { return { input: W, textarea: W, number: Ce, switch: xe, "checkbox-group": D, "radio-group": D, select: D, "date-picker": N, "time-picker": N, "datetime-picker": N, cascader: ze, slider: Ee, rate: Pe, "color-picker": Me, upload: Ie, form: Be, layout: ke, list: Te }[e] || I; } function Tt(e, o) { const a = {}; return Object.entries(e).forEach(([n, l]) => { a[n] = l; }), Object.entries(o).forEach(([n, l]) => { l !== void 0 && (a[n] = l); }), a; } const kt = { /** * 合并多个事件映射 */ merge: (...e) => { const o = {}; return e.forEach((a) => { Object.entries(a).forEach(([n, l]) => { o[n] = l; }); }), o; }, /** * 过滤事件映射 */ filter: (e, o) => { const a = {}; return Object.entries(e).forEach(([n, l]) => { o(n, l) && (a[n] = l); }), a; }, /** * 转换事件映射 */ transform: (e, o) => { const a = {}; return Object.entries(e).forEach(([n, l]) => { const [t, s] = o(n, l); a[t] = s; }), a; } }; function K(e, o, a) { const n = J( { validators: e.validators, required: e.required }, o ); if (!n.shouldValidate) return []; const l = []; return n.required && l.push({ required: !0, message: `${e.label || "此项"}不能为空`, trigger: "change" }), n.validators.forEach((t) => { const s = { validator: (d, B, v) => { try { const k = { path: e.path, // 获取 Schema getSchema: (m) => e, // 获取表单数据 - 关键! getValue: (m) => m ? a.engine?.getEngine().getValue(m) : B, // TODO: 支持 list 场景 getCurRowValue: () => ({}), getCurRowIndex: () => -1 }, i = t(B, k); if (i instanceof Promise) i.then((m) => { if (m === !0 || m === void 0 || m === null) v(); else if (m === !1) v(new Error("校验失败")); else if (typeof m == "string") v(new Error(m)); else if (typeof m == "object" && m !== null) { const u = "message" in m ? m.message : "校验失败"; v(new Error(u)); } else v(); }).catch((m) => { v(new Error(m.message || "校验出错")); }); else if (i === !0 || i === void 0 || i === null) v(); else if (i === !1) v(new Error("校验失败")); else if (typeof i == "string") v(new Error(i)); else if (typeof i == "object" && i !== null) { const m = "message" in i ? i.message : "校验失败"; v(new Error(m)); } else v(); } catch (k) { v(new Error(k.message || "校验出错")); } }, trigger: "blur" // 默认失焦时触发 }; l.push(s); }), l; } const Fe = /* @__PURE__ */ y({ __name: "Input", props: { type: { default: "text" }, size: { default: "default" }, clearable: { type: Boolean, default: !1 }, showPassword: { type: Boolean, default: !1 }, maxlength: {}, minlength: {}, showWordLimit: { type: Boolean, default: !1 }, prefixIcon: {}, suffixIcon: {}, readonly: { type: Boolean, default: !1 }, autofocus: { type: Boolean, default: !1 }, modelValue: {}, onChange: {}, disabled: { type: Boolean }, placeholder: {} }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (t) => { a.onChange?.(t), n("change", t); }; return (t, s) => (r(), f(h(G), g({ "model-value": e.modelValue, "onUpdate:modelValue": l, disabled: e.disabled, placeholder: e.placeholder, size: e.size, clearable: e.clearable, "show-password": e.showPassword, type: e.type, maxlength: e.maxlength, minlength: e.minlength, "show-word-limit": e.showWordLimit, "prefix-icon": e.prefixIcon, "suffix-icon": e.suffixIcon, readonly: e.readonly, autofocus: e.autofocus }, t.$attrs), null, 16, ["model-value", "disabled", "placeholder", "size", "clearable", "show-password", "type", "maxlength", "minlength", "show-word-limit", "prefix-icon", "suffix-icon", "readonly", "autofocus"])); } }), $e = /* @__PURE__ */ y({ __name: "InputNumber", props: { size: { default: "default" }, min: {}, max: {}, step: { default: 1 }, precision: {}, controls: { type: Boolean, default: !0 }, controlsPosition: { default: "right" }, readonly: { type: Boolean, default: !1 }, modelValue: {}, onChange: {}, disabled: { type: Boolean }, placeholder: {} }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (t) => { a.onChange?.(t), n("change", t); }; return (t, s) => (r(), f(h(Z), g({ "model-value": t.value, "onUpdate:modelValue": l, disabled: e.disabled, placeholder: e.placeholder, size: e.size, min: e.min, max: e.max, step: e.step, precision: e.precision, controls: e.controls, "controls-position": e.controlsPosition, readonly: e.readonly }, t.$attrs), null, 16, ["model-value", "disabled", "placeholder", "size", "min", "max", "step", "precision", "controls", "controls-position", "readonly"])); } }), Se = /* @__PURE__ */ y({ __name: "Switch", props: { size: { default: "default" }, width: {}, inlinePrompt: { type: Boolean, default: !1 }, activeText: {}, inactiveText: {}, activeValue: { type: [Boolean, String, Number], default: !0 }, inactiveValue: { type: [Boolean, String, Number], default: !1 }, activeColor: {}, inactiveColor: {}, borderColor: {}, modelValue: {}, onChange: {}, readonly: { type: Boolean }, disabled: { type: Boolean }, placeholder: {} }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (t) => { a.onChange?.(t), n("change", t); }; return (t, s) => (r(), f(h(_), g({ "model-value": e.modelValue, "onUpdate:modelValue": l, disabled: e.disabled, size: e.size, width: e.width, "inline-prompt": e.inlinePrompt, "active-text": e.activeText, "inactive-text": e.inactiveText, "active-value": e.activeValue, "inactive-value": e.inactiveValue, "active-color": e.activeColor, "inactive-color": e.inactiveColor, "border-color": e.borderColor }, t.$attrs), null, 16, ["model-value", "disabled", "size", "width", "inline-prompt", "active-text", "inactive-text", "active-value", "inactive-value", "active-color", "inactive-color", "border-color"])); } }), Ve = /* @__PURE__ */ y({ __name: "CheckboxGroup", props: { options: { default: () => [] }, size: { default: "default" }, min: {}, max: {}, modelValue: {}, onChange: {}, readonly: { type: Boolean }, disabled: { type: Boolean }, placeholder: {} }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (t) => { console.log("----", t), a.onChange?.(t), n("change", t); }; return (t, s) => (r(), f(h(ee), g({ "model-value": t.value, "onUpdate:modelValue": l, disabled: e.disabled, size: e.size, min: e.min, max: e.max }, t.$attrs), { default: w(() => [ (r(!0), p(M, null, A(e.options, (d) => (r(), f(h(te), { key: String(d.value), label: d.value, disabled: d.disabled }, { default: w(() => [ L(T(d.label), 1) ]), _: 2 }, 1032, ["label", "disabled"]))), 128)) ]), _: 1 }, 16, ["model-value", "disabled", "size", "min", "max"])); } }), Ae = /* @__PURE__ */ y({ __name: "RadioGroup", props: { modelValue: { type: [String, Number, Boolean] }, options: { default: () => [] }, size: { default: "default" }, onChange: {}, readonly: { type: Boolean }, disabled: { type: Boolean }, placeholder: {} }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (t) => { t !== void 0 && (a.onChange?.(t), n("change", t)); }; return (t, s) => (r(), f(h(ae), g({ "model-value": e.modelValue, "onUpdate:modelValue": l, disabled: e.disabled, size: e.size }, t.$attrs), { default: w(() => [ (r(!0), p(M, null, A(e.options, (d) => (r(), f(h(le), { key: String(d.value), label: d.value, disabled: d.disabled }, { default: w(() => [ L(T(d.label), 1) ]), _: 2 }, 1032, ["label", "disabled"]))), 128)) ]), _: 1 }, 16, ["model-value", "disabled", "size"])); } }), Re = /* @__PURE__ */ y({ __name: "Select", props: { options: { default: () => [] }, size: { default: "default" }, clearable: { type: Boolean, default: !1 }, filterable: { type: Boolean, default: !1 }, multiple: { type: Boolean, default: !1 }, placeholder: {}, loading: { type: Boolean, default: !1 }, loadingText: {}, noDataText: {}, noMatchText: {}, remote: { type: Boolean, default: !1 }, remoteMethod: {}, allowCreate: { type: Boolean, default: !1 }, defaultFirstOption: { type: Boolean, default: !1 }, reserveKeyword: { type: Boolean, default: !0 }, collapseTags: { type: Boolean, default: !1 }, collapseTagsTooltip: { type: Boolean, default: !1 }, multipleLimit: { default: 0 }, modelValue: {}, onChange: {}, readonly: { type: Boolean }, disabled: { type: Boolean } }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (t) => { a.onChange?.(t), n("change", t); }; return (t, s) => (r(), f(h(oe), g({ "model-value": e.modelValue, "onUpdate:modelValue": l, disabled: e.disabled, size: e.size, clearable: e.clearable, filterable: e.filterable, multiple: e.multiple, placeholder: e.placeholder, loading: e.loading, "loading-text": e.loadingText, "no-data-text": e.noDataText, "no-match-text": e.noMatchText, remote: e.remote, "remote-method": e.remoteMethod, "allow-create": e.allowCreate, "default-first-option": e.defaultFirstOption, "reserve-keyword": e.reserveKeyword, "collapse-tags": e.collapseTags, "collapse-tags-tooltip": e.collapseTagsTooltip, "multiple-limit": e.multipleLimit }, t.$attrs), { default: w(() => [ (r(!0), p(M, null, A(e.options, (d) => (r(), f(h(ne), { key: String(d.value), label: d.label, value: d.value, disabled: d.disabled }, null, 8, ["label", "value", "disabled"]))), 128)) ]), _: 1 }, 16, ["model-value", "disabled", "size", "clearable", "filterable", "multiple", "placeholder", "loading", "loading-text", "no-data-text", "no-match-text", "remote", "remote-method", "allow-create", "default-first-option", "reserve-keyword", "collapse-tags", "collapse-tags-tooltip", "multiple-limit"])); } }), Ue = /* @__PURE__ */ y({ __name: "DatePicker", props: { type: { default: "date" }, size: { default: "default" }, format: {}, valueFormat: {}, placeholder: {}, startPlaceholder: {}, endPlaceholder: {}, clearable: { type: Boolean, default: !0 }, readonly: { type: Boolean, default: !1 }, editable: { type: Boolean, default: !0 }, prefixIcon: {}, clearIcon: {}, shortcuts: {}, disabledDate: {}, cellClassName: {}, rangeSeparator: { default: "-" }, defaultValue: {}, defaultTime: {}, teleported: { type: Boolean, default: !0 }, modelValue: {}, onChange: {}, disabled: { type: Boolean } }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (t) => { a.onChange?.(t), n("change", t); }; return (t, s) => (r(), f(h(re), g({ "model-value": e.modelValue, "onUpdate:modelValue": l, disabled: e.disabled, size: e.size, type: e.type, format: e.format, "value-format": e.valueFormat, placeholder: e.placeholder, "start-placeholder": e.startPlaceholder, "end-placeholder": e.endPlaceholder, clearable: e.clearable, readonly: e.readonly, editable: e.editable, "prefix-icon": e.prefixIcon, "clear-icon": e.clearIcon, shortcuts: e.shortcuts, "disabled-date": e.disabledDate, "cell-class-name": e.cellClassName, "range-separator": e.rangeSeparator, "default-value": e.defaultValue, "default-time": e.defaultTime, teleported: e.teleported }, t.$attrs), null, 16, ["model-value", "disabled", "size", "type", "format", "value-format", "placeholder", "start-placeholder", "end-placeholder", "clearable", "readonly", "editable", "prefix-icon", "clear-icon", "shortcuts", "disabled-date", "cell-class-name", "range-separator", "default-value", "default-time", "teleported"])); } }), De = /* @__PURE__ */ y({ __name: "Textarea", props: { size: { default: "default" }, rows: { default: 3 }, autosize: { type: [Boolean, Object], default: !1 }, maxlength: {}, minlength: {}, showWordLimit: { type: Boolean, default: !1 }, readonly: { type: Boolean, default: !1 }, autofocus: { type: Boolean, default: !1 }, resize: { default: "vertical" }, modelValue: {}, onChange: {}, disabled: { type: Boolean }, placeholder: {} }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (t) => { a.onChange?.(t), n("change", t); }; return (t, s) => (r(), f(h(G), g({ "model-value": e.modelValue, "onUpdate:modelValue": l, type: "textarea", disabled: e.disabled, placeholder: e.placeholder, size: e.size, rows: e.rows, autosize: e.autosize, maxlength: e.maxlength, minlength: e.minlength, "show-word-limit": e.showWordLimit, readonly: e.readonly, autofocus: e.autofocus, resize: e.resize }, t.$attrs), null, 16, ["model-value", "disabled", "placeholder", "size", "rows", "autosize", "maxlength", "minlength", "show-word-limit", "readonly", "autofocus", "resize"])); } }), Ne = /* @__PURE__ */ y({ __name: "Cascader", props: { options: { default: () => [] }, size: { default: "default" }, clearable: { type: Boolean, default: !0 }, filterable: { type: Boolean, default: !1 }, showAllLevels: { type: Boolean, default: !0 }, collapseTags: { type: Boolean, default: !1 }, collapseTagsTooltip: { type: Boolean, default: !1 }, separator: { default: " / " }, cascaderProps: {}, onVisibleChange: {}, modelValue: {}, onChange: {}, readonly: { type: Boolean }, disabled: { type: Boolean }, placeholder: {} }, emits: ["change", "visible-change"], setup(e, { emit: o }) { const a = e, n = o, l = (d) => { a.onChange?.(d), n("change", d); }, t = (d) => { }, s = (d) => { a.onVisibleChange?.(d), n("visible-change", d); }; return (d, B) => (r(), f(h(se), g({ "model-value": d.value, "onUpdate:modelValue": l, options: e.options, disabled: e.disabled, placeholder: e.placeholder, size: e.size, clearable: e.clearable, filterable: e.filterable, "show-all-levels": e.showAllLevels, "collapse-tags": e.collapseTags, "collapse-tags-tooltip": e.collapseTagsTooltip, separator: e.separator, props: e.cascaderProps }, d.$attrs, { onChange: t, onVisibleChange: s }), null, 16, ["model-value", "options", "disabled", "placeholder", "size", "clearable", "filterable", "show-all-levels", "collapse-tags", "collapse-tags-tooltip", "separator", "props"])); } }), Le = /* @__PURE__ */ y({ __name: "TimePicker", props: { size: { default: "default" }, clearable: { type: Boolean, default: !0 }, format: { default: "HH:mm:ss" }, valueFormat: { default: "HH:mm:ss" }, isRange: { type: Boolean, default: !1 }, startPlaceholder: { default: "开始时间" }, endPlaceholder: { default: "结束时间" }, rangeSeparator: { default: "-" }, arrowControl: { type: Boolean, default: !1 }, editable: { type: Boolean, default: !0 }, modelValue: {}, onChange: {}, readonly: { type: Boolean }, disabled: { type: Boolean }, placeholder: {} }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (t) => { a.onChange?.(t), n("change", t); }; return (t, s) => (r(), f(h(ie), g({ "model-value": t.value, "onUpdate:modelValue": l, disabled: e.disabled, placeholder: e.placeholder, size: e.size, clearable: e.clearable, format: e.format, "value-format": e.valueFormat, "is-range": e.isRange, "start-placeholder": e.startPlaceholder, "end-placeholder": e.endPlaceholder, "range-separator": e.rangeSeparator, "arrow-control": e.arrowControl, editable: e.editable }, t.$attrs), null, 16, ["model-value", "disabled", "placeholder", "size", "clearable", "format", "value-format", "is-range", "start-placeholder", "end-placeholder", "range-separator", "arrow-control", "editable"])); } }), Oe = /* @__PURE__ */ y({ __name: "Slider", props: { size: { default: "default" }, min: { default: 0 }, max: { default: 100 }, step: { default: 1 }, showInput: { type: Boolean, default: !1 }, showInputControls: { type: Boolean, default: !0 }, showStops: { type: Boolean, default: !1 }, showTooltip: { type: Boolean, default: !0 }, formatTooltip: {}, range: { type: Boolean, default: !1 }, vertical: { type: Boolean, default: !1 }, height: {}, marks: {}, modelValue: {}, onChange: {}, readonly: { type: Boolean }, disabled: { type: Boolean }, placeholder: {} }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (s) => { a.onChange?.(s), n("change", s); }, t = (s) => { }; return (s, d) => (r(), f(h(de), g({ "model-value": s.value, "onUpdate:modelValue": l, disabled: e.disabled, size: e.size, min: e.min, max: e.max, step: e.step, "show-input": e.showInput, "show-input-controls": e.showInputControls, "show-stops": e.showStops, "show-tooltip": e.showTooltip, "format-tooltip": e.formatTooltip, range: e.range, vertical: e.vertical, height: e.height, marks: e.marks }, s.$attrs, { onChange: t }), null, 16, ["model-value", "disabled", "size", "min", "max", "step", "show-input", "show-input-controls", "show-stops", "show-tooltip", "format-tooltip", "range", "vertical", "height", "marks"])); } }), qe = /* @__PURE__ */ y({ __name: "Rate", props: { size: { default: "default" }, max: { default: 5 }, allowHalf: { type: Boolean, default: !1 }, lowThreshold: { default: 2 }, highThreshold: { default: 4 }, colors: {}, voidColor: {}, disabledVoidColor: {}, icons: {}, voidIcon: {}, disabledVoidIcon: {}, showText: { type: Boolean, default: !1 }, showScore: { type: Boolean, default: !1 }, textColor: {}, texts: {}, scoreTemplate: {}, modelValue: {}, onChange: {}, readonly: { type: Boolean }, disabled: { type: Boolean }, placeholder: {} }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = (t) => { a.onChange?.(t), n("change", t); }; return (t, s) => (r(), f(h(ce), g({ "model-value": t.value, "onUpdate:modelValue": l, disabled: e.disabled, size: e.size, max: e.max, "allow-half": e.allowHalf, "low-threshold": e.lowThreshold, "high-threshold": e.highThreshold, colors: e.colors, "void-color": e.voidColor, "disabled-void-color": e.disabledVoidColor, icons: e.icons, "void-icon": e.voidIcon, "disabled-void-icon": e.disabledVoidIcon, "show-text": e.showText, "show-score": e.showScore, "text-color": e.textColor, texts: e.texts, "score-template": e.scoreTemplate }, t.$attrs), null, 16, ["model-value", "disabled", "size", "max", "allow-half", "low-threshold", "high-threshold", "colors", "void-color", "disabled-void-color", "icons", "void-icon", "disabled-void-icon", "show-text", "show-score", "text-color", "texts", "score-template"])); } }), He = /* @__PURE__ */ y({ __name: "ColorPicker", props: { size: { default: "default" }, showAlpha: { type: Boolean, default: !1 }, colorFormat: { default: "hex" }, predefine: {}, onActiveChange: {}, modelValue: {}, onChange: {}, readonly: { type: Boolean }, disabled: { type: Boolean }, placeholder: {} }, emits: ["change", "active-change"], setup(e, { emit: o }) { const a = e, n = o, l = (s) => { a.onChange?.(s), n("change", s); }, t = (s) => { a.onActiveChange?.(s), n("active-change", s); }; return (s, d) => (r(), f(h(ue), g({ "model-value": s.value, "onUpdate:modelValue": l, disabled: e.disabled, size: e.size, "show-alpha": e.showAlpha, "color-format": e.colorFormat, predefine: e.predefine }, s.$attrs, { onActiveChange: t }), null, 16, ["model-value", "disabled", "size", "show-alpha", "color-format", "predefine"])); } }), We = { class: "el-upload__text" }, je = { key: 0, class: "el-upload__tip" }, Ye = { key: 0, class: "el-upload__tip" }, Ge = /* @__PURE__ */ y({ __name: "Upload", props: { action: { default: "" }, headers: {}, method: { default: "post" }, data: {}, name: { default: "file" }, withCredentials: { type: Boolean, default: !1 }, multiple: { type: Boolean, default: !1 }, accept: {}, size: { default: "default" }, limit: {}, drag: { type: Boolean, default: !1 }, listType: { default: "text" }, autoUpload: { type: Boolean, default: !0 }, showFileList: { type: Boolean, default: !0 }, buttonText: {}, dragText: {}, tip: {}, onPreview: {}, onRemove: {}, onSuccess: {}, onError: {}, onProgress: {}, onExceed: {}, beforeUpload: {}, beforeRemove: {}, modelValue: {}, onChange: {}, readonly: { type: Boolean }, disabled: { type: Boolean }, placeholder: {} }, emits: ["change"], setup(e, { emit: o }) { const a = e, n = o, l = j([]); Q( () => a.value, (u) => { Array.isArray(u) && (l.value = u.map((c) => typeof c == "string" ? { name: c.split("/").pop() || "", url: c, status: "success", uid: Date.now() + Math.random() } : c)); }, { immediate: !0 } ); const t = (u) => { a.onChange?.(u), n("change", u); }, s = (u, c) => { l.value = c, t(c); }, d = (u) => { a.onPreview?.(u); }, B = (u, c) => { l.value = c, a.onRemove?.(u, c), t(c); }, v = (u, c, z) => { a.onSuccess?.(u, c, z), t(z); }, k = (u, c, z) => { a.onError?.(u, c, z); }, i = (u, c, z) => { a.onProgress?.(u, c, z); }, m = (u, c) => { a.onExceed?.(u, c); }; return (u, c) => (r(), f(h(me), g({ "model-value": u.value, "onUpdate:modelValue": t, action: e.action, headers: e.headers, method: e.method, data: e.data, name: e.name, "with-credentials": e.withCredentials, multiple: e.multiple, accept: e.accept, disabled: e.disabled, limit: e.limit, drag: e.drag, "file-list": l.value, "list-type": e.listType, "auto-upload": e.autoUpload, "show-file-list": e.showFileList, "on-preview": d, "on-remove": B, "on-success": v, "on-error": k, "on-progress": i, "on-change": s, "on-exceed": m, "before-upload": e.beforeUpload, "before-remove": e.beforeRemove }, u.$attrs), { default: w(() => [ e.listType === "picture-card" ? (r(), f(h(O), { key: 0 }, { default: w(() => [ V(h(pe)) ]), _: 1 })) : e.drag ? (r(), p(M, { key: 1 }, [ V(h(O), { class: "el-icon--upload" }, { default: w(() => [ V(h(ge)) ]), _: 1 }), P("div", We, T(e.dragText || "将文件拖到此处,或<em>点击上传</em>"), 1), e.tip ? (r(), p("div", je, T(e.tip), 1)) : x("", !0) ], 64)) : (r(), p(M, { key: 2 }, [ V(h(fe), { type: "primary", size: e.size }, { default: w(() => [ L(T(e.buttonText || "点击上传"), 1) ]), _: 1 }, 8, ["size"]), e.tip ? (r(), p("div", Ye, T(e.tip), 1)) : x("", !0) ], 64)) ]), _: 1 }, 16, ["model-value", "action", "headers", "method", "data", "name", "with-credentials", "multiple", "accept", "disabled", "limit", "drag", "file-list", "list-type", "auto-upload", "show-file-list", "before-upload", "before-remove"])); } }), S = (e, o) => { const a = e.__vccOpts || e; for (const [n, l] of o) a[n] = l; return a; }, Ke = /* @__PURE__ */ S(Ge, [["__scopeId", "data-v-e941592a"]]), Je = /* @__PURE__ */ y({ __name: "Form", props: { modelValue: {}, rules: {}, labelPosition: { default: "right" }, labelWidth: { default: "100px" }, size: { default: "default" }, disabled: { type: Boolean, default: !1 }, validateOnRuleChange: { type: Boolean, default: !0 }, hideRequiredAsterisk: { type: Boolean, default: !1 }, showMessage: { type: Boolean, default: !0 }, inlineMessage: { type: Boolean, default: !1 }, statusIcon: { type: Boolean, default: !1 } }, emits: ["update:modelValue", "validate"], setup(e, { expose: o, emit: a }) { const n = a, l = j(), t = (i, m, u) => { n("validate", i, m, u); }; return o({ validate: (i) => l.value?.validate(i), validateField: (i, m) => l.value?.validateField(i, m), resetFields: () => { l.value?.resetFields(); }, scrollToField: (i) => { l.value?.scrollToField(i); }, clearValidate: (i) => { l.value?.clearValidate(i); }, formRef: l }), (i, m) => { const u = F("el-form"); return r(), f(u, g({ ref_key: "formRef", ref: l, model: e.modelValue, rules: e.rules, "label-position": e.labelPosition, "label-width": e.labelWidth, size: e.size, disabled: e.disabled, "validate-on-rule-change": e.validateOnRuleChange, "hide-required-asterisk": e.hideRequiredAsterisk, "show-message": e.showMessage, "inline-message": e.inlineMessage, "status-icon": e.statusIcon }, i.$attrs, { onValidate: t }), { default: w(() => [ E(i.$slots, "default", {}, void 0, !0) ]), _: 3 }, 16, ["model", "rules", "label-position", "label-width", "size", "disabled", "validate-on-rule-change", "hide-required-asterisk", "show-message", "inline-message", "status-icon"]); }; } }), Qe = /* @__PURE__ */ S(Je, [["__scopeId", "data-v-fa9c3c5e"]]), Xe = /* @__PURE__ */ y({ __name: "Layout", props: { type: { default: "card" } }, setup(e) { const o = e, a = $(() => { const { type: l, ...t } = o; return t; }), n = $(() => [ "element-plus-layout", `element-plus-layout--${o.type}` ]); return (l, t) => { const s = F("el-row"), d = F("el-tabs"), B = F("el-collapse"), v = F("el-card"); return e.type === "grid" ? (r(), f(s, g({ key: 0 }, a.value, { class: n.value }), { default: w(() => [ E(l.$slots, "default", {}, void 0, !0) ]), _: 3 }, 16, ["class"])) : e.type === "tabs" ? (r(), f(d, g({ key: 1 }, a.value, { class: n.value }), { default: w(() => [ E(l.$slots, "default", {}, void 0, !0) ]), _: 3 }, 16, ["class"])) : e.type === "collapse" ? (r(), f(B, g({ key: 2 }, a.value, { class: n.value }), { default: w(() => [ E(l.$slots, "default", {}, void 0, !0) ]), _: 3 }, 16, ["class"])) : e.type === "card" ? (r(), f(v, g({ key: 3 }, a.value, { class: n.value }), { default: w(() => [ E(l.$slots, "default", {}, void 0, !0) ]), _: 3 }, 16, ["class"])) : (r(), p("div", { key: 4, class: Y(n.value) }, [ E(l.$slots, "default", {}, void 0, !0) ], 2)); }; } }), Ze = /* @__PURE__ */ S(Xe, [["__scopeId", "data-v-957d17a8"]]), _e = { key: 0, class: "element-plus-list__header" }, et = { key: 0, class: "element-plus-list__title" }, tt = { class: "element-plus-list__body" }, at = { key: 0, class: "element-plus-list__item-count" }, lt = { class: "element-plus-list__item-index" }, ot = { class: "element-plus-list__item-content" }, nt = { key: 0, class: "element-plus-list__item-actions" }, rt = ["onClick"], st = ["onClick"], it = ["onClick"], dt = { key: 1, class: "element-plus-list__empty" }, ct = { class: "element-plus-list__empty-text" }, ut = /* @__PURE__ */ y({ __name: "List", props: { rows: {}, title: {}, bordered: { type: Boolean, default: !0 }, showActions: { type: Boolean, default: !0 }, maxRows: {}, minRows: { default: 0 }, emptyText: { default: "暂无数据" } }, emits: ["add", "remove", "move"], setup(e, { emit: o }) { const a = e, n = o, l = $(() => a.maxRows === void 0 ? !0 : a.rows.length < a.maxRows), t = $(() => a.rows.length > (a.minRows ?? 0)), s = (i) => i > 0, d = (i) => i < a.rows.length - 1, B = () => n("add"), v = (i) => n("remove", i), k = (i, m) => n("move", i, m); return (i, m) => (r(), p("div", { class: Y(["element-plus-list", { bordered: e.bordered }]) }, [ e.title || e.showActions ? (r(), p("div", _e, [ e.title ? (r(), p("h4", et, T(e.title), 1)) : x("", !0), e.showActions && l.value ? (r(), p("button", { key: 1, type: "button", class: "element-plus-list__btn element-plus-list__add-btn", onClick: B }, " + 添加 ")) : x("", !0) ])) : x("", !0), P("div", tt, [ e.rows.length > 0 ? (r(), p("div", at, " 共 " + T(e.rows.length) + " 项 ", 1)) : x("", !0), (r(!0), p(M, null, A(e.rows, (u, c) => (r(), p("div", { key: u.__key || c, class: "element-plus-list__item" }, [ P("div", lt, T(c + 1), 1), P("div", ot, [ E(i.$slots, "default", { row: u, index: c }, void 0, !0) ]), e.showActions ? (r(), p("div", nt, [ s(c) ? (r(), p("button", { key: 0, type: "button", class: "element-plus-list__btn element-plus-list__btn-icon", title: "上移", onClick: (z) => k(c, c - 1) }, " ↑ ", 8, rt)) : x("", !0), d(c) ? (r(), p("button", { key: 1, type: "button", class: "element-plus-list__btn element-plus-list__btn-icon", title: "下移", onClick: (z) => k(c, c + 1) }, " ↓ ", 8, st)) : x("", !0), t.value ? (r(), p("button", { key: 2, type: "button", class: "element-plus-list__btn element-plus-list__btn-danger", onClick: (z) => v(c) }, " 删除 ", 8, it)) : x("", !0) ])) : x("", !0) ]))), 128)), e.rows.length === 0 ? (r(), p("div", dt, [ P("span", ct, T(e.emptyText), 1), e.showActions && l.value ? (r(), p("button", { key: 0, type: "button", class: "element-plus-list__btn element-plus-list__add-btn", onClick: B }, " + 添加第一项 ")) : x("", !0) ])) : x("", !0) ]) ], 2)); } }), mt = /* @__PURE__ */ S(ut, [["__scopeId", "data-v-c26597b5"]]), ft = { class: "el-form-item__error-custom" }, ht = /* @__PURE__ */ y({ __name: "FieldWrapper", props: { label: {}, name: {}, required: { type: Boolean }, error: {}, showMessage: { type: Boolean, default: !0 }, inlineMessage: { type: Boolean, default: !1 }, size: { default: "default" }, rules: { default: () => [] }, showCustomError: { type: Boolean, default: !1 } }, setup(e) { const o = e, a = $(() => o.rules && o.rules.length > 0 ? o.rules : void 0); return (n, l) => (r(), f(h(he), g({ label: e.label, prop: e.name, required: e.required, rules: a.value, error: e.error, "show-message": e.showMessage, "inline-message": e.inlineMessage, size: e.size }, n.$attrs), X({ default: w(() => [ E(n.$slots, "default", {}, void 0, !0) ]), _: 2 }, [ e.error && e.showCustomError ? { name: "error", fn: w(({ error: t }) => [ P("div", ft, T(t), 1) ]), key: "0" } : void 0 ]), 1040, ["label", "prop", "required", "rules", "error", "show-message", "inline-message", "size"])); } }), pt = /* @__PURE__ */ S(ht, [["__scopeId", "data-v-2b8940e7"]]), gt = [ { name: "input", component: Fe, type: "field", needFormItem: !0, defaultProps: { clearable: !0, placeholder: "请输入" }, valueTransformer: C("input"), eventMapping: b("input") }, { name: "textarea", component: De, type: "field", needFormItem: !0, defaultProps: { rows: 3, showWordLimit: !1, placeholder: "请输入" }, valueTransformer: C("textarea"), eventMapping: b("textarea") }, { name: "number", component: $e, type: "field", needFormItem: !0, defaultProps: { controls: !0, controlsPosition: "right" }, valueTransformer: C("number"), eventMapping: b("number") }, { name: "switch", component: Se, type: "field", needFormItem: !0, defaultProps: { activeValue: !0, inactiveValue: !1 }, valueTransformer: C("switch"), eventMapping: b("switch") }, { name: "checkbox-group", component: Ve, type: "field", needFormItem: !0, defaultProps: { options: [] }, valueTransformer: C("checkbox-group"), eventMapping: b("checkbox-group") }, { name: "radio-group", component: Ae, type: "field", needFormItem: !0, defaultProps: { options: [] }, valueTransformer: C("radio-group"), eventMapping: b("radio-group") }, { name: "select", component: Re, type: "field", needFormItem: !0, defaultProps: { clearable: !0, filterable: !0, options: [] }, valueTransformer: C("select"), eventMapping: b("select") }, { name: "cascader", component: Ne, type: "field", needFormItem: !0, defaultProps: { clearable: !0, filterable: !1, showAllLevels: !0, options: [] }, valueTransformer: C("cascader"), eventMapping: b("cascader") }, { name: "date-picker", component: Ue, type: "field", needFormItem: !0, defaultProps: { type: "date", clearable: !0, format: "YYYY-MM-DD", valueFormat: "YYYY-MM-DD" }, valueTransformer: C("date-picker"), eventMapping: b("date-picker") }, { name: "time-picker", component: Le, type: "field", needFormItem: !0, defaultProps: { clearable: !0, format: "HH:mm:ss", valueFormat: "HH:mm:ss" }, valueTransformer: C("time-picker"), eventMapping: b("time-picker") }, { name: "slider", component: Oe, type: "field", needFormItem: !0, defaultProps: { min: 0, max: 100, step: 1, showInput: !1 }, valueTransformer: C("slider"), eventMapping: b("slider") }, { name: "rate", component: qe, type: "field", needFormItem: !0, defaultProps: { max: 5, allowHalf: !1 }, valueTransformer: C("rate"), eventMapping: b("rate") }, { name: "color-picker", component: He, type: "field", needFormItem: !0, defaultProps: { showAlpha: !1, colorFormat: "hex" }, valueTransformer: C("color-picker"), eventMapping: b("color-picker") }, { name: "upload", component: Ke, type: "field", needFormItem: !0, defaultProps: { action: "", listType: "text", autoUpload: !0, showFileList: !0 }, valueTransformer: C("upload"), eventMapping: b("upload") } ], vt = [ { name: "form", component: Qe, type: "form", needFormItem: !1, defaultProps: { labelPosition: "right", labelWidth: "100px", size: "default" }, eventMapping: b("form") }, { name: "layout", component: Ze, type: "layout", needFormItem: !1, defaultProps: { type: "card", shadow: "always" }, eventMapping: b("layout") }, { name: "list", component: mt, type: "list", needFormItem: !1, defaultProps: { sortable: !0, showHeader: !0, size: "default" }, eventMapping: b("list") } ], yt = [ ...gt, ...vt ], bt = { name: "@form-renderer/preset-element-plus", components: yt, // theme: { // size: 'default', // classPrefix: 'el-' // }, setup: async () => { }, formItem: pt, ruleConverter: K }; function zt(e) { return { ...bt, // theme: { // ...ElementPlusPreset.theme, // ...options?.theme // }, ruleConverter: K }; } export { Ne as Cascader, Ve as CheckboxGroup, He as ColorPicker, Ue as DatePicker, bt as ElementPlusPreset, bt as ElementPlusPresetDefault, kt as EventMappingUtils, pt as FieldWrapper, Qe as Form, Fe as Input, $e as InputNumber, Ze as Layout, mt as List, Ae as RadioGroup, qe as Rate, Re as Select, Oe as Slider, Se as Switch, De as Textarea, Le as TimePicker, Ke as Upload, ze as cascaderEventMapping, Me as colorPickerEventMapping, I as commonFieldEventMapping, K as convertToElementPlusRules, zt as createElementPlusPreset, Tt as createEventMapping, N as datePickerEventMapping, Be as formEventMapping, b as getDefaultEventMapping, W as inputEventMapping, ke as layoutEventMapping, Te as listEventMapping, Ce as numberEventMapping, Pe as rateEventMapping, D as selectEventMapping, Ee as sliderEventMapping, xe as switchEventMapping, Ie as uploadEventMapping };