bfg-common 1.5.20 → 1.5.21

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 (200) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/scss/common/normalize.scss +339 -361
  3. package/assets/scss/common/utilities.scss +1 -1
  4. package/components/atoms/TheIcon3.vue +50 -50
  5. package/components/atoms/autocomplete/Autocomplete.vue +3 -3
  6. package/components/atoms/collapse/CollapseNav.vue +165 -165
  7. package/components/atoms/combobox/Combobox.vue +1 -1
  8. package/components/atoms/datepicker/Datepicker.vue +1 -1
  9. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  10. package/components/atoms/list/dragDropList/DragDropList.vue +1 -1
  11. package/components/atoms/loader/Loader.vue +1 -1
  12. package/components/atoms/loader/PreLoader.vue +1 -1
  13. package/components/atoms/modal/Modal.vue +2 -2
  14. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  15. package/components/atoms/modal/byStepsSecond/ByStepsSecond.vue +1 -1
  16. package/components/atoms/perPage/PerPage.vue +58 -58
  17. package/components/atoms/popover/Popover.vue +1 -1
  18. package/components/atoms/popup/SimplePopup.vue +1 -1
  19. package/components/atoms/select/TheSelect.vue +1 -1
  20. package/components/atoms/stack/StackBlock.vue +185 -185
  21. package/components/atoms/table/compact/Compact.vue +5 -5
  22. package/components/atoms/table/dataGrid/DataGrid.vue +4 -4
  23. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  24. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  25. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  26. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  27. package/components/atoms/tooltip/Signpost.vue +1 -1
  28. package/components/atoms/tooltip/Text.vue +1 -1
  29. package/components/atoms/tooltip/Tooltip.vue +1 -1
  30. package/components/atoms/tooltip/TooltipError.vue +1 -1
  31. package/components/atoms/wizard/Wizard.vue +2 -2
  32. package/components/common/accordion/Accordion.vue +1 -1
  33. package/components/common/accordion/Recursion.vue +222 -222
  34. package/components/common/adapterManager/AddAdapterModal.vue +1 -1
  35. package/components/common/browse/BrowseNew.vue +237 -237
  36. package/components/common/browse/BrowseOld.vue +217 -217
  37. package/components/common/browse/blocks/Container.vue +1 -1
  38. package/components/common/browse/blocks/contents/Files.vue +37 -37
  39. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  40. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  41. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  42. package/components/common/context/Context.vue +111 -111
  43. package/components/common/context/lib/models/interfaces.ts +31 -31
  44. package/components/common/context/recursion/Recursion.vue +87 -87
  45. package/components/common/context/recursion/RecursionNew.vue +238 -238
  46. package/components/common/context/recursion/RecursionOld.vue +228 -228
  47. package/components/common/details/DetailsItem.vue +109 -109
  48. package/components/common/diagramMain/DiagramMain.vue +897 -897
  49. package/components/common/diagramMain/Header.vue +214 -214
  50. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +1 -1
  51. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +1 -1
  52. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +1 -1
  53. package/components/common/diagramMain/modals/remove/RemoveModalOld.vue +1 -1
  54. package/components/common/feedback/Buttons.vue +1 -1
  55. package/components/common/feedback/Feedback.vue +1 -1
  56. package/components/common/feedback/Message.vue +3 -3
  57. package/components/common/graph/Graph.vue +104 -104
  58. package/components/common/help/navbar/left/Left.vue +1 -1
  59. package/components/common/layout/theHeader/TheHeaderNew.vue +1 -1
  60. package/components/common/layout/theHeader/TheHeaderOld.vue +1 -1
  61. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  62. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  63. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  64. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +336 -336
  65. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +311 -311
  66. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  67. package/components/common/monitor/advanced/graphView/GraphViewOld.vue +1 -1
  68. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/CountersNew.vue +1 -1
  69. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +1040 -1040
  70. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  71. package/components/common/monitor/resourceAllocation/resourceAllocation.vue +1 -1
  72. package/components/common/pages/home/StatusContent.vue +49 -49
  73. package/components/common/pages/home/headline/Headline.vue +45 -45
  74. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  75. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  76. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  77. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  78. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  79. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  80. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  81. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  82. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  83. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  84. package/components/common/pages/packages/Packages.vue +208 -208
  85. package/components/common/pages/shortcuts/block/BlockNew.vue +96 -96
  86. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  87. package/components/common/pages/tasks/Tasks.vue +1 -1
  88. package/components/common/portlets/customAttributes/Portlet.vue +667 -667
  89. package/components/common/portlets/tag/Portlet.vue +433 -433
  90. package/components/common/recursionTree/RecursionTree.vue +223 -223
  91. package/components/common/select/button/ButtonDropdown.vue +108 -108
  92. package/components/common/spiceConsole/Drawer.vue +370 -370
  93. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  94. package/components/common/split/horizontal/HorizontalNew.vue +376 -376
  95. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  96. package/components/common/split/vertical/Vertical.vue +160 -160
  97. package/components/common/split/vertical/VerticalNew.vue +2 -2
  98. package/components/common/split/vertical/VerticalOld.vue +1 -1
  99. package/components/common/tools/Actions.vue +188 -188
  100. package/components/common/vm/actions/add/Add.vue +622 -622
  101. package/components/common/vm/actions/clone/Clone.vue +639 -639
  102. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  103. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +634 -634
  104. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  105. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +275 -275
  106. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +274 -274
  107. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +177 -177
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +410 -410
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +164 -164
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +368 -368
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +232 -232
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +250 -250
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +286 -286
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  138. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  139. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  140. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  141. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  142. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  143. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  144. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  145. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  146. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  147. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  148. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  149. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  150. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  151. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  152. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  153. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  154. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  155. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  156. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  157. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  158. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  159. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  160. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  161. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  162. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  163. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  164. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  165. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  166. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  167. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  168. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  169. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  170. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  171. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  172. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  173. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  174. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  175. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  176. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  177. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  178. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  179. package/components/common/wizards/datastore/add/nfs/accessibility/Accessibility.vue +60 -60
  180. package/components/common/wizards/datastore/add/nfs/configuration/_serversList/DeletePopover.vue +1 -1
  181. package/components/common/wizards/datastore/add/readyComplete/ReadyComplete.vue +92 -92
  182. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/graphicTooltip/graphicTooltip.vue +1 -1
  183. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +105 -105
  184. package/components/common/wizards/vm/migrate/Migrate.vue +302 -302
  185. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  186. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  187. package/components/common/wizards/vm/migrate/select/network/table/network/Network.vue +150 -150
  188. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  189. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +43 -43
  190. package/composables/productNameLocal.ts +30 -30
  191. package/composables/useAppVersion.ts +21 -21
  192. package/package.json +2 -2
  193. package/plugins/date.ts +233 -233
  194. package/plugins/directives.ts +24 -24
  195. package/public/spice-console/lib/images/bitmap.js +203 -203
  196. package/public/spice-console/network/spicechannel.js +383 -383
  197. package/store/main/mutations.ts +7 -7
  198. package/store/main/state.ts +7 -7
  199. package/store/tasks/mappers/recentTasks.ts +64 -64
  200. package/package.json~ +0 -42
@@ -1,222 +1,222 @@
1
- <template>
2
- <div class="column-switch-wrap flex-align-center relative" @click.stop>
3
- <button
4
- :id="columnSwitchId"
5
- :data-id="`${props.testId}-toggle-button`"
6
- class="column-switch-btn"
7
- @click.stop="toggle"
8
- >
9
- <atoms-the-icon
10
- name="column-switch"
11
- width="16px"
12
- height="16px"
13
- class="toggle-icon"
14
- />
15
- </button>
16
-
17
- <div v-show="open" :style="dropdownStyles" class="dropdown-menu">
18
- <div class="column-switch">
19
- <div class="switch-header">
20
- {{ localization.common.showColumns }}
21
- </div>
22
- <ul class="switch-content list-unstyled">
23
- <li
24
- v-for="(item, key) in columnKeysPresent"
25
- :key="`${item.key}_${key}`"
26
- >
27
- <div class="clr-checkbox-wrapper">
28
- <input
29
- :id="`${props.testId}-${item.id}`"
30
- v-model="item.show"
31
- :data-id="`${props.testId}-${item.testId}`"
32
- :disabled="isLast && item.show"
33
- type="checkbox"
34
- @change="change($event, key)"
35
- />
36
- <label
37
- :for="`${props.testId}-${item.id}`"
38
- class="clr-control-label"
39
- >{{ item.text }}</label
40
- >
41
- </div>
42
- </li>
43
- </ul>
44
- <div class="switch-footer">
45
- <button
46
- :id="`${props.testId}-select-all-button`"
47
- :data-id="`${props.testId}-select-all-button`"
48
- class="btn btn-sm btn-link switch-button export-link"
49
- @click="selectAll"
50
- >
51
- {{ localization.common.selectAll }}
52
- </button>
53
- </div>
54
- </div>
55
- </div>
56
- </div>
57
- </template>
58
-
59
- <script setup lang="ts">
60
- import type {
61
- UI_I_HTMLSelectElement,
62
- UI_I_Localization,
63
- } from '~/lib/models/interfaces'
64
- import type { UI_I_ColumnKey } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
65
-
66
- const props = withDefaults(
67
- defineProps<{
68
- columnKeys: UI_I_ColumnKey[]
69
- testId?: string
70
- }>(),
71
- { testId: 'ui-data-grid-column-switch' }
72
- )
73
- const emits = defineEmits<{
74
- (event: 'update:column-keys', value: UI_I_ColumnKey[]): void
75
- }>()
76
-
77
- const columnKeysPresent = computed<UI_I_ColumnKey[]>(() => {
78
- return props.columnKeys.map((item): UI_I_ColumnKey => {
79
- const testId = item.text
80
- .toLowerCase()
81
- .replace(/\s/g, '_')
82
- .replace(/[^a-zA-Z_]/g, '')
83
- .replace(/__+/g, '_')
84
- .replace(/_$/, '')
85
- return { ...item, id: useUniqueId(), testId: `show-column-${testId}` }
86
- })
87
- })
88
-
89
- const localization = computed<UI_I_Localization>(() => useLocal())
90
-
91
- const columnSwitchId = ref<string>('')
92
-
93
- const isLast = computed<boolean>(
94
- () => props.columnKeys.filter((columnKey) => columnKey.show).length === 1
95
- )
96
-
97
- const change = (e: UI_I_HTMLSelectElement, key: number): void => {
98
- const newColumnKeys = props.columnKeys.map((columnKey, i) => {
99
- if (i !== key) {
100
- return columnKey
101
- }
102
-
103
- columnKey.show = e.target.checked
104
- return columnKey
105
- })
106
- emits('update:column-keys', newColumnKeys)
107
- }
108
- const selectAll = (): void => {
109
- const newColumnKeys = props.columnKeys.map((columnKey) => {
110
- columnKey.show = true
111
- return columnKey
112
- })
113
- emits('update:column-keys', newColumnKeys)
114
- }
115
-
116
- const windowClick = (): void => {
117
- hide()
118
- }
119
- onMounted(() => {
120
- window.addEventListener('click', windowClick)
121
- columnSwitchId.value = `column-switch-${useUniqueId()}`
122
- setDropdownStyle()
123
- })
124
- onUnmounted(() => {
125
- window.removeEventListener('click', windowClick)
126
- })
127
-
128
- const open = ref<boolean>(false)
129
- const hide = (): void => {
130
- open.value = false
131
- }
132
- const toggle = (): void => {
133
- open.value = !open.value
134
- if (!open.value) {
135
- return
136
- }
137
-
138
- setDropdownStyle()
139
- }
140
-
141
- const dropdownStyles = ref({})
142
- const setDropdownStyle = (): void => {
143
- const elem = document.getElementById(columnSwitchId.value)
144
- if (!elem) {
145
- setTimeout(() => setDropdownStyle(), 0)
146
- return
147
- }
148
- const { x, y } = elem.getBoundingClientRect()
149
-
150
- dropdownStyles.value = {
151
- top: `${y - 10}px`,
152
- left: `${x}px`,
153
- }
154
- }
155
- </script>
156
-
157
- <style scoped lang="scss">
158
- .column-switch-wrap {
159
- .column-switch-btn {
160
- cursor: pointer;
161
- padding: 0;
162
- border: 0;
163
- display: flex;
164
- background-color: transparent;
165
-
166
- .toggle-icon {
167
- fill: #575757;
168
- }
169
- &:hover {
170
- .toggle-icon {
171
- fill: #0079b8;
172
- }
173
- }
174
- }
175
-
176
- .dropdown-menu {
177
- position: fixed;
178
- z-index: 1000;
179
- visibility: unset;
180
- transform: translateY(-100%);
181
- background-color: var(--block-view-bg-color);
182
- border-color: var(--global-border-color);
183
-
184
- .column-switch {
185
- border-style: none;
186
- box-shadow: none;
187
- height: 85%;
188
- max-height: calc(15rem + 100px);
189
- padding: 18px;
190
- width: 250px;
191
- display: flex;
192
- flex-direction: column;
193
-
194
- .switch-header {
195
- font-size: 16px;
196
- color: var(--global-font-color4);
197
- padding-bottom: 12px;
198
- }
199
-
200
- .switch-content {
201
- overflow-y: auto;
202
- .clr-control-label {
203
- white-space: normal;
204
- }
205
- }
206
-
207
- .switch-footer {
208
- button {
209
- padding: 0;
210
- margin: 0;
211
- font-size: 12px;
212
- letter-spacing: 1px;
213
- color: #0079b8;
214
- text-transform: uppercase;
215
- display: flex;
216
- align-items: center;
217
- }
218
- }
219
- }
220
- }
221
- }
222
- </style>
1
+ <template>
2
+ <div class="column-switch-wrap flex-align-center relative" @click.stop>
3
+ <button
4
+ :id="columnSwitchId"
5
+ :data-id="`${props.testId}-toggle-button`"
6
+ class="column-switch-btn"
7
+ @click.stop="toggle"
8
+ >
9
+ <atoms-the-icon
10
+ name="column-switch"
11
+ width="16px"
12
+ height="16px"
13
+ class="toggle-icon"
14
+ />
15
+ </button>
16
+
17
+ <div v-show="open" :style="dropdownStyles" class="dropdown-menu">
18
+ <div class="column-switch">
19
+ <div class="switch-header">
20
+ {{ localization.common.showColumns }}
21
+ </div>
22
+ <ul class="switch-content list-unstyled">
23
+ <li
24
+ v-for="(item, key) in columnKeysPresent"
25
+ :key="`${item.key}_${key}`"
26
+ >
27
+ <div class="clr-checkbox-wrapper">
28
+ <input
29
+ :id="`${props.testId}-${item.id}`"
30
+ v-model="item.show"
31
+ :data-id="`${props.testId}-${item.testId}`"
32
+ :disabled="isLast && item.show"
33
+ type="checkbox"
34
+ @change="change($event, key)"
35
+ />
36
+ <label
37
+ :for="`${props.testId}-${item.id}`"
38
+ class="clr-control-label"
39
+ >{{ item.text }}</label
40
+ >
41
+ </div>
42
+ </li>
43
+ </ul>
44
+ <div class="switch-footer">
45
+ <button
46
+ :id="`${props.testId}-select-all-button`"
47
+ :data-id="`${props.testId}-select-all-button`"
48
+ class="btn btn-sm btn-link switch-button export-link"
49
+ @click="selectAll"
50
+ >
51
+ {{ localization.common.selectAll }}
52
+ </button>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ </template>
58
+
59
+ <script setup lang="ts">
60
+ import type {
61
+ UI_I_HTMLSelectElement,
62
+ UI_I_Localization,
63
+ } from '~/lib/models/interfaces'
64
+ import type { UI_I_ColumnKey } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
65
+
66
+ const props = withDefaults(
67
+ defineProps<{
68
+ columnKeys: UI_I_ColumnKey[]
69
+ testId?: string
70
+ }>(),
71
+ { testId: 'ui-data-grid-column-switch' }
72
+ )
73
+ const emits = defineEmits<{
74
+ (event: 'update:column-keys', value: UI_I_ColumnKey[]): void
75
+ }>()
76
+
77
+ const columnKeysPresent = computed<UI_I_ColumnKey[]>(() => {
78
+ return props.columnKeys.map((item): UI_I_ColumnKey => {
79
+ const testId = item.text
80
+ .toLowerCase()
81
+ .replace(/\s/g, '_')
82
+ .replace(/[^a-zA-Z_]/g, '')
83
+ .replace(/__+/g, '_')
84
+ .replace(/_$/, '')
85
+ return { ...item, id: useUniqueId(), testId: `show-column-${testId}` }
86
+ })
87
+ })
88
+
89
+ const localization = computed<UI_I_Localization>(() => useLocal())
90
+
91
+ const columnSwitchId = ref<string>('')
92
+
93
+ const isLast = computed<boolean>(
94
+ () => props.columnKeys.filter((columnKey) => columnKey.show).length === 1
95
+ )
96
+
97
+ const change = (e: UI_I_HTMLSelectElement, key: number): void => {
98
+ const newColumnKeys = props.columnKeys.map((columnKey, i) => {
99
+ if (i !== key) {
100
+ return columnKey
101
+ }
102
+
103
+ columnKey.show = e.target.checked
104
+ return columnKey
105
+ })
106
+ emits('update:column-keys', newColumnKeys)
107
+ }
108
+ const selectAll = (): void => {
109
+ const newColumnKeys = props.columnKeys.map((columnKey) => {
110
+ columnKey.show = true
111
+ return columnKey
112
+ })
113
+ emits('update:column-keys', newColumnKeys)
114
+ }
115
+
116
+ const windowClick = (): void => {
117
+ hide()
118
+ }
119
+ onMounted(() => {
120
+ window.addEventListener('click', windowClick)
121
+ columnSwitchId.value = `column-switch-${useUniqueId()}`
122
+ setDropdownStyle()
123
+ })
124
+ onUnmounted(() => {
125
+ window.removeEventListener('click', windowClick)
126
+ })
127
+
128
+ const open = ref<boolean>(false)
129
+ const hide = (): void => {
130
+ open.value = false
131
+ }
132
+ const toggle = (): void => {
133
+ open.value = !open.value
134
+ if (!open.value) {
135
+ return
136
+ }
137
+
138
+ setDropdownStyle()
139
+ }
140
+
141
+ const dropdownStyles = ref({})
142
+ const setDropdownStyle = (): void => {
143
+ const elem = document.getElementById(columnSwitchId.value)
144
+ if (!elem) {
145
+ setTimeout(() => setDropdownStyle(), 0)
146
+ return
147
+ }
148
+ const { x, y } = elem.getBoundingClientRect()
149
+
150
+ dropdownStyles.value = {
151
+ top: `${y - 10}px`,
152
+ left: `${x}px`,
153
+ }
154
+ }
155
+ </script>
156
+
157
+ <style scoped lang="scss">
158
+ .column-switch-wrap {
159
+ .column-switch-btn {
160
+ cursor: pointer;
161
+ padding: 0;
162
+ border: 0;
163
+ display: flex;
164
+ background-color: transparent;
165
+
166
+ .toggle-icon {
167
+ fill: #575757;
168
+ }
169
+ &:hover {
170
+ .toggle-icon {
171
+ fill: #0079b8;
172
+ }
173
+ }
174
+ }
175
+
176
+ .dropdown-menu {
177
+ position: fixed;
178
+ z-index: var(--z-fixed);
179
+ visibility: unset;
180
+ transform: translateY(-100%);
181
+ background-color: var(--block-view-bg-color);
182
+ border-color: var(--global-border-color);
183
+
184
+ .column-switch {
185
+ border-style: none;
186
+ box-shadow: none;
187
+ height: 85%;
188
+ max-height: calc(15rem + 100px);
189
+ padding: 18px;
190
+ width: 250px;
191
+ display: flex;
192
+ flex-direction: column;
193
+
194
+ .switch-header {
195
+ font-size: 16px;
196
+ color: var(--global-font-color4);
197
+ padding-bottom: 12px;
198
+ }
199
+
200
+ .switch-content {
201
+ overflow-y: auto;
202
+ .clr-control-label {
203
+ white-space: normal;
204
+ }
205
+ }
206
+
207
+ .switch-footer {
208
+ button {
209
+ padding: 0;
210
+ margin: 0;
211
+ font-size: 12px;
212
+ letter-spacing: 1px;
213
+ color: #0079b8;
214
+ text-transform: uppercase;
215
+ display: flex;
216
+ align-items: center;
217
+ }
218
+ }
219
+ }
220
+ }
221
+ }
222
+ </style>
@@ -1,94 +1,94 @@
1
- import type { UI_ColumnSettingsStrategy } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
2
- import type {
3
- UI_I_ColumnKey,
4
- UI_I_HeadItem,
5
- } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
6
- import type { UI_I_DropdownButtonItem } from '~/components/common/select/button/lib/models/interfaces'
7
- import type { UI_I_Localization } from '~/lib/models/interfaces'
8
- import {
9
- constructColumnKey,
10
- constructHeadItem,
11
- } from '~/components/atoms/table/dataGrid/lib/utils/constructDataTable'
12
-
13
- export const defaultColumnKeys = (
14
- items: [string, boolean, string, string][],
15
- strategy?: UI_ColumnSettingsStrategy
16
- ): UI_I_ColumnKey[] => {
17
- const result: UI_I_ColumnKey[] = []
18
- items.forEach((item, i) => {
19
- let col: string = `col${i}` // Стандартное значение по умолчанию
20
-
21
- if (strategy) {
22
- // Проходим по ключам объекта и ищем соответствие индекса i в значениях
23
- for (const key in strategy) {
24
- if (strategy[key].includes(i)) {
25
- col = key
26
- break
27
- }
28
- }
29
- }
30
-
31
- result.push(
32
- constructColumnKey(col, item[0], item[1], `show-column-${item[3]}`)
33
- )
34
- })
35
- return result
36
- }
37
-
38
- export const defaultHeadItems = (
39
- items: [string, boolean, string, string][],
40
- strategy?: UI_ColumnSettingsStrategy
41
- ): UI_I_HeadItem[] => {
42
- const result: UI_I_HeadItem[] = []
43
- items.forEach((item, i) => {
44
- let col: string = `col${i}` // Стандартное значение по умолчанию
45
-
46
- if (strategy) {
47
- // Проходим по ключам объекта и ищем соответствие индекса i в значениях
48
- for (const key in strategy) {
49
- if (strategy[key].includes(i)) {
50
- col = key
51
- break
52
- }
53
- }
54
- }
55
-
56
- result.push(
57
- constructHeadItem(
58
- col,
59
- item[0],
60
- item[3],
61
- false,
62
- item[2],
63
- undefined,
64
- item[3]
65
- )
66
- )
67
- })
68
- return result
69
- }
70
-
71
- export const exportItemsFunc = (
72
- localization: UI_I_Localization,
73
- rows: number,
74
- selectedRows: number,
75
- testId: string
76
- ): UI_I_DropdownButtonItem[] => {
77
- return [
78
- {
79
- text: localization.common.allRowsCount.replace('{0}', '' + rows),
80
- type: '0',
81
- disabled: false,
82
- testId: `${testId}-export-all`,
83
- },
84
- {
85
- text: localization.common.selectedRowsCount.replace(
86
- '{0}',
87
- '' + selectedRows
88
- ),
89
- type: '1',
90
- disabled: false,
91
- testId: `${testId}-export-selected`,
92
- },
93
- ]
94
- }
1
+ import type { UI_ColumnSettingsStrategy } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
2
+ import type {
3
+ UI_I_ColumnKey,
4
+ UI_I_HeadItem,
5
+ } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
6
+ import type { UI_I_DropdownButtonItem } from '~/components/common/select/button/lib/models/interfaces'
7
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
8
+ import {
9
+ constructColumnKey,
10
+ constructHeadItem,
11
+ } from '~/components/atoms/table/dataGrid/lib/utils/constructDataTable'
12
+
13
+ export const defaultColumnKeys = (
14
+ items: [string, boolean, string, string][],
15
+ strategy?: UI_ColumnSettingsStrategy
16
+ ): UI_I_ColumnKey[] => {
17
+ const result: UI_I_ColumnKey[] = []
18
+ items.forEach((item, i) => {
19
+ let col: string = `col${i}` // Стандартное значение по умолчанию
20
+
21
+ if (strategy) {
22
+ // Проходим по ключам объекта и ищем соответствие индекса i в значениях
23
+ for (const key in strategy) {
24
+ if (strategy[key].includes(i)) {
25
+ col = key
26
+ break
27
+ }
28
+ }
29
+ }
30
+
31
+ result.push(
32
+ constructColumnKey(col, item[0], item[1], `show-column-${item[3]}`)
33
+ )
34
+ })
35
+ return result
36
+ }
37
+
38
+ export const defaultHeadItems = (
39
+ items: [string, boolean, string, string][],
40
+ strategy?: UI_ColumnSettingsStrategy
41
+ ): UI_I_HeadItem[] => {
42
+ const result: UI_I_HeadItem[] = []
43
+ items.forEach((item, i) => {
44
+ let col: string = `col${i}` // Стандартное значение по умолчанию
45
+
46
+ if (strategy) {
47
+ // Проходим по ключам объекта и ищем соответствие индекса i в значениях
48
+ for (const key in strategy) {
49
+ if (strategy[key].includes(i)) {
50
+ col = key
51
+ break
52
+ }
53
+ }
54
+ }
55
+
56
+ result.push(
57
+ constructHeadItem(
58
+ col,
59
+ item[0],
60
+ item[3],
61
+ false,
62
+ item[2],
63
+ undefined,
64
+ item[3]
65
+ )
66
+ )
67
+ })
68
+ return result
69
+ }
70
+
71
+ export const exportItemsFunc = (
72
+ localization: UI_I_Localization,
73
+ rows: number,
74
+ selectedRows: number,
75
+ testId: string
76
+ ): UI_I_DropdownButtonItem[] => {
77
+ return [
78
+ {
79
+ text: localization.common.allRowsCount.replace('{0}', '' + rows),
80
+ type: '0',
81
+ disabled: false,
82
+ testId: `${testId}-export-all`,
83
+ },
84
+ {
85
+ text: localization.common.selectedRowsCount.replace(
86
+ '{0}',
87
+ '' + selectedRows
88
+ ),
89
+ type: '1',
90
+ disabled: false,
91
+ testId: `${testId}-export-selected`,
92
+ },
93
+ ]
94
+ }
@@ -1,16 +1,16 @@
1
- export const generateCsvAndDownload = (rows: HTMLElement[]): void => {
2
- const content: string[] = []
3
- rows.forEach((row: HTMLElement) => {
4
- content.push(row.innerText.replaceAll(';', ',').replaceAll('\n', ';'))
5
- })
6
-
7
- const csvContent = 'data:text/csv;charset=utf-8,' + content.join('\n')
8
-
9
- const encodedUri = encodeURI(csvContent)
10
- const link = document.createElement('a')
11
- link.setAttribute('href', encodedUri)
12
- link.setAttribute('download', 'my_data.csv')
13
- document.body.appendChild(link)
14
-
15
- link.click()
16
- }
1
+ export const generateCsvAndDownload = (rows: HTMLElement[]): void => {
2
+ const content: string[] = []
3
+ rows.forEach((row: HTMLElement) => {
4
+ content.push(row.innerText.replaceAll(';', ',').replaceAll('\n', ';'))
5
+ })
6
+
7
+ const csvContent = 'data:text/csv;charset=utf-8,' + content.join('\n')
8
+
9
+ const encodedUri = encodeURI(csvContent)
10
+ const link = document.createElement('a')
11
+ link.setAttribute('href', encodedUri)
12
+ link.setAttribute('download', 'my_data.csv')
13
+ document.body.appendChild(link)
14
+
15
+ link.click()
16
+ }