@tmagic/form 1.7.7 → 1.7.8-beta.2

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 (108) 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 +438 -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 +75 -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 +174 -0
  92. package/dist/es/utils/useAddField.js +13 -0
  93. package/dist/style.css +1 -1
  94. package/dist/tmagic-form.umd.cjs +7696 -8924
  95. package/package.json +7 -6
  96. package/src/Form.vue +2 -2
  97. package/src/containers/Container.vue +25 -20
  98. package/src/containers/GroupListItem.vue +3 -1
  99. package/src/fields/Hidden.vue +6 -2
  100. package/src/fields/RadioGroup.vue +1 -1
  101. package/src/fields/Timerange.vue +2 -2
  102. package/src/index.ts +8 -82
  103. package/src/plugin.ts +102 -0
  104. package/src/table/useSortable.ts +8 -4
  105. package/src/utils/config.ts +16 -1
  106. package/src/utils/form.ts +10 -7
  107. package/types/index.d.ts +1265 -1227
  108. package/dist/tmagic-form.js +0 -5940
@@ -0,0 +1,85 @@
1
+ import Container_default from "./Container.js";
2
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, openBlock, ref, renderList, unref, vShow, watchEffect, withCtx, withDirectives } from "vue";
3
+ import { TMagicStep, TMagicSteps } from "@tmagic/design";
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({
6
+ name: "MFormStep",
7
+ __name: "Step",
8
+ props: {
9
+ model: {},
10
+ name: {},
11
+ lastValues: {},
12
+ isCompare: { type: Boolean },
13
+ config: {},
14
+ stepActive: { default: 1 },
15
+ labelWidth: {},
16
+ size: {},
17
+ disabled: { type: Boolean }
18
+ },
19
+ emits: ["change", "addDiffCount"],
20
+ setup(__props, { emit: __emit }) {
21
+ const props = __props;
22
+ const emit = __emit;
23
+ const mForm = inject("mForm");
24
+ const active = ref(1);
25
+ watchEffect(() => {
26
+ active.value = props.stepActive;
27
+ });
28
+ const stepClick = (index) => {
29
+ active.value = index + 1;
30
+ mForm?.$emit("update:stepActive", active.value);
31
+ };
32
+ const changeHandler = (v, eventData) => {
33
+ emit("change", props.model, eventData);
34
+ };
35
+ const onAddDiffCount = () => emit("addDiffCount");
36
+ return (_ctx, _cache) => {
37
+ return openBlock(), createElementBlock("div", null, [createVNode(unref(TMagicSteps), {
38
+ active: active.value,
39
+ "align-center": "",
40
+ space: __props.config.space
41
+ }, {
42
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.config.items, (item, index) => {
43
+ return openBlock(), createBlock(unref(TMagicStep), {
44
+ key: item.__key,
45
+ title: item.title,
46
+ active: active.value,
47
+ onClick: ($event) => stepClick(index)
48
+ }, null, 8, [
49
+ "title",
50
+ "active",
51
+ "onClick"
52
+ ]);
53
+ }), 128))]),
54
+ _: 1
55
+ }, 8, ["active", "space"]), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.config.items, (step, index) => {
56
+ return openBlock(), createElementBlock(Fragment, null, [(openBlock(true), createElementBlock(Fragment, null, renderList(step.items, (item) => {
57
+ return openBlock(), createElementBlock(Fragment, null, [item ? withDirectives((openBlock(), createBlock(Container_default, {
58
+ key: item[unref(mForm)?.keyProp || "__key"],
59
+ config: item,
60
+ model: step.name ? __props.model[step.name] : __props.model,
61
+ lastValues: step.name ? __props.lastValues[step.name] : __props.lastValues,
62
+ "is-compare": __props.isCompare,
63
+ prop: `${step.name}`,
64
+ size: __props.size,
65
+ disabled: __props.disabled,
66
+ "label-width": __props.config.labelWidth || __props.labelWidth,
67
+ onChange: changeHandler,
68
+ onAddDiffCount: _cache[0] || (_cache[0] = ($event) => onAddDiffCount())
69
+ }, null, 8, [
70
+ "config",
71
+ "model",
72
+ "lastValues",
73
+ "is-compare",
74
+ "prop",
75
+ "size",
76
+ "disabled",
77
+ "label-width"
78
+ ])), [[vShow, active.value - 1 === index]]) : createCommentVNode("v-if", true)], 64);
79
+ }), 256))], 64);
80
+ }), 256))]);
81
+ };
82
+ }
83
+ });
84
+ //#endregion
85
+ export { Step_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Tabs_vue_vue_type_script_setup_true_lang_default from "./Tabs.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/containers/Tabs.vue
3
+ var Tabs_default = Tabs_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Tabs_default as default };
@@ -0,0 +1,194 @@
1
+ import { display, filterFunction, initValue } from "../utils/form.js";
2
+ import Container_default from "./Container.js";
3
+ import { Fragment, computed, createBlock, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, mergeProps, openBlock, ref, renderList, resolveDynamicComponent, toDisplayString, unref, watchEffect, withCtx } from "vue";
4
+ import { isEmpty } from "lodash-es";
5
+ import { TMagicBadge, getDesignConfig } from "@tmagic/design";
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({
8
+ name: "MFormTabs",
9
+ __name: "Tabs",
10
+ props: {
11
+ model: {},
12
+ lastValues: { default: () => ({}) },
13
+ isCompare: {
14
+ type: Boolean,
15
+ default: false
16
+ },
17
+ config: {},
18
+ name: {},
19
+ size: {},
20
+ labelWidth: {},
21
+ prop: { default: "" },
22
+ expandMore: { type: Boolean },
23
+ disabled: { type: Boolean }
24
+ },
25
+ emits: ["change", "addDiffCount"],
26
+ setup(__props, { emit: __emit }) {
27
+ const props = __props;
28
+ const tabPaneComponent = getDesignConfig("components")?.tabPane;
29
+ const tabsComponent = getDesignConfig("components")?.tabs;
30
+ const getActive = (mForm, props, activeTabName) => {
31
+ const { config, model, prop } = props;
32
+ const { active } = config;
33
+ if (typeof active === "function") return active(mForm, {
34
+ model,
35
+ formValue: mForm?.values,
36
+ prop
37
+ });
38
+ if (+activeTabName >= props.config.items.length) return "0";
39
+ if (typeof active !== "undefined") return active;
40
+ return "0";
41
+ };
42
+ const tabClick = (mForm, tab, props) => {
43
+ const { config, model, prop } = props;
44
+ tab.name = tab.paneName;
45
+ if (typeof config.onTabClick === "function") config.onTabClick(mForm, tab, {
46
+ model,
47
+ formValue: mForm?.values,
48
+ prop,
49
+ config
50
+ });
51
+ const tabConfig = config.items.find((item) => tab.name === item.status);
52
+ if (tabConfig && typeof tabConfig.onTabClick === "function") tabConfig.onTabClick(mForm, tab, {
53
+ model,
54
+ formValue: mForm?.values,
55
+ prop,
56
+ config
57
+ });
58
+ };
59
+ const emit = __emit;
60
+ const mForm = inject("mForm");
61
+ const activeTabName = ref(getActive(mForm, props, ""));
62
+ const diffCount = ref({});
63
+ const tabs = computed(() => {
64
+ if (props.config.dynamic) {
65
+ if (!props.config.name) throw new Error("dynamic tab 必须配置name");
66
+ return props.model[props.config.name] || [];
67
+ }
68
+ return props.config.items.filter((item) => display(mForm, item.display, props));
69
+ });
70
+ const filter = (config) => filterFunction(mForm, config, props);
71
+ watchEffect(() => {
72
+ if (typeof props.config.activeChange === "function") props.config.activeChange(mForm, activeTabName.value, {
73
+ model: props.model,
74
+ prop: props.prop
75
+ });
76
+ });
77
+ const tabItems = (tab) => props.config.dynamic ? props.config.items : tab.items;
78
+ const tabClickHandler = (tab) => {
79
+ if (typeof tab === "object") tabClick(mForm, tab, props);
80
+ else {
81
+ let item = tabs.value.find((tab) => tab.status === tab);
82
+ if (!item) item = tabs.value[tab];
83
+ tabClick(mForm, item, props);
84
+ }
85
+ };
86
+ const onTabAdd = async () => {
87
+ if (!props.name) throw new Error("dynamic tab 必须配置name");
88
+ if (typeof props.config.onTabAdd === "function") {
89
+ props.config.onTabAdd(mForm, {
90
+ model: props.model,
91
+ prop: props.prop,
92
+ config: props.config
93
+ });
94
+ emit("change", props.model[props.name]);
95
+ } else {
96
+ const newObj = await initValue(mForm, {
97
+ config: props.config.items,
98
+ initValues: {}
99
+ });
100
+ newObj.title = `标签${tabs.value.length + 1}`;
101
+ props.model[props.name].push(newObj);
102
+ emit("change", props.model[props.name], { changeRecords: [{
103
+ propPath: `${props.prop}.${props.model[props.name].length - 1}`,
104
+ value: newObj
105
+ }] });
106
+ }
107
+ mForm?.$emit("field-change", props.prop, props.model[props.name]);
108
+ };
109
+ const onTabRemove = (tabName) => {
110
+ if (!props.name) throw new Error("dynamic tab 必须配置name");
111
+ if (typeof props.config.onTabRemove === "function") props.config.onTabRemove(mForm, tabName, {
112
+ model: props.model,
113
+ prop: props.prop,
114
+ config: props.config
115
+ });
116
+ else {
117
+ props.model[props.name].splice(+tabName, 1);
118
+ if (tabName < activeTabName.value || activeTabName.value >= props.model[props.name].length) {
119
+ activeTabName.value = (+activeTabName.value - 1).toString();
120
+ tabClick(mForm, { name: activeTabName.value }, props);
121
+ }
122
+ }
123
+ emit("change", props.model[props.name]);
124
+ mForm?.$emit("field-change", props.prop, props.model[props.name]);
125
+ };
126
+ const changeHandler = (v, eventData) => {
127
+ emit("change", props.name ? props.model[props.name] : props.model, eventData);
128
+ };
129
+ const onAddDiffCount = (tabIndex) => {
130
+ if (!diffCount.value[tabIndex]) diffCount.value[tabIndex] = 1;
131
+ else diffCount.value[tabIndex] += 1;
132
+ emit("addDiffCount");
133
+ };
134
+ return (_ctx, _cache) => {
135
+ return openBlock(), createBlock(resolveDynamicComponent(unref(tabsComponent)?.component || "el-tabs"), mergeProps({
136
+ modelValue: activeTabName.value,
137
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activeTabName.value = $event)
138
+ }, unref(tabsComponent)?.props({
139
+ type: __props.config.tabType,
140
+ editable: __props.config.editable || false,
141
+ tabPosition: __props.config.tabPosition || "top"
142
+ }) || {}, {
143
+ class: `tmagic-design-tabs ${__props.config.dynamic ? "magic-form-dynamic-tab" : "magic-form-tab"}`,
144
+ onTabClick: tabClickHandler,
145
+ onTabAdd,
146
+ onTabRemove
147
+ }), {
148
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab, tabIndex) => {
149
+ return openBlock(), createBlock(resolveDynamicComponent(unref(tabPaneComponent)?.component || "el-tab-pane"), mergeProps({ key: tab[unref(mForm)?.keyProp || "__key"] ?? tabIndex }, { ref_for: true }, unref(tabPaneComponent)?.props({
150
+ name: filter(tab.status) || tabIndex.toString(),
151
+ lazy: tab.lazy || false
152
+ }) || {}), {
153
+ label: withCtx(() => [createElementVNode("span", null, [createTextVNode(toDisplayString(filter(tab.title)), 1), createVNode(unref(TMagicBadge), {
154
+ hidden: !diffCount.value[Number(tabIndex)],
155
+ value: diffCount.value[Number(tabIndex)],
156
+ class: "diff-count-badge"
157
+ }, null, 8, ["hidden", "value"])])]),
158
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(tabItems(tab), (item) => {
159
+ return openBlock(), createBlock(Container_default, {
160
+ key: item[unref(mForm)?.keyProp || "__key"],
161
+ config: item,
162
+ disabled: __props.disabled,
163
+ model: __props.config.dynamic ? (__props.name ? __props.model[__props.name] : __props.model)[tabIndex] : tab.name ? (__props.name ? __props.model[__props.name] : __props.model)[tab.name] : __props.name ? __props.model[__props.name] : __props.model,
164
+ "last-values": unref(isEmpty)(__props.lastValues) ? {} : __props.config.dynamic ? (__props.name ? __props.lastValues[__props.name] : __props.lastValues)[tabIndex] : tab.name ? (__props.name ? __props.lastValues[__props.name] : __props.lastValues)[tab.name] : __props.name ? __props.lastValues[__props.name] : __props.lastValues,
165
+ "is-compare": __props.isCompare,
166
+ prop: __props.config.dynamic ? `${__props.prop}${__props.prop ? "." : ""}${String(tabIndex)}` : tab.name ? `${__props.prop}${__props.prop ? "." : ""}${tab.name}` : __props.prop,
167
+ size: __props.size,
168
+ "label-width": tab.labelWidth || __props.labelWidth,
169
+ "expand-more": __props.expandMore,
170
+ onChange: changeHandler,
171
+ onAddDiffCount: ($event) => onAddDiffCount(Number(tabIndex))
172
+ }, null, 8, [
173
+ "config",
174
+ "disabled",
175
+ "model",
176
+ "last-values",
177
+ "is-compare",
178
+ "prop",
179
+ "size",
180
+ "label-width",
181
+ "expand-more",
182
+ "onAddDiffCount"
183
+ ]);
184
+ }), 128))]),
185
+ _: 2
186
+ }, 1040);
187
+ }), 128))]),
188
+ _: 1
189
+ }, 16, ["modelValue", "class"]);
190
+ };
191
+ }
192
+ });
193
+ //#endregion
194
+ export { Tabs_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Cascader_vue_vue_type_script_setup_true_lang_default from "./Cascader.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/Cascader.vue
3
+ var Cascader_default = Cascader_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Cascader_default as default };
@@ -0,0 +1,123 @@
1
+ import { filterFunction } from "../utils/form.js";
2
+ import { useAddField } from "../utils/useAddField.js";
3
+ import { getConfig } from "../utils/config.js";
4
+ import { computed, createBlock, defineComponent, inject, openBlock, ref, unref, watchEffect } from "vue";
5
+ import { TMagicCascader } from "@tmagic/design";
6
+ //#region packages/form/src/fields/Cascader.vue?vue&type=script&setup=true&lang.ts
7
+ var Cascader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ name: "MFormCascader",
9
+ __name: "Cascader",
10
+ props: {
11
+ config: {},
12
+ model: {},
13
+ initValues: {},
14
+ values: {},
15
+ name: {},
16
+ prop: {},
17
+ disabled: { type: Boolean },
18
+ size: {},
19
+ lastValues: {},
20
+ isCompare: { type: Boolean }
21
+ },
22
+ emits: ["change"],
23
+ setup(__props, { emit: __emit }) {
24
+ const props = __props;
25
+ const emit = __emit;
26
+ const mForm = inject("mForm");
27
+ useAddField(props.prop);
28
+ const requestFunc = getConfig("request");
29
+ const tMagicCascader = ref();
30
+ const options = ref([]);
31
+ const remoteData = ref(null);
32
+ const checkStrictly = computed(() => filterFunction(mForm, props.config.checkStrictly, props));
33
+ const valueSeparator = computed(() => filterFunction(mForm, props.config.valueSeparator, props));
34
+ const value = computed(() => {
35
+ if (typeof props.model[props.name] === "string" && valueSeparator.value) return props.model[props.name].split(valueSeparator.value);
36
+ return props.model[props.name];
37
+ });
38
+ const updateModelValueHandler = (value) => {
39
+ let result = value;
40
+ if (valueSeparator.value) result = value.join(valueSeparator.value);
41
+ if (typeof result === "undefined") {
42
+ if (Array.isArray(props.model[props.name])) emit("change", []);
43
+ else if (typeof props.model[props.name] === "string") emit("change", "");
44
+ else if (typeof props.model[props.name] === "object") emit("change", null);
45
+ }
46
+ emit("change", result);
47
+ };
48
+ const setRemoteOptions = async function() {
49
+ const { config } = props;
50
+ const { option } = config;
51
+ if (!option) return;
52
+ let { body } = option;
53
+ const postOptions = {
54
+ url: option.url,
55
+ cache: option.cache,
56
+ timeout: option.timeout,
57
+ data: {}
58
+ };
59
+ if (body && mForm) {
60
+ if (typeof body === "function" && props.model && mForm) body = body(mForm, {
61
+ model: props.model,
62
+ formValue: mForm.values,
63
+ formValues: mForm.values,
64
+ config: props.config
65
+ });
66
+ postOptions.data = body;
67
+ }
68
+ const res = await requestFunc(postOptions);
69
+ remoteData.value = res[option.root];
70
+ if (remoteData.value && typeof option?.item === "function") options.value = option.item(res[option.root]);
71
+ };
72
+ if (typeof props.config.options === "function" && props.model && mForm) watchEffect(() => {
73
+ typeof props.config.options === "function" && Promise.resolve(props.config.options(mForm, {
74
+ model: props.model,
75
+ prop: props.prop,
76
+ formValue: mForm?.values
77
+ })).then((data) => {
78
+ options.value = data;
79
+ });
80
+ });
81
+ else if (!props.config.options?.length || props.config.remote) Promise.resolve(setRemoteOptions());
82
+ else if (Array.isArray(props.config.options)) watchEffect(() => {
83
+ options.value = props.config.options;
84
+ });
85
+ const changeHandler = () => {
86
+ if (!tMagicCascader.value) return;
87
+ tMagicCascader.value.setQuery("");
88
+ tMagicCascader.value.setPreviousQuery(null);
89
+ };
90
+ return (_ctx, _cache) => {
91
+ return openBlock(), createBlock(unref(TMagicCascader), {
92
+ "model-value": value.value,
93
+ ref_key: "tMagicCascader",
94
+ ref: tMagicCascader,
95
+ style: { "width": "100%" },
96
+ clearable: "",
97
+ filterable: "",
98
+ size: __props.size,
99
+ placeholder: __props.config.placeholder,
100
+ disabled: __props.disabled,
101
+ options: options.value,
102
+ "popper-class": __props.config.popperClass,
103
+ props: {
104
+ multiple: __props.config.multiple ?? false,
105
+ emitPath: __props.config.emitPath ?? true,
106
+ checkStrictly: checkStrictly.value ?? false
107
+ },
108
+ "onUpdate:modelValue": updateModelValueHandler,
109
+ onChange: changeHandler
110
+ }, null, 8, [
111
+ "model-value",
112
+ "size",
113
+ "placeholder",
114
+ "disabled",
115
+ "options",
116
+ "popper-class",
117
+ "props"
118
+ ]);
119
+ };
120
+ }
121
+ });
122
+ //#endregion
123
+ export { Cascader_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Checkbox_vue_vue_type_script_setup_true_lang_default from "./Checkbox.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/Checkbox.vue
3
+ var Checkbox_default = Checkbox_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Checkbox_default as default };
@@ -0,0 +1,61 @@
1
+ import { useAddField } from "../utils/useAddField.js";
2
+ import { computed, createBlock, createSlots, createTextVNode, defineComponent, openBlock, toDisplayString, unref, withCtx } from "vue";
3
+ import { TMagicCheckbox } from "@tmagic/design";
4
+ //#region packages/form/src/fields/Checkbox.vue?vue&type=script&setup=true&lang.ts
5
+ var Checkbox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
+ name: "MFormCheckbox",
7
+ __name: "Checkbox",
8
+ props: {
9
+ config: {},
10
+ model: {},
11
+ initValues: {},
12
+ values: {},
13
+ name: {},
14
+ prop: {},
15
+ disabled: { type: Boolean },
16
+ size: {},
17
+ lastValues: {},
18
+ isCompare: { type: Boolean }
19
+ },
20
+ emits: ["change"],
21
+ setup(__props, { emit: __emit }) {
22
+ const props = __props;
23
+ const emit = __emit;
24
+ useAddField(props.prop);
25
+ const activeValue = computed(() => {
26
+ if (typeof props.config.activeValue === "undefined") {
27
+ if (props.config.filter === "number") return 1;
28
+ } else return props.config.activeValue;
29
+ });
30
+ const inactiveValue = computed(() => {
31
+ if (typeof props.config.inactiveValue === "undefined") {
32
+ if (props.config.filter === "number") return 0;
33
+ } else return props.config.inactiveValue;
34
+ });
35
+ const changeHandler = (value) => {
36
+ emit("change", value);
37
+ };
38
+ return (_ctx, _cache) => {
39
+ return openBlock(), createBlock(unref(TMagicCheckbox), {
40
+ "model-value": __props.model[__props.name],
41
+ size: __props.size,
42
+ trueValue: activeValue.value,
43
+ falseValue: inactiveValue.value,
44
+ disabled: __props.disabled,
45
+ "onUpdate:modelValue": changeHandler
46
+ }, createSlots({ _: 2 }, [!__props.config.useLabel ? {
47
+ name: "default",
48
+ fn: withCtx(() => [createTextVNode(toDisplayString(__props.config.text), 1)]),
49
+ key: "0"
50
+ } : void 0]), 1032, [
51
+ "model-value",
52
+ "size",
53
+ "trueValue",
54
+ "falseValue",
55
+ "disabled"
56
+ ]);
57
+ };
58
+ }
59
+ });
60
+ //#endregion
61
+ export { Checkbox_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import CheckboxGroup_vue_vue_type_script_setup_true_lang_default from "./CheckboxGroup.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/CheckboxGroup.vue
3
+ var CheckboxGroup_default = CheckboxGroup_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { CheckboxGroup_default as default };
@@ -0,0 +1,63 @@
1
+ import { filterFunction } from "../utils/form.js";
2
+ import { useAddField } from "../utils/useAddField.js";
3
+ import { Fragment, computed, createBlock, createElementBlock, createTextVNode, defineComponent, inject, openBlock, renderList, toDisplayString, unref, withCtx } from "vue";
4
+ import { TMagicCheckbox, TMagicCheckboxGroup } from "@tmagic/design";
5
+ //#region packages/form/src/fields/CheckboxGroup.vue?vue&type=script&setup=true&lang.ts
6
+ var CheckboxGroup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ name: "MFormCheckGroup",
8
+ __name: "CheckboxGroup",
9
+ props: {
10
+ config: {},
11
+ model: {},
12
+ initValues: {},
13
+ values: {},
14
+ name: {},
15
+ prop: {},
16
+ disabled: { type: Boolean },
17
+ size: {},
18
+ lastValues: {},
19
+ isCompare: { type: Boolean }
20
+ },
21
+ emits: ["change"],
22
+ setup(__props, { emit: __emit }) {
23
+ const props = __props;
24
+ const emit = __emit;
25
+ useAddField(props.prop);
26
+ if (props.model && !props.model[props.name]) props.model[props.name] = [];
27
+ const changeHandler = (v) => {
28
+ emit("change", v);
29
+ };
30
+ const mForm = inject("mForm");
31
+ const options = computed(() => {
32
+ if (Array.isArray(props.config.options)) return props.config.options;
33
+ if (typeof props.config.options === "function") return filterFunction(mForm, props.config.options, props) || [];
34
+ return [];
35
+ });
36
+ return (_ctx, _cache) => {
37
+ return openBlock(), createBlock(unref(TMagicCheckboxGroup), {
38
+ "model-value": __props.model[__props.name],
39
+ size: __props.size,
40
+ disabled: __props.disabled,
41
+ "onUpdate:modelValue": changeHandler
42
+ }, {
43
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(options.value, (option) => {
44
+ return openBlock(), createBlock(unref(TMagicCheckbox), {
45
+ value: option.value,
46
+ key: option.value,
47
+ disabled: option.disabled
48
+ }, {
49
+ default: withCtx(() => [createTextVNode(toDisplayString(option.text), 1)]),
50
+ _: 2
51
+ }, 1032, ["value", "disabled"]);
52
+ }), 128))]),
53
+ _: 1
54
+ }, 8, [
55
+ "model-value",
56
+ "size",
57
+ "disabled"
58
+ ]);
59
+ };
60
+ }
61
+ });
62
+ //#endregion
63
+ export { CheckboxGroup_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import ColorPicker_vue_vue_type_script_setup_true_lang_default from "./ColorPicker.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/ColorPicker.vue
3
+ var ColorPicker_default = ColorPicker_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { ColorPicker_default as default };
@@ -0,0 +1,42 @@
1
+ import { useAddField } from "../utils/useAddField.js";
2
+ import { createBlock, defineComponent, openBlock, unref } from "vue";
3
+ import { TMagicColorPicker } from "@tmagic/design";
4
+ //#region packages/form/src/fields/ColorPicker.vue?vue&type=script&setup=true&lang.ts
5
+ var ColorPicker_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
+ name: "MFormColorPicker",
7
+ __name: "ColorPicker",
8
+ props: {
9
+ config: {},
10
+ model: {},
11
+ initValues: {},
12
+ values: {},
13
+ name: {},
14
+ prop: {},
15
+ disabled: { type: Boolean },
16
+ size: {},
17
+ lastValues: {},
18
+ isCompare: { type: Boolean }
19
+ },
20
+ emits: ["change"],
21
+ setup(__props, { emit: __emit }) {
22
+ const props = __props;
23
+ const emit = __emit;
24
+ useAddField(props.prop);
25
+ const changeHandler = (value) => emit("change", value);
26
+ return (_ctx, _cache) => {
27
+ return openBlock(), createBlock(unref(TMagicColorPicker), {
28
+ "model-value": __props.model[__props.name],
29
+ size: __props.size,
30
+ disabled: __props.disabled,
31
+ showAlpha: true,
32
+ "onUpdate:modelValue": changeHandler
33
+ }, null, 8, [
34
+ "model-value",
35
+ "size",
36
+ "disabled"
37
+ ]);
38
+ };
39
+ }
40
+ });
41
+ //#endregion
42
+ export { ColorPicker_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Date_vue_vue_type_script_setup_true_lang_default from "./Date.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/Date.vue
3
+ var Date_default = Date_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Date_default as default };
@@ -0,0 +1,52 @@
1
+ import { datetimeFormatter } from "../utils/form.js";
2
+ import { useAddField } from "../utils/useAddField.js";
3
+ import { createBlock, defineComponent, openBlock, unref } from "vue";
4
+ import { TMagicDatePicker } from "@tmagic/design";
5
+ //#region packages/form/src/fields/Date.vue?vue&type=script&setup=true&lang.ts
6
+ var Date_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ name: "MFormDate",
8
+ __name: "Date",
9
+ props: {
10
+ config: {},
11
+ model: {},
12
+ initValues: {},
13
+ values: {},
14
+ name: {},
15
+ prop: {},
16
+ disabled: { type: Boolean },
17
+ size: {},
18
+ lastValues: {},
19
+ isCompare: { type: Boolean }
20
+ },
21
+ emits: ["change"],
22
+ setup(__props, { emit: __emit }) {
23
+ const props = __props;
24
+ const emit = __emit;
25
+ useAddField(props.prop);
26
+ props.model[props.name] = datetimeFormatter(props.model[props.name], "", props.config.valueFormat || "YYYY/MM/DD");
27
+ const changeHandler = (v) => {
28
+ emit("change", v);
29
+ };
30
+ return (_ctx, _cache) => {
31
+ return openBlock(), createBlock(unref(TMagicDatePicker), {
32
+ "model-value": __props.model[__props.name],
33
+ type: "date",
34
+ size: __props.size,
35
+ placeholder: __props.config.placeholder,
36
+ disabled: __props.disabled,
37
+ format: __props.config.format || "YYYY/MM/DD",
38
+ "value-format": __props.config.valueFormat || "YYYY/MM/DD",
39
+ "onUpdate:modelValue": changeHandler
40
+ }, null, 8, [
41
+ "model-value",
42
+ "size",
43
+ "placeholder",
44
+ "disabled",
45
+ "format",
46
+ "value-format"
47
+ ]);
48
+ };
49
+ }
50
+ });
51
+ //#endregion
52
+ export { Date_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import DateTime_vue_vue_type_script_setup_true_lang_default from "./DateTime.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/DateTime.vue
3
+ var DateTime_default = DateTime_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { DateTime_default as default };