@flyanra/vue-core 1.2.0 → 1.3.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 (66) hide show
  1. package/dist/types/composables/index.d.ts +4 -3
  2. package/dist/types/composables/useFeatureGate/index.d.ts +1 -0
  3. package/dist/types/composables/useFeatureGate/useFeatureGate.d.ts +6 -0
  4. package/dist/types/composables/useFormHider/index.d.ts +1 -0
  5. package/dist/types/composables/useFormHider/useFormHider.d.ts +8 -0
  6. package/dist/types/composables/useLocaleInjector/index.d.ts +2 -0
  7. package/dist/types/composables/useSidebarActiveIndex/index.d.ts +1 -0
  8. package/dist/types/composables/{useSidebarActiveIndex.d.ts → useSidebarActiveIndex/useSidebarActiveIndex.d.ts} +1 -1
  9. package/package.json +158 -158
  10. package/src/components/basic/fly-button/FlyButton.types.ts +28 -28
  11. package/src/components/basic/fly-button/FlyButton.vue +178 -178
  12. package/src/components/basic/typography/FlyCollapseTitleRenderer.vue +46 -46
  13. package/src/components/feedback/tooltip/FlyInfoTooltip.vue +49 -49
  14. package/src/components/feedback/tooltip/FlyTooltip.element.scss +4 -4
  15. package/src/components/feedback/tooltip/FlyTooltip.vue +60 -60
  16. package/src/components/form/form.utils.ts +72 -72
  17. package/src/components/form/index.ts +6 -6
  18. package/src/components/form/input-renderers/boolean/FlyBoolean.vue +48 -48
  19. package/src/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.vue +48 -48
  20. package/src/components/form/input-renderers/form-item-renderer/index.ts +4 -4
  21. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.ts +3 -3
  22. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.utils.ts +221 -221
  23. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.vue +75 -75
  24. package/src/components/form/input-renderers/form-schema-renderer/UseFormSchemaRenderer.ts +97 -97
  25. package/src/components/form/input-renderers/input-renderer/FlyInputRenderer.vue +49 -49
  26. package/src/components/form/input-renderers/input-renderer/index.ts +4 -4
  27. package/src/components/form/input-renderers/input-renderer.utils.ts +18 -18
  28. package/src/components/form/input-renderers/number/FlyNumber.vue +64 -64
  29. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.types.ts +15 -15
  30. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.vue +99 -99
  31. package/src/components/form/input-renderers/select/FlySelect.scss +1 -1
  32. package/src/components/form/input-renderers/select/FlySelect.utils.ts +37 -37
  33. package/src/components/form/input-renderers/text/FlyText.vue +70 -70
  34. package/src/components/form/input-renderers/value-unit/FlyValueUnit.vue +102 -102
  35. package/src/components/form/input-validators.ts +99 -99
  36. package/src/components/general/fly-icon-v2/FlyIconV2.types.ts +6 -6
  37. package/src/components/general/fly-icon-v2/FlyIconV2.vue +17 -17
  38. package/src/components/general/fly-icon-v2/index.ts +6 -6
  39. package/src/components/general/index.ts +5 -5
  40. package/src/components/index.ts +7 -7
  41. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.ts +8 -8
  42. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue +55 -55
  43. package/src/components/navigation/menu/fly-sidebar/FlySidebar.types.ts +49 -49
  44. package/src/components/navigation/menu/fly-sidebar/FlySidebar.vue +146 -146
  45. package/src/components/navigation/menu/fly-sidebar/FlySidebarNode.vue +47 -47
  46. package/src/composables/index.ts +4 -4
  47. package/src/composables/useFeatureGate/index.ts +1 -0
  48. package/src/composables/useFeatureGate/useFeatureGate.ts +19 -0
  49. package/src/composables/useFormHider/index.ts +1 -0
  50. package/src/composables/useFormHider/useFormHider.ts +37 -0
  51. package/src/composables/{UseLocaleInjector.ts → useLocaleInjector/UseLocaleInjector.ts} +37 -37
  52. package/src/composables/useLocaleInjector/index.ts +2 -0
  53. package/src/composables/useSidebarActiveIndex/index.ts +1 -0
  54. package/src/composables/{useSidebarActiveIndex.ts → useSidebarActiveIndex/useSidebarActiveIndex.ts} +103 -103
  55. package/src/styles/_scss-tokens.scss +71 -71
  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/styles/index.scss +1 -1
  62. package/src/styles/tokens.scss +1 -0
  63. package/src/utils/index.ts +2 -2
  64. package/src/utils/pure-functions.ts +15 -15
  65. package/src/utils/validators.ts +81 -81
  66. /package/dist/types/composables/{UseLocaleInjector.d.ts → useLocaleInjector/UseLocaleInjector.d.ts} +0 -0
@@ -1,103 +1,103 @@
1
- import { type MaybeRefOrGetter, computed, toValue } from 'vue'
2
-
3
- import { useRoute } from 'vue-router'
4
-
5
- import type { T_FlySidebar } from '../components'
6
-
7
- /**
8
- * Minimal route shape required by `useSidebarActiveIndex`.
9
- *
10
- * You can pass your full route objects directly — only these fields are read.
11
- * `meta.sidebarActiveIndex` is the route **name** of the sidebar item that
12
- * should stay highlighted while on this route (see composable docs below).
13
- */
14
- interface RouteItem {
15
- name?: string
16
- path: string
17
- meta?: {
18
- /** Route name of the sidebar item to keep active on this route. */
19
- sidebarActiveIndex?: string
20
- }
21
- }
22
-
23
- /**
24
- * Resolves the correct active sidebar index for Element Plus menus in router mode.
25
- *
26
- * **Resolution order** (first match wins):
27
- * 1. **Exact path match** — `route.path` matches a menu item's `index` directly.
28
- * 2. **`sidebarActiveIndex` meta** — the current route's `meta.sidebarActiveIndex`
29
- * names which sidebar route should appear active. Use this for pages that are
30
- * not listed in the sidebar (e.g. edit, create, or detail views).
31
- * 3. **Longest static-prefix fallback** — strips dynamic segments (`:id`) and
32
- * picks the menu item whose path is the longest prefix of the current path.
33
- * This is a best-effort catch-all for any unhandled cases.
34
- *
35
- * > **Note:** Only one level of submenus is flattened. Deeply nested menu trees
36
- * > (submenu inside a submenu) are not supported.
37
- *
38
- * @param menuItems - The sidebar menu tree passed to `FlySidebar`. Each leaf item
39
- * must have `index` set to a route path (e.g. `/config/list`). Submenu items
40
- * must have `type: 'submenu'` and a `children` array of leaf items.
41
- * Accepts a plain value, `ref`, or `computed`.
42
- *
43
- * @param allRoutes - Flat list of all application routes. Only used to resolve a
44
- * `sidebarActiveIndex` route name back to its path (resolution step 2).
45
- * Each entry needs at minimum `{ name, path }`.
46
- * Accepts a plain array, `ref`, or `computed`.
47
- *
48
- * @returns `ComputedRef<string>` — bind directly to `:default-active` on
49
- * `FlySidebar` or `el-menu`.
50
- *
51
- * @example
52
- * ```ts
53
- * // In your sidebar component setup:
54
- * const activeIndex = useSidebarActiveIndex(menuItems, router.getRoutes())
55
- * ```
56
- * ```html
57
- * <!-- In your sidebar template: -->
58
- * <FlySidebar :default-active="activeIndex" ... />
59
- * ```
60
- * ```ts
61
- * // In a route that is NOT listed in the sidebar (e.g. an edit page),
62
- * // tell the composable which sidebar item should stay highlighted:
63
- * {
64
- * name: 'ConfigEdit',
65
- * path: '/config/:id/edit',
66
- * meta: { sidebarActiveIndex: 'ConfigList' }
67
- * }
68
- * ```
69
- */
70
- export function useSidebarActiveIndex(
71
- menuItems: MaybeRefOrGetter<T_FlySidebar>,
72
- allRoutes: MaybeRefOrGetter<RouteItem[]>
73
- ) {
74
- const route = useRoute()
75
-
76
- return computed(() => {
77
- const currentPath = route.path
78
- const items = toValue(menuItems)
79
- const routes = toValue(allRoutes)
80
-
81
- const flatItems = items.flatMap((item) =>
82
- item.type === 'submenu' ? (item.children ?? []) : [item]
83
- )
84
-
85
- // 1. Exact match — handles direct navigation and redirect-resolved paths
86
- if (flatItems.some((i) => i.index === currentPath)) return currentPath
87
-
88
- // 2. sidebarActiveIndex — explicit route name pointing to the sidebar item
89
- // that should stay active while on this route
90
- const activeIndexName = route.meta?.sidebarActiveIndex as string | undefined
91
- if (activeIndexName) {
92
- const ownerRoute = routes.find((r) => r.name === activeIndexName)
93
- if (ownerRoute) return ownerRoute.path
94
- }
95
-
96
- // 3. Longest static-prefix fallback (strips dynamic segments before matching)
97
- return (
98
- flatItems
99
- .filter((i) => currentPath.startsWith(i.index.split(':')[0]))
100
- .sort((a, b) => b.index.length - a.index.length)[0]?.index ?? currentPath
101
- )
102
- })
103
- }
1
+ import { type MaybeRefOrGetter, computed, toValue } from 'vue'
2
+
3
+ import { useRoute } from 'vue-router'
4
+
5
+ import type { T_FlySidebar } from '../../components'
6
+
7
+ /**
8
+ * Minimal route shape required by `useSidebarActiveIndex`.
9
+ *
10
+ * You can pass your full route objects directly — only these fields are read.
11
+ * `meta.sidebarActiveIndex` is the route **name** of the sidebar item that
12
+ * should stay highlighted while on this route (see composable docs below).
13
+ */
14
+ interface RouteItem {
15
+ name?: string
16
+ path: string
17
+ meta?: {
18
+ /** Route name of the sidebar item to keep active on this route. */
19
+ sidebarActiveIndex?: string
20
+ }
21
+ }
22
+
23
+ /**
24
+ * Resolves the correct active sidebar index for Element Plus menus in router mode.
25
+ *
26
+ * **Resolution order** (first match wins):
27
+ * 1. **Exact path match** — `route.path` matches a menu item's `index` directly.
28
+ * 2. **`sidebarActiveIndex` meta** — the current route's `meta.sidebarActiveIndex`
29
+ * names which sidebar route should appear active. Use this for pages that are
30
+ * not listed in the sidebar (e.g. edit, create, or detail views).
31
+ * 3. **Longest static-prefix fallback** — strips dynamic segments (`:id`) and
32
+ * picks the menu item whose path is the longest prefix of the current path.
33
+ * This is a best-effort catch-all for any unhandled cases.
34
+ *
35
+ * > **Note:** Only one level of submenus is flattened. Deeply nested menu trees
36
+ * > (submenu inside a submenu) are not supported.
37
+ *
38
+ * @param menuItems - The sidebar menu tree passed to `FlySidebar`. Each leaf item
39
+ * must have `index` set to a route path (e.g. `/config/list`). Submenu items
40
+ * must have `type: 'submenu'` and a `children` array of leaf items.
41
+ * Accepts a plain value, `ref`, or `computed`.
42
+ *
43
+ * @param allRoutes - Flat list of all application routes. Only used to resolve a
44
+ * `sidebarActiveIndex` route name back to its path (resolution step 2).
45
+ * Each entry needs at minimum `{ name, path }`.
46
+ * Accepts a plain array, `ref`, or `computed`.
47
+ *
48
+ * @returns `ComputedRef<string>` — bind directly to `:default-active` on
49
+ * `FlySidebar` or `el-menu`.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * // In your sidebar component setup:
54
+ * const activeIndex = useSidebarActiveIndex(menuItems, router.getRoutes())
55
+ * ```
56
+ * ```html
57
+ * <!-- In your sidebar template: -->
58
+ * <FlySidebar :default-active="activeIndex" ... />
59
+ * ```
60
+ * ```ts
61
+ * // In a route that is NOT listed in the sidebar (e.g. an edit page),
62
+ * // tell the composable which sidebar item should stay highlighted:
63
+ * {
64
+ * name: 'ConfigEdit',
65
+ * path: '/config/:id/edit',
66
+ * meta: { sidebarActiveIndex: 'ConfigList' }
67
+ * }
68
+ * ```
69
+ */
70
+ export function useSidebarActiveIndex(
71
+ menuItems: MaybeRefOrGetter<T_FlySidebar>,
72
+ allRoutes: MaybeRefOrGetter<RouteItem[]>
73
+ ) {
74
+ const route = useRoute()
75
+
76
+ return computed(() => {
77
+ const currentPath = route.path
78
+ const items = toValue(menuItems)
79
+ const routes = toValue(allRoutes)
80
+
81
+ const flatItems = items.flatMap((item) =>
82
+ item.type === 'submenu' ? (item.children ?? []) : [item]
83
+ )
84
+
85
+ // 1. Exact match — handles direct navigation and redirect-resolved paths
86
+ if (flatItems.some((i) => i.index === currentPath)) return currentPath
87
+
88
+ // 2. sidebarActiveIndex — explicit route name pointing to the sidebar item
89
+ // that should stay active while on this route
90
+ const activeIndexName = route.meta?.sidebarActiveIndex as string | undefined
91
+ if (activeIndexName) {
92
+ const ownerRoute = routes.find((r) => r.name === activeIndexName)
93
+ if (ownerRoute) return ownerRoute.path
94
+ }
95
+
96
+ // 3. Longest static-prefix fallback (strips dynamic segments before matching)
97
+ return (
98
+ flatItems
99
+ .filter((i) => currentPath.startsWith(i.index.split(':')[0]))
100
+ .sort((a, b) => b.index.length - a.index.length)[0]?.index ?? currentPath
101
+ )
102
+ })
103
+ }
@@ -1,76 +1,76 @@
1
1
  // global colors
2
- $anra-primary: #58baa8;
3
- $anra-primary-dark: #15826e;
4
- $anra-primary-accent: #57baa7;
5
- $anra-black: #000000;
6
- $anra-white: #ffffff;
2
+ $anra-primary: #58baa8 !default;
3
+ $anra-primary-dark: #15826e !default;
4
+ $anra-primary-accent: #57baa7 !default;
5
+ $anra-black: #000000 !default;
6
+ $anra-white: #ffffff !default;
7
7
 
8
8
  // dark theme
9
- $anra-dark-dynamic-light: #ffffff;
10
- $anra-dark-dynamic-dark: #000000;
11
- $anra-dark-default-text-color: #cfd3dc;
12
- $anra-dark-bg-10: #29555a;
13
- $anra-dark-bg-15: #274452;
14
- $anra-dark-bg-15-accent: #253e4a;
15
- $anra-dark-bg-15-accent-1: #395969;
16
- $anra-dark-bg-20: #18323f;
17
- $anra-dark-bg-20-rgb: 24, 50, 63;
18
- $anra-dark-bg-20-subtitle: #c7c7c7;
19
- $anra-dark-bg-25: #19282f;
20
- $anra-dark-bg-blue-50: #293470;
21
- $anra-dark-state-danger: #ff0e0e;
22
- $anra-dark-state-error: #ff0e0e;
23
- $anra-dark-state-error-lighter: #e76f6f;
24
- $anra-dark-state-error-lighter-50: #ffa5a5;
25
- $anra-dark-state-success: #068c53;
26
- $anra-dark-state-info: #6a7174;
27
- $anra-dark-state-info-lighter: #c0c9cd;
28
- $anra-dark-state-warning: #ffc427;
29
- $anra-dark-state-warning-50: #896a3d;
30
- $anra-dark-text-placeholder: #b3b7bf;
31
- $anra-dark-border-color: #4f626c;
32
- $anra-dark-border-color-light: #616161;
33
- $anra-dark-fill-color-light: #405661;
34
- $anra-dark-mask-color: rgba(24, 50, 63, 0.79);
35
- $anra-dark-scroll-shadow: #02020224;
36
- $anra-dark-disabled-bg: #1f3845;
37
- $anra-dark-form-item-error-color: #ffcac9;
38
- $anra-dark-tag-info-bg: #344b56;
39
- $anra-dark-form-input-border: #979797;
40
- $anra-dark-text-on-primary: black;
41
- $anra-dark-text-subtle: #99a1af;
9
+ $anra-dark-dynamic-light: #ffffff !default;
10
+ $anra-dark-dynamic-dark: #000000 !default;
11
+ $anra-dark-default-text-color: #cfd3dc !default;
12
+ $anra-dark-bg-10: #29555a !default;
13
+ $anra-dark-bg-15: #274452 !default;
14
+ $anra-dark-bg-15-accent: #253e4a !default;
15
+ $anra-dark-bg-15-accent-1: #395969 !default;
16
+ $anra-dark-bg-20: #18323f !default;
17
+ $anra-dark-bg-20-rgb: 24, 50, 63 !default;
18
+ $anra-dark-bg-20-subtitle: #c7c7c7 !default;
19
+ $anra-dark-bg-25: #19282f !default;
20
+ $anra-dark-bg-blue-50: #293470 !default;
21
+ $anra-dark-state-danger: #ff0e0e !default;
22
+ $anra-dark-state-error: #ff0e0e !default;
23
+ $anra-dark-state-error-lighter: #e76f6f !default;
24
+ $anra-dark-state-error-lighter-50: #ffa5a5 !default;
25
+ $anra-dark-state-success: #068c53 !default;
26
+ $anra-dark-state-info: #6a7174 !default;
27
+ $anra-dark-state-info-lighter: #c0c9cd !default;
28
+ $anra-dark-state-warning: #ffc427 !default;
29
+ $anra-dark-state-warning-50: #896a3d !default;
30
+ $anra-dark-text-placeholder: #b3b7bf !default;
31
+ $anra-dark-border-color: #4f626c !default;
32
+ $anra-dark-border-color-light: #616161 !default;
33
+ $anra-dark-fill-color-light: #405661 !default;
34
+ $anra-dark-mask-color: rgba(24, 50, 63, 0.79) !default;
35
+ $anra-dark-scroll-shadow: #02020224 !default;
36
+ $anra-dark-disabled-bg: #1f3845 !default;
37
+ $anra-dark-form-item-error-color: #ffcac9 !default;
38
+ $anra-dark-tag-info-bg: #344b56 !default;
39
+ $anra-dark-form-input-border: #979797 !default;
40
+ $anra-dark-text-on-primary: black !default;
41
+ $anra-dark-text-subtle: #99a1af !default;
42
42
 
43
43
  // light theme
44
- $anra-light-dynamic-light: #000000;
45
- $anra-light-dynamic-dark: #ffffff;
46
- $anra-light-default-text-color: #1a1f24;
47
- $anra-light-bg-10: #f1f5f6;
48
- $anra-light-bg-15: #ffffff;
49
- $anra-light-bg-15-accent: #f2f2f2;
50
- $anra-light-bg-15-accent-1: #d9e3e6;
51
- $anra-light-bg-20: #f4f5f7;
52
- $anra-light-bg-20-rgb: 244, 245, 247;
53
- $anra-light-bg-20-subtitle: #4c5a66;
54
- $anra-light-bg-25: #c7d3d8;
55
- $anra-light-bg-blue-50: #dbe3f0;
56
- $anra-light-state-danger: #d60000;
57
- $anra-light-state-error: #d60000;
58
- $anra-light-state-error-lighter: #ef7a7a;
59
- $anra-light-state-error-lighter-50: #f7bcbc;
60
- $anra-light-state-success: #068c53;
61
- $anra-light-state-info: #5a6367;
62
- $anra-light-state-info-lighter: #5b6164;
63
- $anra-light-state-warning: #dca217;
64
- $anra-light-state-warning-50: #b88c3c;
65
- $anra-light-text-placeholder: #8a929a;
66
- $anra-light-border-color: #cad4d9;
67
- $anra-light-border-color-light: #e0e4e5;
68
- $anra-light-fill-color-light: #f3f6f7;
69
- $anra-light-mask-color: rgba(208, 218, 222, 0.6);
70
- $anra-light-scroll-shadow: #00000012;
71
- $anra-light-disabled-bg: #e6ecef;
72
- $anra-light-form-item-error-color: #d68080;
73
- $anra-light-tag-info-bg: #e4ecef;
74
- $anra-light-form-input-border: #969696;
75
- $anra-light-text-on-primary: black;
76
- $anra-light-text-subtle: #000000;
44
+ $anra-light-dynamic-light: #000000 !default;
45
+ $anra-light-dynamic-dark: #ffffff !default;
46
+ $anra-light-default-text-color: #1a1f24 !default;
47
+ $anra-light-bg-10: #f1f5f6 !default;
48
+ $anra-light-bg-15: #ffffff !default;
49
+ $anra-light-bg-15-accent: #f2f2f2 !default;
50
+ $anra-light-bg-15-accent-1: #d9e3e6 !default;
51
+ $anra-light-bg-20: #f4f5f7 !default;
52
+ $anra-light-bg-20-rgb: 244, 245, 247 !default;
53
+ $anra-light-bg-20-subtitle: #4c5a66 !default;
54
+ $anra-light-bg-25: #c7d3d8 !default;
55
+ $anra-light-bg-blue-50: #dbe3f0 !default;
56
+ $anra-light-state-danger: #d60000 !default;
57
+ $anra-light-state-error: #d60000 !default;
58
+ $anra-light-state-error-lighter: #ef7a7a !default;
59
+ $anra-light-state-error-lighter-50: #f7bcbc !default;
60
+ $anra-light-state-success: #068c53 !default;
61
+ $anra-light-state-info: #5a6367 !default;
62
+ $anra-light-state-info-lighter: #5b6164 !default;
63
+ $anra-light-state-warning: #dca217 !default;
64
+ $anra-light-state-warning-50: #b88c3c !default;
65
+ $anra-light-text-placeholder: #8a929a !default;
66
+ $anra-light-border-color: #cad4d9 !default;
67
+ $anra-light-border-color-light: #e0e4e5 !default;
68
+ $anra-light-fill-color-light: #f3f6f7 !default;
69
+ $anra-light-mask-color: rgba(208, 218, 222, 0.6) !default;
70
+ $anra-light-scroll-shadow: #00000012 !default;
71
+ $anra-light-disabled-bg: #e6ecef !default;
72
+ $anra-light-form-item-error-color: #d68080 !default;
73
+ $anra-light-tag-info-bg: #e4ecef !default;
74
+ $anra-light-form-input-border: #969696 !default;
75
+ $anra-light-text-on-primary: black !default;
76
+ $anra-light-text-subtle: #000000 !default;
@@ -1,61 +1,61 @@
1
- @mixin el-collapse-operation-style {
2
- .el-collapse-item {
3
- &__header {
4
- padding: 0.5rem 0.5rem 0.5rem 0rem;
5
- min-height: 48px;
6
- text-align: left;
7
- }
8
- &__content {
9
- background: var(--anra-bg-15-accent);
10
- }
11
- }
12
- }
13
-
14
- @mixin el-collapse-advisory-style {
15
- .el-collapse-item {
16
- border-bottom: 10px solid transparent;
17
- &__header {
18
- border-top: 1px solid var(--el-collapse-border-color);
19
- }
20
- &__content {
21
- background: var(--anra-bg-20);
22
- padding-bottom: 0;
23
- }
24
- &.is-disabled {
25
- .el-collapse-item {
26
- &__header {
27
- color: var(--default-text-color);
28
- }
29
- &__arrow {
30
- visibility: hidden;
31
- }
32
- }
33
- }
34
- }
35
- }
36
-
37
- @mixin el-airspace-layer-style {
38
- .el-collapse-item {
39
- border-bottom: 10px solid transparent;
40
- &__header {
41
- padding: 0.25rem 0.5rem 0.25rem 0rem;
42
- // min-height: 30px;
43
- text-align: left;
44
- border-top: 1px solid var(--el-collapse-border-color);
45
- }
46
- &__content {
47
- background: var(--anra-bg-15-accent);
48
- padding-bottom: 0;
49
- }
50
- &.is-disabled {
51
- .el-collapse-item {
52
- &__header {
53
- color: var(--default-text-color);
54
- }
55
- &__arrow {
56
- visibility: hidden;
57
- }
58
- }
59
- }
60
- }
61
- }
1
+ @mixin el-collapse-operation-style {
2
+ .el-collapse-item {
3
+ &__header {
4
+ padding: 0.5rem 0.5rem 0.5rem 0rem;
5
+ min-height: 48px;
6
+ text-align: left;
7
+ }
8
+ &__content {
9
+ background: var(--anra-bg-15-accent);
10
+ }
11
+ }
12
+ }
13
+
14
+ @mixin el-collapse-advisory-style {
15
+ .el-collapse-item {
16
+ border-bottom: 10px solid transparent;
17
+ &__header {
18
+ border-top: 1px solid var(--el-collapse-border-color);
19
+ }
20
+ &__content {
21
+ background: var(--anra-bg-20);
22
+ padding-bottom: 0;
23
+ }
24
+ &.is-disabled {
25
+ .el-collapse-item {
26
+ &__header {
27
+ color: var(--default-text-color);
28
+ }
29
+ &__arrow {
30
+ visibility: hidden;
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+
37
+ @mixin el-airspace-layer-style {
38
+ .el-collapse-item {
39
+ border-bottom: 10px solid transparent;
40
+ &__header {
41
+ padding: 0.25rem 0.5rem 0.25rem 0rem;
42
+ // min-height: 30px;
43
+ text-align: left;
44
+ border-top: 1px solid var(--el-collapse-border-color);
45
+ }
46
+ &__content {
47
+ background: var(--anra-bg-15-accent);
48
+ padding-bottom: 0;
49
+ }
50
+ &.is-disabled {
51
+ .el-collapse-item {
52
+ &__header {
53
+ color: var(--default-text-color);
54
+ }
55
+ &__arrow {
56
+ visibility: hidden;
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }