@flyanra/vue-core 1.2.1 → 1.3.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 (64) hide show
  1. package/dist/types/components/general/fly-icon-v2/index.d.ts +1 -1
  2. package/dist/types/composables/index.d.ts +4 -3
  3. package/dist/types/composables/useFeatureGate/index.d.ts +1 -0
  4. package/dist/types/composables/useFeatureGate/useFeatureGate.d.ts +6 -0
  5. package/dist/types/composables/useFormHider/index.d.ts +1 -0
  6. package/dist/types/composables/useFormHider/useFormHider.d.ts +8 -0
  7. package/dist/types/composables/useLocaleInjector/index.d.ts +2 -0
  8. package/dist/types/composables/useSidebarActiveIndex/index.d.ts +1 -0
  9. package/dist/types/composables/{useSidebarActiveIndex.d.ts → useSidebarActiveIndex/useSidebarActiveIndex.d.ts} +1 -1
  10. package/package.json +4 -3
  11. package/src/components/basic/fly-button/FlyButton.types.ts +28 -28
  12. package/src/components/basic/fly-button/FlyButton.vue +178 -178
  13. package/src/components/basic/typography/FlyCollapseTitleRenderer.vue +46 -46
  14. package/src/components/feedback/tooltip/FlyInfoTooltip.vue +49 -49
  15. package/src/components/feedback/tooltip/FlyTooltip.element.scss +4 -4
  16. package/src/components/feedback/tooltip/FlyTooltip.vue +60 -60
  17. package/src/components/form/form.utils.ts +72 -72
  18. package/src/components/form/index.ts +6 -6
  19. package/src/components/form/input-renderers/boolean/FlyBoolean.vue +48 -48
  20. package/src/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.vue +48 -48
  21. package/src/components/form/input-renderers/form-item-renderer/index.ts +4 -4
  22. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.ts +3 -3
  23. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.utils.ts +221 -221
  24. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.vue +75 -75
  25. package/src/components/form/input-renderers/form-schema-renderer/UseFormSchemaRenderer.ts +97 -97
  26. package/src/components/form/input-renderers/input-renderer/FlyInputRenderer.vue +49 -49
  27. package/src/components/form/input-renderers/input-renderer/index.ts +4 -4
  28. package/src/components/form/input-renderers/input-renderer.utils.ts +18 -18
  29. package/src/components/form/input-renderers/number/FlyNumber.vue +64 -64
  30. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.types.ts +15 -15
  31. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.vue +99 -99
  32. package/src/components/form/input-renderers/select/FlySelect.scss +1 -1
  33. package/src/components/form/input-renderers/select/FlySelect.utils.ts +37 -37
  34. package/src/components/form/input-renderers/text/FlyText.vue +70 -70
  35. package/src/components/form/input-renderers/value-unit/FlyValueUnit.vue +102 -102
  36. package/src/components/form/input-validators.ts +99 -99
  37. package/src/components/general/fly-icon-v2/FlyIconV2.types.ts +6 -6
  38. package/src/components/general/fly-icon-v2/FlyIconV2.vue +17 -17
  39. package/src/components/general/fly-icon-v2/index.ts +6 -6
  40. package/src/components/general/index.ts +5 -5
  41. package/src/components/index.ts +7 -7
  42. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.ts +8 -8
  43. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue +55 -55
  44. package/src/components/navigation/menu/fly-sidebar/FlySidebar.types.ts +49 -49
  45. package/src/components/navigation/menu/fly-sidebar/FlySidebar.vue +146 -146
  46. package/src/components/navigation/menu/fly-sidebar/FlySidebarNode.vue +47 -47
  47. package/src/composables/index.ts +4 -4
  48. package/src/composables/useFeatureGate/index.ts +1 -0
  49. package/src/composables/useFeatureGate/useFeatureGate.ts +19 -0
  50. package/src/composables/useFormHider/index.ts +1 -0
  51. package/src/composables/useFormHider/useFormHider.ts +37 -0
  52. package/src/composables/{UseLocaleInjector.ts → useLocaleInjector/UseLocaleInjector.ts} +37 -37
  53. package/src/composables/useLocaleInjector/index.ts +2 -0
  54. package/src/composables/useSidebarActiveIndex/index.ts +1 -0
  55. package/src/composables/{useSidebarActiveIndex.ts → useSidebarActiveIndex/useSidebarActiveIndex.ts} +103 -103
  56. package/src/styles/element/mixins/collapse.scss +61 -61
  57. package/src/styles/element/overrides/form.scss +121 -121
  58. package/src/styles/element/overrides/message-box.scss +2 -2
  59. package/src/styles/element/overrides/radio.scss +2 -2
  60. package/src/styles/element/overrides/select.scss +9 -9
  61. package/src/utils/index.ts +2 -2
  62. package/src/utils/pure-functions.ts +15 -15
  63. package/src/utils/validators.ts +81 -81
  64. /package/dist/types/composables/{UseLocaleInjector.d.ts → useLocaleInjector/UseLocaleInjector.d.ts} +0 -0
@@ -1,97 +1,97 @@
1
- import { type Ref, computed, ref, watch } from 'vue'
2
-
3
- import type { FormInstance } from 'element-plus'
4
-
5
- import { defaultsDeep } from 'lodash-es'
6
-
7
- import { genericFormValidator } from '../../form.utils'
8
- import type { T_FormSchemaLookupData, T_InputSchema } from '../form-schema.types'
9
- import type { T_FormSchemaRendererConfig, T_InputRendererBase } from '../input-renderer.types'
10
-
11
- import {
12
- generateInputFromFormSchema,
13
- getValidatorsFromInputFields
14
- } from './FlyFormSchemaRenderer.utils'
15
-
16
- export type T_FormSchemaRendererProps = {
17
- formConfig: T_InputSchema[]
18
- lookupData?: T_FormSchemaLookupData
19
- modelValue?: Record<string, unknown>
20
- disabled?: boolean
21
- }
22
-
23
- export type T_FormSchemaRendererEmits = {
24
- (e: 'update:modelValue', value: T_FormSchemaRendererProps['modelValue']): void
25
- }
26
-
27
- type ConfigFormCompArgs = {
28
- formRef: Ref<FormInstance | undefined>
29
- props: T_FormSchemaRendererProps
30
- emit: T_FormSchemaRendererEmits
31
- }
32
-
33
- export function UseFormSchemaRenderer(args: ConfigFormCompArgs) {
34
- const fallbackForm = {}
35
-
36
- const formProxy = computed<Record<string, unknown>>({
37
- get: () => args.props.modelValue || fallbackForm,
38
- set: (val) => args.emit('update:modelValue', val)
39
- })
40
-
41
- const generatedForm = ref<T_FormSchemaRendererConfig>()
42
- const dynamicFormGenerated = ref(false)
43
-
44
- const dynamicValidators = computed(() => {
45
- const validators =
46
- generatedForm.value && getValidatorsFromInputFields(generatedForm.value.inputs)
47
-
48
- return validators || {}
49
- })
50
-
51
- async function validateForm() {
52
- return args.formRef.value && genericFormValidator(args.formRef.value)
53
- }
54
-
55
- function generateDynamicForm() {
56
- try {
57
- if (dynamicFormGenerated.value) return
58
-
59
- const inputs: T_InputRendererBase[] = []
60
- const baseForm: T_FormSchemaRendererConfig['baseForm'] = {}
61
-
62
- args.props.formConfig.forEach((f) => {
63
- const i = generateInputFromFormSchema(f, args.props.lookupData)
64
- if (i) {
65
- inputs.push(i)
66
- baseForm[i.key] = f.default_value
67
- }
68
- })
69
-
70
- dynamicFormGenerated.value = true
71
-
72
- defaultsDeep(args.props.modelValue, baseForm)
73
-
74
- generatedForm.value = { inputs, baseForm }
75
- } catch (error) {
76
- console.error(error)
77
- }
78
- }
79
-
80
- watch(
81
- () => args.props.formConfig,
82
- () => {
83
- dynamicFormGenerated.value = false
84
- generateDynamicForm()
85
- },
86
- {
87
- immediate: true
88
- }
89
- )
90
-
91
- return {
92
- dynamicValidators,
93
- formProxy,
94
- generatedForm,
95
- validateForm
96
- }
97
- }
1
+ import { type Ref, computed, ref, watch } from 'vue'
2
+
3
+ import type { FormInstance } from 'element-plus'
4
+
5
+ import { defaultsDeep } from 'lodash-es'
6
+
7
+ import { genericFormValidator } from '../../form.utils'
8
+ import type { T_FormSchemaLookupData, T_InputSchema } from '../form-schema.types'
9
+ import type { T_FormSchemaRendererConfig, T_InputRendererBase } from '../input-renderer.types'
10
+
11
+ import {
12
+ generateInputFromFormSchema,
13
+ getValidatorsFromInputFields
14
+ } from './FlyFormSchemaRenderer.utils'
15
+
16
+ export type T_FormSchemaRendererProps = {
17
+ formConfig: T_InputSchema[]
18
+ lookupData?: T_FormSchemaLookupData
19
+ modelValue?: Record<string, unknown>
20
+ disabled?: boolean
21
+ }
22
+
23
+ export type T_FormSchemaRendererEmits = {
24
+ (e: 'update:modelValue', value: T_FormSchemaRendererProps['modelValue']): void
25
+ }
26
+
27
+ type ConfigFormCompArgs = {
28
+ formRef: Ref<FormInstance | undefined>
29
+ props: T_FormSchemaRendererProps
30
+ emit: T_FormSchemaRendererEmits
31
+ }
32
+
33
+ export function UseFormSchemaRenderer(args: ConfigFormCompArgs) {
34
+ const fallbackForm = {}
35
+
36
+ const formProxy = computed<Record<string, unknown>>({
37
+ get: () => args.props.modelValue || fallbackForm,
38
+ set: (val) => args.emit('update:modelValue', val)
39
+ })
40
+
41
+ const generatedForm = ref<T_FormSchemaRendererConfig>()
42
+ const dynamicFormGenerated = ref(false)
43
+
44
+ const dynamicValidators = computed(() => {
45
+ const validators =
46
+ generatedForm.value && getValidatorsFromInputFields(generatedForm.value.inputs)
47
+
48
+ return validators || {}
49
+ })
50
+
51
+ async function validateForm() {
52
+ return args.formRef.value && genericFormValidator(args.formRef.value)
53
+ }
54
+
55
+ function generateDynamicForm() {
56
+ try {
57
+ if (dynamicFormGenerated.value) return
58
+
59
+ const inputs: T_InputRendererBase[] = []
60
+ const baseForm: T_FormSchemaRendererConfig['baseForm'] = {}
61
+
62
+ args.props.formConfig.forEach((f) => {
63
+ const i = generateInputFromFormSchema(f, args.props.lookupData)
64
+ if (i) {
65
+ inputs.push(i)
66
+ baseForm[i.key] = f.default_value
67
+ }
68
+ })
69
+
70
+ dynamicFormGenerated.value = true
71
+
72
+ defaultsDeep(args.props.modelValue, baseForm)
73
+
74
+ generatedForm.value = { inputs, baseForm }
75
+ } catch (error) {
76
+ console.error(error)
77
+ }
78
+ }
79
+
80
+ watch(
81
+ () => args.props.formConfig,
82
+ () => {
83
+ dynamicFormGenerated.value = false
84
+ generateDynamicForm()
85
+ },
86
+ {
87
+ immediate: true
88
+ }
89
+ )
90
+
91
+ return {
92
+ dynamicValidators,
93
+ formProxy,
94
+ generatedForm,
95
+ validateForm
96
+ }
97
+ }
@@ -1,49 +1,49 @@
1
- <template>
2
- <div style="width: 100%">
3
- <component
4
- :is="map[input.type]"
5
- :model-value="modelValue"
6
- :input="input"
7
- @change="(v: unknown) => emit('change', v)"
8
- @update:model-value="(v: unknown) => emit('update:modelValue', v)"
9
- @blur="emit('blur')"
10
- @focus="emit('focus')"
11
- />
12
- </div>
13
- </template>
14
-
15
- <script setup lang="ts">
16
- import FlyBoolean from '../boolean/FlyBoolean.vue'
17
- import FlyDateTime from '../date-time/FlyDateTime.vue'
18
- import type {
19
- T_DynamicInputComponent,
20
- T_InputRendererBase,
21
- T_InputTypes
22
- } from '../input-renderer.types'
23
- import FlyNumber from '../number/FlyNumber.vue'
24
- import FlySelect from '../select/FlySelect.vue'
25
- import FlyText from '../text/FlyText.vue'
26
- import FlyValueUnit from '../value-unit/FlyValueUnit.vue'
27
-
28
- const emit = defineEmits<{
29
- (e: 'update:modelValue', v: unknown): void
30
- (e: 'change', v: unknown): void
31
- (e: 'blur'): void
32
- (e: 'focus'): void
33
- }>()
34
-
35
- defineProps<{
36
- modelValue?: unknown
37
- input: T_InputRendererBase
38
- }>()
39
-
40
- const map: Record<T_InputTypes, T_DynamicInputComponent> = {
41
- text: FlyText,
42
- textarea: FlyText,
43
- number: FlyNumber,
44
- valueUnit: FlyValueUnit,
45
- select: FlySelect,
46
- boolean: FlyBoolean,
47
- dateTime: FlyDateTime
48
- }
49
- </script>
1
+ <template>
2
+ <div style="width: 100%">
3
+ <component
4
+ :is="map[input.type]"
5
+ :model-value="modelValue"
6
+ :input="input"
7
+ @change="(v: unknown) => emit('change', v)"
8
+ @update:model-value="(v: unknown) => emit('update:modelValue', v)"
9
+ @blur="emit('blur')"
10
+ @focus="emit('focus')"
11
+ />
12
+ </div>
13
+ </template>
14
+
15
+ <script setup lang="ts">
16
+ import FlyBoolean from '../boolean/FlyBoolean.vue'
17
+ import FlyDateTime from '../date-time/FlyDateTime.vue'
18
+ import type {
19
+ T_DynamicInputComponent,
20
+ T_InputRendererBase,
21
+ T_InputTypes
22
+ } from '../input-renderer.types'
23
+ import FlyNumber from '../number/FlyNumber.vue'
24
+ import FlySelect from '../select/FlySelect.vue'
25
+ import FlyText from '../text/FlyText.vue'
26
+ import FlyValueUnit from '../value-unit/FlyValueUnit.vue'
27
+
28
+ const emit = defineEmits<{
29
+ (e: 'update:modelValue', v: unknown): void
30
+ (e: 'change', v: unknown): void
31
+ (e: 'blur'): void
32
+ (e: 'focus'): void
33
+ }>()
34
+
35
+ defineProps<{
36
+ modelValue?: unknown
37
+ input: T_InputRendererBase
38
+ }>()
39
+
40
+ const map: Record<T_InputTypes, T_DynamicInputComponent> = {
41
+ text: FlyText,
42
+ textarea: FlyText,
43
+ number: FlyNumber,
44
+ valueUnit: FlyValueUnit,
45
+ select: FlySelect,
46
+ boolean: FlyBoolean,
47
+ dateTime: FlyDateTime
48
+ }
49
+ </script>
@@ -1,4 +1,4 @@
1
- import FlyInputRenderer from './FlyInputRenderer.vue'
2
-
3
- export default FlyInputRenderer
4
- export { FlyInputRenderer }
1
+ import FlyInputRenderer from './FlyInputRenderer.vue'
2
+
3
+ export default FlyInputRenderer
4
+ export { FlyInputRenderer }
@@ -1,18 +1,18 @@
1
- import { isNil } from 'lodash-es'
2
-
3
- import type { T_InputTypes } from './input-renderer.types'
4
-
5
- export function getInputDisplayValue(v: unknown, inputType: T_InputTypes) {
6
- switch (inputType) {
7
- case 'number':
8
- if (isNil(v)) return ''
9
- return Number(v)
10
-
11
- case 'text':
12
- default:
13
- if (isNil(v)) {
14
- return ''
15
- }
16
- return String(v)
17
- }
18
- }
1
+ import { isNil } from 'lodash-es'
2
+
3
+ import type { T_InputTypes } from './input-renderer.types'
4
+
5
+ export function getInputDisplayValue(v: unknown, inputType: T_InputTypes) {
6
+ switch (inputType) {
7
+ case 'number':
8
+ if (isNil(v)) return ''
9
+ return Number(v)
10
+
11
+ case 'text':
12
+ default:
13
+ if (isNil(v)) {
14
+ return ''
15
+ }
16
+ return String(v)
17
+ }
18
+ }
@@ -1,64 +1,64 @@
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, watch } 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
-
45
- emit('update:modelValue', parsed)
46
- emit('change', parsed)
47
- }
48
- })
49
-
50
- watch(
51
- () => props.modelValue,
52
- () => {
53
- const parsed = displayToNumber(props.modelValue)
54
-
55
- if (parsed !== props.modelValue) {
56
- emit('update:modelValue', parsed)
57
- emit('change', parsed)
58
- }
59
- },
60
- {
61
- immediate: true
62
- }
63
- )
64
- </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, watch } 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
+
45
+ emit('update:modelValue', parsed)
46
+ emit('change', parsed)
47
+ }
48
+ })
49
+
50
+ watch(
51
+ () => props.modelValue,
52
+ () => {
53
+ const parsed = displayToNumber(props.modelValue)
54
+
55
+ if (parsed !== props.modelValue) {
56
+ emit('update:modelValue', parsed)
57
+ emit('change', parsed)
58
+ }
59
+ },
60
+ {
61
+ immediate: true
62
+ }
63
+ )
64
+ </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
+ }