bfg-common 1.5.43 → 1.5.45

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 (185) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/scss/common/normalize.scss +339 -339
  7. package/components/atoms/TheIcon3.vue +50 -50
  8. package/components/atoms/collapse/CollapseNav.vue +165 -165
  9. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  10. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  11. package/components/atoms/perPage/PerPage.vue +58 -58
  12. package/components/atoms/stack/StackBlock.vue +185 -185
  13. package/components/atoms/table/dataGrid/DataGrid.vue +1 -1
  14. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  15. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  16. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  17. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  18. package/components/atoms/tooltip/Signpost.vue +227 -227
  19. package/components/common/accordion/Recursion.vue +222 -222
  20. package/components/common/browse/BrowseNew.vue +237 -237
  21. package/components/common/browse/BrowseOld.vue +217 -217
  22. package/components/common/browse/blocks/contents/Files.vue +37 -37
  23. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  24. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  25. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  26. package/components/common/context/Context.vue +111 -111
  27. package/components/common/context/lib/models/interfaces.ts +31 -31
  28. package/components/common/context/recursion/Recursion.vue +87 -87
  29. package/components/common/context/recursion/RecursionNew.vue +238 -238
  30. package/components/common/context/recursion/RecursionOld.vue +228 -228
  31. package/components/common/details/DetailsItem.vue +109 -109
  32. package/components/common/diagramMain/DiagramMain.vue +897 -897
  33. package/components/common/diagramMain/Header.vue +214 -214
  34. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  35. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  36. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  37. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +336 -336
  38. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +311 -311
  39. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  40. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  41. package/components/common/pages/home/StatusContent.vue +49 -49
  42. package/components/common/pages/home/headline/Headline.vue +45 -45
  43. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  44. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  45. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  46. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  47. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  48. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  49. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  50. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  51. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  52. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  53. package/components/common/pages/licensing/Licensing.vue +128 -0
  54. package/components/common/pages/licensing/lib/models/interfaces.ts +22 -0
  55. package/components/common/pages/licensing/lib/utils/validation.ts +29 -0
  56. package/components/common/pages/licensing/listView/ListView.vue +50 -0
  57. package/components/common/pages/licensing/listView/lib/config/list.ts +57 -0
  58. package/components/common/pages/licensing/listView/lib/models/interfaces.ts +5 -0
  59. package/components/common/pages/licensing/modals/assign/Assign.vue +247 -0
  60. package/components/common/pages/licensing/modals/assign/lib/config/tabsPannel.ts +17 -0
  61. package/components/common/pages/licensing/modals/assign/lib/models/interfaces.ts +5 -0
  62. package/components/common/pages/licensing/modals/assign/lib/utils/error.ts +25 -0
  63. package/components/common/pages/licensing/modals/assign/new/New.vue +216 -0
  64. package/components/common/pages/licensing/modals/assign/tableView/TableView.vue +193 -0
  65. package/components/common/pages/licensing/modals/assign/tableView/lib/config/table.ts +100 -0
  66. package/components/common/pages/licensing/modals/assign/tableView/lib/config/tableKeys.ts +10 -0
  67. package/components/common/pages/licensing/modals/assign/tableView/lib/models/interfaces.ts +9 -0
  68. package/components/common/pages/licensing/modals/assign/tableView/lib/models/types.ts +8 -0
  69. package/components/common/pages/packages/Packages.vue +208 -208
  70. package/components/common/pages/shortcuts/block/BlockNew.vue +96 -96
  71. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  72. package/components/common/portlets/customAttributes/Portlet.vue +667 -667
  73. package/components/common/portlets/tag/Portlet.vue +433 -433
  74. package/components/common/recursionTree/RecursionTree.vue +223 -223
  75. package/components/common/select/button/ButtonDropdown.vue +108 -108
  76. package/components/common/spiceConsole/Drawer.vue +370 -370
  77. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  78. package/components/common/split/horizontal/HorizontalNew.vue +376 -376
  79. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  80. package/components/common/split/vertical/Vertical.vue +160 -160
  81. package/components/common/tools/Actions.vue +188 -188
  82. package/components/common/vm/actions/add/Add.vue +774 -774
  83. package/components/common/vm/actions/add/lib/config/steps.ts +247 -247
  84. package/components/common/vm/actions/clone/Clone.vue +798 -798
  85. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  86. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +634 -634
  87. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  88. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +275 -275
  89. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +274 -274
  90. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +177 -177
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +410 -410
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +164 -164
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +368 -368
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +232 -232
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +250 -250
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +286 -286
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  138. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  139. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  140. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  141. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  142. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  143. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  144. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  145. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  146. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  147. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  148. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  149. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  150. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  151. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  152. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  153. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  154. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  155. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  156. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  157. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  158. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  159. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  160. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  161. package/components/common/vm/actions/common/select/createType/CreateType.vue +74 -74
  162. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  163. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  164. package/components/common/vm/actions/common/select/template/Template.vue +65 -65
  165. package/components/common/vm/actions/common/select/template/TemplateTreeView.vue +88 -88
  166. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  167. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  168. package/components/common/wizards/datastore/add/nfs/accessibility/Accessibility.vue +60 -60
  169. package/components/common/wizards/datastore/add/readyComplete/ReadyComplete.vue +92 -92
  170. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +105 -105
  171. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  172. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  173. package/components/common/wizards/vm/migrate/select/network/table/network/Network.vue +150 -150
  174. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  175. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +43 -43
  176. package/composables/productNameLocal.ts +30 -30
  177. package/composables/useAppVersion.ts +21 -21
  178. package/package.json +1 -1
  179. package/plugins/date.ts +233 -233
  180. package/plugins/directives.ts +24 -24
  181. package/public/spice-console/lib/images/bitmap.js +203 -203
  182. package/public/spice-console/network/spicechannel.js +383 -383
  183. package/store/main/mutations.ts +7 -7
  184. package/store/main/state.ts +7 -7
  185. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,222 +1,222 @@
1
- <template>
2
- <div class="accordion" :class="{ disabled: props.accordion.disabled }">
3
- <nuxt-link
4
- v-development="props.accordion.development"
5
- class="accordion-item"
6
- :to="accordionLocal.path"
7
- :data-id="accordionLocal.testId"
8
- active-class="active"
9
- @click.prevent="onSelect(accordionLocal)"
10
- >
11
- <div
12
- :class="['heading-wrap', { group: props.accordion.hasChild }]"
13
- :style="{ paddingLeft: `${props.level * 24 || 10}px` }"
14
- >
15
- <div class="flex-align-center heading">
16
- <div
17
- v-if="props.accordion.iconClassName"
18
- :class="['icon', props.accordion.iconClassName]"
19
- ></div>
20
- <div
21
- :class="['text text-ellipsis', headingClass]"
22
- :data-id="`${accordionLocal.testId}`"
23
- >
24
- {{ props.accordion.name }}
25
- </div>
26
- </div>
27
- <button
28
- v-if="props.accordion.hasChild"
29
- :id="`${props.testId}-trigger-button`"
30
- :data-id="`${accordionLocal.testId}-toggle-button`"
31
- class="btn-trigger max-width"
32
- @click="toggle"
33
- >
34
- <atoms-the-icon
35
- :class="[
36
- 'trigger-icon',
37
- {
38
- isOpen: accordionLocal.isOpen,
39
- },
40
- ]"
41
- name="angle"
42
- />
43
- </button>
44
- </div>
45
- </nuxt-link>
46
-
47
- <transition
48
- v-if="props.accordion.hasChild"
49
- name="accordion"
50
- @before-enter="end"
51
- @enter="start"
52
- @before-leave="start"
53
- @leave="end"
54
- >
55
- <div v-show="accordionLocal.isOpen" class="accordion__content">
56
- <common-accordion-recursion
57
- v-for="(item, key) in props.accordion.children"
58
- :key="item.id"
59
- :test-id="`${props.testId}-${key}`"
60
- :accordion="item"
61
- :level="props.level + 1"
62
- @change="onSelect"
63
- />
64
- </div>
65
- </transition>
66
- </div>
67
- </template>
68
-
69
- <script setup lang="ts">
70
- import type {
71
- UI_I_AccordionRecursion,
72
- UI_I_HeadingClass,
73
- } from '~/components/common/accordion/lib/models/interfaces'
74
-
75
- const props = withDefaults(
76
- defineProps<{
77
- accordion: UI_I_AccordionRecursion
78
- testId: string
79
- level?: number
80
- }>(),
81
- { level: 0 }
82
- )
83
- const emits = defineEmits<{
84
- (event: 'change', value: UI_I_AccordionRecursion): void
85
- }>()
86
-
87
- const accordionLocal = ref<UI_I_AccordionRecursion>(props.accordion)
88
-
89
- // TODO CHANGE
90
- watch(
91
- accordionLocal,
92
- () => {
93
- if (accordionLocal.value.isOpen !== false)
94
- accordionLocal.value.isOpen = true
95
- },
96
- { immediate: true }
97
- )
98
-
99
- const toggle = (): void => {
100
- if (!props.accordion.hasChild) return
101
-
102
- accordionLocal.value.isOpen = !accordionLocal.value.isOpen
103
- }
104
-
105
- const start = (element: any): void => {
106
- element.style.height = 'auto'
107
- }
108
- const end = (element: any): void => {
109
- element.style.height = 0
110
- }
111
-
112
- const headingClass = computed<UI_I_HeadingClass>(() => {
113
- return {
114
- 'text-normal': !props.accordion.hasChild,
115
- disabled: props.accordion.disabled && !props.accordion.hasChild,
116
- }
117
- })
118
-
119
- const onSelect = (item: UI_I_AccordionRecursion): void => {
120
- emits('change', item)
121
- }
122
- </script>
123
-
124
- <style lang="scss">
125
- @import '~/assets/scss/common/mixins';
126
-
127
- %hover-effect {
128
- margin-bottom: -1px;
129
- border-bottom: 1px solid var(--row-hover-border-color);
130
- background-color: var(--row-hover-bg-color);
131
- cursor: pointer;
132
- }
133
- %active-mode {
134
- background-color: var(--row-selected-bg-color);
135
- color: var(--row-selected-text-color);
136
- }
137
- .accordion {
138
- .accordion-item {
139
- display: block;
140
- text-decoration: none;
141
- color: var(--global-font-color);
142
-
143
- &.active {
144
- background-color: #29414e;
145
- color: #fff;
146
- border-bottom: 1px solid transparent;
147
- cursor: default;
148
- %hover-effect {
149
- margin-bottom: unset;
150
- border-bottom: unset;
151
- background-color: unset;
152
- cursor: unset;
153
- }
154
- }
155
-
156
- .heading-wrap {
157
- width: 100%;
158
- @include flex($align: center, $just: space-between);
159
-
160
- &:not(.group) {
161
- display: block;
162
- padding-right: 14px;
163
- }
164
-
165
- &.group .heading {
166
- width: calc(100% - 30px);
167
- }
168
- .heading {
169
- margin-right: 10px;
170
- //overflow: hidden;
171
- .icon {
172
- margin: 1px 4px 0 0;
173
- }
174
-
175
- .text {
176
- font-weight: 600;
177
-
178
- &.text-normal {
179
- font-weight: 400;
180
-
181
- &.disabled {
182
- opacity: 0.3;
183
- cursor: not-allowed;
184
- }
185
- }
186
- }
187
- }
188
- &:hover:not(:has(> .disabled)) {
189
- @extend %hover-effect;
190
- }
191
- &:has(> .disabled) {
192
- cursor: not-allowed;
193
- }
194
- }
195
- }
196
- &__content {
197
- transition: 0.1s ease-in-out;
198
- overflow: hidden;
199
- }
200
- }
201
-
202
- .btn-trigger {
203
- flex: auto;
204
- margin-right: 10px;
205
-
206
- &.max-width {
207
- width: max-content;
208
- }
209
-
210
- //padding-right: 10px;
211
- .trigger-icon {
212
- width: 16px;
213
- height: 16px;
214
- transform: rotate(90deg);
215
- margin-left: auto;
216
- fill: var(--triger-icon-color);
217
- &.isOpen {
218
- transform: rotate(180deg);
219
- }
220
- }
221
- }
222
- </style>
1
+ <template>
2
+ <div class="accordion" :class="{ disabled: props.accordion.disabled }">
3
+ <nuxt-link
4
+ v-development="props.accordion.development"
5
+ class="accordion-item"
6
+ :to="accordionLocal.path"
7
+ :data-id="accordionLocal.testId"
8
+ active-class="active"
9
+ @click.prevent="onSelect(accordionLocal)"
10
+ >
11
+ <div
12
+ :class="['heading-wrap', { group: props.accordion.hasChild }]"
13
+ :style="{ paddingLeft: `${props.level * 24 || 10}px` }"
14
+ >
15
+ <div class="flex-align-center heading">
16
+ <div
17
+ v-if="props.accordion.iconClassName"
18
+ :class="['icon', props.accordion.iconClassName]"
19
+ ></div>
20
+ <div
21
+ :class="['text text-ellipsis', headingClass]"
22
+ :data-id="`${accordionLocal.testId}`"
23
+ >
24
+ {{ props.accordion.name }}
25
+ </div>
26
+ </div>
27
+ <button
28
+ v-if="props.accordion.hasChild"
29
+ :id="`${props.testId}-trigger-button`"
30
+ :data-id="`${accordionLocal.testId}-toggle-button`"
31
+ class="btn-trigger max-width"
32
+ @click="toggle"
33
+ >
34
+ <atoms-the-icon
35
+ :class="[
36
+ 'trigger-icon',
37
+ {
38
+ isOpen: accordionLocal.isOpen,
39
+ },
40
+ ]"
41
+ name="angle"
42
+ />
43
+ </button>
44
+ </div>
45
+ </nuxt-link>
46
+
47
+ <transition
48
+ v-if="props.accordion.hasChild"
49
+ name="accordion"
50
+ @before-enter="end"
51
+ @enter="start"
52
+ @before-leave="start"
53
+ @leave="end"
54
+ >
55
+ <div v-show="accordionLocal.isOpen" class="accordion__content">
56
+ <common-accordion-recursion
57
+ v-for="(item, key) in props.accordion.children"
58
+ :key="item.id"
59
+ :test-id="`${props.testId}-${key}`"
60
+ :accordion="item"
61
+ :level="props.level + 1"
62
+ @change="onSelect"
63
+ />
64
+ </div>
65
+ </transition>
66
+ </div>
67
+ </template>
68
+
69
+ <script setup lang="ts">
70
+ import type {
71
+ UI_I_AccordionRecursion,
72
+ UI_I_HeadingClass,
73
+ } from '~/components/common/accordion/lib/models/interfaces'
74
+
75
+ const props = withDefaults(
76
+ defineProps<{
77
+ accordion: UI_I_AccordionRecursion
78
+ testId: string
79
+ level?: number
80
+ }>(),
81
+ { level: 0 }
82
+ )
83
+ const emits = defineEmits<{
84
+ (event: 'change', value: UI_I_AccordionRecursion): void
85
+ }>()
86
+
87
+ const accordionLocal = ref<UI_I_AccordionRecursion>(props.accordion)
88
+
89
+ // TODO CHANGE
90
+ watch(
91
+ accordionLocal,
92
+ () => {
93
+ if (accordionLocal.value.isOpen !== false)
94
+ accordionLocal.value.isOpen = true
95
+ },
96
+ { immediate: true }
97
+ )
98
+
99
+ const toggle = (): void => {
100
+ if (!props.accordion.hasChild) return
101
+
102
+ accordionLocal.value.isOpen = !accordionLocal.value.isOpen
103
+ }
104
+
105
+ const start = (element: any): void => {
106
+ element.style.height = 'auto'
107
+ }
108
+ const end = (element: any): void => {
109
+ element.style.height = 0
110
+ }
111
+
112
+ const headingClass = computed<UI_I_HeadingClass>(() => {
113
+ return {
114
+ 'text-normal': !props.accordion.hasChild,
115
+ disabled: props.accordion.disabled && !props.accordion.hasChild,
116
+ }
117
+ })
118
+
119
+ const onSelect = (item: UI_I_AccordionRecursion): void => {
120
+ emits('change', item)
121
+ }
122
+ </script>
123
+
124
+ <style lang="scss">
125
+ @import '~/assets/scss/common/mixins';
126
+
127
+ %hover-effect {
128
+ margin-bottom: -1px;
129
+ border-bottom: 1px solid var(--row-hover-border-color);
130
+ background-color: var(--row-hover-bg-color);
131
+ cursor: pointer;
132
+ }
133
+ %active-mode {
134
+ background-color: var(--row-selected-bg-color);
135
+ color: var(--row-selected-text-color);
136
+ }
137
+ .accordion {
138
+ .accordion-item {
139
+ display: block;
140
+ text-decoration: none;
141
+ color: var(--global-font-color);
142
+
143
+ &.active {
144
+ background-color: #29414e;
145
+ color: #fff;
146
+ border-bottom: 1px solid transparent;
147
+ cursor: default;
148
+ %hover-effect {
149
+ margin-bottom: unset;
150
+ border-bottom: unset;
151
+ background-color: unset;
152
+ cursor: unset;
153
+ }
154
+ }
155
+
156
+ .heading-wrap {
157
+ width: 100%;
158
+ @include flex($align: center, $just: space-between);
159
+
160
+ &:not(.group) {
161
+ display: block;
162
+ padding-right: 14px;
163
+ }
164
+
165
+ &.group .heading {
166
+ width: calc(100% - 30px);
167
+ }
168
+ .heading {
169
+ margin-right: 10px;
170
+ //overflow: hidden;
171
+ .icon {
172
+ margin: 1px 4px 0 0;
173
+ }
174
+
175
+ .text {
176
+ font-weight: 600;
177
+
178
+ &.text-normal {
179
+ font-weight: 400;
180
+
181
+ &.disabled {
182
+ opacity: 0.3;
183
+ cursor: not-allowed;
184
+ }
185
+ }
186
+ }
187
+ }
188
+ &:hover:not(:has(> .disabled)) {
189
+ @extend %hover-effect;
190
+ }
191
+ &:has(> .disabled) {
192
+ cursor: not-allowed;
193
+ }
194
+ }
195
+ }
196
+ &__content {
197
+ transition: 0.1s ease-in-out;
198
+ overflow: hidden;
199
+ }
200
+ }
201
+
202
+ .btn-trigger {
203
+ flex: auto;
204
+ margin-right: 10px;
205
+
206
+ &.max-width {
207
+ width: max-content;
208
+ }
209
+
210
+ //padding-right: 10px;
211
+ .trigger-icon {
212
+ width: 16px;
213
+ height: 16px;
214
+ transform: rotate(90deg);
215
+ margin-left: auto;
216
+ fill: var(--triger-icon-color);
217
+ &.isOpen {
218
+ transform: rotate(180deg);
219
+ }
220
+ }
221
+ }
222
+ </style>