@flyanra/vue-core 1.0.1 → 1.2.0

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 (54) hide show
  1. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebar.types.d.ts +14 -1
  2. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebar.vue.d.ts +10 -4
  3. package/dist/types/composables/UseLocaleInjector.d.ts +7 -1
  4. package/dist/types/composables/index.d.ts +3 -1
  5. package/dist/types/composables/useSidebarActiveIndex.d.ts +66 -0
  6. package/dist/types/utils/index.d.ts +2 -0
  7. package/package.json +158 -146
  8. package/src/components/basic/fly-button/FlyButton.types.ts +28 -28
  9. package/src/components/basic/fly-button/FlyButton.vue +178 -178
  10. package/src/components/basic/typography/FlyCollapseTitleRenderer.vue +46 -46
  11. package/src/components/feedback/tooltip/FlyInfoTooltip.vue +49 -49
  12. package/src/components/feedback/tooltip/FlyTooltip.element.scss +4 -4
  13. package/src/components/feedback/tooltip/FlyTooltip.vue +60 -60
  14. package/src/components/form/form.utils.ts +72 -72
  15. package/src/components/form/index.ts +6 -6
  16. package/src/components/form/input-renderers/boolean/FlyBoolean.vue +48 -48
  17. package/src/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.vue +48 -48
  18. package/src/components/form/input-renderers/form-item-renderer/index.ts +4 -4
  19. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.ts +3 -3
  20. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.utils.ts +221 -221
  21. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.vue +75 -75
  22. package/src/components/form/input-renderers/form-schema-renderer/UseFormSchemaRenderer.ts +97 -97
  23. package/src/components/form/input-renderers/input-renderer/FlyInputRenderer.vue +49 -49
  24. package/src/components/form/input-renderers/input-renderer/index.ts +4 -4
  25. package/src/components/form/input-renderers/input-renderer.utils.ts +18 -18
  26. package/src/components/form/input-renderers/number/FlyNumber.vue +64 -64
  27. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.types.ts +15 -15
  28. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.vue +99 -99
  29. package/src/components/form/input-renderers/select/FlySelect.scss +1 -1
  30. package/src/components/form/input-renderers/select/FlySelect.utils.ts +37 -37
  31. package/src/components/form/input-renderers/text/FlyText.vue +70 -70
  32. package/src/components/form/input-renderers/value-unit/FlyValueUnit.vue +102 -102
  33. package/src/components/form/input-validators.ts +99 -99
  34. package/src/components/general/fly-icon-v2/FlyIconV2.types.ts +6 -6
  35. package/src/components/general/fly-icon-v2/FlyIconV2.vue +17 -17
  36. package/src/components/general/fly-icon-v2/index.ts +6 -6
  37. package/src/components/general/index.ts +5 -5
  38. package/src/components/index.ts +7 -7
  39. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.ts +8 -8
  40. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue +55 -55
  41. package/src/components/navigation/menu/fly-sidebar/FlySidebar.types.ts +49 -36
  42. package/src/components/navigation/menu/fly-sidebar/FlySidebar.vue +146 -151
  43. package/src/components/navigation/menu/fly-sidebar/FlySidebarNode.vue +47 -47
  44. package/src/composables/UseLocaleInjector.ts +37 -0
  45. package/src/composables/index.ts +4 -0
  46. package/src/composables/useSidebarActiveIndex.ts +103 -0
  47. package/src/styles/element/mixins/collapse.scss +61 -61
  48. package/src/styles/element/overrides/form.scss +121 -121
  49. package/src/styles/element/overrides/message-box.scss +2 -2
  50. package/src/styles/element/overrides/radio.scss +2 -2
  51. package/src/styles/element/overrides/select.scss +9 -9
  52. package/src/utils/index.ts +2 -0
  53. package/src/utils/pure-functions.ts +15 -0
  54. package/src/utils/validators.ts +81 -0
@@ -1,121 +1,121 @@
1
- @use 'element-plus/theme-chalk/src/form.scss';
2
- @use 'element-plus/theme-chalk/src/form-item.scss';
3
- @use 'element-plus/theme-chalk/src/input.scss';
4
- @use 'element-plus/theme-chalk/src/input-number.scss';
5
- @use 'element-plus/theme-chalk/src/input-tag.scss';
6
- @use './select.scss';
7
- @use './radio.scss';
8
- @use 'element-plus/theme-chalk/src/checkbox.scss';
9
- @use './date-time.scss';
10
- @use 'element-plus/theme-chalk/src/switch.scss';
11
- @use 'element-plus/theme-chalk/src/icon.scss';
12
-
13
- :root {
14
- .el-input,
15
- .el-textarea,
16
- .el-date-editor {
17
- --el-input-border-color: var(--anra-form-input-border);
18
- }
19
- .el-input-tag,
20
- .el-select {
21
- --el-border-color: var(--anra-form-input-border);
22
- }
23
- .el-switch__core {
24
- --el-switch-border-color: var(--anra-form-input-border);
25
- }
26
- }
27
-
28
- .el-form-item {
29
- &__error,
30
- .el-form-item__label {
31
- --el-color-danger: var(--anra-form-item-error-color);
32
- }
33
-
34
- &.hide-label {
35
- .el-form-item__label {
36
- display: none;
37
- }
38
- }
39
-
40
- .el-form-item__content {
41
- flex-direction: column;
42
- align-items: start;
43
-
44
- .el-form-item__error {
45
- position: relative;
46
- }
47
- }
48
-
49
- &.inline-form-item {
50
- .el-form-item__label {
51
- flex-grow: 1;
52
- }
53
- .el-form-item__content {
54
- flex-basis: auto;
55
- flex-grow: 0;
56
- flex-shrink: 0;
57
- }
58
- }
59
- }
60
-
61
- .el-form-item.is-error .el-input__wrapper,
62
- .el-form-item.is-error .el-input__wrapper:hover,
63
- .el-form-item.is-error .el-input__wrapper:focus,
64
- .el-form-item.is-error .el-input__wrapper.is-focus,
65
- .el-form-item.is-error .el-textarea__inner,
66
- .el-form-item.is-error .el-textarea__inner:hover,
67
- .el-form-item.is-error .el-textarea__inner:focus,
68
- .el-form-item.is-error .el-textarea__inner.is-focus,
69
- .el-form-item.is-error .el-select__wrapper,
70
- .el-form-item.is-error .el-select__wrapper:hover,
71
- .el-form-item.is-error .el-select__wrapper:focus,
72
- .el-form-item.is-error .el-select__wrapper.is-focus,
73
- .el-form-item.is-error .el-input-tag__wrapper,
74
- .el-form-item.is-error .el-input-tag__wrapper:hover,
75
- .el-form-item.is-error .el-input-tag__wrapper:focus,
76
- .el-form-item.is-error .el-input-tag__wrapper.is-focus {
77
- --el-color-danger: var(--anra-form-item-error-color);
78
- }
79
-
80
- .el-select__wrapper {
81
- --el-fill-color-blank: var(--anra-bg-20);
82
-
83
- &.is-disabled {
84
- background-color: var(--anra-disabled-bg);
85
- }
86
- }
87
-
88
- .el-input-tag {
89
- &.el-input-tag__wrapper {
90
- background-color: var(--anra-bg-20);
91
- }
92
- .el-input-tag__input {
93
- background-color: var(--anra-bg-20);
94
- }
95
- }
96
-
97
- .el-radio-group {
98
- &.fill-available-space {
99
- width: 100%;
100
- display: flex;
101
- .el-radio-button {
102
- flex: 1;
103
- &__inner {
104
- width: 100%;
105
- }
106
- }
107
- }
108
- }
109
-
110
- .el-input-number {
111
- width: 100%;
112
- }
113
-
114
- .el-form-item.is-required:not(.is-no-asterisk).asterisk-left > .el-form-item__label:before,
115
- .el-form-item.is-required:not(.is-no-asterisk).asterisk-left
116
- > .el-form-item__label-wrap
117
- > .el-form-item__label:before {
118
- font-size: 1rem;
119
- line-height: 1px;
120
- font-weight: bolder;
121
- }
1
+ @use 'element-plus/theme-chalk/src/form.scss';
2
+ @use 'element-plus/theme-chalk/src/form-item.scss';
3
+ @use 'element-plus/theme-chalk/src/input.scss';
4
+ @use 'element-plus/theme-chalk/src/input-number.scss';
5
+ @use 'element-plus/theme-chalk/src/input-tag.scss';
6
+ @use './select.scss';
7
+ @use './radio.scss';
8
+ @use 'element-plus/theme-chalk/src/checkbox.scss';
9
+ @use './date-time.scss';
10
+ @use 'element-plus/theme-chalk/src/switch.scss';
11
+ @use 'element-plus/theme-chalk/src/icon.scss';
12
+
13
+ :root {
14
+ .el-input,
15
+ .el-textarea,
16
+ .el-date-editor {
17
+ --el-input-border-color: var(--anra-form-input-border);
18
+ }
19
+ .el-input-tag,
20
+ .el-select {
21
+ --el-border-color: var(--anra-form-input-border);
22
+ }
23
+ .el-switch__core {
24
+ --el-switch-border-color: var(--anra-form-input-border);
25
+ }
26
+ }
27
+
28
+ .el-form-item {
29
+ &__error,
30
+ .el-form-item__label {
31
+ --el-color-danger: var(--anra-form-item-error-color);
32
+ }
33
+
34
+ &.hide-label {
35
+ .el-form-item__label {
36
+ display: none;
37
+ }
38
+ }
39
+
40
+ .el-form-item__content {
41
+ flex-direction: column;
42
+ align-items: start;
43
+
44
+ .el-form-item__error {
45
+ position: relative;
46
+ }
47
+ }
48
+
49
+ &.inline-form-item {
50
+ .el-form-item__label {
51
+ flex-grow: 1;
52
+ }
53
+ .el-form-item__content {
54
+ flex-basis: auto;
55
+ flex-grow: 0;
56
+ flex-shrink: 0;
57
+ }
58
+ }
59
+ }
60
+
61
+ .el-form-item.is-error .el-input__wrapper,
62
+ .el-form-item.is-error .el-input__wrapper:hover,
63
+ .el-form-item.is-error .el-input__wrapper:focus,
64
+ .el-form-item.is-error .el-input__wrapper.is-focus,
65
+ .el-form-item.is-error .el-textarea__inner,
66
+ .el-form-item.is-error .el-textarea__inner:hover,
67
+ .el-form-item.is-error .el-textarea__inner:focus,
68
+ .el-form-item.is-error .el-textarea__inner.is-focus,
69
+ .el-form-item.is-error .el-select__wrapper,
70
+ .el-form-item.is-error .el-select__wrapper:hover,
71
+ .el-form-item.is-error .el-select__wrapper:focus,
72
+ .el-form-item.is-error .el-select__wrapper.is-focus,
73
+ .el-form-item.is-error .el-input-tag__wrapper,
74
+ .el-form-item.is-error .el-input-tag__wrapper:hover,
75
+ .el-form-item.is-error .el-input-tag__wrapper:focus,
76
+ .el-form-item.is-error .el-input-tag__wrapper.is-focus {
77
+ --el-color-danger: var(--anra-form-item-error-color);
78
+ }
79
+
80
+ .el-select__wrapper {
81
+ --el-fill-color-blank: var(--anra-bg-20);
82
+
83
+ &.is-disabled {
84
+ background-color: var(--anra-disabled-bg);
85
+ }
86
+ }
87
+
88
+ .el-input-tag {
89
+ &.el-input-tag__wrapper {
90
+ background-color: var(--anra-bg-20);
91
+ }
92
+ .el-input-tag__input {
93
+ background-color: var(--anra-bg-20);
94
+ }
95
+ }
96
+
97
+ .el-radio-group {
98
+ &.fill-available-space {
99
+ width: 100%;
100
+ display: flex;
101
+ .el-radio-button {
102
+ flex: 1;
103
+ &__inner {
104
+ width: 100%;
105
+ }
106
+ }
107
+ }
108
+ }
109
+
110
+ .el-input-number {
111
+ width: 100%;
112
+ }
113
+
114
+ .el-form-item.is-required:not(.is-no-asterisk).asterisk-left > .el-form-item__label:before,
115
+ .el-form-item.is-required:not(.is-no-asterisk).asterisk-left
116
+ > .el-form-item__label-wrap
117
+ > .el-form-item__label:before {
118
+ font-size: 1rem;
119
+ line-height: 1px;
120
+ font-weight: bolder;
121
+ }
@@ -1,2 +1,2 @@
1
- @use 'element-plus/theme-chalk/src/overlay.scss' as *;
2
- @use 'element-plus/theme-chalk/src/message-box.scss' as *;
1
+ @use 'element-plus/theme-chalk/src/overlay.scss' as *;
2
+ @use 'element-plus/theme-chalk/src/message-box.scss' as *;
@@ -1,2 +1,2 @@
1
- @use 'element-plus/theme-chalk/src/radio.scss';
2
- @use 'element-plus/theme-chalk/src/radio-group.scss';
1
+ @use 'element-plus/theme-chalk/src/radio.scss';
2
+ @use 'element-plus/theme-chalk/src/radio-group.scss';
@@ -1,9 +1,9 @@
1
- @use 'element-plus/theme-chalk/src/select.scss';
2
- @use 'element-plus/theme-chalk/src/option.scss';
3
-
4
- @use 'element-plus/theme-chalk/src/input.scss';
5
- @use 'element-plus/theme-chalk/src/tag.scss';
6
-
7
- @use 'element-plus/theme-chalk/src/popper.scss';
8
- @use 'element-plus/theme-chalk/src/scrollbar.scss';
9
- @use 'element-plus/theme-chalk/src/icon.scss';
1
+ @use 'element-plus/theme-chalk/src/select.scss';
2
+ @use 'element-plus/theme-chalk/src/option.scss';
3
+
4
+ @use 'element-plus/theme-chalk/src/input.scss';
5
+ @use 'element-plus/theme-chalk/src/tag.scss';
6
+
7
+ @use 'element-plus/theme-chalk/src/popper.scss';
8
+ @use 'element-plus/theme-chalk/src/scrollbar.scss';
9
+ @use 'element-plus/theme-chalk/src/icon.scss';
@@ -0,0 +1,2 @@
1
+ export { checkRange } from './pure-functions'
2
+ export { checkInputRange, isRequiredError } from './validators'
@@ -0,0 +1,15 @@
1
+ import { isArray, isNumber, isString } from 'lodash-es'
2
+
3
+ export function checkRange(value: unknown, min = 0, max = Infinity) {
4
+ if (isString(value) || isArray(value)) {
5
+ if (value.length < min || value.length > max) {
6
+ return false
7
+ }
8
+ } else if (isNumber(value)) {
9
+ if (value < min || value > max) {
10
+ return false
11
+ }
12
+ }
13
+
14
+ return true
15
+ }
@@ -0,0 +1,81 @@
1
+ import type { FormItemRule } from 'element-plus'
2
+
3
+ import { UseLocaleInjector } from '../composables/UseLocaleInjector'
4
+
5
+ import { checkRange } from './pure-functions'
6
+
7
+ export const isRequiredError = (languageKey: string) => {
8
+ const { t } = UseLocaleInjector()
9
+
10
+ return t('validation.fieldIsRequired', {
11
+ fieldName: t(languageKey)
12
+ })
13
+ }
14
+
15
+ type RangeObject = {
16
+ min?: number
17
+ max?: number
18
+ }
19
+ export const checkInputRange = (
20
+ languageKey: string = 'validation.value',
21
+ range: RangeObject,
22
+ valueTypeLanguageKey: string = 'validation.valueTypes.characters',
23
+ errorMessage?: string
24
+ ): FormItemRule['validator'] => {
25
+ const { t } = UseLocaleInjector()
26
+
27
+ // used in element form validator
28
+ return (_rule: unknown, value: unknown, callback: (_?: string | Error | undefined) => void) => {
29
+ // used in element form validator
30
+ if (!checkRange(value, range.min, range.max)) {
31
+ let message = errorMessage
32
+ const l = t ? t(languageKey) : languageKey
33
+
34
+ if (!message) {
35
+ if (range.min === range.max) {
36
+ message = `${
37
+ t
38
+ ? t('validation.valueMustBe', {
39
+ value: l,
40
+ validValue: `${range.max} ${t(valueTypeLanguageKey)}`
41
+ })
42
+ : 'validation.valueMustBe'
43
+ }`
44
+ } else if (range.min && !range.max) {
45
+ message = `${
46
+ t
47
+ ? t('validation.mustBeGreaterEqual', {
48
+ value: l,
49
+ validRange: `${range.min} ${t(valueTypeLanguageKey)}`
50
+ })
51
+ : 'validation.mustBeGreaterEqual'
52
+ }`
53
+ } else if (!range.min && range.max) {
54
+ message = `${
55
+ t
56
+ ? t('validation.cannotExceed', {
57
+ value: l,
58
+ validRange: `${range.max} ${t(valueTypeLanguageKey)}`
59
+ })
60
+ : 'validation.cannotExceed'
61
+ }`
62
+ } else if (range.min && range.max) {
63
+ message = `${
64
+ t
65
+ ? t('validation.mustBetween', {
66
+ value: l,
67
+ minRange: `${range.min} ${t(valueTypeLanguageKey)}`,
68
+ maxRange: `${range.max} ${t(valueTypeLanguageKey)}`,
69
+ valueType: `${t(valueTypeLanguageKey)}`
70
+ })
71
+ : 'validation.mustBetween'
72
+ }`
73
+ }
74
+ }
75
+
76
+ return callback(new Error(message))
77
+ }
78
+
79
+ return callback()
80
+ }
81
+ }