@flyanra/vue-core 0.4.0 → 0.4.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 (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 +1 -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 +105 -105
  89. package/src/styles/element/overrides/message-box.scss +2 -2
  90. package/src/styles/element/overrides/message.scss +39 -39
  91. package/src/styles/element/overrides/notification.scss +46 -46
  92. package/src/styles/element/overrides/radio.scss +2 -2
  93. package/src/styles/element/overrides/segmented.scss +17 -17
  94. package/src/styles/element/overrides/select.scss +9 -9
  95. package/src/styles/element/overrides/table.scss +2 -2
  96. package/src/styles/element/overrides/tag.scss +19 -19
  97. package/src/styles/index.d.ts +1 -1
  98. package/src/styles/index.scss +5 -5
  99. package/src/styles/mixins/shadows.scss +15 -15
  100. package/src/styles/tokens.scss +84 -83
  101. package/dist/types/components/basic/fly-button/FlyButton.types.d.ts +0 -25
  102. package/dist/types/components/basic/fly-button/FlyButton.vue.d.ts +0 -26
  103. package/dist/types/components/basic/fly-button/index.d.ts +0 -4
  104. package/dist/types/components/basic/index.d.ts +0 -2
  105. package/dist/types/components/basic/typography/FlyCollapseTitleRenderer.vue.d.ts +0 -16
  106. package/dist/types/components/feedback/index.d.ts +0 -2
  107. package/dist/types/components/feedback/tooltip/FlyInfoTooltip.vue.d.ts +0 -36
  108. package/dist/types/components/feedback/tooltip/FlyTooltip.types.d.ts +0 -4
  109. package/dist/types/components/feedback/tooltip/FlyTooltip.vue.d.ts +0 -17
  110. package/dist/types/components/feedback/tooltip/index.d.ts +0 -4
  111. package/dist/types/components/form/form.utils.d.ts +0 -10
  112. package/dist/types/components/form/index.d.ts +0 -1
  113. package/dist/types/components/form/input-renderers/boolean/FlyBoolean.types.d.ts +0 -14
  114. package/dist/types/components/form/input-renderers/boolean/FlyBoolean.vue.d.ts +0 -15
  115. package/dist/types/components/form/input-renderers/date-time/FlyDateTime.types.d.ts +0 -20
  116. package/dist/types/components/form/input-renderers/date-time/FlyDateTime.vue.d.ts +0 -19
  117. package/dist/types/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.vue.d.ts +0 -19
  118. package/dist/types/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.d.ts +0 -2
  119. package/dist/types/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.utils.d.ts +0 -23
  120. package/dist/types/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.vue.d.ts +0 -17
  121. package/dist/types/components/form/input-renderers/form-schema-renderer/UseFormSchemaRenderer.d.ts +0 -25
  122. package/dist/types/components/form/input-renderers/form-schema.types.d.ts +0 -77
  123. package/dist/types/components/form/input-renderers/input-renderer/FlyInputRenderer.vue.d.ts +0 -18
  124. package/dist/types/components/form/input-renderers/input-renderer.types.d.ts +0 -30
  125. package/dist/types/components/form/input-renderers/input-renderer.utils.d.ts +0 -2
  126. package/dist/types/components/form/input-renderers/number/FlyNumber.types.d.ts +0 -13
  127. package/dist/types/components/form/input-renderers/number/FlyNumber.utils.d.ts +0 -1
  128. package/dist/types/components/form/input-renderers/number/FlyNumber.vue.d.ts +0 -19
  129. package/dist/types/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.types.d.ts +0 -13
  130. package/dist/types/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.vue.d.ts +0 -20
  131. package/dist/types/components/form/input-renderers/select/FlySelect.types.d.ts +0 -22
  132. package/dist/types/components/form/input-renderers/select/FlySelect.utils.d.ts +0 -2
  133. package/dist/types/components/form/input-renderers/select/FlySelect.vue.d.ts +0 -19
  134. package/dist/types/components/form/input-renderers/text/FlyText.types.d.ts +0 -18
  135. package/dist/types/components/form/input-renderers/text/FlyText.vue.d.ts +0 -19
  136. package/dist/types/components/form/input-renderers/value-unit/FlyValueUnit.types.d.ts +0 -23
  137. package/dist/types/components/form/input-renderers/value-unit/FlyValueUnit.vue.d.ts +0 -19
  138. package/dist/types/components/form/input-validators.d.ts +0 -13
  139. package/dist/types/components/general/fly-icon/FlyIcon.types.d.ts +0 -7
  140. package/dist/types/components/general/fly-icon/FlyIcon.vue.d.ts +0 -6
  141. package/dist/types/components/general/fly-icon/index.d.ts +0 -4
  142. package/dist/types/components/general/index.d.ts +0 -2
  143. package/dist/types/components/index.d.ts +0 -4
  144. package/dist/types/components/navigation/fly-steps/FlySteps.types.d.ts +0 -9
  145. package/dist/types/components/navigation/fly-steps/FlySteps.vue.d.ts +0 -9
  146. package/dist/types/components/navigation/fly-steps/index.d.ts +0 -4
  147. package/dist/types/components/navigation/index.d.ts +0 -2
  148. package/dist/types/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.d.ts +0 -7
  149. package/dist/types/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.vue.d.ts +0 -8
  150. package/dist/types/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue.d.ts +0 -7
  151. package/dist/types/components/navigation/menu/fly-mini-sidebar/index.d.ts +0 -4
  152. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebar.types.d.ts +0 -29
  153. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebar.vue.d.ts +0 -8
  154. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebarNode.vue.d.ts +0 -7
  155. package/dist/types/components/navigation/menu/fly-sidebar/index.d.ts +0 -4
  156. package/dist/types/components/navigation/menu/index.d.ts +0 -4
  157. package/dist/types/composables/UseLocaleInjector.d.ts +0 -6
  158. package/dist/types/index.d.ts +0 -1
  159. package/dist/types/types/index.d.ts +0 -1
  160. package/dist/types/utils/pure-functions.d.ts +0 -1
  161. package/dist/types/utils/validators.d.ts +0 -9
@@ -1,48 +1,48 @@
1
- <template>
2
- <el-input
3
- v-model.number="inputProxy"
4
- style="width: 100%"
5
- type="number"
6
- v-bind="input?.attrs"
7
- :placeholder="input?.placeholder"
8
- @change="(val) => emit('change', displayToNumber(val))"
9
- @blur="() => emit('blur')"
10
- @focus="() => emit('focus')"
11
- >
12
- </el-input>
13
- </template>
14
-
15
- <script setup lang="ts">
16
- import { computed } from 'vue'
17
-
18
- import { ElInput } from 'element-plus'
19
-
20
- import { getInputDisplayValue } from '../input-renderer.utils'
21
-
22
- import './FlyNumber.scss'
23
- import type { T_InputNumber, T_InputTextValues } from './FlyNumber.types'
24
- import { displayToNumber } from './FlyNumber.utils'
25
-
26
- const emit = defineEmits<{
27
- (e: 'update:modelValue', v: T_InputTextValues): void
28
- (e: 'change', v: T_InputTextValues): void
29
- (e: 'blur'): void
30
- (e: 'focus'): void
31
- }>()
32
-
33
- const props = defineProps<{
34
- modelValue?: unknown
35
- input?: T_InputNumber
36
- }>()
37
-
38
- const inputProxy = computed({
39
- get: () => {
40
- return getInputDisplayValue(props.modelValue, 'number')
41
- },
42
- set: (v) => {
43
- const parsed = displayToNumber(v)
44
- emit('update:modelValue', parsed)
45
- emit('change', parsed)
46
- }
47
- })
48
- </script>
1
+ <template>
2
+ <el-input
3
+ v-model.number="inputProxy"
4
+ style="width: 100%"
5
+ type="number"
6
+ v-bind="input?.attrs"
7
+ :placeholder="input?.placeholder"
8
+ @change="(val) => emit('change', displayToNumber(val))"
9
+ @blur="() => emit('blur')"
10
+ @focus="() => emit('focus')"
11
+ >
12
+ </el-input>
13
+ </template>
14
+
15
+ <script setup lang="ts">
16
+ import { computed } from 'vue'
17
+
18
+ import { ElInput } from 'element-plus'
19
+
20
+ import { getInputDisplayValue } from '../input-renderer.utils'
21
+
22
+ import './FlyNumber.scss'
23
+ import type { T_InputNumber, T_InputTextValues } from './FlyNumber.types'
24
+ import { displayToNumber } from './FlyNumber.utils'
25
+
26
+ const emit = defineEmits<{
27
+ (e: 'update:modelValue', v: T_InputTextValues): void
28
+ (e: 'change', v: T_InputTextValues): void
29
+ (e: 'blur'): void
30
+ (e: 'focus'): void
31
+ }>()
32
+
33
+ const props = defineProps<{
34
+ modelValue?: unknown
35
+ input?: T_InputNumber
36
+ }>()
37
+
38
+ const inputProxy = computed({
39
+ get: () => {
40
+ return getInputDisplayValue(props.modelValue, 'number')
41
+ },
42
+ set: (v) => {
43
+ const parsed = displayToNumber(v)
44
+ emit('update:modelValue', parsed)
45
+ emit('change', parsed)
46
+ }
47
+ })
48
+ </script>
@@ -1,15 +1,15 @@
1
- import type { T_FormSchemaLookupData, T_InputSchema } from '../form-schema.types'
2
-
3
- export type T_TenantRegionalFormSection = {
4
- key: string
5
- fields: T_InputSchema[]
6
- title: string
7
- description?: string
8
- lookupData?: T_FormSchemaLookupData
9
- modelValue?: Record<string, unknown>
10
- }
11
-
12
- export type T_TenantRegionalFormProps = {
13
- mainFormTitle: string
14
- sections?: T_TenantRegionalFormSection[]
15
- }
1
+ import type { T_FormSchemaLookupData, T_InputSchema } from '../form-schema.types'
2
+
3
+ export type T_TenantRegionalFormSection = {
4
+ key: string
5
+ fields: T_InputSchema[]
6
+ title: string
7
+ description?: string
8
+ lookupData?: T_FormSchemaLookupData
9
+ modelValue?: Record<string, unknown>
10
+ }
11
+
12
+ export type T_TenantRegionalFormProps = {
13
+ mainFormTitle: string
14
+ sections?: T_TenantRegionalFormSection[]
15
+ }
@@ -1,99 +1,99 @@
1
- <template>
2
- <div class="fly-regional-tenant-form-renderer">
3
- <el-collapse v-if="sections?.length" v-model="activeNames" accordion>
4
- <el-collapse-item :name="E_CollapsibleSections.mainForm">
5
- <template #title>
6
- <FlyCollapseTitleRenderer :title="mainFormTitle" />
7
- </template>
8
-
9
- <div style="padding: 1rem">
10
- <slot></slot>
11
- </div>
12
- </el-collapse-item>
13
-
14
- <template v-for="section in sections">
15
- <el-collapse-item v-if="section.fields?.length" :key="section.key" :name="section.key">
16
- <template #title>
17
- <FlyCollapseTitleRenderer :title="section.title" />
18
- </template>
19
- <div style="padding: 1rem">
20
- <div v-if="section.description" style="margin-bottom: 1.25rem">
21
- <p style="font-size: 0.875; line-height: 1.25rem">
22
- {{ t(section.description) }}
23
- </p>
24
- </div>
25
-
26
- <FlyFormSchemaRenderer
27
- :ref="(el) => setFormRef(el, section.key)"
28
- v-model="section.modelValue"
29
- :lookup-data="section.lookupData"
30
- :form-config="section.fields"
31
- :column-span="6"
32
- />
33
- </div>
34
- </el-collapse-item>
35
- </template>
36
- </el-collapse>
37
-
38
- <div v-else>
39
- <slot></slot>
40
- </div>
41
- </div>
42
- </template>
43
-
44
- <script setup lang="ts">
45
- import { type ComponentPublicInstance, reactive, ref } from 'vue'
46
-
47
- import { ElCollapse, ElCollapseItem } from 'element-plus'
48
-
49
- import { UseLocaleInjector } from '../../../../composables/UseLocaleInjector'
50
- import '../../../../styles/element/overrides/collapse.scss'
51
- import FlyCollapseTitleRenderer from '../../../basic/typography/FlyCollapseTitleRenderer.vue'
52
- import type { T_FlyFormSchemaRendererInstance } from '../form-schema-renderer/FlyFormSchemaRenderer.types'
53
- import FlyFormSchemaRenderer from '../form-schema-renderer/FlyFormSchemaRenderer.vue'
54
-
55
- import type { T_TenantRegionalFormProps } from './FlyRegionalTenantFormRenderer.types'
56
-
57
- enum E_CollapsibleSections {
58
- mainForm
59
- }
60
-
61
- defineProps<T_TenantRegionalFormProps>()
62
-
63
- const { t } = UseLocaleInjector()
64
-
65
- const activeNames = ref<string | number>(E_CollapsibleSections.mainForm)
66
- const formRefs = reactive<{ [K: string]: T_FlyFormSchemaRendererInstance }>({})
67
-
68
- function setFormRef(formRef: Element | ComponentPublicInstance | null, key: string) {
69
- if (formRef) {
70
- formRefs[key] = formRef as T_FlyFormSchemaRendererInstance
71
- }
72
- }
73
-
74
- async function validateForms() {
75
- const keys = Object.keys(formRefs)
76
- for (let index = 0; index < keys.length; index++) {
77
- const element = formRefs[keys[index]]
78
- const hasErrors = await element?.validateForm()
79
- if (!hasErrors) continue
80
- return hasErrors
81
- }
82
-
83
- return
84
- }
85
-
86
- defineExpose({
87
- validateForms
88
- })
89
- </script>
90
-
91
- <style lang="scss" scoped>
92
- @use '../../../../styles/element/mixins/collapse.scss' as el-collapse-mixin;
93
-
94
- .fly-regional-tenant-form-renderer {
95
- :deep(.el-collapse) {
96
- @include el-collapse-mixin.el-collapse-operation-style;
97
- }
98
- }
99
- </style>
1
+ <template>
2
+ <div class="fly-regional-tenant-form-renderer">
3
+ <el-collapse v-if="sections?.length" v-model="activeNames" accordion>
4
+ <el-collapse-item :name="E_CollapsibleSections.mainForm">
5
+ <template #title>
6
+ <FlyCollapseTitleRenderer :title="mainFormTitle" />
7
+ </template>
8
+
9
+ <div style="padding: 1rem">
10
+ <slot></slot>
11
+ </div>
12
+ </el-collapse-item>
13
+
14
+ <template v-for="section in sections">
15
+ <el-collapse-item v-if="section.fields?.length" :key="section.key" :name="section.key">
16
+ <template #title>
17
+ <FlyCollapseTitleRenderer :title="section.title" />
18
+ </template>
19
+ <div style="padding: 1rem">
20
+ <div v-if="section.description" style="margin-bottom: 1.25rem">
21
+ <p style="font-size: 0.875; line-height: 1.25rem">
22
+ {{ t(section.description) }}
23
+ </p>
24
+ </div>
25
+
26
+ <FlyFormSchemaRenderer
27
+ :ref="(el) => setFormRef(el, section.key)"
28
+ v-model="section.modelValue"
29
+ :lookup-data="section.lookupData"
30
+ :form-config="section.fields"
31
+ :column-span="6"
32
+ />
33
+ </div>
34
+ </el-collapse-item>
35
+ </template>
36
+ </el-collapse>
37
+
38
+ <div v-else>
39
+ <slot></slot>
40
+ </div>
41
+ </div>
42
+ </template>
43
+
44
+ <script setup lang="ts">
45
+ import { type ComponentPublicInstance, reactive, ref } from 'vue'
46
+
47
+ import { ElCollapse, ElCollapseItem } from 'element-plus'
48
+
49
+ import { UseLocaleInjector } from '../../../../composables/UseLocaleInjector'
50
+ import '../../../../styles/element/overrides/collapse.scss'
51
+ import FlyCollapseTitleRenderer from '../../../basic/typography/FlyCollapseTitleRenderer.vue'
52
+ import type { T_FlyFormSchemaRendererInstance } from '../form-schema-renderer/FlyFormSchemaRenderer.types'
53
+ import FlyFormSchemaRenderer from '../form-schema-renderer/FlyFormSchemaRenderer.vue'
54
+
55
+ import type { T_TenantRegionalFormProps } from './FlyRegionalTenantFormRenderer.types'
56
+
57
+ enum E_CollapsibleSections {
58
+ mainForm
59
+ }
60
+
61
+ defineProps<T_TenantRegionalFormProps>()
62
+
63
+ const { t } = UseLocaleInjector()
64
+
65
+ const activeNames = ref<string | number>(E_CollapsibleSections.mainForm)
66
+ const formRefs = reactive<{ [K: string]: T_FlyFormSchemaRendererInstance }>({})
67
+
68
+ function setFormRef(formRef: Element | ComponentPublicInstance | null, key: string) {
69
+ if (formRef) {
70
+ formRefs[key] = formRef as T_FlyFormSchemaRendererInstance
71
+ }
72
+ }
73
+
74
+ async function validateForms() {
75
+ const keys = Object.keys(formRefs)
76
+ for (let index = 0; index < keys.length; index++) {
77
+ const element = formRefs[keys[index]]
78
+ const hasErrors = await element?.validateForm()
79
+ if (!hasErrors) continue
80
+ return hasErrors
81
+ }
82
+
83
+ return
84
+ }
85
+
86
+ defineExpose({
87
+ validateForms
88
+ })
89
+ </script>
90
+
91
+ <style lang="scss" scoped>
92
+ @use '../../../../styles/element/mixins/collapse.scss' as el-collapse-mixin;
93
+
94
+ .fly-regional-tenant-form-renderer {
95
+ :deep(.el-collapse) {
96
+ @include el-collapse-mixin.el-collapse-operation-style;
97
+ }
98
+ }
99
+ </style>
@@ -1 +1 @@
1
- @use '../../../../styles/element/overrides/select.scss';
1
+ @use '../../../../styles/element/overrides/select.scss';
@@ -1,25 +1,25 @@
1
- export type T_InputSelectValue = string | number | (string | number)[] | undefined
2
-
3
- export type T_InputLabelValue = {
4
- label: string
5
- value: string | number
6
- }
7
- export type T_InputSelectOption = T_InputLabelValue | (number | string)
8
- export type T_InputSelectOptionList = T_InputSelectOption[] | Record<string, T_InputLabelValue>
9
-
10
- export type T_InputSelectBase = T_InputSelect & {
11
- type: 'select'
12
- }
13
-
14
- export type T_InputSelect = {
15
- placeholder?: string
16
- /**
17
- * Attrs are passed directly to the input element as props
18
- */
19
- attrs?: {
20
- multiple?: boolean
21
- }
22
- config?: {
23
- options: T_InputSelectOptionList
24
- }
25
- }
1
+ export type T_InputSelectValue = string | number | (string | number)[] | undefined
2
+
3
+ export type T_InputLabelValue = {
4
+ label: string
5
+ value: string | number
6
+ }
7
+ export type T_InputSelectOption = T_InputLabelValue | (number | string)
8
+ export type T_InputSelectOptionList = T_InputSelectOption[] | Record<string, T_InputLabelValue>
9
+
10
+ export type T_InputSelectBase = T_InputSelect & {
11
+ type: 'select'
12
+ }
13
+
14
+ export type T_InputSelect = {
15
+ placeholder?: string
16
+ /**
17
+ * Attrs are passed directly to the input element as props
18
+ */
19
+ attrs?: {
20
+ multiple?: boolean
21
+ }
22
+ config?: {
23
+ options: T_InputSelectOptionList
24
+ }
25
+ }
@@ -1,37 +1,37 @@
1
- import { isArray, isObject } from 'lodash'
2
-
3
- import type {
4
- T_InputLabelValue,
5
- T_InputSelectOption,
6
- T_InputSelectOptionList
7
- } from './FlySelect.types'
8
-
9
- export function normalizeSelectOptionsToDict(
10
- options: T_InputSelectOptionList
11
- ): Record<string, T_InputLabelValue> {
12
- // already a dict: Record<string, {label,value}>
13
- if (!isArray(options)) {
14
- const out: Record<string, T_InputLabelValue> = {}
15
- Object.keys(options).forEach((k) => {
16
- const item = options[k]
17
- out[String(item.value)] = item
18
- })
19
- return out
20
- }
21
-
22
- // array: (string|number) OR {label,value}
23
- const out: Record<string, T_InputLabelValue> = {}
24
- options.forEach((opt: T_InputSelectOption) => {
25
- if (isObject(opt)) {
26
- const lv = opt as T_InputLabelValue
27
- out[String(lv.value)] = lv
28
- } else {
29
- // primitive option => label=value
30
- out[String(opt)] = {
31
- label: String(opt),
32
- value: opt
33
- }
34
- }
35
- })
36
- return out
37
- }
1
+ import { isArray, isObject } from 'lodash'
2
+
3
+ import type {
4
+ T_InputLabelValue,
5
+ T_InputSelectOption,
6
+ T_InputSelectOptionList
7
+ } from './FlySelect.types'
8
+
9
+ export function normalizeSelectOptionsToDict(
10
+ options: T_InputSelectOptionList
11
+ ): Record<string, T_InputLabelValue> {
12
+ // already a dict: Record<string, {label,value}>
13
+ if (!isArray(options)) {
14
+ const out: Record<string, T_InputLabelValue> = {}
15
+ Object.keys(options).forEach((k) => {
16
+ const item = options[k]
17
+ out[String(item.value)] = item
18
+ })
19
+ return out
20
+ }
21
+
22
+ // array: (string|number) OR {label,value}
23
+ const out: Record<string, T_InputLabelValue> = {}
24
+ options.forEach((opt: T_InputSelectOption) => {
25
+ if (isObject(opt)) {
26
+ const lv = opt as T_InputLabelValue
27
+ out[String(lv.value)] = lv
28
+ } else {
29
+ // primitive option => label=value
30
+ out[String(opt)] = {
31
+ label: String(opt),
32
+ value: opt
33
+ }
34
+ }
35
+ })
36
+ return out
37
+ }
@@ -1,48 +1,48 @@
1
- <template>
2
- <el-select
3
- v-model="inputProxy"
4
- style="width: 100%"
5
- v-bind="input?.attrs"
6
- filterable
7
- :placeholder="input?.placeholder && input?.placeholder"
8
- clearable
9
- @change="(val) => emit('change', val)"
10
- @blur="() => emit('blur')"
11
- @focus="() => emit('focus')"
12
- >
13
- <el-option v-for="unit in options" :key="unit.value" :value="unit.value" :label="unit.label" />
14
- </el-select>
15
- </template>
16
-
17
- <script setup lang="ts">
18
- import { computed } from 'vue'
19
-
20
- import { ElOption, ElSelect } from 'element-plus'
21
-
22
- import './FlySelect.scss'
23
- import type { T_InputSelect, T_InputSelectValue } from './FlySelect.types'
24
- import { normalizeSelectOptionsToDict } from './FlySelect.utils'
25
-
26
- const emit = defineEmits<{
27
- (e: 'update:modelValue', v: T_InputSelectValue): void
28
- (e: 'change', v: T_InputSelectValue): void
29
- (e: 'blur'): void
30
- (e: 'focus'): void
31
- }>()
32
-
33
- const props = defineProps<{
34
- modelValue?: T_InputSelectValue
35
- input?: T_InputSelect
36
- }>()
37
-
38
- const options = computed(() => normalizeSelectOptionsToDict(props.input?.config?.options || []))
39
-
40
- const inputProxy = computed({
41
- get: () => {
42
- return props.modelValue
43
- },
44
- set: (v) => {
45
- emit('update:modelValue', v)
46
- }
47
- })
48
- </script>
1
+ <template>
2
+ <el-select
3
+ v-model="inputProxy"
4
+ style="width: 100%"
5
+ v-bind="input?.attrs"
6
+ filterable
7
+ :placeholder="input?.placeholder && input?.placeholder"
8
+ clearable
9
+ @change="(val) => emit('change', val)"
10
+ @blur="() => emit('blur')"
11
+ @focus="() => emit('focus')"
12
+ >
13
+ <el-option v-for="unit in options" :key="unit.value" :value="unit.value" :label="unit.label" />
14
+ </el-select>
15
+ </template>
16
+
17
+ <script setup lang="ts">
18
+ import { computed } from 'vue'
19
+
20
+ import { ElOption, ElSelect } from 'element-plus'
21
+
22
+ import './FlySelect.scss'
23
+ import type { T_InputSelect, T_InputSelectValue } from './FlySelect.types'
24
+ import { normalizeSelectOptionsToDict } from './FlySelect.utils'
25
+
26
+ const emit = defineEmits<{
27
+ (e: 'update:modelValue', v: T_InputSelectValue): void
28
+ (e: 'change', v: T_InputSelectValue): void
29
+ (e: 'blur'): void
30
+ (e: 'focus'): void
31
+ }>()
32
+
33
+ const props = defineProps<{
34
+ modelValue?: T_InputSelectValue
35
+ input?: T_InputSelect
36
+ }>()
37
+
38
+ const options = computed(() => normalizeSelectOptionsToDict(props.input?.config?.options || []))
39
+
40
+ const inputProxy = computed({
41
+ get: () => {
42
+ return props.modelValue
43
+ },
44
+ set: (v) => {
45
+ emit('update:modelValue', v)
46
+ }
47
+ })
48
+ </script>
@@ -1 +1 @@
1
- @use 'element-plus/theme-chalk/src/input.scss';
1
+ @use 'element-plus/theme-chalk/src/input.scss';
@@ -1,20 +1,20 @@
1
- export type T_InputTextValues = string | number | undefined
2
-
3
- export type T_InputTextBase = T_InputText & {
4
- type: 'text' | 'textarea'
5
- }
6
-
7
- export type T_InputText = {
8
- placeholder?: string
9
- /**
10
- * Attrs are passed directly to the input element as props
11
- */
12
- attrs?: {
13
- minlength?: number
14
- maxlength?: number
15
- showWordLimit?: boolean
16
- type?: string
17
- rows?: number
18
- }
19
- mask?: string // example ###-###.@ - uses Maska: https://github.com/beholdr/maska
20
- }
1
+ export type T_InputTextValues = string | number | undefined
2
+
3
+ export type T_InputTextBase = T_InputText & {
4
+ type: 'text' | 'textarea'
5
+ }
6
+
7
+ export type T_InputText = {
8
+ placeholder?: string
9
+ /**
10
+ * Attrs are passed directly to the input element as props
11
+ */
12
+ attrs?: {
13
+ minlength?: number
14
+ maxlength?: number
15
+ showWordLimit?: boolean
16
+ type?: string
17
+ rows?: number
18
+ }
19
+ mask?: string // example ###-###.@ - uses Maska: https://github.com/beholdr/maska
20
+ }