@tmagic/form 1.3.0-alpha.2 → 1.3.0-alpha.20

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 (85) hide show
  1. package/dist/style.css +21 -0
  2. package/dist/tmagic-form.js +1400 -1187
  3. package/dist/tmagic-form.js.map +1 -1
  4. package/dist/tmagic-form.umd.cjs +1425 -1210
  5. package/dist/tmagic-form.umd.cjs.map +1 -1
  6. package/package.json +10 -11
  7. package/src/Form.vue +14 -2
  8. package/src/FormDialog.vue +20 -6
  9. package/src/FormDrawer.vue +134 -0
  10. package/src/containers/Col.vue +5 -1
  11. package/src/containers/Container.vue +16 -11
  12. package/src/containers/Fieldset.vue +5 -1
  13. package/src/containers/GroupList.vue +7 -2
  14. package/src/containers/GroupListItem.vue +15 -9
  15. package/src/containers/Panel.vue +5 -1
  16. package/src/containers/Row.vue +5 -1
  17. package/src/containers/Step.vue +5 -1
  18. package/src/containers/Table.vue +153 -151
  19. package/src/containers/Tabs.vue +14 -8
  20. package/src/fields/Cascader.vue +7 -13
  21. package/src/fields/Checkbox.vue +7 -13
  22. package/src/fields/CheckboxGroup.vue +9 -15
  23. package/src/fields/ColorPicker.vue +10 -14
  24. package/src/fields/Date.vue +11 -15
  25. package/src/fields/DateTime.vue +12 -16
  26. package/src/fields/Daterange.vue +7 -13
  27. package/src/fields/Display.vue +7 -11
  28. package/src/fields/DynamicField.vue +8 -14
  29. package/src/fields/Hidden.vue +7 -11
  30. package/src/fields/Link.vue +7 -13
  31. package/src/fields/Number.vue +12 -15
  32. package/src/fields/NumberRange.vue +50 -0
  33. package/src/fields/RadioGroup.vue +7 -13
  34. package/src/fields/Select.vue +28 -30
  35. package/src/fields/SelectOptionGroups.vue +7 -3
  36. package/src/fields/SelectOptions.vue +5 -1
  37. package/src/fields/Switch.vue +11 -15
  38. package/src/fields/Text.vue +12 -15
  39. package/src/fields/Textarea.vue +12 -15
  40. package/src/fields/Time.vue +10 -14
  41. package/src/index.ts +43 -37
  42. package/src/schema.ts +27 -5
  43. package/src/theme/form-drawer.scss +11 -0
  44. package/src/theme/index.scss +2 -0
  45. package/src/theme/number-range.scss +8 -0
  46. package/src/theme/panel.scss +6 -0
  47. package/src/utils/config.ts +1 -1
  48. package/src/utils/form.ts +2 -1
  49. package/types/Form.vue.d.ts +11 -6
  50. package/types/FormDialog.vue.d.ts +89 -125
  51. package/types/FormDrawer.vue.d.ts +338 -0
  52. package/types/containers/Col.vue.d.ts +1 -1
  53. package/types/containers/Container.vue.d.ts +6 -3
  54. package/types/containers/Fieldset.vue.d.ts +6 -3
  55. package/types/containers/GroupList.vue.d.ts +1 -1
  56. package/types/containers/GroupListItem.vue.d.ts +1 -1
  57. package/types/containers/Panel.vue.d.ts +3 -3
  58. package/types/containers/Row.vue.d.ts +1 -1
  59. package/types/containers/Step.vue.d.ts +6 -3
  60. package/types/containers/Table.vue.d.ts +9 -6
  61. package/types/containers/Tabs.vue.d.ts +6 -3
  62. package/types/fields/Cascader.vue.d.ts +3 -23
  63. package/types/fields/Checkbox.vue.d.ts +3 -23
  64. package/types/fields/CheckboxGroup.vue.d.ts +3 -23
  65. package/types/fields/ColorPicker.vue.d.ts +2 -24
  66. package/types/fields/Date.vue.d.ts +2 -24
  67. package/types/fields/DateTime.vue.d.ts +2 -24
  68. package/types/fields/Daterange.vue.d.ts +3 -23
  69. package/types/fields/Display.vue.d.ts +2 -18
  70. package/types/fields/DynamicField.vue.d.ts +3 -32
  71. package/types/fields/Hidden.vue.d.ts +2 -18
  72. package/types/fields/Link.vue.d.ts +3 -23
  73. package/types/fields/Number.vue.d.ts +2 -25
  74. package/types/fields/NumberRange.vue.d.ts +12 -0
  75. package/types/fields/RadioGroup.vue.d.ts +3 -23
  76. package/types/fields/Select.vue.d.ts +3 -23
  77. package/types/fields/SelectOptionGroups.vue.d.ts +2 -2
  78. package/types/fields/SelectOptions.vue.d.ts +2 -2
  79. package/types/fields/Switch.vue.d.ts +2 -24
  80. package/types/fields/Text.vue.d.ts +2 -25
  81. package/types/fields/Textarea.vue.d.ts +2 -25
  82. package/types/fields/Time.vue.d.ts +2 -24
  83. package/types/index.d.ts +6 -1
  84. package/types/schema.d.ts +25 -5
  85. package/types/utils/config.d.ts +1 -1
@@ -1,162 +1,160 @@
1
1
  <template>
2
2
  <div ref="mTable" class="m-fields-table" :class="{ 'm-fields-table-item-extra': config.itemExtra }">
3
3
  <span v-if="config.extra" style="color: rgba(0, 0, 0, 0.45)" v-html="config.extra"></span>
4
- <div class="el-form-item__content">
5
- <TMagicTooltip content="拖拽可排序" placement="left-start" :disabled="config.dropSort !== true">
6
- <TMagicTable
7
- v-if="model[modelName]"
8
- ref="tMagicTable"
9
- style="width: 100%"
10
- :row-key="config.rowKey || 'id'"
11
- :data="data"
12
- :lastData="lastData"
13
- :border="config.border"
14
- :max-height="config.maxHeight"
15
- :default-expand-all="true"
16
- :key="updateKey"
17
- @select="selectHandle"
18
- @sort-change="sortChange"
4
+ <TMagicTooltip content="拖拽可排序" placement="left-start" :disabled="config.dropSort !== true">
5
+ <TMagicTable
6
+ v-if="model[modelName]"
7
+ ref="tMagicTable"
8
+ style="width: 100%"
9
+ :row-key="config.rowKey || 'id'"
10
+ :data="data"
11
+ :lastData="lastData"
12
+ :border="config.border"
13
+ :max-height="config.maxHeight"
14
+ :default-expand-all="true"
15
+ :key="updateKey"
16
+ @select="selectHandle"
17
+ @sort-change="sortChange"
18
+ >
19
+ <TMagicTableColumn v-if="config.itemExtra" :fixed="'left'" width="30" type="expand">
20
+ <template v-slot="scope">
21
+ <span v-html="itemExtra(config.itemExtra, scope.$index)" class="m-form-tip"></span>
22
+ </template>
23
+ </TMagicTableColumn>
24
+
25
+ <TMagicTableColumn
26
+ label="操作"
27
+ :width="config.operateColWidth || 55"
28
+ align="center"
29
+ :fixed="config.fixed === false ? undefined : 'left'"
19
30
  >
20
- <TMagicTableColumn v-if="config.itemExtra" :fixed="'left'" width="30" type="expand">
21
- <template v-slot="scope">
22
- <span v-html="itemExtra(config.itemExtra, scope.$index)" class="m-form-tip"></span>
23
- </template>
24
- </TMagicTableColumn>
31
+ <template v-slot="scope">
32
+ <slot name="operateCol" :scope="scope"></slot>
33
+ <TMagicIcon
34
+ v-show="showDelete(scope.$index + 1 + pagecontext * pagesize - 1)"
35
+ class="m-table-delete-icon"
36
+ @click="removeHandler(scope.$index + 1 + pagecontext * pagesize - 1)"
37
+ ><Delete
38
+ /></TMagicIcon>
39
+ </template>
40
+ </TMagicTableColumn>
41
+
42
+ <TMagicTableColumn v-if="sort && model[modelName] && model[modelName].length > 1" label="排序" width="60">
43
+ <template v-slot="scope">
44
+ <TMagicTooltip
45
+ v-if="scope.$index + 1 + pagecontext * pagesize - 1 !== 0"
46
+ content="点击上移,双击置顶"
47
+ placement="top"
48
+ >
49
+ <TMagicButton
50
+ plain
51
+ size="small"
52
+ type="primary"
53
+ :icon="ArrowUp"
54
+ :disabled="disabled"
55
+ text
56
+ @click="upHandler(scope.$index + 1 + pagecontext * pagesize - 1)"
57
+ @dblclick="topHandler(scope.$index + 1 + pagecontext * pagesize - 1)"
58
+ ></TMagicButton>
59
+ </TMagicTooltip>
60
+ <TMagicTooltip
61
+ v-if="scope.$index + 1 + pagecontext * pagesize - 1 !== model[modelName].length - 1"
62
+ content="点击下移,双击置底"
63
+ placement="top"
64
+ >
65
+ <TMagicButton
66
+ plain
67
+ size="small"
68
+ type="primary"
69
+ :icon="ArrowDown"
70
+ :disabled="disabled"
71
+ text
72
+ @click="downHandler(scope.$index + 1 + pagecontext * pagesize - 1)"
73
+ @dblclick="bottomHandler(scope.$index + 1 + pagecontext * pagesize - 1)"
74
+ ></TMagicButton>
75
+ </TMagicTooltip>
76
+ </template>
77
+ </TMagicTableColumn>
25
78
 
26
- <TMagicTableColumn
27
- label="操作"
28
- :width="config.operateColWidth || 55"
29
- align="center"
30
- :fixed="config.fixed === false ? undefined : 'left'"
31
- >
32
- <template v-slot="scope">
33
- <slot name="operateCol" :scope="scope"></slot>
34
- <TMagicIcon
35
- v-show="showDelete(scope.$index + 1 + pagecontext * pagesize - 1)"
36
- class="m-table-delete-icon"
37
- @click="removeHandler(scope.$index + 1 + pagecontext * pagesize - 1)"
38
- ><Delete
39
- /></TMagicIcon>
40
- </template>
41
- </TMagicTableColumn>
79
+ <TMagicTableColumn
80
+ v-if="selection"
81
+ align="center"
82
+ header-align="center"
83
+ type="selection"
84
+ width="45"
85
+ ></TMagicTableColumn>
42
86
 
43
- <TMagicTableColumn v-if="sort && model[modelName] && model[modelName].length > 1" label="排序" width="60">
44
- <template v-slot="scope">
45
- <TMagicTooltip
46
- v-if="scope.$index + 1 + pagecontext * pagesize - 1 !== 0"
47
- content="点击上移,双击置顶"
48
- placement="top"
49
- >
50
- <TMagicButton
51
- plain
52
- size="small"
53
- type="primary"
54
- :icon="ArrowUp"
55
- :disabled="disabled"
56
- text
57
- @click="upHandler(scope.$index + 1 + pagecontext * pagesize - 1)"
58
- @dblclick="topHandler(scope.$index + 1 + pagecontext * pagesize - 1)"
59
- ></TMagicButton>
60
- </TMagicTooltip>
61
- <TMagicTooltip
62
- v-if="scope.$index + 1 + pagecontext * pagesize - 1 !== model[modelName].length - 1"
63
- content="点击下移,双击置底"
64
- placement="top"
65
- >
66
- <TMagicButton
67
- plain
68
- size="small"
69
- type="primary"
70
- :icon="ArrowDown"
71
- :disabled="disabled"
72
- text
73
- @click="downHandler(scope.$index + 1 + pagecontext * pagesize - 1)"
74
- @dblclick="bottomHandler(scope.$index + 1 + pagecontext * pagesize - 1)"
75
- ></TMagicButton>
76
- </TMagicTooltip>
77
- </template>
78
- </TMagicTableColumn>
87
+ <TMagicTableColumn width="60" label="序号" v-if="showIndex && config.showIndex">
88
+ <template v-slot="scope">{{ scope.$index + 1 + pagecontext * pagesize }}</template>
89
+ </TMagicTableColumn>
79
90
 
91
+ <template v-for="(column, index) in config.items">
80
92
  <TMagicTableColumn
81
- v-if="selection"
82
- align="center"
83
- header-align="center"
84
- type="selection"
85
- width="45"
86
- ></TMagicTableColumn>
87
-
88
- <TMagicTableColumn width="60" label="序号" v-if="showIndex && config.showIndex">
89
- <template v-slot="scope">{{ scope.$index + 1 + pagecontext * pagesize }}</template>
93
+ v-if="column.type !== 'hidden' && display(column.display)"
94
+ :prop="column.name"
95
+ :width="column.width"
96
+ :label="column.label"
97
+ :sortable="column.sortable"
98
+ :sort-orders="['ascending', 'descending']"
99
+ :key="column[mForm?.keyProp || '__key'] ?? index"
100
+ :class-name="config.dropSort === true ? 'el-table__column--dropable' : ''"
101
+ >
102
+ <template #default="scope">
103
+ <Container
104
+ v-if="scope.$index > -1"
105
+ labelWidth="0"
106
+ :disabled="disabled"
107
+ :prop="getProp(scope.$index)"
108
+ :rules="column.rules"
109
+ :config="makeConfig(column, scope.row)"
110
+ :model="scope.row"
111
+ :lastValues="lastData[scope.$index]"
112
+ :is-compare="isCompare"
113
+ :size="size"
114
+ @change="$emit('change', model[modelName])"
115
+ @addDiffCount="onAddDiffCount()"
116
+ ></Container>
117
+ </template>
90
118
  </TMagicTableColumn>
91
-
92
- <template v-for="(column, index) in config.items">
93
- <TMagicTableColumn
94
- v-if="column.type !== 'hidden' && display(column.display)"
95
- :prop="column.name"
96
- :width="column.width"
97
- :label="column.label"
98
- :sortable="column.sortable"
99
- :sort-orders="['ascending', 'descending']"
100
- :key="column[mForm?.keyProp || '__key'] ?? index"
101
- :class-name="config.dropSort === true ? 'el-table__column--dropable' : ''"
102
- >
103
- <template #default="scope">
104
- <Container
105
- v-if="scope.$index > -1"
106
- labelWidth="0"
107
- :disabled="disabled"
108
- :prop="getProp(scope.$index)"
109
- :rules="column.rules"
110
- :config="makeConfig(column, scope.row)"
111
- :model="scope.row"
112
- :lastValues="lastData[scope.$index]"
113
- :is-compare="isCompare"
114
- :size="size"
115
- @change="$emit('change', model[modelName])"
116
- @addDiffCount="onAddDiffCount()"
117
- ></Container>
118
- </template>
119
- </TMagicTableColumn>
120
- </template>
121
- </TMagicTable>
122
- </TMagicTooltip>
123
- <slot></slot>
124
- <TMagicButton v-if="addable" size="small" type="primary" :disabled="disabled" plain @click="newHandler()"
125
- >添加</TMagicButton
126
- >
127
- &nbsp;
128
- <TMagicButton
129
- :icon="Grid"
130
- size="small"
131
- type="primary"
132
- @click="toggleMode"
133
- v-if="enableToggleMode && !isFullscreen"
134
- >展开配置</TMagicButton
135
- >
136
- <TMagicButton
137
- :icon="FullScreen"
138
- size="small"
139
- type="primary"
140
- @click="toggleFullscreen"
141
- v-if="config.enableFullscreen !== false"
142
- >
143
- {{ isFullscreen ? '退出全屏' : '全屏编辑' }}
144
- </TMagicButton>
145
- <TMagicUpload
146
- v-if="importable"
147
- style="display: inline-block"
148
- ref="excelBtn"
149
- action="/noop"
150
- :disabled="disabled"
151
- :on-change="excelHandler"
152
- :auto-upload="false"
153
- >
154
- <TMagicButton size="small" type="success" :disabled="disabled" plain>导入EXCEL</TMagicButton> </TMagicUpload
155
- >&nbsp;
156
- <TMagicButton v-if="importable" size="small" type="warning" :disabled="disabled" plain @click="clearHandler()"
157
- >清空</TMagicButton
158
- >
159
- </div>
119
+ </template>
120
+ </TMagicTable>
121
+ </TMagicTooltip>
122
+ <slot></slot>
123
+ <TMagicButton v-if="addable" size="small" type="primary" :disabled="disabled" plain @click="newHandler()"
124
+ >新增一行</TMagicButton
125
+ >
126
+ &nbsp;
127
+ <TMagicButton
128
+ :icon="Grid"
129
+ size="small"
130
+ type="primary"
131
+ @click="toggleMode"
132
+ v-if="enableToggleMode && config.enableToggleMode !== false && !isFullscreen"
133
+ >展开配置</TMagicButton
134
+ >
135
+ <TMagicButton
136
+ :icon="FullScreen"
137
+ size="small"
138
+ type="primary"
139
+ @click="toggleFullscreen"
140
+ v-if="config.enableFullscreen !== false"
141
+ >
142
+ {{ isFullscreen ? '退出全屏' : '全屏编辑' }}
143
+ </TMagicButton>
144
+ <TMagicUpload
145
+ v-if="importable"
146
+ style="display: inline-block"
147
+ ref="excelBtn"
148
+ action="/noop"
149
+ :disabled="disabled"
150
+ :on-change="excelHandler"
151
+ :auto-upload="false"
152
+ >
153
+ <TMagicButton size="small" type="success" :disabled="disabled" plain>导入EXCEL</TMagicButton> </TMagicUpload
154
+ >&nbsp;
155
+ <TMagicButton v-if="importable" size="small" type="warning" :disabled="disabled" plain @click="clearHandler()"
156
+ >清空</TMagicButton
157
+ >
160
158
 
161
159
  <div class="bottom" style="text-align: right" v-if="config.pagination">
162
160
  <TMagicPagination
@@ -174,7 +172,7 @@
174
172
  </div>
175
173
  </template>
176
174
 
177
- <script setup lang="ts" name="MFormTable">
175
+ <script setup lang="ts">
178
176
  import { computed, inject, onMounted, ref, toRefs, watchEffect } from 'vue';
179
177
  import { ArrowDown, ArrowUp, Delete, FullScreen, Grid } from '@element-plus/icons-vue';
180
178
  import { cloneDeep } from 'lodash-es';
@@ -197,6 +195,10 @@ import { display as displayFunc, initValue } from '../utils/form';
197
195
 
198
196
  import Container from './Container.vue';
199
197
 
198
+ defineOptions({
199
+ name: 'MFormTable',
200
+ });
201
+
200
202
  const props = withDefaults(
201
203
  defineProps<{
202
204
  model: any;
@@ -2,13 +2,13 @@
2
2
  <component
3
3
  v-model="activeTabName"
4
4
  v-bind="
5
- tabsComponent.props({
5
+ tabsComponent?.props({
6
6
  type: config.tabType,
7
7
  editable: config.editable || false,
8
8
  tabPosition: config.tabPosition || 'top',
9
- })
9
+ }) || {}
10
10
  "
11
- :is="tabsComponent.component"
11
+ :is="tabsComponent?.component || 'el-tabs'"
12
12
  :class="`tmagic-design-tabs ${config.dynamic ? 'magic-form-dynamic-tab' : 'magic-form-tab'}`"
13
13
  @tab-click="tabClickHandler"
14
14
  @tab-add="onTabAdd"
@@ -16,9 +16,11 @@
16
16
  >
17
17
  <component
18
18
  v-for="(tab, tabIndex) in tabs"
19
- :is="tabPaneComponent.component"
19
+ :is="tabPaneComponent?.component || 'el-tab-pane'"
20
20
  :key="tab[mForm?.keyProp || '__key'] ?? tabIndex"
21
- v-bind="tabPaneComponent.props({ name: filter(tab.status) || tabIndex.toString(), lazy: tab.lazy || false })"
21
+ v-bind="
22
+ tabPaneComponent?.props({ name: filter(tab.status) || tabIndex.toString(), lazy: tab.lazy || false }) || {}
23
+ "
22
24
  >
23
25
  <template #label>
24
26
  <span>
@@ -67,7 +69,7 @@
67
69
  </component>
68
70
  </template>
69
71
 
70
- <script setup lang="ts" name="MFormTabs">
72
+ <script setup lang="ts">
71
73
  import { computed, inject, ref, watchEffect } from 'vue';
72
74
  import { cloneDeep, isEmpty } from 'lodash-es';
73
75
 
@@ -78,12 +80,16 @@ import { display as displayFunc, filterFunction } from '../utils/form';
78
80
 
79
81
  import Container from './Container.vue';
80
82
 
83
+ defineOptions({
84
+ name: 'MFormTabs',
85
+ });
86
+
81
87
  type DiffCount = {
82
88
  [tabIndex: number]: number;
83
89
  };
84
90
 
85
- const tabPaneComponent = getConfig('components').tabPane;
86
- const tabsComponent = getConfig('components').tabs;
91
+ const tabPaneComponent = getConfig('components')?.tabPane;
92
+ const tabsComponent = getConfig('components')?.tabs;
87
93
 
88
94
  const getActive = (mForm: FormState | undefined, props: any, activeTabName: string) => {
89
95
  const { config, model, prop } = props;
@@ -14,26 +14,20 @@
14
14
  ></TMagicCascader>
15
15
  </template>
16
16
 
17
- <script setup lang="ts" name="MFormCascader">
17
+ <script setup lang="ts">
18
18
  import { inject, ref, watchEffect } from 'vue';
19
19
 
20
20
  import { TMagicCascader } from '@tmagic/design';
21
21
 
22
- import { CascaderConfig, FormState } from '../schema';
22
+ import type { CascaderConfig, FieldProps, FormState } from '../schema';
23
23
  import { getConfig } from '../utils/config';
24
24
  import { useAddField } from '../utils/useAddField';
25
25
 
26
- const props = defineProps<{
27
- config: CascaderConfig;
28
- model: any;
29
- initValues?: any;
30
- values?: any;
31
- name: string;
32
- prop: string;
33
- disabled?: boolean;
34
- size?: 'large' | 'default' | 'small';
35
- lastValues?: Record<string, any>;
36
- }>();
26
+ defineOptions({
27
+ name: 'MFormCascader',
28
+ });
29
+
30
+ const props = defineProps<FieldProps<CascaderConfig>>();
37
31
 
38
32
  const emit = defineEmits(['change']);
39
33
 
@@ -10,25 +10,19 @@
10
10
  >
11
11
  </template>
12
12
 
13
- <script setup lang="ts" name="MFormCheckbox">
13
+ <script setup lang="ts">
14
14
  import { computed } from 'vue';
15
15
 
16
16
  import { TMagicCheckbox } from '@tmagic/design';
17
17
 
18
- import { CheckboxConfig } from '../schema';
18
+ import type { CheckboxConfig, FieldProps } from '../schema';
19
19
  import { useAddField } from '../utils/useAddField';
20
20
 
21
- const props = defineProps<{
22
- config: CheckboxConfig;
23
- model: any;
24
- initValues?: any;
25
- values?: any;
26
- name: string;
27
- prop: string;
28
- disabled?: boolean;
29
- size?: 'large' | 'default' | 'small';
30
- lastValues?: Record<string, any>;
31
- }>();
21
+ defineOptions({
22
+ name: 'MFormCheckbox',
23
+ });
24
+
25
+ const props = defineProps<FieldProps<CheckboxConfig>>();
32
26
 
33
27
  const emit = defineEmits(['change']);
34
28
 
@@ -11,26 +11,20 @@
11
11
  </TMagicCheckboxGroup>
12
12
  </template>
13
13
 
14
- <script lang="ts" setup name="MFormCheckGroup">
14
+ <script lang="ts" setup>
15
15
  import { computed, inject } from 'vue';
16
16
 
17
17
  import { TMagicCheckbox, TMagicCheckboxGroup } from '@tmagic/design';
18
18
 
19
- import { CheckboxGroupConfig, FormState } from '../schema';
19
+ import type { CheckboxGroupConfig, FieldProps, FormState } from '../schema';
20
+ import { filterFunction } from '../utils/form';
20
21
  import { useAddField } from '../utils/useAddField';
21
- import { filterFunction } from '..';
22
-
23
- const props = defineProps<{
24
- config: CheckboxGroupConfig;
25
- model: any;
26
- initValues?: any;
27
- values?: any;
28
- name: string;
29
- prop: string;
30
- disabled?: boolean;
31
- size?: 'large' | 'default' | 'small';
32
- lastValues?: Record<string, any>;
33
- }>();
22
+
23
+ defineOptions({
24
+ name: 'MFormCheckGroup',
25
+ });
26
+
27
+ const props = defineProps<FieldProps<CheckboxGroupConfig>>();
34
28
 
35
29
  const emit = defineEmits(['change']);
36
30
 
@@ -8,25 +8,21 @@
8
8
  ></TMagicColorPicker>
9
9
  </template>
10
10
 
11
- <script lang="ts" setup name="MFormColorPicker">
11
+ <script lang="ts" setup>
12
12
  import { TMagicColorPicker } from '@tmagic/design';
13
13
 
14
- import { ColorPickConfig } from '../schema';
14
+ import type { ColorPickConfig, FieldProps } from '../schema';
15
15
  import { useAddField } from '../utils/useAddField';
16
16
 
17
- const props = defineProps<{
18
- config: ColorPickConfig;
19
- model: any;
20
- initValues?: any;
21
- values?: any;
22
- name: string;
23
- prop: string;
24
- disabled?: boolean;
25
- size?: 'large' | 'default' | 'small';
26
- lastValues?: Record<string, any>;
27
- }>();
17
+ defineOptions({
18
+ name: 'MFormColorPicker',
19
+ });
20
+
21
+ const props = defineProps<FieldProps<ColorPickConfig>>();
28
22
 
29
- const emit = defineEmits(['change']);
23
+ const emit = defineEmits<{
24
+ change: [value: string];
25
+ }>();
30
26
 
31
27
  useAddField(props.prop);
32
28
 
@@ -6,31 +6,27 @@
6
6
  :placeholder="config.placeholder"
7
7
  :disabled="disabled"
8
8
  :format="config.format"
9
- :value-format="config.valueFormat || 'YYYY-MM-DD HH:mm:ss'"
9
+ :value-format="config.valueFormat || 'YYYY/MM/DD HH:mm:ss'"
10
10
  @change="changeHandler"
11
11
  ></TMagicDatePicker>
12
12
  </template>
13
13
 
14
- <script lang="ts" setup name="MFormDate">
14
+ <script lang="ts" setup>
15
15
  import { TMagicDatePicker } from '@tmagic/design';
16
16
  import { datetimeFormatter } from '@tmagic/utils';
17
17
 
18
- import { DateConfig } from '../schema';
18
+ import type { DateConfig, FieldProps } from '../schema';
19
19
  import { useAddField } from '../utils/useAddField';
20
20
 
21
- const props = defineProps<{
22
- config: DateConfig;
23
- model: any;
24
- initValues?: any;
25
- values?: any;
26
- name: string;
27
- prop: string;
28
- disabled?: boolean;
29
- size?: 'large' | 'default' | 'small';
30
- lastValues?: Record<string, any>;
31
- }>();
21
+ defineOptions({
22
+ name: 'MFormDate',
23
+ });
24
+
25
+ const props = defineProps<FieldProps<DateConfig>>();
32
26
 
33
- const emit = defineEmits(['change']);
27
+ const emit = defineEmits<{
28
+ change: [value: string];
29
+ }>();
34
30
 
35
31
  useAddField(props.prop);
36
32
 
@@ -6,33 +6,29 @@
6
6
  :size="size"
7
7
  :placeholder="config.placeholder"
8
8
  :disabled="disabled"
9
- :format="config.format || 'YYYY-MM-DD HH:mm:ss'"
10
- :value-format="config.valueFormat || 'YYYY-MM-DD HH:mm:ss'"
9
+ :format="config.format || 'YYYY/MM/DD HH:mm:ss'"
10
+ :value-format="config.valueFormat || 'YYYY/MM/DD HH:mm:ss'"
11
11
  :default-time="config.defaultTime"
12
12
  @change="changeHandler"
13
13
  ></TMagicDatePicker>
14
14
  </template>
15
15
 
16
- <script lang="ts" setup name="MFormDateTime">
16
+ <script lang="ts" setup>
17
17
  import { TMagicDatePicker } from '@tmagic/design';
18
18
  import { datetimeFormatter } from '@tmagic/utils';
19
19
 
20
- import { DateTimeConfig } from '../schema';
20
+ import type { DateTimeConfig, FieldProps } from '../schema';
21
21
  import { useAddField } from '../utils/useAddField';
22
22
 
23
- const props = defineProps<{
24
- config: DateTimeConfig;
25
- model: any;
26
- initValues?: any;
27
- values?: any;
28
- name: string;
29
- prop: string;
30
- disabled?: boolean;
31
- size?: 'large' | 'default' | 'small';
32
- lastValues?: Record<string, any>;
33
- }>();
23
+ defineOptions({
24
+ name: 'MFormDateTime',
25
+ });
26
+
27
+ const props = defineProps<FieldProps<DateTimeConfig>>();
34
28
 
35
- const emit = defineEmits(['change']);
29
+ const emit = defineEmits<{
30
+ change: [value: string];
31
+ }>();
36
32
 
37
33
  useAddField(props.prop);
38
34
 
@@ -13,26 +13,20 @@
13
13
  ></TMagicDatePicker>
14
14
  </template>
15
15
 
16
- <script lang="ts" setup name="MFormDateRange">
16
+ <script lang="ts" setup>
17
17
  import { ref, watch } from 'vue';
18
18
 
19
19
  import { TMagicDatePicker } from '@tmagic/design';
20
20
  import { datetimeFormatter } from '@tmagic/utils';
21
21
 
22
- import { DaterangeConfig } from '../schema';
22
+ import type { DaterangeConfig, FieldProps } from '../schema';
23
23
  import { useAddField } from '../utils/useAddField';
24
24
 
25
- const props = defineProps<{
26
- config: DaterangeConfig;
27
- model: any;
28
- initValues?: any;
29
- values?: any;
30
- name: string;
31
- prop: string;
32
- disabled?: boolean;
33
- size?: 'large' | 'default' | 'small';
34
- lastValues?: Record<string, any>;
35
- }>();
25
+ defineOptions({
26
+ name: 'MFormDateRange',
27
+ });
28
+
29
+ const props = defineProps<FieldProps<DaterangeConfig>>();
36
30
 
37
31
  const emit = defineEmits(['change']);
38
32