@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,57 @@
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/DateTime.vue?vue&type=script&setup=true&lang.ts
6
+ var DateTime_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ name: "MFormDateTime",
8
+ __name: "DateTime",
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
+ const value = props.model?.[props.name]?.toString();
27
+ if (props.model) if (!value || value === "Invalid Date") props.model[props.name] = "";
28
+ else props.model[props.name] = datetimeFormatter(props.model[props.name], "", props.config.valueFormat || "YYYY/MM/DD HH:mm:ss");
29
+ const changeHandler = (v) => {
30
+ emit("change", v);
31
+ };
32
+ return (_ctx, _cache) => {
33
+ return openBlock(), createBlock(unref(TMagicDatePicker), {
34
+ "model-value": __props.model[__props.name],
35
+ "popper-class": "magic-datetime-picker-popper",
36
+ type: "datetime",
37
+ size: __props.size,
38
+ placeholder: __props.config.placeholder,
39
+ disabled: __props.disabled,
40
+ format: __props.config.format || "YYYY/MM/DD HH:mm:ss",
41
+ "value-format": __props.config.valueFormat || "YYYY/MM/DD HH:mm:ss",
42
+ "default-time": __props.config.defaultTime,
43
+ "onUpdate:modelValue": changeHandler
44
+ }, null, 8, [
45
+ "model-value",
46
+ "size",
47
+ "placeholder",
48
+ "disabled",
49
+ "format",
50
+ "value-format",
51
+ "default-time"
52
+ ]);
53
+ };
54
+ }
55
+ });
56
+ //#endregion
57
+ export { DateTime_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Daterange_vue_vue_type_script_setup_true_lang_default from "./Daterange.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/Daterange.vue
3
+ var Daterange_default = Daterange_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Daterange_default as default };
@@ -0,0 +1,99 @@
1
+ import { datetimeFormatter } from "../utils/form.js";
2
+ import { useAddField } from "../utils/useAddField.js";
3
+ import { createBlock, defineComponent, onUnmounted, openBlock, ref, unref, watch } from "vue";
4
+ import { TMagicDatePicker } from "@tmagic/design";
5
+ //#region packages/form/src/fields/Daterange.vue?vue&type=script&setup=true&lang.ts
6
+ var Daterange_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ name: "MFormDateRange",
8
+ __name: "Daterange",
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
+ const { names } = props.config;
27
+ const value = ref([]);
28
+ if (props.model !== void 0) {
29
+ if (names?.length) {
30
+ const unWatch = watch([() => props.model[names[0]], () => props.model[names[1]]], ([start, end], [preStart, preEnd]) => {
31
+ if (!value.value) value.value = [];
32
+ const format = `${props.config.dateFormat || "YYYY/MM/DD"} ${props.config.timeFormat || "HH:mm:ss"}`;
33
+ if (!start || !end) value.value = [];
34
+ if (start !== preStart) value.value[0] = datetimeFormatter(start, "", format);
35
+ if (end !== preEnd) value.value[1] = datetimeFormatter(end, "", format);
36
+ }, { immediate: true });
37
+ onUnmounted(() => {
38
+ unWatch();
39
+ });
40
+ } else if (props.name && props.model[props.name]) {
41
+ const unWatch = watch(() => props.model[props.name], (start, preStart) => {
42
+ const format = `${props.config.dateFormat || "YYYY/MM/DD"} ${props.config.timeFormat || "HH:mm:ss"}`;
43
+ if (start !== preStart) value.value = start.map((item) => item ? datetimeFormatter(item, "", format) : void 0);
44
+ }, { immediate: true });
45
+ onUnmounted(() => {
46
+ unWatch();
47
+ });
48
+ }
49
+ }
50
+ const changeHandler = (v) => {
51
+ const value = v || [];
52
+ if (props.name) emit("change", value);
53
+ else if (props.config.names?.length) {
54
+ const newChangeRecords = [];
55
+ props.config.names.forEach((item, index) => {
56
+ if (!props.model) return;
57
+ if (Array.isArray(v)) newChangeRecords.push({
58
+ propPath: props.prop ? `${props.prop}.${item}` : item,
59
+ value: v[index]
60
+ });
61
+ else newChangeRecords.push({
62
+ propPath: props.prop ? `${props.prop}.${item}` : item,
63
+ value: void 0
64
+ });
65
+ });
66
+ emit("change", props.model, { changeRecords: newChangeRecords });
67
+ }
68
+ };
69
+ return (_ctx, _cache) => {
70
+ return openBlock(), createBlock(unref(TMagicDatePicker), {
71
+ "model-value": value.value,
72
+ type: "datetimerange",
73
+ "range-separator": "-",
74
+ "start-placeholder": "开始日期",
75
+ "end-placeholder": "结束日期",
76
+ size: __props.size,
77
+ "unlink-panels": true,
78
+ disabled: __props.disabled,
79
+ "default-time": __props.config.defaultTime,
80
+ format: `${__props.config.dateFormat || "YYYY/MM/DD"} ${__props.config.timeFormat || "HH:mm:ss"}`,
81
+ "value-format": __props.config.valueFormat || "YYYY/MM/DD HH:mm:ss",
82
+ "date-format": __props.config.dateFormat || "YYYY/MM/DD",
83
+ "time-format": __props.config.timeFormat || "HH:mm:ss",
84
+ "onUpdate:modelValue": changeHandler
85
+ }, null, 8, [
86
+ "model-value",
87
+ "size",
88
+ "disabled",
89
+ "default-time",
90
+ "format",
91
+ "value-format",
92
+ "date-format",
93
+ "time-format"
94
+ ]);
95
+ };
96
+ }
97
+ });
98
+ //#endregion
99
+ export { Daterange_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Display_vue_vue_type_script_setup_true_lang_default from "./Display.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/Display.vue
3
+ var Display_default = Display_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Display_default as default };
@@ -0,0 +1,36 @@
1
+ import { filterFunction } from "../utils/form.js";
2
+ import { useAddField } from "../utils/useAddField.js";
3
+ import { computed, createCommentVNode, createElementBlock, defineComponent, inject, openBlock, toDisplayString } from "vue";
4
+ //#region packages/form/src/fields/Display.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = { key: 0 };
6
+ var Display_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ name: "MFormDisplay",
8
+ __name: "Display",
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
+ setup(__props) {
22
+ const props = __props;
23
+ const mForm = inject("mForm");
24
+ if (props.config.initValue && props.model) props.model[props.name] = props.config.initValue;
25
+ const text = computed(() => {
26
+ if (props.config.displayText) return filterFunction(mForm, props.config.displayText, props);
27
+ return props.model[props.name];
28
+ });
29
+ useAddField(props.prop);
30
+ return (_ctx, _cache) => {
31
+ return __props.model ? (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(text.value), 1)) : createCommentVNode("v-if", true);
32
+ };
33
+ }
34
+ });
35
+ //#endregion
36
+ export { Display_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import DynamicField_vue_vue_type_script_setup_true_lang_default from "./DynamicField.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/DynamicField.vue
3
+ var DynamicField_default = DynamicField_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { DynamicField_default as default };
@@ -0,0 +1,91 @@
1
+ import { useAddField } from "../utils/useAddField.js";
2
+ import { getConfig } from "../utils/config.js";
3
+ import { Fragment, createBlock, createElementBlock, createVNode, defineComponent, onBeforeUnmount, openBlock, reactive, renderList, unref, watch, withCtx } from "vue";
4
+ import { TMagicForm, TMagicFormItem, TMagicInput } from "@tmagic/design";
5
+ //#region packages/form/src/fields/DynamicField.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1 = { class: "m-fields-dynamic-field" };
7
+ var DynamicField_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ name: "MFormDynamicField",
9
+ __name: "DynamicField",
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
+ /**
25
+ * 动态表单,目前只支持input类型字段
26
+ * inputType: 'dynamic-field',
27
+ * text: '动态表单',
28
+ * dynamicKey: 'keyname', 如果model[dynamicKey]变化,表单字段变化
29
+ * returnFields(config,model,request): 函数,返回字段列表[{name:'',label:'',defaultValue:''}]
30
+ *
31
+ * 特别注意!!!field的上一级必须extensible: true,才能保存未声明的字段
32
+ */
33
+ const props = __props;
34
+ const emit = __emit;
35
+ useAddField(props.prop);
36
+ const request = getConfig("request");
37
+ const fieldMap = reactive({ value: {} });
38
+ const fieldLabelMap = reactive({ value: {} });
39
+ const changeFieldMap = async () => {
40
+ if (typeof props.config.returnFields !== "function" || !props.model) return;
41
+ const fields = await props.config.returnFields(props.config, props.model, request);
42
+ fieldMap.value = {};
43
+ fieldLabelMap.value = {};
44
+ fields.forEach((v) => {
45
+ if (typeof v !== "object" || v.name === void 0) return;
46
+ let oldVal = props.model?.[v.name] || "";
47
+ if (!oldVal && v.defaultValue !== void 0) {
48
+ oldVal = v.defaultValue;
49
+ emit("change", oldVal, { modifyKey: v.name });
50
+ }
51
+ fieldMap.value[v.name] = oldVal;
52
+ fieldLabelMap.value[v.name] = v.label || "";
53
+ });
54
+ };
55
+ const unwatch = watch(() => props.model?.[props.config.dynamicKey], (val) => {
56
+ if (val !== "") changeFieldMap();
57
+ }, { immediate: true });
58
+ onBeforeUnmount(() => {
59
+ if (typeof unwatch === "function") unwatch();
60
+ });
61
+ const inputChangeHandler = (key) => {
62
+ emit("change", fieldMap.value[key], { modifyKey: key });
63
+ };
64
+ return (_ctx, _cache) => {
65
+ return openBlock(), createElementBlock("div", _hoisted_1, [createVNode(unref(TMagicForm), { size: "small" }, {
66
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(Object.keys(fieldMap.value), (key) => {
67
+ return openBlock(), createBlock(unref(TMagicFormItem), {
68
+ key,
69
+ label: fieldLabelMap.value[key]
70
+ }, {
71
+ default: withCtx(() => [createVNode(unref(TMagicInput), {
72
+ modelValue: fieldMap.value[key],
73
+ "onUpdate:modelValue": ($event) => fieldMap.value[key] = $event,
74
+ placeholder: fieldLabelMap.value[key],
75
+ onChange: ($event) => inputChangeHandler(key)
76
+ }, null, 8, [
77
+ "modelValue",
78
+ "onUpdate:modelValue",
79
+ "placeholder",
80
+ "onChange"
81
+ ])]),
82
+ _: 2
83
+ }, 1032, ["label"]);
84
+ }), 128))]),
85
+ _: 1
86
+ })]);
87
+ };
88
+ }
89
+ });
90
+ //#endregion
91
+ export { DynamicField_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Hidden_vue_vue_type_script_setup_true_lang_default from "./Hidden.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/Hidden.vue
3
+ var Hidden_default = Hidden_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Hidden_default as default };
@@ -0,0 +1,24 @@
1
+ import { useAddField } from "../utils/useAddField.js";
2
+ import { createCommentVNode, createElementBlock, defineComponent, openBlock, vModelText, withDirectives } from "vue";
3
+ //#region packages/form/src/fields/Hidden.vue?vue&type=script&setup=true&lang.ts
4
+ var Hidden_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ name: "MFormHidden",
6
+ __name: "Hidden",
7
+ props: {
8
+ model: {},
9
+ name: {},
10
+ prop: {}
11
+ },
12
+ setup(__props) {
13
+ useAddField(__props.prop);
14
+ return (_ctx, _cache) => {
15
+ return __props.model ? withDirectives((openBlock(), createElementBlock("input", {
16
+ key: 0,
17
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => __props.model[__props.name] = $event),
18
+ type: "hidden"
19
+ }, null, 512)), [[vModelText, __props.model[__props.name]]]) : createCommentVNode("v-if", true);
20
+ };
21
+ }
22
+ });
23
+ //#endregion
24
+ export { Hidden_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Link_vue_vue_type_script_setup_true_lang_default from "./Link.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/Link.vue
3
+ var Link_default = Link_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Link_default as default };
@@ -0,0 +1,104 @@
1
+ import { useAddField } from "../utils/useAddField.js";
2
+ import FormDialog_default from "../FormDialog.js";
3
+ import { computed, createElementBlock, createTextVNode, createVNode, defineComponent, inject, normalizeStyle, openBlock, readonly, ref, toDisplayString, unref, withCtx } from "vue";
4
+ import { TMagicButton } from "@tmagic/design";
5
+ //#region packages/form/src/fields/Link.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1 = ["href"];
7
+ var _hoisted_2 = {
8
+ key: 2,
9
+ class: "m-fields-link"
10
+ };
11
+ var Link_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
+ name: "MFormLink",
13
+ __name: "Link",
14
+ props: {
15
+ config: {},
16
+ model: {},
17
+ initValues: {},
18
+ values: {},
19
+ name: {},
20
+ prop: {},
21
+ disabled: { type: Boolean },
22
+ size: {},
23
+ lastValues: {},
24
+ isCompare: { type: Boolean }
25
+ },
26
+ emits: ["change"],
27
+ setup(__props, { emit: __emit }) {
28
+ const props = __props;
29
+ const emit = __emit;
30
+ useAddField(props.prop);
31
+ const formValue = ref({});
32
+ const editor = ref();
33
+ const mForm = inject("mForm");
34
+ const href = computed(() => {
35
+ if (typeof props.config.href === "function" && props.model) return props.config.href(props.model);
36
+ return props.config.href || props.model?.[props.name];
37
+ });
38
+ const init = () => {
39
+ formValue.value = props.model?.[props.name] || {};
40
+ };
41
+ const formConfig = computed(() => {
42
+ if (typeof props.config.form === "function") return props.config.form(mForm, {
43
+ model: props.model || {},
44
+ values: mForm ? readonly(mForm.initValues) : null,
45
+ formValue: props.values || {}
46
+ });
47
+ return props.config.form;
48
+ });
49
+ const displayText = computed(() => {
50
+ if (typeof props.config.displayText === "function") return props.config.displayText(mForm, { model: props.model || {} });
51
+ if (props.config.displayText) return props.config.displayText;
52
+ return "跳转";
53
+ });
54
+ const editHandler = () => {
55
+ init();
56
+ editor.value && (editor.value.dialogVisible = true);
57
+ };
58
+ const action = (data) => {
59
+ if (props.model) {
60
+ props.model[props.name] = data;
61
+ formValue.value = data;
62
+ emit("change", props.model[props.name]);
63
+ }
64
+ editor.value && (editor.value.dialogVisible = false);
65
+ };
66
+ return (_ctx, _cache) => {
67
+ return __props.config.href && !__props.disabled ? (openBlock(), createElementBlock("a", {
68
+ key: 0,
69
+ target: "_blank",
70
+ href: href.value,
71
+ style: normalizeStyle(__props.config.css || {})
72
+ }, toDisplayString(displayText.value), 13, _hoisted_1)) : __props.config.href && __props.disabled ? (openBlock(), createElementBlock("span", {
73
+ key: 1,
74
+ style: normalizeStyle(__props.config.disabledCss || {})
75
+ }, toDisplayString(displayText.value), 5)) : (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(TMagicButton), {
76
+ link: "",
77
+ type: "primary",
78
+ onClick: editHandler
79
+ }, {
80
+ default: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode("点击编辑", -1)])]),
81
+ _: 1
82
+ }), createVNode(FormDialog_default, {
83
+ ref_key: "editor",
84
+ ref: editor,
85
+ title: __props.config.formTitle || "编辑扩展配置",
86
+ width: __props.config.formWidth,
87
+ values: formValue.value,
88
+ config: formConfig.value,
89
+ parentValues: __props.values,
90
+ fullscreen: __props.config.fullscreen,
91
+ onSubmit: action
92
+ }, null, 8, [
93
+ "title",
94
+ "width",
95
+ "values",
96
+ "config",
97
+ "parentValues",
98
+ "fullscreen"
99
+ ])]));
100
+ };
101
+ }
102
+ });
103
+ //#endregion
104
+ export { Link_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Number_vue_vue_type_script_setup_true_lang_default from "./Number.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/Number.vue
3
+ var Number_default = Number_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Number_default as default };
@@ -0,0 +1,65 @@
1
+ import { useAddField } from "../utils/useAddField.js";
2
+ import { createBlock, createCommentVNode, defineComponent, inject, openBlock, ref, unref, watch } from "vue";
3
+ import { TMagicInputNumber } from "@tmagic/design";
4
+ //#region packages/form/src/fields/Number.vue?vue&type=script&setup=true&lang.ts
5
+ var Number_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
+ name: "MFormNumber",
7
+ __name: "Number",
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", "input"],
21
+ setup(__props, { emit: __emit }) {
22
+ const props = __props;
23
+ const emit = __emit;
24
+ const value = ref();
25
+ watch(() => props.model[props.name], (v) => {
26
+ value.value = v;
27
+ }, { immediate: true });
28
+ useAddField(props.prop);
29
+ const mForm = inject("mForm");
30
+ const changeHandler = (value) => {
31
+ emit("change", value);
32
+ };
33
+ const inputHandler = (v) => {
34
+ emit("input", v);
35
+ mForm?.$emit("field-input", props.prop, v);
36
+ };
37
+ return (_ctx, _cache) => {
38
+ return __props.model ? (openBlock(), createBlock(unref(TMagicInputNumber), {
39
+ key: 0,
40
+ modelValue: value.value,
41
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
42
+ clearable: "",
43
+ "controls-position": "right",
44
+ size: __props.size,
45
+ max: __props.config.max,
46
+ min: __props.config.min,
47
+ step: __props.config.step,
48
+ placeholder: __props.config.placeholder,
49
+ disabled: __props.disabled,
50
+ onChange: changeHandler,
51
+ onInput: inputHandler
52
+ }, null, 8, [
53
+ "modelValue",
54
+ "size",
55
+ "max",
56
+ "min",
57
+ "step",
58
+ "placeholder",
59
+ "disabled"
60
+ ])) : createCommentVNode("v-if", true);
61
+ };
62
+ }
63
+ });
64
+ //#endregion
65
+ export { Number_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import NumberRange_vue_vue_type_script_setup_true_lang_default from "./NumberRange.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/NumberRange.vue
3
+ var NumberRange_default = NumberRange_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { NumberRange_default as default };
@@ -0,0 +1,76 @@
1
+ import { useAddField } from "../utils/useAddField.js";
2
+ import { createElementBlock, createElementVNode, createVNode, defineComponent, openBlock, ref, unref, watch } from "vue";
3
+ import { TMagicInput } from "@tmagic/design";
4
+ //#region packages/form/src/fields/NumberRange.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = { class: "m-fields-number-range" };
6
+ var NumberRange_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ name: "MFormNumberRange",
8
+ __name: "NumberRange",
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
+ const firstValue = ref();
26
+ const secondValue = ref();
27
+ watch(() => props.model[props.name], ([first, second]) => {
28
+ firstValue.value = first;
29
+ secondValue.value = second;
30
+ }, {
31
+ immediate: true,
32
+ deep: true
33
+ });
34
+ useAddField(props.prop);
35
+ if (!Array.isArray(props.model[props.name])) props.model[props.name] = [];
36
+ const minChangeHandler = (v) => {
37
+ emit("change", [Number(v), props.model[props.name][1]]);
38
+ };
39
+ const maxChangeHandler = (v) => {
40
+ emit("change", [props.model[props.name][0], Number(v)]);
41
+ };
42
+ return (_ctx, _cache) => {
43
+ return openBlock(), createElementBlock("div", _hoisted_1, [
44
+ createVNode(unref(TMagicInput), {
45
+ modelValue: firstValue.value,
46
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => firstValue.value = $event),
47
+ clearable: __props.config.clearable ?? true,
48
+ size: __props.size,
49
+ disabled: __props.disabled,
50
+ onChange: minChangeHandler
51
+ }, null, 8, [
52
+ "modelValue",
53
+ "clearable",
54
+ "size",
55
+ "disabled"
56
+ ]),
57
+ _cache[2] || (_cache[2] = createElementVNode("span", { class: "split-tag" }, "-", -1)),
58
+ createVNode(unref(TMagicInput), {
59
+ modelValue: secondValue.value,
60
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => secondValue.value = $event),
61
+ clearable: __props.config.clearable ?? true,
62
+ size: __props.size,
63
+ disabled: __props.disabled,
64
+ onChange: maxChangeHandler
65
+ }, null, 8, [
66
+ "modelValue",
67
+ "clearable",
68
+ "size",
69
+ "disabled"
70
+ ])
71
+ ]);
72
+ };
73
+ }
74
+ });
75
+ //#endregion
76
+ export { NumberRange_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import RadioGroup_vue_vue_type_script_setup_true_lang_default from "./RadioGroup.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/fields/RadioGroup.vue
3
+ var RadioGroup_default = RadioGroup_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { RadioGroup_default as default };