free-fe-core-modules 0.0.2 → 0.0.4

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/components/Basic/EIcon.vue +2 -4
  2. package/components/Basic/LeveledMenus.vue +0 -5
  3. package/components/Basic/SummaryHead.vue +23 -3
  4. package/components/Dialog/BasicDialog.vue +2 -3
  5. package/components/SlidingCarousel/index.vue +13 -3
  6. package/components/SlidingNews/index.vue +13 -3
  7. package/components/ThemeSwitch/index.vue +7 -5
  8. package/composible/useObjectData.js +69 -0
  9. package/free-field/Fields/AgreementCheck.js +170 -0
  10. package/free-field/Fields/ApiCall.js +123 -0
  11. package/{field-components/Fields/Boolean.vue → free-field/Fields/Boolean.js} +40 -46
  12. package/free-field/Fields/Category.js +28 -0
  13. package/free-field/Fields/Check.js +106 -0
  14. package/free-field/Fields/Customize.js +87 -0
  15. package/free-field/Fields/Date.js +133 -0
  16. package/free-field/Fields/DateRange.js +226 -0
  17. package/free-field/Fields/DynamicList.js +565 -0
  18. package/{field-components → free-field}/Fields/FixedList.vue +78 -83
  19. package/free-field/Fields/InputFieldList.vue +324 -0
  20. package/{field-components → free-field}/Fields/Labels.vue +24 -15
  21. package/{field-components → free-field}/Fields/MixedTable.vue +53 -61
  22. package/free-field/Fields/Number.js +167 -0
  23. package/free-field/Fields/Password.js +81 -0
  24. package/{field-components → free-field}/Fields/Permission.vue +17 -13
  25. package/{field-components → free-field}/Fields/PermissionEditor.vue +62 -105
  26. package/{field-components → free-field}/Fields/QueryFilters.vue +65 -48
  27. package/{field-components → free-field}/Fields/RadioList.vue +36 -12
  28. package/{field-components → free-field}/Fields/Rich.vue +104 -114
  29. package/{field-components → free-field}/Fields/Search.vue +35 -26
  30. package/{field-components → free-field}/Fields/Select.vue +116 -87
  31. package/{field-components → free-field}/Fields/SelectionChain.vue +89 -67
  32. package/{field-components/Fields/Separator.vue → free-field/Fields/Separator.js} +11 -16
  33. package/{field-components → free-field}/Fields/SingleList.vue +27 -21
  34. package/free-field/Fields/Static.js +27 -0
  35. package/free-field/Fields/String.js +105 -0
  36. package/free-field/Fields/Text.js +80 -0
  37. package/{field-components → free-field}/Fields/Time.vue +59 -43
  38. package/{field-components → free-field}/Fields/TimeRange.vue +107 -92
  39. package/free-field/Fields/Year.js +137 -0
  40. package/{field-components → free-field}/Fields/YearRange.vue +63 -73
  41. package/{field-components → free-field}/Fields/index.js +28 -30
  42. package/free-field/composible/fieldWrapper.js +221 -0
  43. package/free-field/composible/freeFieldLabel.js +22 -0
  44. package/free-field/composible/readonlyContent.js +36 -0
  45. package/free-field/composible/useFileSizeUtils.js +52 -0
  46. package/free-field/composible/useFreeField.js +143 -0
  47. package/{field-components → free-field}/index.js +3 -3
  48. package/i18n/en-us/index.js +1 -1
  49. package/i18n/zh-cn/index.js +1 -1
  50. package/index.js +1 -4
  51. package/package.json +2 -2
  52. package/router/error/data.js +4 -1
  53. package/view/dict/index.vue +13 -2
  54. package/view/error/list.vue +22 -14
  55. package/view/menu/index.vue +19 -4
  56. package/view/system/index.vue +15 -2
  57. package/field-components/Fields/AgreementCheck.vue +0 -161
  58. package/field-components/Fields/ApiCall.vue +0 -139
  59. package/field-components/Fields/Category.vue +0 -33
  60. package/field-components/Fields/Check.vue +0 -131
  61. package/field-components/Fields/Customize.vue +0 -103
  62. package/field-components/Fields/Date.vue +0 -142
  63. package/field-components/Fields/DateRange.vue +0 -199
  64. package/field-components/Fields/DynamicList.vue +0 -575
  65. package/field-components/Fields/FieldEditor.vue +0 -379
  66. package/field-components/Fields/File.vue +0 -382
  67. package/field-components/Fields/FileList.vue +0 -405
  68. package/field-components/Fields/FileListCombined.vue +0 -142
  69. package/field-components/Fields/Image.vue +0 -328
  70. package/field-components/Fields/ImageList.vue +0 -285
  71. package/field-components/Fields/ImageListCombined.vue +0 -76
  72. package/field-components/Fields/InputFieldList.vue +0 -299
  73. package/field-components/Fields/Number.vue +0 -247
  74. package/field-components/Fields/Password.vue +0 -79
  75. package/field-components/Fields/Static.vue +0 -22
  76. package/field-components/Fields/String.vue +0 -185
  77. package/field-components/Fields/Text.vue +0 -89
  78. package/field-components/Fields/UltimateFile.vue +0 -100
  79. package/field-components/Fields/Year.vue +0 -124
  80. package/field-components/Fields/components/FieldTypeOptions.vue +0 -248
  81. package/field-components/components/FieldComponents.vue +0 -246
  82. package/free-fields/AutoHide.js +0 -66
  83. package/free-fields/CenterContent.js +0 -15
  84. package/free-fields/Draggable.js +0 -30
  85. package/free-fields/Droppable.js +0 -114
  86. package/free-fields/EditableString.js +0 -63
  87. package/free-fields/FieldCategory.js +0 -83
  88. package/free-fields/FieldTypeSelect.js +0 -94
  89. package/free-fields/fieldEditors/arrayEditor.js +0 -3
  90. package/free-fields/fieldEditors/boolEditor.js +0 -22
  91. package/free-fields/fieldEditors/dateEditor.js +0 -23
  92. package/free-fields/fieldEditors/datetimeEditor.js +0 -23
  93. package/free-fields/fieldEditors/index.js +0 -21
  94. package/free-fields/fieldEditors/jsonEditor.js +0 -371
  95. package/free-fields/fieldEditors/labeledField.js +0 -74
  96. package/free-fields/fieldEditors/numberEditor.js +0 -51
  97. package/free-fields/fieldEditors/objectEditor.js +0 -3
  98. package/free-fields/fieldEditors/selectEditor.js +0 -0
  99. package/free-fields/fieldEditors/stringEditor.js +0 -49
  100. package/free-fields/fieldEditors/textEditor.js +0 -50
  101. package/free-fields/fieldEditors/timeEditor.js +0 -23
  102. package/free-fields/index.js +0 -402
  103. /package/{field-components/Display → free-field/Layout}/index.js +0 -0
  104. /package/{field-components → free-field}/style.sass +0 -0
@@ -0,0 +1,106 @@
1
+ import { defineComponent, h, ref } from 'vue';
2
+ import { useFreeField, freeFieldProps, useFreeFieldMethods } from '../composible/useFreeField';
3
+ import { QCheckbox } from 'quasar';
4
+ import freeFieldLabel from '../composible/freeFieldLabel';
5
+
6
+ export default defineComponent({
7
+ name: 'InputFieldCheck',
8
+ fieldInfo: {
9
+ Category: 'Simple',
10
+ Label: '勾选',
11
+ Value: 'Check',
12
+ Extra: [
13
+ {
14
+ Type: 'FixedList',
15
+ Label: '选项',
16
+ Name: 'Options',
17
+ Options: {
18
+ Columns: [
19
+ {
20
+ Label: 'Label',
21
+ Name: 'Label',
22
+ ReadOnly: true,
23
+ },
24
+ {
25
+ Label: 'Value',
26
+ Name: 'Value',
27
+ ReadOnly: true,
28
+ },
29
+ {
30
+ Label: 'Extra',
31
+ Name: 'Extra',
32
+ Type: 'FieldList',
33
+ Options: {
34
+ Columns: [
35
+ {
36
+ Label: '#',
37
+ Name: 'Index',
38
+ },
39
+ {
40
+ Label: '名称',
41
+ Name: 'Name',
42
+ },
43
+ {
44
+ Label: '标题',
45
+ Name: 'Label',
46
+ },
47
+ ],
48
+ },
49
+ },
50
+ ],
51
+ Default: [
52
+ {
53
+ Label: '选中',
54
+ Value: true,
55
+ Extra: [],
56
+ },
57
+ {
58
+ Label: '未选',
59
+ Value: false,
60
+ Extra: [],
61
+ },
62
+ ],
63
+ },
64
+ },
65
+ ],
66
+ Description: '',
67
+ },
68
+ props: {
69
+ ...freeFieldProps,
70
+ },
71
+ emits: ['input'],
72
+ methods: {
73
+ ...useFreeFieldMethods,
74
+ },
75
+ setup(props, { emit, slots }){
76
+ if (!props.Field) return {};
77
+
78
+ const { fieldData, setFieldData } = useFreeField(props);
79
+
80
+ const before = (props.Field.showLabel && !props.Field.dense && props.Field.Label !== void 0) ? () => h(freeFieldLabel, {
81
+ Field: props.Field,
82
+ }) : () => h('div', {
83
+ class: 'field-label-empty'
84
+ });
85
+
86
+ const checkboxNode = () => h(QCheckbox, {
87
+ disable: props.Field?.ReadOnly,
88
+ label: props.Field?.showLabel ? '' : props.Field?.Label,
89
+
90
+ style: props.Field.Info?.Style,
91
+
92
+ modelValue: fieldData.value,
93
+ 'onUpdate:modelValue': (v) => {
94
+ setFieldData(v, emit);
95
+ },
96
+ })
97
+
98
+ return () => h('div', {
99
+ class: 'simple-field input-field-check row items-center no-wrap',
100
+ }, [
101
+ before(),
102
+ checkboxNode(),
103
+ slots.warning && slots.warning(),
104
+ ]);
105
+ },
106
+ });
@@ -0,0 +1,87 @@
1
+ import { defineComponent, h, computed } from 'vue';
2
+ import { useFreeField, freeFieldProps } from '../composible/useFreeField';
3
+ import freeFieldLabel from '../composible/freeFieldLabel';
4
+
5
+ export default defineComponent({
6
+ name: 'InputFieldCustomize',
7
+ fieldInfo: {
8
+ Category: 'Advanced',
9
+ Label: '自定义模板',
10
+ Value: 'Customize',
11
+ Extra: [
12
+ {
13
+ Type: 'Rich',
14
+ Label: '模板',
15
+ enableField: true,
16
+ Name: 'Options.Template',
17
+ },
18
+ ],
19
+ Description: '',
20
+ },
21
+ props: {
22
+ ...freeFieldProps,
23
+ },
24
+ setup(props, { slots }){
25
+ if (!props.Field) return {};
26
+
27
+ const { fieldData } = useFreeField(props);
28
+
29
+ const htmlContent = computed(() => {
30
+ const template = props.Field && props.Field.Options ? props.Field.Options.Template : '';
31
+ if (!template) return '';
32
+
33
+ if (!fieldData.value) return template;
34
+
35
+ const replaced = template.replace(
36
+ /<efield>{([^<]*)}<\/efield>/g,
37
+ (match, name) => {
38
+ if (fieldData.value[name]) {
39
+ // could be options
40
+ if (fieldData.value.StepsDefinition) {
41
+ const cStep = fieldData.value.StepsDefinition.find(
42
+ (s) => s.Index === fieldData.value.CurrentStep,
43
+ );
44
+ if (cStep && cStep.Fields) {
45
+ const fld = cStep.Fields.find((f) => f.Name === name);
46
+
47
+ if (fld && fld.Options && Array.isArray(fld.Options)) {
48
+ const fVal = fld.Options.find(
49
+ (o) => o.Value === fieldData.value[name],
50
+ );
51
+
52
+ if (fVal && fVal.Label) {
53
+ return fVal.Label;
54
+ }
55
+ }
56
+ }
57
+ }
58
+
59
+ // otherwise.
60
+ return fieldData.value[name];
61
+ }
62
+ return '';
63
+ },
64
+ );
65
+
66
+ return replaced;
67
+ });
68
+
69
+ const before = (props.Field.Label !== void 0) ? () => h(freeFieldLabel, {
70
+ Field: props.Field,
71
+ }) : () => h('div', {
72
+ class: 'field-label-empty'
73
+ });
74
+
75
+ const contentNode = () => h('span', {
76
+ innerHTML: htmlContent.value,
77
+ }, );
78
+
79
+ return () => h('div', {
80
+ class: 'input-field-customize',
81
+ }, [
82
+ before(),
83
+ contentNode(),
84
+ slots.warning && slots.warning(),
85
+ ]);
86
+ },
87
+ });
@@ -0,0 +1,133 @@
1
+ import { ref, defineComponent, getCurrentInstance, h, computed } from 'vue';
2
+ import { useFreeField, freeFieldProps, useFreeFieldMethods } from '../composible/useFreeField';
3
+ import { QInput, QIcon, QPopupProxy, QDate } from 'quasar';
4
+ import freeFieldLabel from '../composible/freeFieldLabel';
5
+
6
+ export default defineComponent({
7
+ name: 'InputFieldDate',
8
+ fieldInfo: {
9
+ Category: 'DateTime',
10
+ Label: '日期',
11
+ Value: 'Date',
12
+ Extra: [
13
+ {
14
+ Type: 'String',
15
+ Label: '最小值',
16
+ Name: 'MinValue',
17
+ },
18
+ {
19
+ Type: 'String',
20
+ Label: '最大值',
21
+ Name: 'MaxValue',
22
+ },
23
+ {
24
+ Type: 'Boolean',
25
+ Label: '最大至“现在”',
26
+ Name: 'Info.TillNow',
27
+ },
28
+ {
29
+ Type: 'Boolean',
30
+ Label: '最小从“现在”',
31
+ Name: 'Info.FromNow',
32
+ },
33
+ ],
34
+ Description: '',
35
+ },
36
+ props: {
37
+ ...freeFieldProps,
38
+ },
39
+ emits: ['input'],
40
+ methods: {
41
+ ...useFreeFieldMethods,
42
+ },
43
+ setup(props, { emit, slots }){
44
+ if (!props.Field) return {};
45
+
46
+ const { proxy: vm } = getCurrentInstance();
47
+
48
+ const { fieldData, setFieldData } = useFreeField(props);
49
+
50
+ const before = (props.Field.Label !== void 0) ? () => h(freeFieldLabel, {
51
+ Field: props.Field,
52
+ }) : () => h('div', {
53
+ class: 'field-label-empty'
54
+ });
55
+
56
+ const dateOptions = computed(() => {
57
+ if (props.Field.Options && (typeof props.Field.Options === 'function' || Array.isArray(props.Field.Options))) return props.Field.Options;
58
+
59
+ let minDate = '1900/01/01';
60
+ let maxDate = '2100/12/31';
61
+
62
+ if (props.Field.MinValue) {
63
+ minDate = props.Field.MinValue;
64
+ }
65
+
66
+ if (props.Field.MaxValue === 'now') {
67
+ maxDate = new Date().toLocaleDateString();
68
+ } else if (props.Field.MaxValue) {
69
+ maxDate = props.Field.MaxValue;
70
+ }
71
+
72
+ return (date) => date >= minDate && date <= maxDate;
73
+ });
74
+
75
+ const locale = vm.ctx.config.locales.find(
76
+ (l) => l.locale === (vm.ctx.config.locale || vm.ctx.config.defaultLocale),
77
+ )?.calendar;
78
+
79
+ const localDate = computed(() => vm.$filter('normalDate', fieldData.value));
80
+
81
+ const showPopup = ref(false);
82
+
83
+ const DateNode = () => h(QInput, {
84
+ hideBottomSpace: true,
85
+ readonly: props.Field?.ReadOnly,
86
+
87
+ style: props.Field.Info?.Style,
88
+
89
+ rules: props.Field.Rules,
90
+
91
+ modelValue: localDate.value,
92
+ 'onUpdate:modelValue': (v) => {
93
+ setFieldData(v, emit);
94
+ },
95
+ }, {
96
+ default: () => h(QPopupProxy, {
97
+ transitionShow: "scale",
98
+ transitionHide: "scale",
99
+ modelValue: showPopup.value,
100
+ },() => h('span', {
101
+ class: 'row'
102
+ }, [
103
+ h(QDate, {
104
+ modelValue: localDate.value,
105
+
106
+ options: dateOptions.value,
107
+ todayTtn: true,
108
+ mask: 'YYYY-MM-DD',
109
+ locale,
110
+
111
+ 'onUpdate:modelValue': (v) => {
112
+ setFieldData(v, emit);
113
+
114
+ // TODO: not working, should close the popup but not
115
+ showPopup.value = false;
116
+ },
117
+ })
118
+ ])),
119
+ before,
120
+ append: () => h(QIcon, {
121
+ class: 'cursor-pointer',
122
+ name: 'event'
123
+ }),
124
+ });
125
+
126
+ return () => h('div', {
127
+ class: 'simple-field input-field-date row items-center no-wrap',
128
+ }, [
129
+ props.Field.ReadOnly ? readonlyNode() : DateNode(),
130
+ slots.warning && slots.warning(),
131
+ ]);
132
+ },
133
+ });
@@ -0,0 +1,226 @@
1
+ import { ref, defineComponent, getCurrentInstance, h, computed, watch, watchEffect } from 'vue';
2
+ import { useFreeField, freeFieldProps, useFreeFieldMethods } from '../composible/useFreeField';
3
+ import { QInput, QIcon, QPopupProxy, QDate } from 'quasar';
4
+ import freeFieldLabel from '../composible/freeFieldLabel';
5
+
6
+ export default defineComponent({
7
+ name: 'InputFieldDateRange',
8
+ fieldInfo: {
9
+ Category: 'DateTime',
10
+ Label: '日期范围',
11
+ Value: 'DateRange',
12
+ Extra: [
13
+ {
14
+ Type: 'String',
15
+ Label: '最小值',
16
+ Name: 'MinValue',
17
+ },
18
+ {
19
+ Type: 'String',
20
+ Label: '最大值',
21
+ Name: 'MaxValue',
22
+ },
23
+ {
24
+ Type: 'Boolean',
25
+ Label: '最大至“现在”',
26
+ Name: 'Info.TillNow',
27
+ },
28
+ {
29
+ Type: 'Boolean',
30
+ Label: '最小从“现在”',
31
+ Name: 'Info.FromNow',
32
+ },
33
+ ],
34
+ Description: '',
35
+ },
36
+ props: {
37
+ ...freeFieldProps,
38
+ },
39
+ emits: ['input'],
40
+ methods: {
41
+ ...useFreeFieldMethods,
42
+ },
43
+ setup(props, { emit, slots }){
44
+ if (!props.Field) return {};
45
+
46
+ const { proxy: vm } = getCurrentInstance();
47
+
48
+ const { fieldData, setFieldData } = useFreeField(props);
49
+
50
+ const updateFieldDate = () => {
51
+ setFieldData([min.value, max.value].join(props.Field.Separator || '~'), emit);
52
+ };
53
+
54
+ const min = ref('');
55
+ const max = ref('');
56
+
57
+ watch(min, () => updateFieldDate());
58
+ watch(max, () => updateFieldDate());
59
+
60
+ watchEffect(() => {
61
+ const yl = (fieldData.value || '').split(props.Field.Separator || '~');
62
+ min.value = yl[0] && yl[0].trim();
63
+ max.value = yl[1] && yl[1].trim();
64
+ });
65
+
66
+ const readonlyNode = () => h(ReadonlyContent, {
67
+ Field: props.Field,
68
+ Content: fieldData.value,
69
+ });
70
+
71
+ const before = (props.Field.Label !== void 0) ? () => h(freeFieldLabel, {
72
+ Field: props.Field,
73
+ }) : undefined;
74
+
75
+ const minDateOptions = computed(() => {
76
+ let minDate = '1900/01/01';
77
+ let maxDate = '2100/12/31';
78
+
79
+ if (props.Field.MinValue) {
80
+ minDate = props.Field.MinValue.replace(/-/g, '/');
81
+ }
82
+
83
+ if (props.Field.TillNow) {
84
+ maxDate = new Date().toLocaleDateString();
85
+ } else if (props.Field.MaxValue) {
86
+ maxDate = props.Field.MaxValue.replace(/-/g, '/');
87
+ }
88
+
89
+ if (max.value && max.value.replace(/-/g, '/') < maxDate) return (date) => date >= minDate && date < max.value.replace(/-/g, '/');
90
+
91
+ return (date) => date >= minDate && date <= maxDate;
92
+ });
93
+
94
+ const maxDateOptions = computed(() => {
95
+ let minDate = '1900/01/01';
96
+ let maxDate = '2100/12/31';
97
+
98
+ if (props.Field.MinValue) {
99
+ minDate = props.Field.MinValue.replace(/-/g, '/');
100
+ }
101
+
102
+ if (props.Field.TillNow) {
103
+ maxDate = new Date().toLocaleDateString();
104
+ } else if (props.Field.MaxValue) {
105
+ maxDate = props.Field.MaxValue.replace(/-/g, '/');
106
+ }
107
+
108
+ if (min.value && min.value.replace(/-/g, '/') > minDate) {
109
+ return (date) => date > min.value.replace(/-/g, '/') && date <= maxDate;
110
+ }
111
+ return (date) => date >= minDate && date <= maxDate;
112
+ });
113
+
114
+ const locale = vm.ctx.config.locales.find(
115
+ (l) => l.locale === (vm.ctx.config.locale || vm.ctx.config.defaultLocale),
116
+ )?.calendar;
117
+
118
+ const showMinPopup = ref(false);
119
+ const showMaxPopup = ref(false);
120
+
121
+
122
+ const minDateNode = () => h(QInput, {
123
+ hideBottomSpace: true,
124
+ readonly: props.Field?.ReadOnly,
125
+
126
+ style: props.Field.Info?.Style,
127
+
128
+ rules: props.Field.Rules,
129
+
130
+ modelValue: min.value,
131
+ 'onUpdate:modelValue': (v) => {
132
+ min.value = v;
133
+ emit('input', v);
134
+ },
135
+ }, {
136
+ default: () => h(QPopupProxy, {
137
+ transitionShow: "scale",
138
+ transitionHide: "scale",
139
+ modelValue: showMinPopup.value,
140
+ },() => h('span', {
141
+ class: 'row'
142
+ }, [
143
+ h(QDate, {
144
+ modelValue: min.value,
145
+
146
+ options: minDateOptions.value,
147
+ todayTtn: true,
148
+ mask: 'YYYY-MM-DD',
149
+ locale,
150
+
151
+ 'onUpdate:modelValue': (v) => {
152
+ min.value = v;
153
+
154
+ // TODO: not working, should close the popup but not
155
+ showMinPopup.value = false;
156
+ emit('input', v);
157
+ },
158
+ })
159
+ ])),
160
+ before,
161
+ append: () => h(QIcon, {
162
+ class: 'cursor-pointer',
163
+ name: 'event'
164
+ }),
165
+ });
166
+
167
+ const maxDateNode = () => h(QInput, {
168
+ hideBottomSpace: true,
169
+ readonly: props.Field?.ReadOnly,
170
+
171
+ style: props.Field.Info?.Style,
172
+
173
+ rules: props.Field.Rules,
174
+
175
+ modelValue: max.value,
176
+ 'onUpdate:modelValue': (v) => {
177
+ max.value = v;
178
+ emit('input', v);
179
+ },
180
+ }, {
181
+ default: () => h(QPopupProxy, {
182
+ transitionShow: "scale",
183
+ transitionHide: "scale",
184
+ modelValue: showMaxPopup.value,
185
+ },() => h('span', {
186
+ class: 'row'
187
+ }, [
188
+ h(QDate, {
189
+ modelValue: max.value,
190
+
191
+ options: maxDateOptions.value,
192
+ todayTtn: true,
193
+ mask: 'YYYY-MM-DD',
194
+ locale,
195
+
196
+ 'onUpdate:modelValue': (v) => {
197
+ max.value = v;
198
+
199
+ // TODO: not working, should close the popup but not
200
+ showMaxPopup.value = false;
201
+ emit('input', v);
202
+ },
203
+ })
204
+ ])),
205
+ append: () => h(QIcon, {
206
+ class: 'cursor-pointer',
207
+ name: 'event'
208
+ }),
209
+ });
210
+
211
+ return () => h('div', {
212
+ class: 'simple-field input-field-date row items-center no-wrap',
213
+ }, [
214
+ props.Field.ReadOnly ? readonlyNode() : h('div', {
215
+ class: 'row items-center no-wrap'
216
+ }, [
217
+ minDateNode(),
218
+ h('span', {
219
+ class: 'input-field-range-separator'
220
+ },props.Field.Separator || '~'),
221
+ maxDateNode(),
222
+ ]),
223
+ slots.warning && slots.warning(),
224
+ ]);
225
+ },
226
+ });