bfg-common 1.4.720 → 1.4.722

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 (140) hide show
  1. package/assets/localization/local_be.json +2 -2
  2. package/assets/localization/local_en.json +2 -2
  3. package/assets/localization/local_hy.json +2 -2
  4. package/assets/localization/local_kk.json +2 -2
  5. package/assets/localization/local_ru.json +2 -2
  6. package/assets/localization/local_zh.json +2 -2
  7. package/assets/scss/common/normalize.scss +355 -361
  8. package/components/atoms/TheIcon3.vue +50 -50
  9. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  10. package/components/atoms/stack/StackBlock.vue +185 -185
  11. package/components/atoms/table/dataGrid/DataGrid.vue +1696 -1696
  12. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  13. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +91 -91
  14. package/components/common/browse/BrowseNew.vue +237 -237
  15. package/components/common/browse/BrowseOld.vue +217 -217
  16. package/components/common/browse/blocks/contents/Files.vue +37 -37
  17. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  18. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  19. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  20. package/components/common/context/lib/models/interfaces.ts +30 -30
  21. package/components/common/context/recursion/Recursion.vue +86 -86
  22. package/components/common/context/recursion/RecursionOld.vue +213 -213
  23. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  24. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  25. package/components/common/layout/theHeader/lib/models/enums.ts +0 -1
  26. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +2 -5
  27. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +150 -150
  28. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +284 -300
  29. package/components/common/modals/confirmByInput/ConfirmByInput.vue +206 -206
  30. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  31. package/components/common/monitor/advanced/Advanced.vue +244 -239
  32. package/components/common/monitor/advanced/tools/Tools.vue +447 -440
  33. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModal.vue +511 -504
  34. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/Counters.vue +108 -106
  35. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/Timespan.vue +95 -93
  36. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/form/Form.vue +544 -539
  37. package/components/common/monitor/overview/filters/Filters.vue +235 -232
  38. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +250 -240
  39. package/components/common/monitor/overview/filters/customIntervalModal/lib/config/dateChecker.ts +62 -52
  40. package/components/common/pages/home/StatusContent.vue +49 -49
  41. package/components/common/pages/home/headline/Headline.vue +44 -44
  42. package/components/common/pages/home/headline/HeadlineNew.vue +71 -71
  43. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  44. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  45. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  46. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  47. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  48. package/components/common/pages/home/widgets/hosts/HostsNew.vue +100 -100
  49. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  50. package/components/common/pages/home/widgets/services/lib/config/config.ts +108 -108
  51. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  52. package/components/common/pages/home/widgets/vms/VmsNew.vue +101 -101
  53. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  54. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  55. package/components/common/recursionTree/RecursionTree.vue +212 -223
  56. package/components/common/select/button/ButtonDropdown.vue +108 -108
  57. package/components/common/selectLanguage/lib/config/config.ts +0 -5
  58. package/components/common/spiceConsole/Drawer.vue +370 -370
  59. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  60. package/components/common/split/vertical/Vertical.vue +160 -160
  61. package/components/common/vm/actions/add/Add.vue +616 -616
  62. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  63. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +267 -267
  64. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +269 -269
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +55 -70
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +42 -50
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +147 -147
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +281 -281
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +85 -85
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +91 -91
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +35 -35
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +48 -48
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +30 -30
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +46 -46
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  117. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  121. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  122. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  123. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  124. package/components/common/vm/actions/editSettings/EditSettings.vue +232 -232
  125. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +183 -183
  126. package/components/common/vm/actions/editSettings/new/New.vue +177 -177
  127. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  128. package/composables/productNameLocal.ts +30 -30
  129. package/composables/useAppVersion.ts +21 -21
  130. package/composables/useLocal.ts +0 -5
  131. package/layouts/auth.vue +0 -1
  132. package/package.json +1 -1
  133. package/plugins/date.ts +233 -233
  134. package/plugins/recursion.ts +311 -311
  135. package/public/spice-console/lib/images/bitmap.js +203 -203
  136. package/public/spice-console/network/spicechannel.js +383 -383
  137. package/store/main/mutations.ts +7 -7
  138. package/store/main/state.ts +7 -7
  139. package/store/tasks/mappers/recentTasks.ts +64 -64
  140. package/assets/scss/clarity/local_ar.json +0 -2914
@@ -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="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 {
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="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 {
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,91 +1,91 @@
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
- ): UI_I_DropdownButtonItem[] => {
76
- return [
77
- {
78
- text: localization.common.allRowsCount.replace('{0}', '' + rows),
79
- type: '0',
80
- disabled: false,
81
- },
82
- {
83
- text: localization.common.selectedRowsCount.replace(
84
- '{0}',
85
- '' + selectedRows
86
- ),
87
- type: '1',
88
- disabled: false,
89
- },
90
- ]
91
- }
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
+ ): UI_I_DropdownButtonItem[] => {
76
+ return [
77
+ {
78
+ text: localization.common.allRowsCount.replace('{0}', '' + rows),
79
+ type: '0',
80
+ disabled: false,
81
+ },
82
+ {
83
+ text: localization.common.selectedRowsCount.replace(
84
+ '{0}',
85
+ '' + selectedRows
86
+ ),
87
+ type: '1',
88
+ disabled: false,
89
+ },
90
+ ]
91
+ }