@tmagic/form 1.8.0-beta.2 → 1.8.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/es/Form.vue_vue_type_script_setup_true_lang.js +120 -27
  2. package/dist/es/FormBox.vue_vue_type_script_setup_true_lang.js +19 -3
  3. package/dist/es/FormDialog.vue_vue_type_script_setup_true_lang.js +30 -7
  4. package/dist/es/FormDrawer.vue_vue_type_script_setup_true_lang.js +56 -14
  5. package/dist/es/containers/Col.vue_vue_type_script_setup_true_lang.js +3 -2
  6. package/dist/es/containers/Container.vue_vue_type_script_setup_true_lang.js +51 -36
  7. package/dist/es/containers/Fieldset.vue_vue_type_script_setup_true_lang.js +5 -3
  8. package/dist/es/containers/FlexLayout.vue_vue_type_script_setup_true_lang.js +1 -1
  9. package/dist/es/containers/FormLabel.vue_vue_type_script_setup_true_lang.js +1 -1
  10. package/dist/es/containers/GroupList.vue_vue_type_script_setup_true_lang.js +7 -6
  11. package/dist/es/containers/GroupListItem.vue_vue_type_script_setup_true_lang.js +42 -32
  12. package/dist/es/containers/Panel.vue_vue_type_script_setup_true_lang.js +17 -11
  13. package/dist/es/containers/Row.vue_vue_type_script_setup_true_lang.js +1 -1
  14. package/dist/es/containers/Step.vue_vue_type_script_setup_true_lang.js +1 -1
  15. package/dist/es/containers/Tabs.vue_vue_type_script_setup_true_lang.js +1 -1
  16. package/dist/es/containers/table/ActionsColumn.vue_vue_type_script_setup_true_lang.js +14 -7
  17. package/dist/es/containers/table/SortColumn.vue_vue_type_script_setup_true_lang.js +1 -1
  18. package/dist/es/containers/table/Table.vue_vue_type_script_setup_true_lang.js +7 -5
  19. package/dist/es/containers/table/useTableColumns.js +5 -1
  20. package/dist/es/containers/table-group-list/TableGroupList.vue_vue_type_script_setup_true_lang.js +3 -2
  21. package/dist/es/fields/Cascader.vue_vue_type_script_setup_true_lang.js +6 -3
  22. package/dist/es/fields/Checkbox.vue_vue_type_script_setup_true_lang.js +5 -2
  23. package/dist/es/fields/CheckboxGroup.vue_vue_type_script_setup_true_lang.js +6 -3
  24. package/dist/es/fields/ColorPicker.vue_vue_type_script_setup_true_lang.js +5 -2
  25. package/dist/es/fields/Date.vue_vue_type_script_setup_true_lang.js +6 -3
  26. package/dist/es/fields/DateTime.vue_vue_type_script_setup_true_lang.js +6 -3
  27. package/dist/es/fields/Daterange.vue_vue_type_script_setup_true_lang.js +6 -3
  28. package/dist/es/fields/Display.vue_vue_type_script_setup_true_lang.js +6 -3
  29. package/dist/es/fields/DynamicField.vue_vue_type_script_setup_true_lang.js +5 -2
  30. package/dist/es/fields/Hidden.vue_vue_type_script_setup_true_lang.js +1 -1
  31. package/dist/es/fields/Link.vue_vue_type_script_setup_true_lang.js +30 -8
  32. package/dist/es/fields/Number.vue_vue_type_script_setup_true_lang.js +8 -3
  33. package/dist/es/fields/NumberRange.vue_vue_type_script_setup_true_lang.js +5 -2
  34. package/dist/es/fields/RadioGroup.vue_vue_type_script_setup_true_lang.js +21 -10
  35. package/dist/es/fields/Select.vue_vue_type_script_setup_true_lang.js +7 -3
  36. package/dist/es/fields/Switch.vue_vue_type_script_setup_true_lang.js +5 -2
  37. package/dist/es/fields/Text.vue_vue_type_script_setup_true_lang.js +113 -78
  38. package/dist/es/fields/Textarea.vue_vue_type_script_setup_true_lang.js +5 -2
  39. package/dist/es/fields/Time.vue_vue_type_script_setup_true_lang.js +5 -2
  40. package/dist/es/fields/Timerange.vue_vue_type_script_setup_true_lang.js +7 -4
  41. package/dist/es/index.js +5 -4
  42. package/dist/es/plugin.js +4 -0
  43. package/dist/es/schema.js +12 -1
  44. package/dist/es/style.css +133 -11
  45. package/dist/es/submitForm.js +415 -56
  46. package/dist/es/utils/config.js +4 -1
  47. package/dist/es/utils/form.js +84 -9
  48. package/dist/es/utils/typeMatch.js +487 -0
  49. package/dist/style.css +133 -11
  50. package/dist/themes/magic-admin.css +509 -0
  51. package/dist/tmagic-form.umd.cjs +1773 -399
  52. package/package.json +5 -5
  53. package/src/Form.vue +163 -30
  54. package/src/FormBox.vue +11 -0
  55. package/src/FormDialog.vue +25 -3
  56. package/src/FormDrawer.vue +51 -12
  57. package/src/containers/Col.vue +1 -0
  58. package/src/containers/Container.vue +32 -11
  59. package/src/containers/Fieldset.vue +5 -2
  60. package/src/containers/GroupList.vue +1 -1
  61. package/src/containers/GroupListItem.vue +28 -22
  62. package/src/containers/Panel.vue +10 -3
  63. package/src/containers/table/ActionsColumn.vue +10 -4
  64. package/src/containers/table/Table.vue +1 -0
  65. package/src/containers/table/useTableColumns.ts +7 -3
  66. package/src/containers/table-group-list/TableGroupList.vue +7 -1
  67. package/src/fields/Link.vue +16 -3
  68. package/src/fields/Number.vue +2 -1
  69. package/src/fields/RadioGroup.vue +24 -6
  70. package/src/fields/Text.vue +43 -19
  71. package/src/index.ts +11 -0
  72. package/src/plugin.ts +12 -0
  73. package/src/schema.ts +13 -1
  74. package/src/submitForm.ts +699 -66
  75. package/src/theme/container.scss +3 -0
  76. package/src/theme/fieldset.scss +51 -0
  77. package/src/theme/form-dialog.scss +1 -1
  78. package/src/theme/form.scss +6 -0
  79. package/src/theme/group-list.scss +19 -8
  80. package/src/theme/index.scss +1 -0
  81. package/src/theme/link.scss +17 -0
  82. package/src/theme/panel.scss +1 -1
  83. package/src/theme/radio-group.scss +23 -0
  84. package/src/theme/table.scss +11 -1
  85. package/src/theme/tabs.scss +2 -2
  86. package/src/theme/text.scss +38 -0
  87. package/src/theme/themes/magic-admin/index.scss +106 -0
  88. package/src/utils/config.ts +7 -1
  89. package/src/utils/form.ts +144 -22
  90. package/src/utils/typeMatch.ts +870 -0
  91. package/types/index.d.ts +408 -21
@@ -1,27 +1,31 @@
1
- import { FORM_DIFF_CONFIG_KEY } from "../schema.js";
1
+ import { FORM_DIFF_CONFIG_KEY, FORM_TYPE_MATCH_VALID_KEY } from "../schema.js";
2
+ import { createObjectProp, display, filterFunction, getRules } from "../utils/form.js";
2
3
  import Hidden_default from "../fields/Hidden.js";
3
4
  import { getField } from "../utils/config.js";
4
- import { createObjectProp, display, filterFunction, getRules } from "../utils/form.js";
5
5
  import FormLabel_default from "./FormLabel.js";
6
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, inject, mergeProps, normalizeClass, normalizeStyle, openBlock, readonly, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, toDisplayString, toRaw, unref, watch, watchEffect, withCtx } from "vue";
6
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, inject, mergeProps, normalizeClass, normalizeStyle, openBlock, provide, readonly, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, toDisplayString, toRaw, unref, watch, watchEffect, withCtx } from "vue";
7
7
  import { isEqual } from "lodash-es";
8
8
  import { TMagicButton, TMagicFormItem, TMagicIcon, TMagicTooltip } from "@tmagic/design";
9
9
  import { getValueByKeyPath } from "@tmagic/utils";
10
- import { WarningFilled } from "@element-plus/icons-vue";
10
+ import { ArrowDown, ArrowUp, WarningFilled } from "@element-plus/icons-vue";
11
11
  //#region packages/form/src/containers/Container.vue?vue&type=script&setup=true&lang.ts
12
12
  var _hoisted_1 = ["data-tmagic-id", "data-tmagic-form-item-prop"];
13
- var _hoisted_2 = ["innerHTML"];
13
+ var _hoisted_2 = {
14
+ key: 0,
15
+ class: "m-form-tip m-form-title-extra"
16
+ };
14
17
  var _hoisted_3 = ["innerHTML"];
15
18
  var _hoisted_4 = ["innerHTML"];
16
19
  var _hoisted_5 = ["innerHTML"];
17
20
  var _hoisted_6 = ["innerHTML"];
18
21
  var _hoisted_7 = ["innerHTML"];
19
22
  var _hoisted_8 = ["innerHTML"];
20
- var _hoisted_9 = {
23
+ var _hoisted_9 = ["innerHTML"];
24
+ var _hoisted_10 = {
21
25
  key: 5,
22
- style: { "text-align": "center" }
26
+ class: "m-form-container-expand"
23
27
  };
24
- var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
28
+ var Container_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
25
29
  name: "MFormContainer",
26
30
  __name: "Container",
27
31
  props: {
@@ -40,7 +44,8 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
40
44
  isCompare: {
41
45
  type: Boolean,
42
46
  default: false
43
- }
47
+ },
48
+ isInRow: { type: Boolean }
44
49
  },
45
50
  emits: ["change", "addDiffCount"],
46
51
  setup(__props, { emit: __emit }) {
@@ -48,12 +53,14 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
48
53
  const emit = __emit;
49
54
  const mForm = inject("mForm");
50
55
  const diffConfig = inject(FORM_DIFF_CONFIG_KEY, {});
56
+ const typeMatchValid = inject(FORM_TYPE_MATCH_VALID_KEY);
51
57
  const expand = ref(false);
52
58
  const name = computed(() => props.config.name || "");
53
59
  const showDiff = computed(() => {
54
60
  if (!props.isCompare) return false;
55
- const curValue = name.value ? props.model[name.value] : props.model;
56
- const lastValue = name.value ? props.lastValues[name.value] : props.lastValues;
61
+ if (!name.value) return false;
62
+ const curValue = props.model[name.value];
63
+ const lastValue = props.lastValues[name.value];
57
64
  const customShowDiff = diffConfig.showDiff;
58
65
  if (typeof customShowDiff === "function") return Boolean(customShowDiff({
59
66
  curValue,
@@ -106,7 +113,7 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
106
113
  const effectiveSelfDiffFieldTypes = computed(() => {
107
114
  const custom = diffConfig.selfDiffFieldTypes;
108
115
  if (typeof custom === "function") return new Set(custom([...DEFAULT_SELF_DIFF_FIELD_TYPES]));
109
- if (Array.isArray(custom)) return new Set([...DEFAULT_SELF_DIFF_FIELD_TYPES, ...custom]);
116
+ if (Array.isArray(custom)) return /* @__PURE__ */ new Set([...DEFAULT_SELF_DIFF_FIELD_TYPES, ...custom]);
110
117
  return new Set(DEFAULT_SELF_DIFF_FIELD_TYPES);
111
118
  });
112
119
  const isSelfDiffField = computed(() => effectiveSelfDiffFieldTypes.value.has(type.value));
@@ -123,7 +130,7 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
123
130
  placement: config?.placement || "top"
124
131
  };
125
132
  });
126
- const rule = computed(() => getRules(mForm, props.config.rules, props));
133
+ const rule = computed(() => getRules(mForm, props.config.rules, props, typeMatchValid));
127
134
  const display$1 = computed(() => {
128
135
  const value = display(mForm, props.config.display, props);
129
136
  if (value === "expand") return expand.value;
@@ -143,7 +150,8 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
143
150
  labelWidth: itemLabelWidth.value,
144
151
  labelPosition: props.config.labelPosition,
145
152
  rules: rule.value,
146
- extra: filterFunction(mForm, props.config.extra, props)
153
+ extra: filterFunction(mForm, props.config.extra, props),
154
+ extraTips: props.config.extraTips
147
155
  }));
148
156
  const itemLabelWidth = computed(() => props.config.labelWidth ?? props.labelWidth);
149
157
  watchEffect(() => {
@@ -154,6 +162,7 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
154
162
  if (items.value && !text.value && type.value && display$1.value) return;
155
163
  if (display$1.value && showDiff && type.value) emit("addDiffCount");
156
164
  }, { immediate: true });
165
+ provide("isInRow", props.isInRow ?? false);
157
166
  const expandHandler = () => expand.value = !expand.value;
158
167
  const key = (config) => config[mForm?.keyProps];
159
168
  const filterHandler = (filter, value) => {
@@ -184,7 +193,10 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
184
193
  return new Proxy(target, {
185
194
  get: (obj, key) => {
186
195
  const value = obj[key];
187
- if (value && typeof value === "object") return createModelProxy(value, setModelFn, pathPrefix ? `${pathPrefix}.${key}` : key);
196
+ if (value && typeof value === "object") {
197
+ const newPath = pathPrefix ? `${pathPrefix}.${key}` : key;
198
+ return createModelProxy(value, setModelFn, newPath);
199
+ }
188
200
  return value;
189
201
  },
190
202
  set: (obj, key, value) => {
@@ -250,16 +262,18 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
250
262
  "data-tmagic-form-item-prop": itemProp.value,
251
263
  class: normalizeClass(`m-form-container m-container-${type.value || ""} ${__props.config.className || ""}${__props.config.tip ? " has-tip" : ""}`),
252
264
  style: normalizeStyle(__props.config.style)
253
- }, [type.value === "hidden" ? (openBlock(), createBlock(Hidden_default, {
254
- key: 0,
255
- name: `${name.value}`,
256
- prop: itemProp.value,
257
- model: __props.model
258
- }, null, 8, [
259
- "name",
260
- "prop",
261
- "model"
262
- ])) : items.value && !text.value && type.value && display$1.value ? (openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps({ key: 1 }, fieldsProps.value, {
265
+ }, [type.value === "hidden" ? (openBlock(), createBlock(unref(TMagicFormItem), mergeProps({ key: 0 }, formItemProps.value, { style: { "display": "none" } }), {
266
+ default: withCtx(() => [createVNode(Hidden_default, {
267
+ name: `${name.value}`,
268
+ prop: itemProp.value,
269
+ model: __props.model
270
+ }, null, 8, [
271
+ "name",
272
+ "prop",
273
+ "model"
274
+ ])]),
275
+ _: 1
276
+ }, 16)) : items.value && !text.value && type.value && display$1.value ? (openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps({ key: 1 }, fieldsProps.value, {
263
277
  model: __props.model,
264
278
  "last-values": __props.lastValues,
265
279
  "is-compare": __props.isCompare,
@@ -296,12 +310,12 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
296
310
  "use-label",
297
311
  "label-title",
298
312
  "text"
299
- ])])]),
313
+ ]), __props.config.titleExtra && __props.config.labelPosition === "top" ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(__props.config.titleExtra), 1)) : createCommentVNode("v-if", true)])]),
300
314
  default: withCtx(() => [tooltip.value.text ? (openBlock(), createBlock(unref(TMagicTooltip), {
301
315
  key: 0,
302
316
  placement: tooltip.value.placement
303
317
  }, {
304
- content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_2)]),
318
+ content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_3)]),
305
319
  default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps(fieldsProps.value, {
306
320
  model: __props.model,
307
321
  "last-values": __props.lastValues,
@@ -330,7 +344,7 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
330
344
  key: 0,
331
345
  placement: "top"
332
346
  }, {
333
- content: withCtx(() => [createElementVNode("div", { innerHTML: __props.config.tip }, null, 8, _hoisted_3)]),
347
+ content: withCtx(() => [createElementVNode("div", { innerHTML: __props.config.tip }, null, 8, _hoisted_4)]),
334
348
  default: withCtx(() => [createVNode(unref(TMagicIcon), { style: {
335
349
  "line-height": "40px",
336
350
  "margin-left": "5px"
@@ -369,7 +383,7 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
369
383
  key: 0,
370
384
  placement: tooltip.value.placement
371
385
  }, {
372
- content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_4)]),
386
+ content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_5)]),
373
387
  default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps(fieldsProps.value, {
374
388
  model: __props.model,
375
389
  "last-values": __props.lastValues,
@@ -422,7 +436,7 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
422
436
  key: 0,
423
437
  placement: tooltip.value.placement
424
438
  }, {
425
- content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_5)]),
439
+ content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_6)]),
426
440
  default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps(fieldsProps.value, {
427
441
  model: __props.lastValues,
428
442
  onChange: onChangeHandler
@@ -438,7 +452,7 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
438
452
  key: 0,
439
453
  placement: "top"
440
454
  }, {
441
- content: withCtx(() => [createElementVNode("div", { innerHTML: __props.config.tip }, null, 8, _hoisted_6)]),
455
+ content: withCtx(() => [createElementVNode("div", { innerHTML: __props.config.tip }, null, 8, _hoisted_7)]),
442
456
  default: withCtx(() => [createVNode(unref(TMagicIcon), { style: {
443
457
  "line-height": "40px",
444
458
  "margin-left": "5px"
@@ -479,7 +493,7 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
479
493
  key: 0,
480
494
  placement: tooltip.value.placement
481
495
  }, {
482
- content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_7)]),
496
+ content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_8)]),
483
497
  default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps(fieldsProps.value, {
484
498
  model: __props.model,
485
499
  onChange: onChangeHandler
@@ -495,7 +509,7 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
495
509
  key: 1,
496
510
  placement: "top"
497
511
  }, {
498
- content: withCtx(() => [createElementVNode("div", { innerHTML: __props.config.tip }, null, 8, _hoisted_8)]),
512
+ content: withCtx(() => [createElementVNode("div", { innerHTML: __props.config.tip }, null, 8, _hoisted_9)]),
499
513
  default: withCtx(() => [createVNode(unref(TMagicIcon), { style: {
500
514
  "line-height": "40px",
501
515
  "margin-left": "5px"
@@ -537,16 +551,17 @@ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
537
551
  "label-width",
538
552
  "prop"
539
553
  ]);
540
- }), 128)) : createCommentVNode("v-if", true)], 64)) : createCommentVNode("v-if", true), __props.config.expand && type.value !== "fieldset" ? (openBlock(), createElementBlock("div", _hoisted_9, [createVNode(unref(TMagicButton), {
554
+ }), 128)) : createCommentVNode("v-if", true)], 64)) : createCommentVNode("v-if", true), __props.config.expand && type.value !== "fieldset" ? (openBlock(), createElementBlock("div", _hoisted_10, [createVNode(unref(TMagicButton), {
541
555
  type: "primary",
542
556
  size: "small",
543
557
  disabled: false,
544
558
  link: "",
545
- onClick: expandHandler
559
+ onClick: expandHandler,
560
+ icon: expand.value ? unref(ArrowUp) : unref(ArrowDown)
546
561
  }, {
547
562
  default: withCtx(() => [createTextVNode(toDisplayString(expand.value ? "收起配置" : "展开更多配置"), 1)]),
548
563
  _: 1
549
- })])) : createCommentVNode("v-if", true)], 14, _hoisted_1);
564
+ }, 8, ["icon"])])) : createCommentVNode("v-if", true)], 14, _hoisted_1);
550
565
  };
551
566
  }
552
567
  });
@@ -1,3 +1,4 @@
1
+ import { filterFunction } from "../utils/form.js";
1
2
  import Container_default from "./Container.js";
2
3
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, normalizeStyle, openBlock, renderList, resolveDynamicComponent, unref, withCtx } from "vue";
3
4
  import { TMagicCheckbox } from "@tmagic/design";
@@ -13,7 +14,7 @@ var _hoisted_6 = {
13
14
  };
14
15
  var _hoisted_7 = { style: { "flex": "1" } };
15
16
  var _hoisted_8 = ["src"];
16
- var Fieldset_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
17
+ var Fieldset_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
17
18
  name: "MFormFieldset",
18
19
  __name: "Fieldset",
19
20
  props: {
@@ -36,6 +37,7 @@ var Fieldset_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
36
37
  const emit = __emit;
37
38
  const mForm = inject("mForm");
38
39
  const name = computed(() => props.config.name || "");
40
+ const legend = computed(() => filterFunction(mForm, props.config.legend, props));
39
41
  const checkboxName = computed(() => {
40
42
  if (typeof props.config.checkbox === "object" && typeof props.config.checkbox.name === "string") return props.config.checkbox.name;
41
43
  return "value";
@@ -75,7 +77,7 @@ var Fieldset_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
75
77
  "false-value": checkboxFalseValue.value,
76
78
  "onUpdate:modelValue": valueChangeHandler
77
79
  }, {
78
- default: withCtx(() => [createElementVNode("span", { innerHTML: __props.config.legend }, null, 8, _hoisted_1), __props.config.extra ? (openBlock(), createElementBlock("span", {
80
+ default: withCtx(() => [createElementVNode("span", { innerHTML: legend.value }, null, 8, _hoisted_1), __props.config.extra ? (openBlock(), createElementBlock("span", {
79
81
  key: 0,
80
82
  innerHTML: __props.config.extra,
81
83
  class: "m-form-tip"
@@ -88,7 +90,7 @@ var Fieldset_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
88
90
  "false-value"
89
91
  ])]),
90
92
  _: 1
91
- })) : (openBlock(), createElementBlock("legend", _hoisted_3, [createElementVNode("span", { innerHTML: __props.config.legend }, null, 8, _hoisted_4), __props.config.extra ? (openBlock(), createElementBlock("span", {
93
+ })) : (openBlock(), createElementBlock("legend", _hoisted_3, [createElementVNode("span", { innerHTML: legend.value }, null, 8, _hoisted_4), __props.config.extra ? (openBlock(), createElementBlock("span", {
92
94
  key: 0,
93
95
  innerHTML: __props.config.extra,
94
96
  class: "m-form-tip"
@@ -1,7 +1,7 @@
1
1
  import Container_default from "./Container.js";
2
2
  import { Fragment, computed, createBlock, createElementBlock, defineComponent, inject, normalizeStyle, openBlock, renderList, unref } from "vue";
3
3
  //#region packages/form/src/containers/FlexLayout.vue?vue&type=script&setup=true&lang.ts
4
- var FlexLayout_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
4
+ var FlexLayout_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
5
  name: "MFormFlexLayout",
6
6
  __name: "FlexLayout",
7
7
  props: {
@@ -12,7 +12,7 @@ var _hoisted_1 = {
12
12
  var _hoisted_2 = ["innerHTML", "title"];
13
13
  var _hoisted_3 = ["innerHTML"];
14
14
  var _hoisted_4 = ["innerHTML", "title"];
15
- var FormLabel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
15
+ var FormLabel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
16
16
  __name: "FormLabel",
17
17
  props: {
18
18
  tip: {},
@@ -1,5 +1,5 @@
1
1
  import GroupListItem_default from "./GroupListItem.js";
2
- import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, openBlock, renderList, renderSlot } from "vue";
2
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, openBlock, renderList, renderSlot, toDisplayString } from "vue";
3
3
  import { cloneDeep } from "lodash-es";
4
4
  //#region packages/form/src/containers/GroupList.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = { class: "m-fields-group-list" };
@@ -8,16 +8,17 @@ var _hoisted_3 = {
8
8
  key: 1,
9
9
  class: "el-table__empty-block"
10
10
  };
11
- var _hoisted_4 = {
11
+ var _hoisted_4 = { class: "el-table__empty-text t-table__empty" };
12
+ var _hoisted_5 = {
12
13
  key: 3,
13
14
  class: "m-fields-group-list-footer"
14
15
  };
15
- var _hoisted_5 = { style: {
16
+ var _hoisted_6 = { style: {
16
17
  "display": "flex",
17
18
  "justify-content": "flex-end",
18
19
  "flex": "1"
19
20
  } };
20
- var GroupList_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
21
+ var GroupList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
21
22
  name: "MFormGroupList",
22
23
  __name: "GroupList",
23
24
  props: {
@@ -63,7 +64,7 @@ var GroupList_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
63
64
  innerHTML: __props.config.extra,
64
65
  style: { "color": "rgba(0, 0, 0, 0.45)" }
65
66
  }, null, 8, _hoisted_2)) : createCommentVNode("v-if", true),
66
- !__props.model[__props.name] || !__props.model[__props.name].length ? (openBlock(), createElementBlock("div", _hoisted_3, [..._cache[1] || (_cache[1] = [createElementVNode("span", { class: "el-table__empty-text t-table__empty" }, "暂无数据", -1)])])) : (openBlock(true), createElementBlock(Fragment, { key: 2 }, renderList(__props.model[__props.name], (item, index) => {
67
+ !__props.model[__props.name] || !__props.model[__props.name].length ? (openBlock(), createElementBlock("div", _hoisted_3, [createElementVNode("span", _hoisted_4, "暂无" + toDisplayString(__props.config.titlePrefix || "") + "数据", 1)])) : (openBlock(true), createElementBlock(Fragment, { key: 2 }, renderList(__props.model[__props.name], (item, index) => {
67
68
  return openBlock(), createBlock(GroupListItem_default, {
68
69
  key: index,
69
70
  model: item,
@@ -94,7 +95,7 @@ var GroupList_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
94
95
  "group-model"
95
96
  ]);
96
97
  }), 128)),
97
- !__props.isCompare ? (openBlock(), createElementBlock("div", _hoisted_4, [renderSlot(_ctx.$slots, "toggle-button"), createElementVNode("div", _hoisted_5, [renderSlot(_ctx.$slots, "add-button")])])) : createCommentVNode("v-if", true)
98
+ !__props.isCompare ? (openBlock(), createElementBlock("div", _hoisted_5, [renderSlot(_ctx.$slots, "toggle-button"), createElementVNode("div", _hoisted_6, [renderSlot(_ctx.$slots, "add-button")])])) : createCommentVNode("v-if", true)
98
99
  ]);
99
100
  };
100
101
  }
@@ -1,16 +1,17 @@
1
1
  import { filterFunction } from "../utils/form.js";
2
2
  import Container_default from "./Container.js";
3
3
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, openBlock, ref, unref, vShow, withCtx, withDirectives } from "vue";
4
- import { TMagicButton, TMagicCard, TMagicIcon, TMagicInputNumber, TMagicPopover } from "@tmagic/design";
5
- import { CaretBottom, CaretRight, CaretTop, Delete, DocumentCopy, Position } from "@element-plus/icons-vue";
4
+ import { TMagicButton, TMagicCard, TMagicIcon, TMagicInputNumber, TMagicPopover, TMagicTooltip } from "@tmagic/design";
5
+ import { ArrowDown, ArrowRight, Bottom, Delete, DocumentCopy, Position, Top } from "@element-plus/icons-vue";
6
6
  //#region packages/form/src/containers/GroupListItem.vue?vue&type=script&setup=true&lang.ts
7
- var _hoisted_1 = ["innerHTML"];
8
- var _hoisted_2 = { style: {
7
+ var _hoisted_1 = { class: "m-fields-group-list-item-header" };
8
+ var _hoisted_2 = ["innerHTML"];
9
+ var _hoisted_3 = { style: {
9
10
  "text-align": "right",
10
11
  "margin-top": "20px"
11
12
  } };
12
- var _hoisted_3 = ["innerHTML"];
13
- var GroupListItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13
+ var _hoisted_4 = ["innerHTML"];
14
+ var GroupListItem_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
14
15
  name: "MFormGroupListItem",
15
16
  __name: "GroupListItem",
16
17
  props: {
@@ -46,7 +47,10 @@ var GroupListItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
46
47
  [mForm?.keyProp || "__key"]: `${props.config[mForm?.keyProp || "__key"]}${String(props.index)}`
47
48
  }));
48
49
  const title = computed(() => {
49
- if (props.config.titleKey && props.model[props.config.titleKey]) return props.model[props.config.titleKey];
50
+ if (props.config.titleKey && props.model[props.config.titleKey]) {
51
+ const { titlePrefix } = props.config;
52
+ return titlePrefix ? `${titlePrefix} ${String(props.index + 1)}: ${props.model[props.config.titleKey]}` : `${props.model[props.config.titleKey]}`;
53
+ }
50
54
  if (props.config.title) return filterFunction(mForm, props.config.title, props);
51
55
  return `${props.config.titlePrefix || "组"} ${String(props.index + 1)}`;
52
56
  });
@@ -85,33 +89,39 @@ var GroupListItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
85
89
  return (_ctx, _cache) => {
86
90
  return openBlock(), createBlock(unref(TMagicCard), {
87
91
  class: "m-fields-group-list-item",
92
+ flat: __props.config.flat,
88
93
  "body-style": { display: expand.value ? "block" : "none" }
89
94
  }, {
90
- header: withCtx(() => [createElementVNode("div", null, [
95
+ header: withCtx(() => [createElementVNode("div", _hoisted_1, [
91
96
  createVNode(unref(TMagicButton), {
92
97
  link: "",
93
98
  disabled: __props.disabled,
94
- onClick: expandHandler
99
+ onClick: expandHandler,
100
+ class: "expand-button"
95
101
  }, {
96
102
  default: withCtx(() => [createVNode(unref(TMagicIcon), null, {
97
- default: withCtx(() => [expand.value ? (openBlock(), createBlock(unref(CaretBottom), { key: 0 })) : (openBlock(), createBlock(unref(CaretRight), { key: 1 }))]),
103
+ default: withCtx(() => [expand.value ? (openBlock(), createBlock(unref(ArrowDown), { key: 0 })) : (openBlock(), createBlock(unref(ArrowRight), { key: 1 }))]),
98
104
  _: 1
99
- }), createElementVNode("span", { innerHTML: title.value }, null, 8, _hoisted_1)]),
105
+ })]),
100
106
  _: 1
101
107
  }, 8, ["disabled"]),
102
- !__props.isCompare ? withDirectives((openBlock(), createBlock(unref(TMagicButton), {
103
- key: 0,
104
- type: "danger",
105
- size: "small",
106
- link: "",
107
- icon: unref(Delete),
108
- disabled: __props.disabled,
109
- onClick: removeHandler
110
- }, null, 8, ["icon", "disabled"])), [[vShow, showDelete.value]]) : createCommentVNode("v-if", true),
108
+ createElementVNode("span", { innerHTML: title.value }, null, 8, _hoisted_2),
109
+ createVNode(unref(TMagicTooltip), { content: `删除 ${title.value}` }, {
110
+ default: withCtx(() => [!__props.isCompare ? withDirectives((openBlock(), createBlock(unref(TMagicButton), {
111
+ key: 0,
112
+ size: "default",
113
+ link: "",
114
+ class: "delete-button",
115
+ icon: unref(Delete),
116
+ disabled: __props.disabled,
117
+ onClick: removeHandler
118
+ }, null, 8, ["icon", "disabled"])), [[vShow, showDelete.value]]) : createCommentVNode("v-if", true)]),
119
+ _: 1
120
+ }, 8, ["content"]),
111
121
  copyable.value && !__props.isCompare ? (openBlock(), createBlock(unref(TMagicButton), {
112
- key: 1,
122
+ key: 0,
113
123
  link: "",
114
- size: "small",
124
+ size: "default",
115
125
  type: "primary",
116
126
  icon: unref(DocumentCopy),
117
127
  disabled: __props.disabled,
@@ -120,27 +130,27 @@ var GroupListItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
120
130
  default: withCtx(() => [..._cache[6] || (_cache[6] = [createTextVNode("复制", -1)])]),
121
131
  _: 1
122
132
  }, 8, ["icon", "disabled"])) : createCommentVNode("v-if", true),
123
- movable.value && !__props.isCompare ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [withDirectives(createVNode(unref(TMagicButton), {
133
+ movable.value && !__props.isCompare ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [withDirectives(createVNode(unref(TMagicButton), {
124
134
  link: "",
125
- size: "small",
135
+ size: "default",
126
136
  disabled: __props.disabled,
127
- icon: unref(CaretTop),
137
+ icon: unref(Top),
128
138
  onClick: _cache[0] || (_cache[0] = ($event) => changeOrder(-1))
129
139
  }, {
130
140
  default: withCtx(() => [..._cache[7] || (_cache[7] = [createTextVNode("上移", -1)])]),
131
141
  _: 1
132
142
  }, 8, ["disabled", "icon"]), [[vShow, __props.index !== 0]]), withDirectives(createVNode(unref(TMagicButton), {
133
143
  link: "",
134
- size: "small",
144
+ size: "default",
135
145
  disabled: __props.disabled,
136
- icon: unref(CaretBottom),
146
+ icon: unref(Bottom),
137
147
  onClick: _cache[1] || (_cache[1] = ($event) => changeOrder(1))
138
148
  }, {
139
149
  default: withCtx(() => [..._cache[8] || (_cache[8] = [createTextVNode("下移", -1)])]),
140
150
  _: 1
141
151
  }, 8, ["disabled", "icon"]), [[vShow, __props.index !== length.value - 1]])], 64)) : createCommentVNode("v-if", true),
142
152
  __props.config.moveSpecifyLocation && !__props.isCompare ? (openBlock(), createBlock(unref(TMagicPopover), {
143
- key: 3,
153
+ key: 2,
144
154
  trigger: "click",
145
155
  placement: "top",
146
156
  width: "200",
@@ -168,7 +178,7 @@ var GroupListItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
168
178
  disabled: __props.disabled
169
179
  }, null, 8, ["modelValue", "disabled"]),
170
180
  _cache[11] || (_cache[11] = createTextVNode("行 ", -1))
171
- ]), createElementVNode("div", _hoisted_2, [createVNode(unref(TMagicButton), {
181
+ ]), createElementVNode("div", _hoisted_3, [createVNode(unref(TMagicButton), {
172
182
  size: "small",
173
183
  text: "",
174
184
  onClick: _cache[4] || (_cache[4] = ($event) => moveSpecifyLocationVisible.value = false)
@@ -186,10 +196,10 @@ var GroupListItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
186
196
  _: 1
187
197
  }, 8, ["visible"])) : createCommentVNode("v-if", true),
188
198
  itemExtra.value ? (openBlock(), createElementBlock("span", {
189
- key: 4,
199
+ key: 3,
190
200
  innerHTML: itemExtra.value,
191
201
  class: "m-form-tip"
192
- }, null, 8, _hoisted_3)) : createCommentVNode("v-if", true)
202
+ }, null, 8, _hoisted_4)) : createCommentVNode("v-if", true)
193
203
  ])]),
194
204
  default: withCtx(() => [expand.value ? (openBlock(), createBlock(Container_default, {
195
205
  key: 0,
@@ -214,7 +224,7 @@ var GroupListItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
214
224
  "disabled"
215
225
  ])) : createCommentVNode("v-if", true)]),
216
226
  _: 1
217
- }, 8, ["body-style"]);
227
+ }, 8, ["flat", "body-style"]);
218
228
  };
219
229
  }
220
230
  });
@@ -1,8 +1,8 @@
1
1
  import { filterFunction } from "../utils/form.js";
2
2
  import Container_default from "./Container.js";
3
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, openBlock, ref, renderList, renderSlot, toDisplayString, unref, withCtx } from "vue";
3
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, inject, openBlock, ref, renderList, renderSlot, toDisplayString, unref, withCtx } from "vue";
4
4
  import { TMagicButton, TMagicCard } from "@tmagic/design";
5
- import { CaretBottom, CaretRight } from "@element-plus/icons-vue";
5
+ import { ArrowDown, ArrowRight } from "@element-plus/icons-vue";
6
6
  //#region packages/form/src/containers/Panel.vue?vue&type=script&setup=true&lang.ts
7
7
  var _hoisted_1 = { style: {
8
8
  "width": "100%",
@@ -16,7 +16,7 @@ var _hoisted_3 = {
16
16
  };
17
17
  var _hoisted_4 = { style: { "flex": "1" } };
18
18
  var _hoisted_5 = ["src"];
19
- var Panel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
19
+ var Panel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
20
20
  name: "MFormPanel",
21
21
  __name: "Panel",
22
22
  props: {
@@ -28,7 +28,8 @@ var Panel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
28
28
  labelWidth: {},
29
29
  prop: {},
30
30
  size: {},
31
- disabled: { type: Boolean }
31
+ disabled: { type: Boolean },
32
+ hideExpand: { type: Boolean }
32
33
  },
33
34
  emits: ["change", "addDiffCount"],
34
35
  setup(__props, { expose: __expose, emit: __emit }) {
@@ -52,21 +53,26 @@ var Panel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
52
53
  return items.value && items.value.length ? (openBlock(), createBlock(unref(TMagicCard), {
53
54
  key: 0,
54
55
  class: "box-card m-form-panel",
55
- "body-style": { display: expand.value ? "block" : "none" }
56
+ "body-style": { display: expand.value ? "block" : "none" },
57
+ flat: __props.config.flat
56
58
  }, {
57
59
  header: withCtx(() => [createElementVNode("div", _hoisted_1, [
58
- createVNode(unref(TMagicButton), {
59
- style: { "padding": "0" },
60
+ !__props.hideExpand ? (openBlock(), createBlock(unref(TMagicButton), {
61
+ key: 0,
62
+ style: {
63
+ "padding": "0",
64
+ "margin-right": "10px"
65
+ },
60
66
  link: "",
61
- icon: expand.value ? unref(CaretBottom) : unref(CaretRight),
67
+ icon: expand.value ? unref(ArrowDown) : unref(ArrowRight),
62
68
  onClick: _cache[0] || (_cache[0] = ($event) => expand.value = !expand.value)
63
- }, null, 8, ["icon"]),
69
+ }, null, 8, ["icon"])) : createCommentVNode("v-if", true),
64
70
  renderSlot(_ctx.$slots, "header", {}, () => [createElementVNode("span", {
65
71
  style: { "cursor": "pointer" },
66
72
  onClick: _cache[1] || (_cache[1] = ($event) => expand.value = !expand.value)
67
73
  }, toDisplayString(filter(__props.config.title)), 1)]),
68
74
  __props.config && __props.config.extra ? (openBlock(), createElementBlock("span", {
69
- key: 0,
75
+ key: 1,
70
76
  innerHTML: __props.config.extra,
71
77
  class: "m-form-tip"
72
78
  }, null, 8, _hoisted_2)) : createCommentVNode("v-if", true)
@@ -122,7 +128,7 @@ var Panel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
122
128
  ]);
123
129
  }), 128))])]),
124
130
  _: 3
125
- }, 8, ["body-style"])) : createCommentVNode("v-if", true);
131
+ }, 8, ["body-style", "flat"])) : createCommentVNode("v-if", true);
126
132
  };
127
133
  }
128
134
  });
@@ -2,7 +2,7 @@ import Col_default from "./Col.js";
2
2
  import { Fragment, createBlock, createElementBlock, defineComponent, inject, openBlock, renderList, unref, withCtx } from "vue";
3
3
  import { TMagicRow } from "@tmagic/design";
4
4
  //#region packages/form/src/containers/Row.vue?vue&type=script&setup=true&lang.ts
5
- var Row_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ var Row_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
6
  name: "MFormRow",
7
7
  __name: "Row",
8
8
  props: {
@@ -2,7 +2,7 @@ import Container_default from "./Container.js";
2
2
  import { Fragment, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, openBlock, ref, renderList, unref, vShow, watchEffect, withCtx, withDirectives } from "vue";
3
3
  import { TMagicStep, TMagicSteps } from "@tmagic/design";
4
4
  //#region packages/form/src/containers/Step.vue?vue&type=script&setup=true&lang.ts
5
- var Step_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ var Step_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
6
  name: "MFormStep",
7
7
  __name: "Step",
8
8
  props: {
@@ -4,7 +4,7 @@ import { Fragment, computed, createBlock, createElementBlock, createElementVNode
4
4
  import { isEmpty } from "lodash-es";
5
5
  import { TMagicBadge, getDesignConfig } from "@tmagic/design";
6
6
  //#region packages/form/src/containers/Tabs.vue?vue&type=script&setup=true&lang.ts
7
- var Tabs_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ var Tabs_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
8
8
  name: "MFormTabs",
9
9
  __name: "Tabs",
10
10
  props: {