@tmagic/form 1.7.6 → 1.7.8-beta.1

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 (104) hide show
  1. package/LICENSE +235 -164
  2. package/dist/es/Form.js +5 -0
  3. package/dist/es/Form.vue_vue_type_script_setup_true_lang.js +234 -0
  4. package/dist/es/FormBox.js +5 -0
  5. package/dist/es/FormBox.vue_vue_type_script_setup_true_lang.js +117 -0
  6. package/dist/es/FormDialog.js +5 -0
  7. package/dist/es/FormDialog.vue_vue_type_script_setup_true_lang.js +222 -0
  8. package/dist/es/FormDrawer.js +5 -0
  9. package/dist/es/FormDrawer.vue_vue_type_script_setup_true_lang.js +176 -0
  10. package/dist/es/_virtual/_rolldown/runtime.js +27 -0
  11. package/dist/es/containers/Col.js +5 -0
  12. package/dist/es/containers/Col.vue_vue_type_script_setup_true_lang.js +60 -0
  13. package/dist/es/containers/Container.js +5 -0
  14. package/dist/es/containers/Container.vue_vue_type_script_setup_true_lang.js +439 -0
  15. package/dist/es/containers/Fieldset.js +5 -0
  16. package/dist/es/containers/Fieldset.vue_vue_type_script_setup_true_lang.js +153 -0
  17. package/dist/es/containers/FlexLayout.js +5 -0
  18. package/dist/es/containers/FlexLayout.vue_vue_type_script_setup_true_lang.js +64 -0
  19. package/dist/es/containers/FormLabel.js +5 -0
  20. package/dist/es/containers/FormLabel.vue_vue_type_script_setup_true_lang.js +51 -0
  21. package/dist/es/containers/GroupList.js +5 -0
  22. package/dist/es/containers/GroupList.vue_vue_type_script_setup_true_lang.js +164 -0
  23. package/dist/es/containers/GroupListItem.js +5 -0
  24. package/dist/es/containers/GroupListItem.vue_vue_type_script_setup_true_lang.js +221 -0
  25. package/dist/es/containers/Panel.js +5 -0
  26. package/dist/es/containers/Panel.vue_vue_type_script_setup_true_lang.js +130 -0
  27. package/dist/es/containers/Row.js +5 -0
  28. package/dist/es/containers/Row.vue_vue_type_script_setup_true_lang.js +65 -0
  29. package/dist/es/containers/Step.js +5 -0
  30. package/dist/es/containers/Step.vue_vue_type_script_setup_true_lang.js +85 -0
  31. package/dist/es/containers/Tabs.js +5 -0
  32. package/dist/es/containers/Tabs.vue_vue_type_script_setup_true_lang.js +194 -0
  33. package/dist/es/fields/Cascader.js +5 -0
  34. package/dist/es/fields/Cascader.vue_vue_type_script_setup_true_lang.js +123 -0
  35. package/dist/es/fields/Checkbox.js +5 -0
  36. package/dist/es/fields/Checkbox.vue_vue_type_script_setup_true_lang.js +61 -0
  37. package/dist/es/fields/CheckboxGroup.js +5 -0
  38. package/dist/es/fields/CheckboxGroup.vue_vue_type_script_setup_true_lang.js +63 -0
  39. package/dist/es/fields/ColorPicker.js +5 -0
  40. package/dist/es/fields/ColorPicker.vue_vue_type_script_setup_true_lang.js +42 -0
  41. package/dist/es/fields/Date.js +5 -0
  42. package/dist/es/fields/Date.vue_vue_type_script_setup_true_lang.js +52 -0
  43. package/dist/es/fields/DateTime.js +5 -0
  44. package/dist/es/fields/DateTime.vue_vue_type_script_setup_true_lang.js +57 -0
  45. package/dist/es/fields/Daterange.js +5 -0
  46. package/dist/es/fields/Daterange.vue_vue_type_script_setup_true_lang.js +99 -0
  47. package/dist/es/fields/Display.js +5 -0
  48. package/dist/es/fields/Display.vue_vue_type_script_setup_true_lang.js +36 -0
  49. package/dist/es/fields/DynamicField.js +5 -0
  50. package/dist/es/fields/DynamicField.vue_vue_type_script_setup_true_lang.js +91 -0
  51. package/dist/es/fields/Hidden.js +5 -0
  52. package/dist/es/fields/Hidden.vue_vue_type_script_setup_true_lang.js +24 -0
  53. package/dist/es/fields/Link.js +5 -0
  54. package/dist/es/fields/Link.vue_vue_type_script_setup_true_lang.js +104 -0
  55. package/dist/es/fields/Number.js +5 -0
  56. package/dist/es/fields/Number.vue_vue_type_script_setup_true_lang.js +65 -0
  57. package/dist/es/fields/NumberRange.js +5 -0
  58. package/dist/es/fields/NumberRange.vue_vue_type_script_setup_true_lang.js +76 -0
  59. package/dist/es/fields/RadioGroup.js +5 -0
  60. package/dist/es/fields/RadioGroup.vue_vue_type_script_setup_true_lang.js +74 -0
  61. package/dist/es/fields/Select.js +5 -0
  62. package/dist/es/fields/Select.vue_vue_type_script_setup_true_lang.js +337 -0
  63. package/dist/es/fields/Switch.js +5 -0
  64. package/dist/es/fields/Switch.vue_vue_type_script_setup_true_lang.js +59 -0
  65. package/dist/es/fields/Text.js +5 -0
  66. package/dist/es/fields/Text.vue_vue_type_script_setup_true_lang.js +215 -0
  67. package/dist/es/fields/Textarea.js +5 -0
  68. package/dist/es/fields/Textarea.vue_vue_type_script_setup_true_lang.js +60 -0
  69. package/dist/es/fields/Time.js +5 -0
  70. package/dist/es/fields/Time.vue_vue_type_script_setup_true_lang.js +49 -0
  71. package/dist/es/fields/Timerange.js +5 -0
  72. package/dist/es/fields/Timerange.vue_vue_type_script_setup_true_lang.js +100 -0
  73. package/dist/es/index.js +41 -0
  74. package/dist/es/plugin.js +74 -0
  75. package/dist/es/schema.js +2 -0
  76. package/dist/es/style.css +325 -0
  77. package/dist/es/table/ActionsColumn.js +5 -0
  78. package/dist/es/table/ActionsColumn.vue_vue_type_script_setup_true_lang.js +107 -0
  79. package/dist/es/table/SortColumn.js +5 -0
  80. package/dist/es/table/SortColumn.vue_vue_type_script_setup_true_lang.js +88 -0
  81. package/dist/es/table/Table.js +5 -0
  82. package/dist/es/table/Table.vue_vue_type_script_setup_true_lang.js +232 -0
  83. package/dist/es/table/useAdd.js +71 -0
  84. package/dist/es/table/useFullscreen.js +15 -0
  85. package/dist/es/table/useImport.js +46 -0
  86. package/dist/es/table/usePagination.js +26 -0
  87. package/dist/es/table/useSelection.js +26 -0
  88. package/dist/es/table/useSortable.js +39 -0
  89. package/dist/es/table/useTableColumns.js +160 -0
  90. package/dist/es/utils/config.js +15 -0
  91. package/dist/es/utils/form.js +173 -0
  92. package/dist/es/utils/useAddField.js +13 -0
  93. package/dist/style.css +1 -1
  94. package/dist/tmagic-form.umd.cjs +7693 -8885
  95. package/package.json +7 -6
  96. package/src/containers/Container.vue +16 -10
  97. package/src/fields/Hidden.vue +6 -2
  98. package/src/fields/Timerange.vue +80 -36
  99. package/src/index.ts +8 -82
  100. package/src/plugin.ts +102 -0
  101. package/src/table/useSortable.ts +8 -4
  102. package/src/utils/config.ts +16 -1
  103. package/types/index.d.ts +1264 -1226
  104. package/dist/tmagic-form.js +0 -5901
@@ -0,0 +1,439 @@
1
+ import { createObjectProp, display, filterFunction, getRules } from "../utils/form.js";
2
+ import Hidden_default from "../fields/Hidden.js";
3
+ import { getField } from "../utils/config.js";
4
+ import FormLabel_default from "./FormLabel.js";
5
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, mergeProps, normalizeClass, normalizeStyle, openBlock, readonly, ref, renderList, resolveComponent, resolveDynamicComponent, toDisplayString, toRaw, unref, watch, watchEffect, withCtx } from "vue";
6
+ import { isEqual } from "lodash-es";
7
+ import { getValueByKeyPath } from "@tmagic/utils";
8
+ import { TMagicButton, TMagicFormItem, TMagicIcon, TMagicTooltip } from "@tmagic/design";
9
+ import { WarningFilled } from "@element-plus/icons-vue";
10
+ //#region packages/form/src/containers/Container.vue?vue&type=script&setup=true&lang.ts
11
+ var _hoisted_1 = ["data-tmagic-id", "data-tmagic-form-item-prop"];
12
+ var _hoisted_2 = ["innerHTML"];
13
+ var _hoisted_3 = ["innerHTML"];
14
+ var _hoisted_4 = ["innerHTML"];
15
+ var _hoisted_5 = ["innerHTML"];
16
+ var _hoisted_6 = ["innerHTML"];
17
+ var _hoisted_7 = ["innerHTML"];
18
+ var _hoisted_8 = {
19
+ key: 5,
20
+ style: { "text-align": "center" }
21
+ };
22
+ var Container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
23
+ name: "MFormContainer",
24
+ __name: "Container",
25
+ props: {
26
+ model: {},
27
+ lastValues: { default: () => ({}) },
28
+ config: {},
29
+ prop: { default: "" },
30
+ disabled: { type: Boolean },
31
+ labelWidth: {},
32
+ expandMore: {
33
+ type: Boolean,
34
+ default: false
35
+ },
36
+ stepActive: {},
37
+ size: { default: "small" },
38
+ isCompare: {
39
+ type: Boolean,
40
+ default: false
41
+ }
42
+ },
43
+ emits: ["change", "addDiffCount"],
44
+ setup(__props, { emit: __emit }) {
45
+ const props = __props;
46
+ const emit = __emit;
47
+ const mForm = inject("mForm");
48
+ const expand = ref(false);
49
+ const name = computed(() => props.config.name || "");
50
+ const showDiff = computed(() => {
51
+ if (!props.isCompare) return false;
52
+ return !isEqual(name.value ? props.model[name.value] : props.model, name.value ? props.lastValues[name.value] : props.lastValues);
53
+ });
54
+ const items = computed(() => props.config.items);
55
+ const itemProp = computed(() => {
56
+ let n = "";
57
+ if (name.value) n = name.value;
58
+ else return props.prop;
59
+ if (typeof props.prop !== "undefined" && props.prop !== "") return `${props.prop}.${n}`;
60
+ return `${n}`;
61
+ });
62
+ const type = computed(() => {
63
+ let { type } = props.config;
64
+ type = type && filterFunction(mForm, type, props);
65
+ if (type === "form") return "";
66
+ if (type === "container") return "";
67
+ return type?.replace(/([A-Z])/g, "-$1").toLowerCase() || (items.value ? "" : "text");
68
+ });
69
+ const tagName = computed(() => {
70
+ if (type.value === "component" && props.config.component) return props.config.component;
71
+ if (!getField(type.value || "container")) console.log(type.value, "type.value");
72
+ return getField(type.value || "container") || `m-${items.value ? "form" : "fields"}-${type.value}`;
73
+ });
74
+ const disabled = computed(() => props.disabled || filterFunction(mForm, props.config.disabled, props));
75
+ const text = computed(() => filterFunction(mForm, props.config.text, props));
76
+ const tooltip = computed(() => {
77
+ const config = filterFunction(mForm, props.config.tooltip, props);
78
+ if (typeof config === "string") return {
79
+ text: config,
80
+ placement: "top"
81
+ };
82
+ return {
83
+ text: config?.text,
84
+ placement: config?.placement || "top"
85
+ };
86
+ });
87
+ const rule = computed(() => getRules(mForm, props.config.rules, props));
88
+ const display$1 = computed(() => {
89
+ const value = display(mForm, props.config.display, props);
90
+ if (value === "expand") return expand.value;
91
+ return value;
92
+ });
93
+ const fieldsProps = computed(() => ({
94
+ size: props.size,
95
+ config: props.config,
96
+ name: name.value,
97
+ disabled: disabled.value,
98
+ prop: itemProp.value,
99
+ key: props.config[mForm?.keyProps],
100
+ style: props.config.fieldStyle
101
+ }));
102
+ const formItemProps = computed(() => ({
103
+ prop: itemProp.value,
104
+ labelWidth: itemLabelWidth.value,
105
+ labelPosition: props.config.labelPosition,
106
+ rules: rule.value,
107
+ extra: filterFunction(mForm, props.config.extra, props)
108
+ }));
109
+ const itemLabelWidth = computed(() => props.config.labelWidth ?? props.labelWidth);
110
+ watchEffect(() => {
111
+ expand.value = props.expandMore;
112
+ });
113
+ watch(showDiff, (showDiff) => {
114
+ if (type.value === "hidden") return;
115
+ if (items.value && !text.value && type.value && display$1.value) return;
116
+ if (display$1.value && showDiff && type.value) emit("addDiffCount");
117
+ }, { immediate: true });
118
+ const expandHandler = () => expand.value = !expand.value;
119
+ const key = (config) => config[mForm?.keyProps];
120
+ const filterHandler = (filter, value) => {
121
+ if (typeof filter === "function") return filter(mForm, value, {
122
+ model: props.model,
123
+ values: mForm?.initValues,
124
+ formValue: mForm?.values,
125
+ prop: itemProp.value,
126
+ config: props.config,
127
+ getFormValue: (prop) => getValueByKeyPath(prop, mForm?.values || props.model)
128
+ });
129
+ if (filter === "number") return +value;
130
+ return value;
131
+ };
132
+ const trimHandler = (trim, value) => {
133
+ if (typeof value === "string" && trim) return value.replace(/^\s*/, "").replace(/\s*$/, "");
134
+ };
135
+ const onAddDiffCount = () => emit("addDiffCount");
136
+ const hasModifyKey = (eventDataItem) => typeof eventDataItem?.modifyKey !== "undefined" && eventDataItem.modifyKey !== "";
137
+ const isValidName = () => {
138
+ const valueType = typeof name.value;
139
+ if (valueType !== "string" && valueType !== "symbol" && valueType !== "number") return false;
140
+ if (name.value === "") return false;
141
+ if (typeof name.value === "number") return name.value >= 0;
142
+ return true;
143
+ };
144
+ const createModelProxy = (target, setModelFn, pathPrefix = "") => {
145
+ return new Proxy(target, {
146
+ get: (obj, key) => {
147
+ const value = obj[key];
148
+ if (value && typeof value === "object") return createModelProxy(value, setModelFn, pathPrefix ? `${pathPrefix}.${key}` : key);
149
+ return value;
150
+ },
151
+ set: (obj, key, value) => {
152
+ setModelFn(pathPrefix ? `${pathPrefix}.${key}` : key, value);
153
+ return true;
154
+ }
155
+ });
156
+ };
157
+ const onChangeHandler = async function(v, eventData = {}) {
158
+ const { filter, onChange, trim } = props.config;
159
+ let value = toRaw(v);
160
+ const changeRecords = eventData.changeRecords || [];
161
+ const newChangeRecords = [...changeRecords];
162
+ try {
163
+ value = filterHandler(filter, v);
164
+ if (typeof onChange === "function") {
165
+ const setModel = (key, value) => {
166
+ newChangeRecords.push({
167
+ propPath: createObjectProp(itemProp.value, key, props.config.name),
168
+ value
169
+ });
170
+ };
171
+ const setFormValue = (key, value) => {
172
+ newChangeRecords.push({
173
+ propPath: key,
174
+ value
175
+ });
176
+ };
177
+ value = await onChange(mForm, value, {
178
+ model: createModelProxy(props.model, setModel),
179
+ values: mForm ? readonly(mForm.initValues) : null,
180
+ formValue: createModelProxy(mForm?.values || {}, setFormValue),
181
+ prop: itemProp.value,
182
+ config: props.config,
183
+ changeRecords: newChangeRecords,
184
+ setModel,
185
+ setFormValue,
186
+ getFormValue: (prop) => getValueByKeyPath(prop, mForm?.values || props.model)
187
+ }) ?? value;
188
+ }
189
+ value = trimHandler(trim, value) ?? value;
190
+ } catch (e) {
191
+ console.error(e);
192
+ }
193
+ let valueProp = itemProp.value;
194
+ if (hasModifyKey(eventData)) {
195
+ valueProp = valueProp ? `${valueProp}.${eventData.modifyKey}` : eventData.modifyKey;
196
+ delete eventData.modifyKey;
197
+ }
198
+ if (changeRecords.length === 0) newChangeRecords.push({
199
+ propPath: valueProp,
200
+ value
201
+ });
202
+ emit("change", props.model, {
203
+ ...eventData,
204
+ changeRecords: newChangeRecords
205
+ });
206
+ };
207
+ return (_ctx, _cache) => {
208
+ const _component_Container = resolveComponent("Container", true);
209
+ return openBlock(), createElementBlock("div", {
210
+ "data-tmagic-id": __props.config.id,
211
+ "data-tmagic-form-item-prop": itemProp.value,
212
+ class: normalizeClass(`m-form-container m-container-${type.value || ""} ${__props.config.className || ""}${__props.config.tip ? " has-tip" : ""}`),
213
+ style: normalizeStyle(__props.config.style)
214
+ }, [type.value === "hidden" ? (openBlock(), createBlock(Hidden_default, {
215
+ key: 0,
216
+ name: `${name.value}`,
217
+ prop: itemProp.value,
218
+ model: __props.model
219
+ }, null, 8, [
220
+ "name",
221
+ "prop",
222
+ "model"
223
+ ])) : items.value && !text.value && type.value && display$1.value ? (openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps({ key: 1 }, fieldsProps.value, {
224
+ model: __props.model,
225
+ "last-values": __props.lastValues,
226
+ "is-compare": __props.isCompare,
227
+ "step-active": __props.stepActive,
228
+ "expand-more": expand.value,
229
+ "label-width": itemLabelWidth.value,
230
+ style: __props.config.fieldStyle,
231
+ onChange: onChangeHandler,
232
+ onAddDiffCount
233
+ }), null, 16, [
234
+ "model",
235
+ "last-values",
236
+ "is-compare",
237
+ "step-active",
238
+ "expand-more",
239
+ "label-width",
240
+ "style"
241
+ ])) : type.value && display$1.value && !showDiff.value ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createVNode(unref(TMagicFormItem), mergeProps(formItemProps.value, { class: { "tmagic-form-hidden": `${itemLabelWidth.value}` === "0" || !text.value } }), {
242
+ label: withCtx(() => [createVNode(FormLabel_default, {
243
+ tip: __props.config.tip,
244
+ type: type.value,
245
+ "use-label": __props.config.useLabel,
246
+ "label-title": __props.config.labelTitle,
247
+ text: text.value
248
+ }, null, 8, [
249
+ "tip",
250
+ "type",
251
+ "use-label",
252
+ "label-title",
253
+ "text"
254
+ ])]),
255
+ default: withCtx(() => [tooltip.value.text ? (openBlock(), createBlock(unref(TMagicTooltip), {
256
+ key: 0,
257
+ placement: tooltip.value.placement
258
+ }, {
259
+ content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_2)]),
260
+ default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps(fieldsProps.value, {
261
+ model: __props.model,
262
+ "last-values": __props.lastValues,
263
+ "is-compare": __props.isCompare,
264
+ onChange: onChangeHandler,
265
+ onAddDiffCount
266
+ }), null, 16, [
267
+ "model",
268
+ "last-values",
269
+ "is-compare"
270
+ ]))]),
271
+ _: 1
272
+ }, 8, ["placement"])) : (openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps({ key: 1 }, fieldsProps.value, {
273
+ model: __props.model,
274
+ "last-values": __props.lastValues,
275
+ "is-compare": __props.isCompare,
276
+ onChange: onChangeHandler,
277
+ onAddDiffCount
278
+ }), null, 16, [
279
+ "model",
280
+ "last-values",
281
+ "is-compare"
282
+ ]))]),
283
+ _: 1
284
+ }, 16, ["class"]), __props.config.tip && type.value === "checkbox" && !__props.config.useLabel ? (openBlock(), createBlock(unref(TMagicTooltip), {
285
+ key: 0,
286
+ placement: "top"
287
+ }, {
288
+ content: withCtx(() => [createElementVNode("div", { innerHTML: __props.config.tip }, null, 8, _hoisted_3)]),
289
+ default: withCtx(() => [createVNode(unref(TMagicIcon), { style: {
290
+ "line-height": "40px",
291
+ "margin-left": "5px"
292
+ } }, {
293
+ default: withCtx(() => [createVNode(unref(WarningFilled))]),
294
+ _: 1
295
+ })]),
296
+ _: 1
297
+ })) : createCommentVNode("v-if", true)], 64)) : type.value && display$1.value && showDiff.value ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [
298
+ createCommentVNode(" 对比 "),
299
+ createCommentVNode(" 上次内容 "),
300
+ createVNode(unref(TMagicFormItem), mergeProps(formItemProps.value, { class: {
301
+ "tmagic-form-hidden": `${itemLabelWidth.value}` === "0" || !text.value,
302
+ "show-diff": true
303
+ } }), {
304
+ label: withCtx(() => [createVNode(FormLabel_default, {
305
+ tip: __props.config.tip,
306
+ type: type.value,
307
+ "use-label": __props.config.useLabel,
308
+ "label-title": __props.config.labelTitle,
309
+ text: text.value
310
+ }, null, 8, [
311
+ "tip",
312
+ "type",
313
+ "use-label",
314
+ "label-title",
315
+ "text"
316
+ ])]),
317
+ default: withCtx(() => [tooltip.value.text ? (openBlock(), createBlock(unref(TMagicTooltip), {
318
+ key: 0,
319
+ placement: tooltip.value.placement
320
+ }, {
321
+ content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_4)]),
322
+ default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps(fieldsProps.value, {
323
+ model: __props.lastValues,
324
+ onChange: onChangeHandler
325
+ }), null, 16, ["model"]))]),
326
+ _: 1
327
+ }, 8, ["placement"])) : (openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps({ key: 1 }, fieldsProps.value, {
328
+ model: __props.lastValues,
329
+ onChange: onChangeHandler
330
+ }), null, 16, ["model"]))]),
331
+ _: 1
332
+ }, 16, ["class"]),
333
+ __props.config.tip && type.value === "checkbox" && !__props.config.useLabel ? (openBlock(), createBlock(unref(TMagicTooltip), {
334
+ key: 0,
335
+ placement: "top"
336
+ }, {
337
+ content: withCtx(() => [createElementVNode("div", { innerHTML: __props.config.tip }, null, 8, _hoisted_5)]),
338
+ default: withCtx(() => [createVNode(unref(TMagicIcon), { style: {
339
+ "line-height": "40px",
340
+ "margin-left": "5px"
341
+ } }, {
342
+ default: withCtx(() => [createVNode(unref(WarningFilled))]),
343
+ _: 1
344
+ })]),
345
+ _: 1
346
+ })) : createCommentVNode("v-if", true),
347
+ createCommentVNode(" 当前内容 "),
348
+ createVNode(unref(TMagicFormItem), mergeProps(formItemProps.value, {
349
+ style: __props.config.tip ? "flex: 1" : "",
350
+ class: {
351
+ "tmagic-form-hidden": `${itemLabelWidth.value}` === "0" || !text.value,
352
+ "show-diff": true
353
+ }
354
+ }), {
355
+ label: withCtx(() => [createVNode(FormLabel_default, {
356
+ tip: __props.config.tip,
357
+ type: type.value,
358
+ "use-label": __props.config.useLabel,
359
+ "label-title": __props.config.labelTitle,
360
+ text: text.value
361
+ }, null, 8, [
362
+ "tip",
363
+ "type",
364
+ "use-label",
365
+ "label-title",
366
+ "text"
367
+ ])]),
368
+ default: withCtx(() => [tooltip.value.text ? (openBlock(), createBlock(unref(TMagicTooltip), {
369
+ key: 0,
370
+ placement: tooltip.value.placement
371
+ }, {
372
+ content: withCtx(() => [createElementVNode("div", { innerHTML: tooltip.value.text }, null, 8, _hoisted_6)]),
373
+ default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps(fieldsProps.value, {
374
+ model: __props.model,
375
+ onChange: onChangeHandler
376
+ }), null, 16, ["model"]))]),
377
+ _: 1
378
+ }, 8, ["placement"])) : (openBlock(), createBlock(resolveDynamicComponent(tagName.value), mergeProps({ key: 1 }, fieldsProps.value, {
379
+ model: __props.model,
380
+ onChange: onChangeHandler
381
+ }), null, 16, ["model"]))]),
382
+ _: 1
383
+ }, 16, ["style", "class"]),
384
+ __props.config.tip && type.value === "checkbox" && !__props.config.useLabel ? (openBlock(), createBlock(unref(TMagicTooltip), {
385
+ key: 1,
386
+ placement: "top"
387
+ }, {
388
+ content: withCtx(() => [createElementVNode("div", { innerHTML: __props.config.tip }, null, 8, _hoisted_7)]),
389
+ default: withCtx(() => [createVNode(unref(TMagicIcon), { style: {
390
+ "line-height": "40px",
391
+ "margin-left": "5px"
392
+ } }, {
393
+ default: withCtx(() => [createVNode(unref(WarningFilled))]),
394
+ _: 1
395
+ })]),
396
+ _: 1
397
+ })) : createCommentVNode("v-if", true)
398
+ ], 64)) : items.value && display$1.value ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [(isValidName() ? __props.model[name.value] : __props.model) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(items.value, (item) => {
399
+ return openBlock(), createBlock(_component_Container, {
400
+ key: key(item),
401
+ model: isValidName() ? __props.model[name.value] : __props.model,
402
+ "last-values": isValidName() ? __props.lastValues[name.value] || {} : __props.lastValues,
403
+ "is-compare": __props.isCompare,
404
+ config: item,
405
+ size: __props.size,
406
+ disabled: disabled.value,
407
+ "step-active": __props.stepActive,
408
+ "expand-more": expand.value,
409
+ "label-width": itemLabelWidth.value,
410
+ prop: itemProp.value,
411
+ onChange: onChangeHandler,
412
+ onAddDiffCount
413
+ }, null, 8, [
414
+ "model",
415
+ "last-values",
416
+ "is-compare",
417
+ "config",
418
+ "size",
419
+ "disabled",
420
+ "step-active",
421
+ "expand-more",
422
+ "label-width",
423
+ "prop"
424
+ ]);
425
+ }), 128)) : createCommentVNode("v-if", true)], 64)) : createCommentVNode("v-if", true), __props.config.expand && type.value !== "fieldset" ? (openBlock(), createElementBlock("div", _hoisted_8, [createVNode(unref(TMagicButton), {
426
+ type: "primary",
427
+ size: "small",
428
+ disabled: false,
429
+ link: "",
430
+ onClick: expandHandler
431
+ }, {
432
+ default: withCtx(() => [createTextVNode(toDisplayString(expand.value ? "收起配置" : "展开更多配置"), 1)]),
433
+ _: 1
434
+ })])) : createCommentVNode("v-if", true)], 14, _hoisted_1);
435
+ };
436
+ }
437
+ });
438
+ //#endregion
439
+ export { Container_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Fieldset_vue_vue_type_script_setup_true_lang_default from "./Fieldset.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/containers/Fieldset.vue
3
+ var Fieldset_default = Fieldset_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Fieldset_default as default };
@@ -0,0 +1,153 @@
1
+ import Container_default from "./Container.js";
2
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, normalizeStyle, openBlock, renderList, resolveDynamicComponent, unref, withCtx } from "vue";
3
+ import { TMagicCheckbox } from "@tmagic/design";
4
+ //#region packages/form/src/containers/Fieldset.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = ["innerHTML"];
6
+ var _hoisted_2 = ["innerHTML"];
7
+ var _hoisted_3 = { key: 1 };
8
+ var _hoisted_4 = ["innerHTML"];
9
+ var _hoisted_5 = ["innerHTML"];
10
+ var _hoisted_6 = {
11
+ key: 2,
12
+ style: { "display": "flex" }
13
+ };
14
+ var _hoisted_7 = { style: { "flex": "1" } };
15
+ var _hoisted_8 = ["src"];
16
+ var Fieldset_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
17
+ name: "MFormFieldset",
18
+ __name: "Fieldset",
19
+ props: {
20
+ labelWidth: {},
21
+ prop: { default: "" },
22
+ size: {},
23
+ model: {},
24
+ lastValues: { default: () => ({}) },
25
+ isCompare: {
26
+ type: Boolean,
27
+ default: false
28
+ },
29
+ config: {},
30
+ rules: { default: {} },
31
+ disabled: { type: Boolean }
32
+ },
33
+ emits: ["change", "addDiffCount"],
34
+ setup(__props, { emit: __emit }) {
35
+ const props = __props;
36
+ const emit = __emit;
37
+ const mForm = inject("mForm");
38
+ const name = computed(() => props.config.name || "");
39
+ const checkboxName = computed(() => {
40
+ if (typeof props.config.checkbox === "object" && typeof props.config.checkbox.name === "string") return props.config.checkbox.name;
41
+ return "value";
42
+ });
43
+ const checkboxTrueValue = computed(() => {
44
+ if (typeof props.config.checkbox === "object" && typeof props.config.checkbox.trueValue !== "undefined") return props.config.checkbox.trueValue;
45
+ return 1;
46
+ });
47
+ const checkboxFalseValue = computed(() => {
48
+ if (typeof props.config.checkbox === "object" && typeof props.config.checkbox.falseValue !== "undefined") return props.config.checkbox.falseValue;
49
+ return 0;
50
+ });
51
+ const show = computed(() => {
52
+ if (props.config.expand && checkboxName.value) return (name.value ? props.model[name.value] : props.model)?.[checkboxName.value] === checkboxTrueValue.value;
53
+ return true;
54
+ });
55
+ const lWidth = computed(() => {
56
+ if (props.config.items) return props.config.labelWidth || props.labelWidth;
57
+ return props.config.labelWidth || props.labelWidth || (props.config.text ? void 0 : "0");
58
+ });
59
+ const valueChangeHandler = (value) => {
60
+ emit("change", value, { modifyKey: checkboxName.value });
61
+ };
62
+ const changeHandler = (v, eventData) => emit("change", v, eventData);
63
+ const key = (item, index) => item[mForm?.keyProp || "__key"] ?? index;
64
+ const onAddDiffCount = () => emit("addDiffCount");
65
+ return (_ctx, _cache) => {
66
+ return (name.value ? __props.model[name.value] : __props.model) ? (openBlock(), createElementBlock("fieldset", {
67
+ key: 0,
68
+ class: "m-fieldset",
69
+ style: normalizeStyle(show.value ? "padding: 15px" : "border: 0")
70
+ }, [name.value && __props.config.checkbox ? (openBlock(), createBlock(resolveDynamicComponent(!show.value ? "div" : "legend"), { key: 0 }, {
71
+ default: withCtx(() => [createVNode(unref(TMagicCheckbox), {
72
+ "model-value": (name.value ? __props.model[name.value] : __props.model)[checkboxName.value],
73
+ prop: `${__props.prop}${__props.prop ? "." : ""}${__props.config.name}.${checkboxName.value}`,
74
+ "true-value": checkboxTrueValue.value,
75
+ "false-value": checkboxFalseValue.value,
76
+ "onUpdate:modelValue": valueChangeHandler
77
+ }, {
78
+ default: withCtx(() => [createElementVNode("span", { innerHTML: __props.config.legend }, null, 8, _hoisted_1), __props.config.extra ? (openBlock(), createElementBlock("span", {
79
+ key: 0,
80
+ innerHTML: __props.config.extra,
81
+ class: "m-form-tip"
82
+ }, null, 8, _hoisted_2)) : createCommentVNode("v-if", true)]),
83
+ _: 1
84
+ }, 8, [
85
+ "model-value",
86
+ "prop",
87
+ "true-value",
88
+ "false-value"
89
+ ])]),
90
+ _: 1
91
+ })) : (openBlock(), createElementBlock("legend", _hoisted_3, [createElementVNode("span", { innerHTML: __props.config.legend }, null, 8, _hoisted_4), __props.config.extra ? (openBlock(), createElementBlock("span", {
92
+ key: 0,
93
+ innerHTML: __props.config.extra,
94
+ class: "m-form-tip"
95
+ }, null, 8, _hoisted_5)) : createCommentVNode("v-if", true)])), __props.config.schematic && show.value ? (openBlock(), createElementBlock("div", _hoisted_6, [createElementVNode("div", _hoisted_7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.config.items, (item, index) => {
96
+ return openBlock(), createBlock(Container_default, {
97
+ key: key(item, index),
98
+ model: name.value ? __props.model[name.value] : __props.model,
99
+ lastValues: name.value ? __props.lastValues[name.value] : __props.lastValues,
100
+ "is-compare": __props.isCompare,
101
+ rules: name.value ? __props.rules[name.value] : [],
102
+ config: item,
103
+ prop: __props.prop,
104
+ disabled: __props.disabled,
105
+ labelWidth: lWidth.value,
106
+ size: __props.size,
107
+ onChange: changeHandler,
108
+ onAddDiffCount: _cache[0] || (_cache[0] = ($event) => onAddDiffCount())
109
+ }, null, 8, [
110
+ "model",
111
+ "lastValues",
112
+ "is-compare",
113
+ "rules",
114
+ "config",
115
+ "prop",
116
+ "disabled",
117
+ "labelWidth",
118
+ "size"
119
+ ]);
120
+ }), 128))]), createElementVNode("img", {
121
+ class: "m-form-schematic",
122
+ src: __props.config.schematic
123
+ }, null, 8, _hoisted_8)])) : show.value ? (openBlock(true), createElementBlock(Fragment, { key: 3 }, renderList(__props.config.items, (item, index) => {
124
+ return openBlock(), createBlock(Container_default, {
125
+ key: key(item, index),
126
+ model: name.value ? __props.model[name.value] : __props.model,
127
+ lastValues: name.value ? __props.lastValues[name.value] : __props.lastValues,
128
+ "is-compare": __props.isCompare,
129
+ rules: name.value ? __props.rules[name.value] : [],
130
+ config: item,
131
+ prop: __props.prop,
132
+ labelWidth: lWidth.value,
133
+ size: __props.size,
134
+ disabled: __props.disabled,
135
+ onChange: changeHandler,
136
+ onAddDiffCount: _cache[1] || (_cache[1] = ($event) => onAddDiffCount())
137
+ }, null, 8, [
138
+ "model",
139
+ "lastValues",
140
+ "is-compare",
141
+ "rules",
142
+ "config",
143
+ "prop",
144
+ "labelWidth",
145
+ "size",
146
+ "disabled"
147
+ ]);
148
+ }), 128)) : createCommentVNode("v-if", true)], 4)) : createCommentVNode("v-if", true);
149
+ };
150
+ }
151
+ });
152
+ //#endregion
153
+ export { Fieldset_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import FlexLayout_vue_vue_type_script_setup_true_lang_default from "./FlexLayout.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/containers/FlexLayout.vue
3
+ var FlexLayout_default = FlexLayout_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { FlexLayout_default as default };
@@ -0,0 +1,64 @@
1
+ import Container_default from "./Container.js";
2
+ import { Fragment, computed, createBlock, createElementBlock, defineComponent, inject, normalizeStyle, openBlock, renderList, unref } from "vue";
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({
5
+ name: "MFormFlexLayout",
6
+ __name: "FlexLayout",
7
+ props: {
8
+ model: {},
9
+ lastValues: {},
10
+ isCompare: { type: Boolean },
11
+ config: {},
12
+ name: {},
13
+ labelWidth: {},
14
+ prop: {},
15
+ size: {},
16
+ disabled: { type: Boolean }
17
+ },
18
+ emits: ["change", "addDiffCount"],
19
+ setup(__props, { emit: __emit }) {
20
+ const props = __props;
21
+ const emit = __emit;
22
+ const mForm = inject("mForm");
23
+ const gap = computed(() => props.config.gap || "16px");
24
+ const changeHandler = (v, eventData) => {
25
+ emit("change", props.model, eventData);
26
+ };
27
+ const onAddDiffCount = () => emit("addDiffCount");
28
+ return (_ctx, _cache) => {
29
+ return openBlock(), createElementBlock("div", {
30
+ class: "m-form-flex-layout",
31
+ style: normalizeStyle({
32
+ display: "flex",
33
+ flexWrap: "wrap",
34
+ gap: gap.value
35
+ })
36
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.config.items, (item, index) => {
37
+ return openBlock(), createBlock(Container_default, {
38
+ key: item[unref(mForm)?.keyProp || "__key"] ?? index,
39
+ config: item,
40
+ model: __props.name ? __props.model[__props.name] : __props.model,
41
+ lastValues: __props.name ? __props.lastValues[__props.name] : __props.lastValues,
42
+ "is-compare": __props.isCompare,
43
+ prop: __props.prop,
44
+ size: __props.size,
45
+ disabled: __props.disabled,
46
+ "label-width": __props.config.labelWidth || __props.labelWidth,
47
+ onChange: changeHandler,
48
+ onAddDiffCount: _cache[0] || (_cache[0] = ($event) => onAddDiffCount())
49
+ }, null, 8, [
50
+ "config",
51
+ "model",
52
+ "lastValues",
53
+ "is-compare",
54
+ "prop",
55
+ "size",
56
+ "disabled",
57
+ "label-width"
58
+ ]);
59
+ }), 128))], 4);
60
+ };
61
+ }
62
+ });
63
+ //#endregion
64
+ export { FlexLayout_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import FormLabel_vue_vue_type_script_setup_true_lang_default from "./FormLabel.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/containers/FormLabel.vue
3
+ var FormLabel_default = FormLabel_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { FormLabel_default as default };