@flyanra/vue-core 0.4.0 → 0.4.1

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 (161) hide show
  1. package/README.md +176 -176
  2. package/package.json +137 -138
  3. package/src/components/basic/fly-button/FlyButton.element.scss +3 -3
  4. package/src/components/basic/fly-button/FlyButton.mixins.scss +58 -58
  5. package/src/components/basic/fly-button/FlyButton.types.ts +29 -29
  6. package/src/components/basic/fly-button/FlyButton.vue +180 -180
  7. package/src/components/basic/fly-button/index.ts +11 -11
  8. package/src/components/basic/index.ts +2 -2
  9. package/src/components/basic/typography/FlyCollapseTitleRenderer.vue +46 -46
  10. package/src/components/feedback/index.ts +2 -2
  11. package/src/components/feedback/tooltip/FlyInfoTooltip.vue +48 -48
  12. package/src/components/feedback/tooltip/FlyTooltip.element.scss +4 -4
  13. package/src/components/feedback/tooltip/FlyTooltip.types.ts +5 -5
  14. package/src/components/feedback/tooltip/FlyTooltip.vue +60 -60
  15. package/src/components/feedback/tooltip/index.ts +6 -6
  16. package/src/components/form/form.utils.ts +57 -57
  17. package/src/components/form/input-renderers/boolean/FlyBoolean.scss +1 -1
  18. package/src/components/form/input-renderers/boolean/FlyBoolean.types.ts +16 -16
  19. package/src/components/form/input-renderers/boolean/FlyBoolean.vue +35 -35
  20. package/src/components/form/input-renderers/date-time/FlyDateTime.scss +1 -1
  21. package/src/components/form/input-renderers/date-time/FlyDateTime.types.ts +21 -21
  22. package/src/components/form/input-renderers/date-time/FlyDateTime.vue +85 -85
  23. package/src/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.scss +4 -4
  24. package/src/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.vue +48 -48
  25. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.ts +3 -3
  26. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.utils.ts +246 -246
  27. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.vue +75 -75
  28. package/src/components/form/input-renderers/form-schema-renderer/UseFormSchemaRenderer.ts +97 -97
  29. package/src/components/form/input-renderers/form-schema.types.ts +95 -95
  30. package/src/components/form/input-renderers/input-renderer/FlyInputRenderer.vue +49 -49
  31. package/src/components/form/input-renderers/input-renderer.types.ts +49 -49
  32. package/src/components/form/input-renderers/input-renderer.utils.ts +18 -18
  33. package/src/components/form/input-renderers/number/FlyNumber.scss +1 -1
  34. package/src/components/form/input-renderers/number/FlyNumber.types.ts +13 -13
  35. package/src/components/form/input-renderers/number/FlyNumber.utils.ts +6 -6
  36. package/src/components/form/input-renderers/number/FlyNumber.vue +48 -48
  37. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.types.ts +15 -15
  38. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.vue +99 -99
  39. package/src/components/form/input-renderers/select/FlySelect.scss +9 -1
  40. package/src/components/form/input-renderers/select/FlySelect.types.ts +25 -25
  41. package/src/components/form/input-renderers/select/FlySelect.utils.ts +37 -37
  42. package/src/components/form/input-renderers/select/FlySelect.vue +48 -48
  43. package/src/components/form/input-renderers/text/FlyText.scss +1 -1
  44. package/src/components/form/input-renderers/text/FlyText.types.ts +20 -20
  45. package/src/components/form/input-renderers/text/FlyText.vue +56 -56
  46. package/src/components/form/input-renderers/value-unit/FlyValueUnit.scss +2 -2
  47. package/src/components/form/input-renderers/value-unit/FlyValueUnit.types.ts +28 -28
  48. package/src/components/form/input-renderers/value-unit/FlyValueUnit.vue +101 -101
  49. package/src/components/form/input-validators.ts +121 -121
  50. package/src/components/general/fly-icon/FlyIcon.types.ts +12 -12
  51. package/src/components/general/fly-icon/FlyIcon.vue +24 -24
  52. package/src/components/general/fly-icon/index.ts +6 -6
  53. package/src/components/general/index.ts +2 -2
  54. package/src/components/index.ts +5 -5
  55. package/src/components/navigation/fly-steps/FlySteps.element.scss +100 -100
  56. package/src/components/navigation/fly-steps/FlySteps.types.ts +10 -10
  57. package/src/components/navigation/fly-steps/FlySteps.vue +30 -30
  58. package/src/components/navigation/fly-steps/index.ts +6 -6
  59. package/src/components/navigation/index.ts +2 -2
  60. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.element.scss +2 -2
  61. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.ts +8 -8
  62. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.vue +46 -46
  63. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue +55 -55
  64. package/src/components/navigation/menu/fly-mini-sidebar/index.ts +6 -6
  65. package/src/components/navigation/menu/fly-sidebar/FlySidebar.element.scss +9 -9
  66. package/src/components/navigation/menu/fly-sidebar/FlySidebar.types.ts +36 -36
  67. package/src/components/navigation/menu/fly-sidebar/FlySidebar.vue +150 -150
  68. package/src/components/navigation/menu/fly-sidebar/FlySidebarNode.vue +47 -47
  69. package/src/components/navigation/menu/fly-sidebar/index.ts +12 -12
  70. package/src/components/navigation/menu/index.ts +5 -5
  71. package/src/index.ts +1 -1
  72. package/src/styles/_scss-tokens.scss +76 -76
  73. package/src/styles/core/animations.scss +40 -40
  74. package/src/styles/core/index.scss +36 -36
  75. package/src/styles/core/scrollbar.scss +36 -36
  76. package/src/styles/core/typography-utils.scss +9 -9
  77. package/src/styles/element/common.scss +56 -56
  78. package/src/styles/element/dark.scss +38 -38
  79. package/src/styles/element/mixins/collapse.scss +61 -61
  80. package/src/styles/element/mixins/dialog.scss +101 -101
  81. package/src/styles/element/overrides/alerts.scss +28 -28
  82. package/src/styles/element/overrides/badge.scss +6 -6
  83. package/src/styles/element/overrides/cascader.scss +2 -2
  84. package/src/styles/element/overrides/collapse.scss +2 -2
  85. package/src/styles/element/overrides/date-time.scss +11 -11
  86. package/src/styles/element/overrides/dialog.scss +2 -2
  87. package/src/styles/element/overrides/dropdown.scss +11 -11
  88. package/src/styles/element/overrides/form.scss +107 -105
  89. package/src/styles/element/overrides/message.scss +39 -39
  90. package/src/styles/element/overrides/notification.scss +46 -46
  91. package/src/styles/element/overrides/segmented.scss +17 -17
  92. package/src/styles/element/overrides/table.scss +2 -2
  93. package/src/styles/element/overrides/tag.scss +19 -19
  94. package/src/styles/index.d.ts +1 -1
  95. package/src/styles/index.scss +5 -5
  96. package/src/styles/mixins/shadows.scss +15 -15
  97. package/src/styles/tokens.scss +84 -83
  98. package/dist/types/components/basic/fly-button/FlyButton.types.d.ts +0 -25
  99. package/dist/types/components/basic/fly-button/FlyButton.vue.d.ts +0 -26
  100. package/dist/types/components/basic/fly-button/index.d.ts +0 -4
  101. package/dist/types/components/basic/index.d.ts +0 -2
  102. package/dist/types/components/basic/typography/FlyCollapseTitleRenderer.vue.d.ts +0 -16
  103. package/dist/types/components/feedback/index.d.ts +0 -2
  104. package/dist/types/components/feedback/tooltip/FlyInfoTooltip.vue.d.ts +0 -36
  105. package/dist/types/components/feedback/tooltip/FlyTooltip.types.d.ts +0 -4
  106. package/dist/types/components/feedback/tooltip/FlyTooltip.vue.d.ts +0 -17
  107. package/dist/types/components/feedback/tooltip/index.d.ts +0 -4
  108. package/dist/types/components/form/form.utils.d.ts +0 -10
  109. package/dist/types/components/form/index.d.ts +0 -1
  110. package/dist/types/components/form/input-renderers/boolean/FlyBoolean.types.d.ts +0 -14
  111. package/dist/types/components/form/input-renderers/boolean/FlyBoolean.vue.d.ts +0 -15
  112. package/dist/types/components/form/input-renderers/date-time/FlyDateTime.types.d.ts +0 -20
  113. package/dist/types/components/form/input-renderers/date-time/FlyDateTime.vue.d.ts +0 -19
  114. package/dist/types/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.vue.d.ts +0 -19
  115. package/dist/types/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.d.ts +0 -2
  116. package/dist/types/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.utils.d.ts +0 -23
  117. package/dist/types/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.vue.d.ts +0 -17
  118. package/dist/types/components/form/input-renderers/form-schema-renderer/UseFormSchemaRenderer.d.ts +0 -25
  119. package/dist/types/components/form/input-renderers/form-schema.types.d.ts +0 -77
  120. package/dist/types/components/form/input-renderers/input-renderer/FlyInputRenderer.vue.d.ts +0 -18
  121. package/dist/types/components/form/input-renderers/input-renderer.types.d.ts +0 -30
  122. package/dist/types/components/form/input-renderers/input-renderer.utils.d.ts +0 -2
  123. package/dist/types/components/form/input-renderers/number/FlyNumber.types.d.ts +0 -13
  124. package/dist/types/components/form/input-renderers/number/FlyNumber.utils.d.ts +0 -1
  125. package/dist/types/components/form/input-renderers/number/FlyNumber.vue.d.ts +0 -19
  126. package/dist/types/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.types.d.ts +0 -13
  127. package/dist/types/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.vue.d.ts +0 -20
  128. package/dist/types/components/form/input-renderers/select/FlySelect.types.d.ts +0 -22
  129. package/dist/types/components/form/input-renderers/select/FlySelect.utils.d.ts +0 -2
  130. package/dist/types/components/form/input-renderers/select/FlySelect.vue.d.ts +0 -19
  131. package/dist/types/components/form/input-renderers/text/FlyText.types.d.ts +0 -18
  132. package/dist/types/components/form/input-renderers/text/FlyText.vue.d.ts +0 -19
  133. package/dist/types/components/form/input-renderers/value-unit/FlyValueUnit.types.d.ts +0 -23
  134. package/dist/types/components/form/input-renderers/value-unit/FlyValueUnit.vue.d.ts +0 -19
  135. package/dist/types/components/form/input-validators.d.ts +0 -13
  136. package/dist/types/components/general/fly-icon/FlyIcon.types.d.ts +0 -7
  137. package/dist/types/components/general/fly-icon/FlyIcon.vue.d.ts +0 -6
  138. package/dist/types/components/general/fly-icon/index.d.ts +0 -4
  139. package/dist/types/components/general/index.d.ts +0 -2
  140. package/dist/types/components/index.d.ts +0 -4
  141. package/dist/types/components/navigation/fly-steps/FlySteps.types.d.ts +0 -9
  142. package/dist/types/components/navigation/fly-steps/FlySteps.vue.d.ts +0 -9
  143. package/dist/types/components/navigation/fly-steps/index.d.ts +0 -4
  144. package/dist/types/components/navigation/index.d.ts +0 -2
  145. package/dist/types/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.d.ts +0 -7
  146. package/dist/types/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.vue.d.ts +0 -8
  147. package/dist/types/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue.d.ts +0 -7
  148. package/dist/types/components/navigation/menu/fly-mini-sidebar/index.d.ts +0 -4
  149. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebar.types.d.ts +0 -29
  150. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebar.vue.d.ts +0 -8
  151. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebarNode.vue.d.ts +0 -7
  152. package/dist/types/components/navigation/menu/fly-sidebar/index.d.ts +0 -4
  153. package/dist/types/components/navigation/menu/index.d.ts +0 -4
  154. package/dist/types/composables/UseLocaleInjector.d.ts +0 -6
  155. package/dist/types/index.d.ts +0 -1
  156. package/dist/types/types/index.d.ts +0 -1
  157. package/dist/types/utils/pure-functions.d.ts +0 -1
  158. package/dist/types/utils/validators.d.ts +0 -9
  159. package/src/styles/element/overrides/message-box.scss +0 -2
  160. package/src/styles/element/overrides/radio.scss +0 -2
  161. package/src/styles/element/overrides/select.scss +0 -9
@@ -1,246 +1,246 @@
1
- import type { FormInstance, FormItemRule } from 'element-plus'
2
-
3
- import type { Composer } from 'vue-i18n'
4
-
5
- import { checkInputRange } from '../../../../utils/validators'
6
- import { formFieldErrorMessageFormatter } from '../../form.utils'
7
- import {
8
- checkInputRangeValidator,
9
- requiredField,
10
- requiredFieldArray,
11
- requiredFieldNumber,
12
- requiredFieldNumberSelect,
13
- requiredFieldValueUnit
14
- } from '../../input-validators'
15
- import type {
16
- T_FormSchemaLookupData,
17
- T_InputSchema,
18
- T_InputSchemaSelect,
19
- T_InputSchemaValueUnit
20
- } from '../form-schema.types'
21
- import type { T_InputRendererBase } from '../input-renderer.types'
22
- import type { T_InputSelectOption } from '../select/FlySelect.types'
23
-
24
- export function getValidatorsFromInputFields(fields: T_InputRendererBase[]) {
25
- const validators = fields.reduce(
26
- (p, c) => {
27
- if (c.validations) {
28
- p[c.key] = c.validations
29
- }
30
- return p
31
- },
32
- {} as Record<string, FormItemRule[]>
33
- )
34
-
35
- return validators
36
- }
37
-
38
- export async function genericFormValidator(formRef: FormInstance): Promise<true> {
39
- return new Promise((resolve, reject) => {
40
- formRef.validate((valid, errors) => {
41
- if (!valid) {
42
- if (errors) {
43
- return reject(formFieldErrorMessageFormatter(errors))
44
- }
45
- } else {
46
- return resolve(true)
47
- }
48
- })
49
- })
50
- }
51
-
52
- export function generateInputFromFormSchema(
53
- field: T_InputSchema,
54
- lookupData?: T_FormSchemaLookupData
55
- ) {
56
- switch (field.type) {
57
- case 'text': {
58
- const selectInput: T_InputRendererBase = {
59
- label: field.label,
60
- type: field.type,
61
- key: field.unique_key,
62
- attrs: {
63
- maxlength: field.config?.maxLength,
64
- minlength: field.config?.minLength,
65
- showWordLimit: true,
66
- type: field.config?.type || field.type,
67
- rows: field.config?.rows
68
- },
69
- placeholder: field.placeholder,
70
- tooltip: field.tooltip,
71
- validations: generateFormRule(field)
72
- }
73
-
74
- return selectInput
75
- }
76
- case 'select': {
77
- const selectInput: T_InputRendererBase = {
78
- label: field.label,
79
- type: field.type,
80
- key: field.unique_key,
81
- attrs: {
82
- multiple: field.config.multiple
83
- },
84
- placeholder: field.placeholder,
85
- tooltip: field.tooltip,
86
- validations: generateFormRule(field),
87
- config: {
88
- options: generateSelectOptionsFromSchema(field, lookupData)
89
- }
90
- }
91
-
92
- return selectInput
93
- }
94
- case 'valueUnit': {
95
- const selectInput: T_InputRendererBase = {
96
- label: field.label,
97
- type: field.type,
98
- key: field.unique_key,
99
- attrs: {},
100
- placeholder: field.placeholder,
101
- tooltip: field.tooltip,
102
- validations: generateFormRule(field),
103
- config: {
104
- options: generateSelectOptionsFromSchema(field, lookupData)
105
- }
106
- }
107
-
108
- return selectInput
109
- }
110
- case 'number': {
111
- const selectInput: T_InputRendererBase = {
112
- label: field.label,
113
- type: field.type,
114
- key: field.unique_key,
115
- attrs: {},
116
- placeholder: field.placeholder,
117
- tooltip: field.tooltip,
118
- validations: generateFormRule(field)
119
- }
120
-
121
- return selectInput
122
- }
123
- case 'boolean': {
124
- const selectInput: T_InputRendererBase = {
125
- label: field.label,
126
- type: field.type,
127
- key: field.unique_key,
128
- attrs: {
129
- activeText: field.config?.activeText,
130
- inactiveText: field.config?.inactiveText
131
- },
132
- placeholder: field.placeholder,
133
- tooltip: field.tooltip,
134
- validations: generateFormRule(field)
135
- }
136
-
137
- return selectInput
138
- }
139
- case 'dateTime': {
140
- const selectInput: T_InputRendererBase = {
141
- label: field.label,
142
- type: field.type,
143
- key: field.unique_key,
144
- placeholder: field.placeholder,
145
- tooltip: field.tooltip,
146
- validations: generateFormRule(field),
147
- config: {
148
- inputType: field.config?.inputType
149
- }
150
- }
151
-
152
- return selectInput
153
- }
154
- default:
155
- break
156
- }
157
- }
158
-
159
- export function generateFormRule(field: T_InputSchema, composer?: Composer): FormItemRule[] {
160
- const validations = field.validation
161
- const rules: FormItemRule[] = []
162
-
163
- if (validations?.required) {
164
- switch (field.type) {
165
- case 'text': {
166
- rules.push(requiredField(field.label, 'blur', true, composer))
167
-
168
- if (field.validation?.minLength || field.validation?.maxLength) {
169
- rules.push(
170
- checkInputRangeValidator(
171
- checkInputRange(
172
- field.label,
173
- {
174
- min: field.validation?.minLength,
175
- max: field.validation?.maxLength
176
- },
177
- undefined,
178
- undefined,
179
- composer
180
- ),
181
- 'blur'
182
- )
183
- )
184
- }
185
-
186
- break
187
- }
188
-
189
- case 'dateTime': {
190
- rules.push(requiredField(field.label, 'blur', true, composer))
191
- break
192
- }
193
-
194
- case 'number': {
195
- rules.push(requiredFieldNumber(field.label, 'change', composer))
196
- break
197
- }
198
-
199
- case 'select': {
200
- if (field.config.multiple) {
201
- rules.push(requiredFieldArray(field.label, 'change', true, composer))
202
- } else {
203
- rules.push(requiredField(field.label, 'change', true, composer))
204
- }
205
- break
206
- }
207
-
208
- case 'valueUnit': {
209
- if (field.config.valueType === 'text') {
210
- rules.push(
211
- requiredFieldValueUnit(
212
- field.label,
213
- 'change',
214
- undefined,
215
- undefined,
216
- {
217
- valueType: 'text'
218
- },
219
- composer
220
- )
221
- )
222
- } else {
223
- rules.push(requiredFieldNumberSelect(field.label, 'change', true, composer))
224
- }
225
- }
226
- }
227
- }
228
-
229
- return rules
230
- }
231
-
232
- export function generateSelectOptionsFromSchema(
233
- field: T_InputSchemaSelect | T_InputSchemaValueUnit,
234
- lookupData?: T_FormSchemaLookupData
235
- ): T_InputSelectOption[] {
236
- const optionsArr = field.config?.options
237
- if (optionsArr) return optionsArr
238
-
239
- if (!lookupData) return []
240
- const lookupId = field.config.options_config_Lookup_id
241
- if (!lookupId) return []
242
-
243
- const record = lookupData[lookupId]
244
-
245
- return record ? (record as T_InputSelectOption[]) : []
246
- }
1
+ import type { FormInstance, FormItemRule } from 'element-plus'
2
+
3
+ import type { Composer } from 'vue-i18n'
4
+
5
+ import { checkInputRange } from '../../../../utils/validators'
6
+ import { formFieldErrorMessageFormatter } from '../../form.utils'
7
+ import {
8
+ checkInputRangeValidator,
9
+ requiredField,
10
+ requiredFieldArray,
11
+ requiredFieldNumber,
12
+ requiredFieldNumberSelect,
13
+ requiredFieldValueUnit
14
+ } from '../../input-validators'
15
+ import type {
16
+ T_FormSchemaLookupData,
17
+ T_InputSchema,
18
+ T_InputSchemaSelect,
19
+ T_InputSchemaValueUnit
20
+ } from '../form-schema.types'
21
+ import type { T_InputRendererBase } from '../input-renderer.types'
22
+ import type { T_InputSelectOption } from '../select/FlySelect.types'
23
+
24
+ export function getValidatorsFromInputFields(fields: T_InputRendererBase[]) {
25
+ const validators = fields.reduce(
26
+ (p, c) => {
27
+ if (c.validations) {
28
+ p[c.key] = c.validations
29
+ }
30
+ return p
31
+ },
32
+ {} as Record<string, FormItemRule[]>
33
+ )
34
+
35
+ return validators
36
+ }
37
+
38
+ export async function genericFormValidator(formRef: FormInstance): Promise<true> {
39
+ return new Promise((resolve, reject) => {
40
+ formRef.validate((valid, errors) => {
41
+ if (!valid) {
42
+ if (errors) {
43
+ return reject(formFieldErrorMessageFormatter(errors))
44
+ }
45
+ } else {
46
+ return resolve(true)
47
+ }
48
+ })
49
+ })
50
+ }
51
+
52
+ export function generateInputFromFormSchema(
53
+ field: T_InputSchema,
54
+ lookupData?: T_FormSchemaLookupData
55
+ ) {
56
+ switch (field.type) {
57
+ case 'text': {
58
+ const selectInput: T_InputRendererBase = {
59
+ label: field.label,
60
+ type: field.type,
61
+ key: field.unique_key,
62
+ attrs: {
63
+ maxlength: field.config?.maxLength,
64
+ minlength: field.config?.minLength,
65
+ showWordLimit: true,
66
+ type: field.config?.type || field.type,
67
+ rows: field.config?.rows
68
+ },
69
+ placeholder: field.placeholder,
70
+ tooltip: field.tooltip,
71
+ validations: generateFormRule(field)
72
+ }
73
+
74
+ return selectInput
75
+ }
76
+ case 'select': {
77
+ const selectInput: T_InputRendererBase = {
78
+ label: field.label,
79
+ type: field.type,
80
+ key: field.unique_key,
81
+ attrs: {
82
+ multiple: field.config.multiple
83
+ },
84
+ placeholder: field.placeholder,
85
+ tooltip: field.tooltip,
86
+ validations: generateFormRule(field),
87
+ config: {
88
+ options: generateSelectOptionsFromSchema(field, lookupData)
89
+ }
90
+ }
91
+
92
+ return selectInput
93
+ }
94
+ case 'valueUnit': {
95
+ const selectInput: T_InputRendererBase = {
96
+ label: field.label,
97
+ type: field.type,
98
+ key: field.unique_key,
99
+ attrs: {},
100
+ placeholder: field.placeholder,
101
+ tooltip: field.tooltip,
102
+ validations: generateFormRule(field),
103
+ config: {
104
+ options: generateSelectOptionsFromSchema(field, lookupData)
105
+ }
106
+ }
107
+
108
+ return selectInput
109
+ }
110
+ case 'number': {
111
+ const selectInput: T_InputRendererBase = {
112
+ label: field.label,
113
+ type: field.type,
114
+ key: field.unique_key,
115
+ attrs: {},
116
+ placeholder: field.placeholder,
117
+ tooltip: field.tooltip,
118
+ validations: generateFormRule(field)
119
+ }
120
+
121
+ return selectInput
122
+ }
123
+ case 'boolean': {
124
+ const selectInput: T_InputRendererBase = {
125
+ label: field.label,
126
+ type: field.type,
127
+ key: field.unique_key,
128
+ attrs: {
129
+ activeText: field.config?.activeText,
130
+ inactiveText: field.config?.inactiveText
131
+ },
132
+ placeholder: field.placeholder,
133
+ tooltip: field.tooltip,
134
+ validations: generateFormRule(field)
135
+ }
136
+
137
+ return selectInput
138
+ }
139
+ case 'dateTime': {
140
+ const selectInput: T_InputRendererBase = {
141
+ label: field.label,
142
+ type: field.type,
143
+ key: field.unique_key,
144
+ placeholder: field.placeholder,
145
+ tooltip: field.tooltip,
146
+ validations: generateFormRule(field),
147
+ config: {
148
+ inputType: field.config?.inputType
149
+ }
150
+ }
151
+
152
+ return selectInput
153
+ }
154
+ default:
155
+ break
156
+ }
157
+ }
158
+
159
+ export function generateFormRule(field: T_InputSchema, composer?: Composer): FormItemRule[] {
160
+ const validations = field.validation
161
+ const rules: FormItemRule[] = []
162
+
163
+ if (validations?.required) {
164
+ switch (field.type) {
165
+ case 'text': {
166
+ rules.push(requiredField(field.label, 'blur', true, composer))
167
+
168
+ if (field.validation?.minLength || field.validation?.maxLength) {
169
+ rules.push(
170
+ checkInputRangeValidator(
171
+ checkInputRange(
172
+ field.label,
173
+ {
174
+ min: field.validation?.minLength,
175
+ max: field.validation?.maxLength
176
+ },
177
+ undefined,
178
+ undefined,
179
+ composer
180
+ ),
181
+ 'blur'
182
+ )
183
+ )
184
+ }
185
+
186
+ break
187
+ }
188
+
189
+ case 'dateTime': {
190
+ rules.push(requiredField(field.label, 'blur', true, composer))
191
+ break
192
+ }
193
+
194
+ case 'number': {
195
+ rules.push(requiredFieldNumber(field.label, 'change', composer))
196
+ break
197
+ }
198
+
199
+ case 'select': {
200
+ if (field.config.multiple) {
201
+ rules.push(requiredFieldArray(field.label, 'change', true, composer))
202
+ } else {
203
+ rules.push(requiredField(field.label, 'change', true, composer))
204
+ }
205
+ break
206
+ }
207
+
208
+ case 'valueUnit': {
209
+ if (field.config.valueType === 'text') {
210
+ rules.push(
211
+ requiredFieldValueUnit(
212
+ field.label,
213
+ 'change',
214
+ undefined,
215
+ undefined,
216
+ {
217
+ valueType: 'text'
218
+ },
219
+ composer
220
+ )
221
+ )
222
+ } else {
223
+ rules.push(requiredFieldNumberSelect(field.label, 'change', true, composer))
224
+ }
225
+ }
226
+ }
227
+ }
228
+
229
+ return rules
230
+ }
231
+
232
+ export function generateSelectOptionsFromSchema(
233
+ field: T_InputSchemaSelect | T_InputSchemaValueUnit,
234
+ lookupData?: T_FormSchemaLookupData
235
+ ): T_InputSelectOption[] {
236
+ const optionsArr = field.config?.options
237
+ if (optionsArr) return optionsArr
238
+
239
+ if (!lookupData) return []
240
+ const lookupId = field.config.options_config_Lookup_id
241
+ if (!lookupId) return []
242
+
243
+ const record = lookupData[lookupId]
244
+
245
+ return record ? (record as T_InputSelectOption[]) : []
246
+ }
@@ -1,75 +1,75 @@
1
- <template>
2
- <div class="fly-form-schema-renderer">
3
- <el-form
4
- ref="formRef"
5
- :rules="dynamicValidators"
6
- :model="formProxy"
7
- label-position="top"
8
- status-icon
9
- :disabled="disabled"
10
- @submit.prevent
11
- >
12
- <div class="fly-form-schema-renderer__form-holder">
13
- <div
14
- v-for="(input, i) in generatedForm?.inputs"
15
- :key="i"
16
- :style="{
17
- gridColumn: `span ${getSpan(input)} / span ${getSpan(input)}`
18
- }"
19
- >
20
- <FlyFormItemRenderer v-model="formProxy[input.key]" :input="input" />
21
- </div>
22
- </div>
23
- </el-form>
24
- </div>
25
- </template>
26
-
27
- <script setup lang="ts">
28
- import { ref } from 'vue'
29
-
30
- import { ElForm, type FormInstance } from 'element-plus'
31
-
32
- import '../../../../styles/element/overrides/form.scss'
33
- import FlyFormItemRenderer from '../form-item-renderer/FlyFormItemRenderer.vue'
34
- import type { T_InputRendererBase } from '../input-renderer.types'
35
-
36
- import {
37
- type T_FormSchemaRendererEmits,
38
- type T_FormSchemaRendererProps,
39
- UseFormSchemaRenderer
40
- } from './UseFormSchemaRenderer'
41
-
42
- const emit = defineEmits<T_FormSchemaRendererEmits>()
43
-
44
- const props = defineProps<
45
- T_FormSchemaRendererProps & {
46
- /**
47
- * Column span within a 12 column grid
48
- */
49
- columnSpan?: number
50
- }
51
- >()
52
-
53
- const formRef = ref<FormInstance>()
54
-
55
- const dynamicConfigFormComp = UseFormSchemaRenderer({ formRef, props, emit })
56
- const { dynamicValidators, formProxy, generatedForm } = dynamicConfigFormComp
57
-
58
- function getSpan(input?: T_InputRendererBase) {
59
- return input?.columnSpan || props.columnSpan || 4
60
- }
61
-
62
- defineExpose({
63
- validateForm: dynamicConfigFormComp.validateForm
64
- })
65
- </script>
66
-
67
- <style lang="scss" scoped>
68
- .fly-form-schema-renderer {
69
- &__form-holder {
70
- display: grid;
71
- grid-template-columns: repeat(12, minmax(0, 1fr));
72
- gap: 0.5rem;
73
- }
74
- }
75
- </style>
1
+ <template>
2
+ <div class="fly-form-schema-renderer">
3
+ <el-form
4
+ ref="formRef"
5
+ :rules="dynamicValidators"
6
+ :model="formProxy"
7
+ label-position="top"
8
+ status-icon
9
+ :disabled="disabled"
10
+ @submit.prevent
11
+ >
12
+ <div class="fly-form-schema-renderer__form-holder">
13
+ <div
14
+ v-for="(input, i) in generatedForm?.inputs"
15
+ :key="i"
16
+ :style="{
17
+ gridColumn: `span ${getSpan(input)} / span ${getSpan(input)}`
18
+ }"
19
+ >
20
+ <FlyFormItemRenderer v-model="formProxy[input.key]" :input="input" />
21
+ </div>
22
+ </div>
23
+ </el-form>
24
+ </div>
25
+ </template>
26
+
27
+ <script setup lang="ts">
28
+ import { ref } from 'vue'
29
+
30
+ import { ElForm, type FormInstance } from 'element-plus'
31
+
32
+ import '../../../../styles/element/overrides/form.scss'
33
+ import FlyFormItemRenderer from '../form-item-renderer/FlyFormItemRenderer.vue'
34
+ import type { T_InputRendererBase } from '../input-renderer.types'
35
+
36
+ import {
37
+ type T_FormSchemaRendererEmits,
38
+ type T_FormSchemaRendererProps,
39
+ UseFormSchemaRenderer
40
+ } from './UseFormSchemaRenderer'
41
+
42
+ const emit = defineEmits<T_FormSchemaRendererEmits>()
43
+
44
+ const props = defineProps<
45
+ T_FormSchemaRendererProps & {
46
+ /**
47
+ * Column span within a 12 column grid
48
+ */
49
+ columnSpan?: number
50
+ }
51
+ >()
52
+
53
+ const formRef = ref<FormInstance>()
54
+
55
+ const dynamicConfigFormComp = UseFormSchemaRenderer({ formRef, props, emit })
56
+ const { dynamicValidators, formProxy, generatedForm } = dynamicConfigFormComp
57
+
58
+ function getSpan(input?: T_InputRendererBase) {
59
+ return input?.columnSpan || props.columnSpan || 4
60
+ }
61
+
62
+ defineExpose({
63
+ validateForm: dynamicConfigFormComp.validateForm
64
+ })
65
+ </script>
66
+
67
+ <style lang="scss" scoped>
68
+ .fly-form-schema-renderer {
69
+ &__form-holder {
70
+ display: grid;
71
+ grid-template-columns: repeat(12, minmax(0, 1fr));
72
+ gap: 0.5rem;
73
+ }
74
+ }
75
+ </style>