free-fe-core-modules 0.0.1 → 0.0.3

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 (109) hide show
  1. package/components/Basic/EIcon.vue +2 -4
  2. package/components/Basic/LeveledMenus.vue +0 -5
  3. package/components/Basic/SummaryHead.vue +10 -3
  4. package/components/Dialog/BasicDialog.vue +10 -77
  5. package/components/Dialog/index.js +44 -34
  6. package/components/Dialog/index2.js +44 -0
  7. package/components/SelectLocales/index.vue +3 -4
  8. package/components/SlidingCarousel/index.vue +0 -1
  9. package/components/SlidingNews/index.vue +0 -1
  10. package/components/StickyButtons/index.vue +2 -2
  11. package/components/ThemeSwitch/index.vue +14 -8
  12. package/composible/useObjectData.js +69 -0
  13. package/free-field/Fields/AgreementCheck.js +170 -0
  14. package/free-field/Fields/ApiCall.js +123 -0
  15. package/{field-components/Fields/Boolean.vue → free-field/Fields/Boolean.js} +40 -46
  16. package/free-field/Fields/Category.js +28 -0
  17. package/free-field/Fields/Check.js +106 -0
  18. package/free-field/Fields/Customize.js +87 -0
  19. package/free-field/Fields/Date.js +133 -0
  20. package/free-field/Fields/DateRange.js +226 -0
  21. package/free-field/Fields/DynamicList.js +565 -0
  22. package/{field-components → free-field}/Fields/File.vue +3 -3
  23. package/{field-components → free-field}/Fields/FileList.vue +4 -4
  24. package/{field-components → free-field}/Fields/FileListCombined.vue +3 -3
  25. package/{field-components → free-field}/Fields/FixedList.vue +78 -83
  26. package/{field-components → free-field}/Fields/Image.vue +2 -2
  27. package/{field-components → free-field}/Fields/ImageList.vue +1 -1
  28. package/{field-components → free-field}/Fields/ImageListCombined.vue +1 -1
  29. package/free-field/Fields/InputFieldList.vue +324 -0
  30. package/{field-components → free-field}/Fields/Labels.vue +24 -15
  31. package/{field-components → free-field}/Fields/MixedTable.vue +53 -61
  32. package/free-field/Fields/Number.js +167 -0
  33. package/free-field/Fields/Password.js +81 -0
  34. package/{field-components → free-field}/Fields/Permission.vue +17 -13
  35. package/{field-components → free-field}/Fields/PermissionEditor.vue +63 -105
  36. package/{field-components → free-field}/Fields/QueryFilters.vue +65 -48
  37. package/{field-components → free-field}/Fields/RadioList.vue +36 -12
  38. package/{field-components → free-field}/Fields/Rich.vue +104 -114
  39. package/{field-components → free-field}/Fields/Search.vue +35 -26
  40. package/{field-components → free-field}/Fields/Select.vue +116 -88
  41. package/{field-components → free-field}/Fields/SelectionChain.vue +89 -67
  42. package/{field-components/Fields/Separator.vue → free-field/Fields/Separator.js} +11 -16
  43. package/{field-components → free-field}/Fields/SingleList.vue +27 -21
  44. package/free-field/Fields/Static.js +27 -0
  45. package/free-field/Fields/String.js +105 -0
  46. package/free-field/Fields/Text.js +80 -0
  47. package/{field-components → free-field}/Fields/Time.vue +59 -43
  48. package/{field-components → free-field}/Fields/TimeRange.vue +107 -92
  49. package/{field-components → free-field}/Fields/UltimateFile.vue +1 -1
  50. package/free-field/Fields/Year.js +137 -0
  51. package/{field-components → free-field}/Fields/YearRange.vue +63 -73
  52. package/{field-components → free-field}/Fields/index.js +16 -18
  53. package/free-field/composible/fieldWrapper.js +221 -0
  54. package/free-field/composible/freeFieldLabel.js +22 -0
  55. package/free-field/composible/readonlyContent.js +36 -0
  56. package/free-field/composible/useFileSizeUtils.js +52 -0
  57. package/free-field/composible/useFreeField.js +143 -0
  58. package/{field-components → free-field}/index.js +3 -3
  59. package/i18n/en-us/index.js +1 -1
  60. package/i18n/zh-cn/index.js +1 -1
  61. package/index.js +4 -22
  62. package/package.json +1 -1
  63. package/router/error/data.js +4 -1
  64. package/view/dict/index.vue +13 -4
  65. package/view/error/list.vue +22 -14
  66. package/view/menu/index.vue +19 -9
  67. package/view/system/index.vue +15 -2
  68. package/components/Dialog/index1.js +0 -49
  69. package/field-components/Fields/AgreementCheck.vue +0 -161
  70. package/field-components/Fields/ApiCall.vue +0 -139
  71. package/field-components/Fields/Category.vue +0 -33
  72. package/field-components/Fields/Check.vue +0 -131
  73. package/field-components/Fields/Customize.vue +0 -103
  74. package/field-components/Fields/Date.vue +0 -142
  75. package/field-components/Fields/DateRange.vue +0 -199
  76. package/field-components/Fields/DynamicList.vue +0 -575
  77. package/field-components/Fields/FieldEditor.vue +0 -379
  78. package/field-components/Fields/InputFieldList.vue +0 -299
  79. package/field-components/Fields/Number.vue +0 -247
  80. package/field-components/Fields/Password.vue +0 -79
  81. package/field-components/Fields/Static.vue +0 -22
  82. package/field-components/Fields/String.vue +0 -185
  83. package/field-components/Fields/Text.vue +0 -89
  84. package/field-components/Fields/Year.vue +0 -124
  85. package/field-components/Fields/components/FieldTypeOptions.vue +0 -248
  86. package/field-components/components/FieldComponents.vue +0 -246
  87. package/free-fields/AutoHide.js +0 -66
  88. package/free-fields/CenterContent.js +0 -15
  89. package/free-fields/Draggable.js +0 -30
  90. package/free-fields/Droppable.js +0 -114
  91. package/free-fields/EditableString.js +0 -63
  92. package/free-fields/FieldCategory.js +0 -83
  93. package/free-fields/FieldTypeSelect.js +0 -94
  94. package/free-fields/fieldEditors/arrayEditor.js +0 -3
  95. package/free-fields/fieldEditors/boolEditor.js +0 -22
  96. package/free-fields/fieldEditors/dateEditor.js +0 -23
  97. package/free-fields/fieldEditors/datetimeEditor.js +0 -23
  98. package/free-fields/fieldEditors/index.js +0 -21
  99. package/free-fields/fieldEditors/jsonEditor.js +0 -371
  100. package/free-fields/fieldEditors/labeledField.js +0 -74
  101. package/free-fields/fieldEditors/numberEditor.js +0 -51
  102. package/free-fields/fieldEditors/objectEditor.js +0 -3
  103. package/free-fields/fieldEditors/selectEditor.js +0 -0
  104. package/free-fields/fieldEditors/stringEditor.js +0 -49
  105. package/free-fields/fieldEditors/textEditor.js +0 -50
  106. package/free-fields/fieldEditors/timeEditor.js +0 -23
  107. package/free-fields/index.js +0 -402
  108. /package/{field-components/Display → free-field/Layout}/index.js +0 -0
  109. /package/{field-components → free-field}/style.sass +0 -0
@@ -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
+ });