bfg-common 1.5.82 → 1.5.84

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 (210) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/scss/common/normalize.scss +339 -339
  3. package/components/atoms/TheIcon3.vue +50 -50
  4. package/components/atoms/collapse/CollapseNav.vue +165 -165
  5. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  6. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  7. package/components/atoms/perPage/PerPage.vue +58 -58
  8. package/components/atoms/stack/StackBlock.vue +185 -185
  9. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  10. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  11. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  12. package/components/atoms/table/info/Info.vue +5 -11
  13. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  14. package/components/atoms/tooltip/Signpost.vue +227 -227
  15. package/components/common/browse/BrowseNew.vue +237 -237
  16. package/components/common/browse/BrowseOld.vue +217 -217
  17. package/components/common/browse/blocks/contents/Files.vue +37 -37
  18. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  19. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  20. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  21. package/components/common/context/Context.vue +111 -111
  22. package/components/common/context/lib/models/interfaces.ts +31 -31
  23. package/components/common/context/recursion/Recursion.vue +87 -87
  24. package/components/common/context/recursion/RecursionNew.vue +238 -238
  25. package/components/common/context/recursion/RecursionOld.vue +228 -228
  26. package/components/common/details/DetailsItem.vue +109 -109
  27. package/components/common/diagramMain/DiagramMain.vue +897 -897
  28. package/components/common/diagramMain/Header.vue +214 -214
  29. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  30. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  31. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +311 -311
  32. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  33. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +1040 -1040
  34. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  35. package/components/common/pages/home/headline/Headline.vue +45 -45
  36. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  37. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  38. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  39. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  40. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  41. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  42. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  43. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  44. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  45. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  46. package/components/common/pages/packages/Packages.vue +208 -208
  47. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  48. package/components/common/portlets/customAttributes/Portlet.vue +667 -667
  49. package/components/common/portlets/tag/Portlet.vue +433 -433
  50. package/components/common/readyToComplete/New.vue +66 -66
  51. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  52. package/components/common/recursionTree/RecursionTree.vue +223 -223
  53. package/components/common/select/button/ButtonDropdown.vue +108 -108
  54. package/components/common/spiceConsole/Drawer.vue +370 -370
  55. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  56. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  57. package/components/common/split/vertical/Vertical.vue +160 -160
  58. package/components/common/tools/Actions.vue +202 -202
  59. package/components/common/vm/actions/add/Add.vue +785 -785
  60. package/components/common/vm/actions/add/New.vue +556 -556
  61. package/components/common/vm/actions/add/Old.vue +371 -371
  62. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  63. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  64. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  65. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  66. package/components/common/vm/actions/clone/Clone.vue +798 -798
  67. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  68. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +626 -626
  69. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  70. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +275 -275
  71. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +272 -272
  72. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +177 -177
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +468 -410
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +118 -117
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +165 -164
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +1 -0
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/CoresPerSocketNew.vue +1 -0
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/maxCpu/MaxCpuNew.vue +1 -0
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +1 -0
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/SharesNew.vue +2 -0
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/LimitNew.vue +2 -0
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +2 -0
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +368 -368
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +233 -232
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +250 -250
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/cache/CacheNew.vue +1 -0
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/limitIops/LimitIopsNew.vue +2 -0
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeNew.vue +1 -0
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/provisioning/ProvisioningNew.vue +1 -0
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +45 -44
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +286 -286
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +125 -124
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/adapterType/AdapterTypeNew.vue +1 -0
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +70 -69
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +85 -84
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +82 -81
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +57 -56
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/ReservationNew.vue +2 -0
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +105 -104
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/model/ModelNew.vue +1 -0
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplaysNew.vue +1 -0
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  135. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  136. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  137. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  138. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  139. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/DelayNew.vue +1 -0
  140. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  141. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +43 -42
  142. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  143. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  144. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  145. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +144 -141
  146. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  147. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  148. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  149. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  150. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  151. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +40 -39
  152. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  153. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  154. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  155. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  156. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -38
  157. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  158. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  159. package/components/common/vm/actions/common/select/compatibility/Compatibility.vue +100 -100
  160. package/components/common/vm/actions/common/select/compatibility/New.vue +165 -165
  161. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  162. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  163. package/components/common/vm/actions/common/select/computeResource/New.vue +141 -141
  164. package/components/common/vm/actions/common/select/computeResource/Old.vue +99 -99
  165. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  166. package/components/common/vm/actions/common/select/computeResource/treeView/Old.vue +48 -48
  167. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  168. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  169. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  170. package/components/common/vm/actions/common/select/createType/Old.vue +70 -70
  171. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  172. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  173. package/components/common/vm/actions/common/select/name/New.vue +246 -246
  174. package/components/common/vm/actions/common/select/name/Old.vue +119 -119
  175. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  176. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  177. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  178. package/components/common/vm/actions/common/select/storage/Old.vue +129 -129
  179. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  180. package/components/common/vm/actions/common/select/storage/new/New.vue +189 -189
  181. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +326 -326
  182. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  183. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  184. package/components/common/vm/actions/common/select/template/Template.vue +64 -64
  185. package/components/common/vm/actions/common/select/template/TemplateTreeView.vue +88 -88
  186. package/components/common/vm/actions/editSettings/lib/config/modal.ts +1 -1
  187. package/components/common/vm/actions/editSettings/new/New.vue +185 -179
  188. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  189. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  190. package/components/common/wizards/datastore/add/nfs/accessibility/Accessibility.vue +60 -60
  191. package/components/common/wizards/datastore/add/readyComplete/ReadyComplete.vue +92 -92
  192. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +105 -105
  193. package/components/common/wizards/vm/migrate/Migrate.vue +11 -10
  194. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  195. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -111
  196. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -57
  197. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  198. package/components/common/wizards/vm/migrate/select/network/table/network/Network.vue +150 -150
  199. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  200. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +43 -43
  201. package/composables/productNameLocal.ts +30 -30
  202. package/composables/useAppVersion.ts +21 -21
  203. package/package.json +1 -1
  204. package/plugins/date.ts +233 -233
  205. package/plugins/directives.ts +24 -24
  206. package/public/spice-console/lib/images/bitmap.js +203 -203
  207. package/public/spice-console/network/spicechannel.js +383 -383
  208. package/store/main/mutations.ts +7 -7
  209. package/store/main/state.ts +7 -7
  210. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,202 +1,202 @@
1
- <template>
2
- <!-- :style="{ 'padding-right': rightSpace + 'px' }"-->
3
- <div
4
- :id="id"
5
- class="btn-group"
6
- :style="{ paddingRight: spaceForCollapseBtn + 'px' }"
7
- >
8
- <div v-for="(button, key) in props.actions" :key="button.type">
9
- <label v-if="button.uploaded" v-development="button.development">
10
- <span
11
- :class="[`btn btn-link ${props.size}`]"
12
- :data-id="`${button.testId}-text`"
13
- >
14
- <slot name="icon" :data="button" />
15
- {{ button.text }}
16
- </span>
17
- <input
18
- :id="`select-file-button-${key}`"
19
- :data-id="button.testId"
20
- type="file"
21
- :disabled="button.disabled"
22
- :multiple="button?.multiple || false"
23
- class="btn-group__file"
24
- @change="(event) => onSelectFiles(event, button.type, key)"
25
- />
26
- </label>
27
-
28
- <button
29
- v-else
30
- :id="`actions-button-${key}`"
31
- v-development="button.development"
32
- :data-id="button.testId"
33
- :class="[`btn btn-link ${props.size}`]"
34
- :disabled="button.disabled"
35
- @click="onClickButton(button.type)"
36
- >
37
- <slot name="icon" :data="button" />
38
- {{ button.text }}
39
- </button>
40
- </div>
41
- <atoms-collapse-nav
42
- v-show="collapsedItems.length"
43
- :test-id="`${props.testId}-item`"
44
- :items="collapsedItems"
45
- close-after-click
46
- class="nav-tabs"
47
- @change="onClickButton"
48
- @select-file="onSelectFiles"
49
- />
50
- </div>
51
- </template>
52
-
53
- <script lang="ts" setup>
54
- import type { UI_I_Button } from '~/components/common/tools/lib/models/interfaces'
55
- import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
56
-
57
- const props = withDefaults(
58
- defineProps<{
59
- actions: UI_I_Button[]
60
- testId: string
61
- size?: 'btn-sm' | ''
62
- }>(),
63
- {
64
- size: 'btn-sm',
65
- }
66
- )
67
- const emits = defineEmits<{
68
- (event: 'click', value1: string, value2?: Event | null): void
69
- }>()
70
-
71
- const onClickButton = (type: string): void => {
72
- emits('click', type)
73
- }
74
-
75
- const onSelectFiles = (event: Event, type: string, key: number): void => {
76
- emits('click', type, event)
77
-
78
- const input = document.getElementById(
79
- `select-file-button-${key}`
80
- ) as HTMLInputElement | null
81
- input && (input.value = '')
82
- }
83
-
84
- const visibleCount = ref<number>(props.actions.length)
85
- const collapsedItems = computed<UI_I_CollapseNavItem[]>(() => {
86
- return props.actions
87
- .filter((_, index) => {
88
- return index >= visibleCount.value
89
- })
90
- .map((item) => {
91
- return {
92
- text: item.text,
93
- value: item.type,
94
- disabled: item.disabled,
95
- development: item.development,
96
- uploaded: item.uploaded,
97
- testId: item.testId,
98
- }
99
- })
100
- })
101
- watch(
102
- () => props.actions,
103
- () => {
104
- // visibleCount.value = newValue.length
105
- outputSize()
106
- },
107
- { deep: true }
108
- )
109
-
110
- // const rightSpace = ref<number>(0)
111
- // watch(
112
- // collapsedItems,
113
- // (newValue) => {
114
- // let space = 0
115
- // const element: any = document.getElementById(id.value)
116
- // if (!element || !newValue.length) space = 0
117
- // else if (element.lastChild?.className?.includes('tabs-overflow')) {
118
- // space =
119
- // element.getBoundingClientRect().right -
120
- // element.lastChild.getBoundingClientRect().left
121
- // }
122
- //
123
- // rightSpace.value = space
124
- // },
125
- // { deep: true }
126
- // )
127
-
128
-
129
- const spaceForCollapseBtn = ref<number>(65)
130
- const outputSize = (): void => {
131
- const el = document.getElementById(id.value)
132
- if (!el) return
133
-
134
- const elWidth = el.clientWidth
135
- // const elItems = el.children
136
- const elItems = Array.from(el.children).filter(
137
- (item) => !item.classList.contains('nav-tabs')
138
- )
139
- // const elItemsMarginLeft = parseInt(getComputedStyle(elItems[0]).marginLeft)
140
- // const elItemsMarginRight = parseInt(getComputedStyle(elItems[0]).marginRight)
141
- // const childrenMarginX = elItemsMarginLeft + elItemsMarginRight
142
-
143
- // let childrenWidth = -10 // TODO Найти способ лучше. Не всегда совпадает ширина элементов с шириной родительского элемента
144
- let childrenWidth = spaceForCollapseBtn.value // TODO Найти способ лучше. Не всегда совпадает ширина элементов с шириной родительского элемента
145
- let count = 0
146
- for (let i = 0; i < elItems.length; i++) {
147
- const elItemsMarginLeft = parseInt(getComputedStyle(elItems[i]).marginLeft)
148
- const elItemsMarginRight = parseInt(
149
- getComputedStyle(elItems[i]).marginRight
150
- )
151
- const childrenMarginX = elItemsMarginLeft + elItemsMarginRight
152
-
153
- childrenWidth += elItems[i].clientWidth + childrenMarginX
154
- // const isWrap = elWidth - rightSpace.value < childrenWidth
155
- const isWrap = elWidth < childrenWidth
156
-
157
- if (isWrap) break
158
- count++
159
- }
160
-
161
- visibleCount.value = count
162
- }
163
-
164
- const setResizeObserve = (): void => {
165
- const el = document.getElementById(id.value)
166
-
167
- if (!el) {
168
- setTimeout(setResizeObserve, 0)
169
- return
170
- }
171
-
172
- new ResizeObserver(outputSize).observe(el)
173
- }
174
- const id = ref<string>('')
175
- onMounted(() => {
176
- id.value = `tool-actions-${useUniqueId()}`
177
- setResizeObserve()
178
- })
179
- </script>
180
-
181
- <style lang="scss" scoped>
182
- .btn {
183
- &:disabled {
184
- color: var(--btn-link-disabled);
185
- }
186
- &-group {
187
- margin-top: 10px;
188
- box-shadow: none;
189
- position: relative;
190
- overflow: hidden;
191
- display: flex;
192
- flex-wrap: wrap;
193
- min-height: 25px;
194
- height: 25px;
195
- box-sizing: content-box;
196
-
197
- &__file {
198
- display: none;
199
- }
200
- }
201
- }
202
- </style>
1
+ <template>
2
+ <!-- :style="{ 'padding-right': rightSpace + 'px' }"-->
3
+ <div
4
+ :id="id"
5
+ class="btn-group"
6
+ :style="{ paddingRight: spaceForCollapseBtn + 'px' }"
7
+ >
8
+ <div v-for="(button, key) in props.actions" :key="button.type">
9
+ <label v-if="button.uploaded" v-development="button.development">
10
+ <span
11
+ :class="[`btn btn-link ${props.size}`]"
12
+ :data-id="`${button.testId}-text`"
13
+ >
14
+ <slot name="icon" :data="button" />
15
+ {{ button.text }}
16
+ </span>
17
+ <input
18
+ :id="`select-file-button-${key}`"
19
+ :data-id="button.testId"
20
+ type="file"
21
+ :disabled="button.disabled"
22
+ :multiple="button?.multiple || false"
23
+ class="btn-group__file"
24
+ @change="(event) => onSelectFiles(event, button.type, key)"
25
+ />
26
+ </label>
27
+
28
+ <button
29
+ v-else
30
+ :id="`actions-button-${key}`"
31
+ v-development="button.development"
32
+ :data-id="button.testId"
33
+ :class="[`btn btn-link ${props.size}`]"
34
+ :disabled="button.disabled"
35
+ @click="onClickButton(button.type)"
36
+ >
37
+ <slot name="icon" :data="button" />
38
+ {{ button.text }}
39
+ </button>
40
+ </div>
41
+ <atoms-collapse-nav
42
+ v-show="collapsedItems.length"
43
+ :test-id="`${props.testId}-item`"
44
+ :items="collapsedItems"
45
+ close-after-click
46
+ class="nav-tabs"
47
+ @change="onClickButton"
48
+ @select-file="onSelectFiles"
49
+ />
50
+ </div>
51
+ </template>
52
+
53
+ <script lang="ts" setup>
54
+ import type { UI_I_Button } from '~/components/common/tools/lib/models/interfaces'
55
+ import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
56
+
57
+ const props = withDefaults(
58
+ defineProps<{
59
+ actions: UI_I_Button[]
60
+ testId: string
61
+ size?: 'btn-sm' | ''
62
+ }>(),
63
+ {
64
+ size: 'btn-sm',
65
+ }
66
+ )
67
+ const emits = defineEmits<{
68
+ (event: 'click', value1: string, value2?: Event | null): void
69
+ }>()
70
+
71
+ const onClickButton = (type: string): void => {
72
+ emits('click', type)
73
+ }
74
+
75
+ const onSelectFiles = (event: Event, type: string, key: number): void => {
76
+ emits('click', type, event)
77
+
78
+ const input = document.getElementById(
79
+ `select-file-button-${key}`
80
+ ) as HTMLInputElement | null
81
+ input && (input.value = '')
82
+ }
83
+
84
+ const visibleCount = ref<number>(props.actions.length)
85
+ const collapsedItems = computed<UI_I_CollapseNavItem[]>(() => {
86
+ return props.actions
87
+ .filter((_, index) => {
88
+ return index >= visibleCount.value
89
+ })
90
+ .map((item) => {
91
+ return {
92
+ text: item.text,
93
+ value: item.type,
94
+ disabled: item.disabled,
95
+ development: item.development,
96
+ uploaded: item.uploaded,
97
+ testId: item.testId,
98
+ }
99
+ })
100
+ })
101
+ watch(
102
+ () => props.actions,
103
+ () => {
104
+ // visibleCount.value = newValue.length
105
+ outputSize()
106
+ },
107
+ { deep: true }
108
+ )
109
+
110
+ // const rightSpace = ref<number>(0)
111
+ // watch(
112
+ // collapsedItems,
113
+ // (newValue) => {
114
+ // let space = 0
115
+ // const element: any = document.getElementById(id.value)
116
+ // if (!element || !newValue.length) space = 0
117
+ // else if (element.lastChild?.className?.includes('tabs-overflow')) {
118
+ // space =
119
+ // element.getBoundingClientRect().right -
120
+ // element.lastChild.getBoundingClientRect().left
121
+ // }
122
+ //
123
+ // rightSpace.value = space
124
+ // },
125
+ // { deep: true }
126
+ // )
127
+
128
+
129
+ const spaceForCollapseBtn = ref<number>(65)
130
+ const outputSize = (): void => {
131
+ const el = document.getElementById(id.value)
132
+ if (!el) return
133
+
134
+ const elWidth = el.clientWidth
135
+ // const elItems = el.children
136
+ const elItems = Array.from(el.children).filter(
137
+ (item) => !item.classList.contains('nav-tabs')
138
+ )
139
+ // const elItemsMarginLeft = parseInt(getComputedStyle(elItems[0]).marginLeft)
140
+ // const elItemsMarginRight = parseInt(getComputedStyle(elItems[0]).marginRight)
141
+ // const childrenMarginX = elItemsMarginLeft + elItemsMarginRight
142
+
143
+ // let childrenWidth = -10 // TODO Найти способ лучше. Не всегда совпадает ширина элементов с шириной родительского элемента
144
+ let childrenWidth = spaceForCollapseBtn.value // TODO Найти способ лучше. Не всегда совпадает ширина элементов с шириной родительского элемента
145
+ let count = 0
146
+ for (let i = 0; i < elItems.length; i++) {
147
+ const elItemsMarginLeft = parseInt(getComputedStyle(elItems[i]).marginLeft)
148
+ const elItemsMarginRight = parseInt(
149
+ getComputedStyle(elItems[i]).marginRight
150
+ )
151
+ const childrenMarginX = elItemsMarginLeft + elItemsMarginRight
152
+
153
+ childrenWidth += elItems[i].clientWidth + childrenMarginX
154
+ // const isWrap = elWidth - rightSpace.value < childrenWidth
155
+ const isWrap = elWidth < childrenWidth
156
+
157
+ if (isWrap) break
158
+ count++
159
+ }
160
+
161
+ visibleCount.value = count
162
+ }
163
+
164
+ const setResizeObserve = (): void => {
165
+ const el = document.getElementById(id.value)
166
+
167
+ if (!el) {
168
+ setTimeout(setResizeObserve, 0)
169
+ return
170
+ }
171
+
172
+ new ResizeObserver(outputSize).observe(el)
173
+ }
174
+ const id = ref<string>('')
175
+ onMounted(() => {
176
+ id.value = `tool-actions-${useUniqueId()}`
177
+ setResizeObserve()
178
+ })
179
+ </script>
180
+
181
+ <style lang="scss" scoped>
182
+ .btn {
183
+ &:disabled {
184
+ color: var(--btn-link-disabled);
185
+ }
186
+ &-group {
187
+ margin-top: 10px;
188
+ box-shadow: none;
189
+ position: relative;
190
+ overflow: hidden;
191
+ display: flex;
192
+ flex-wrap: wrap;
193
+ min-height: 25px;
194
+ height: 25px;
195
+ box-sizing: content-box;
196
+
197
+ &__file {
198
+ display: none;
199
+ }
200
+ }
201
+ }
202
+ </style>