bfg-common 1.5.486 → 1.5.488

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 (209) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/localization/local_be.json +9 -2
  7. package/assets/localization/local_en.json +19 -12
  8. package/assets/localization/local_hy.json +9 -2
  9. package/assets/localization/local_kk.json +9 -2
  10. package/assets/localization/local_ru.json +9 -2
  11. package/assets/localization/local_zh.json +9 -2
  12. package/assets/scss/common/theme.scss +2 -2
  13. package/components/atoms/TheIcon3.vue +50 -50
  14. package/components/atoms/collapse/CollapseNav.vue +170 -170
  15. package/components/atoms/perPage/PerPage.vue +58 -58
  16. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  17. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  18. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  19. package/components/common/adapterManager/AdapterManager.vue +189 -545
  20. package/components/common/adapterManager/AdapterManagerNew.vue +300 -0
  21. package/components/common/adapterManager/AdapterManagerOld.vue +498 -0
  22. package/components/common/adapterManager/addAdapterModal/AddAdapterModal.vue +70 -0
  23. package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +77 -0
  24. package/components/common/adapterManager/{AddAdapterModal.vue → addAdapterModal/AddAdapterModalOld.vue} +16 -46
  25. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModal.vue +32 -0
  26. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +38 -0
  27. package/components/common/adapterManager/{AddAdapterWarningModal.vue → addAdapterWarningModal/AddAdapterWarningModalOld.vue} +5 -14
  28. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModal.vue +31 -0
  29. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModalNew.vue +34 -0
  30. package/components/common/adapterManager/{NoActiveAdaptersModal.vue → noActiveAdaptersModal/NoActiveAdaptersModalOld.vue} +2 -6
  31. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModal.vue +31 -0
  32. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModalNew.vue +34 -0
  33. package/components/common/adapterManager/{NoConnectedActiveAdaptersModal.vue → noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModalOld.vue} +2 -6
  34. package/components/common/adapterManager/ui/actions/bar/Bar.vue +57 -0
  35. package/components/common/adapterManager/ui/actions/bar/BarNew.vue +38 -0
  36. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButton.vue +28 -0
  37. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButtonNew.vue +75 -0
  38. package/components/common/adapterManager/ui/actions/{MoveDownAdapterButton.vue → moveDownAdapterButton/MoveDownAdapterButtonOld.vue} +3 -9
  39. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButton.vue +28 -0
  40. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButtonNew.vue +76 -0
  41. package/components/common/adapterManager/ui/actions/{MoveUpAdapterButton.vue → moveUpAdapterButton/MoveUpAdapterButtonOld.vue} +3 -9
  42. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapter.vue +24 -0
  43. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapterNew.vue +13 -0
  44. package/components/common/adapterManager/ui/secondTitle/SecondTitle.vue +31 -0
  45. package/components/common/adapterManager/ui/secondTitle/SecondTitleNew.vue +36 -0
  46. package/components/common/adapterManager/ui/{SecondTitle.vue → secondTitle/SecondTitleOld.vue} +0 -1
  47. package/components/common/adapterManager/ui/table/Table.vue +59 -133
  48. package/components/common/adapterManager/ui/table/TableNew.vue +136 -0
  49. package/components/common/adapterManager/ui/table/TableOld.vue +141 -0
  50. package/components/common/adapterManager/ui/table/adapters/Adapters.vue +44 -0
  51. package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +153 -0
  52. package/components/common/adapterManager/ui/table/{Adapters.vue → adapters/AdaptersOld.vue} +5 -10
  53. package/components/common/adapterManager/ui/table/header/Header.vue +57 -0
  54. package/components/common/adapterManager/ui/table/header/HeaderNew.vue +77 -0
  55. package/components/common/adapterManager/ui/table/{Header.vue → header/HeaderOld.vue} +3 -20
  56. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  57. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  58. package/components/common/browse/lib/models/interfaces.ts +5 -5
  59. package/components/common/context/lib/models/interfaces.ts +33 -33
  60. package/components/common/diagramMain/DiagramMain.vue +3 -1
  61. package/components/common/diagramMain/lib/models/interfaces.ts +5 -2
  62. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +6 -5
  63. package/components/common/diagramMain/modals/Modals.vue +19 -1
  64. package/components/common/diagramMain/modals/lib/config/adapterModal.ts +23 -20
  65. package/components/common/diagramMain/modals/lib/config/networkModal.ts +401 -398
  66. package/components/common/diagramMain/modals/lib/config/switchModal.ts +3 -0
  67. package/components/common/diagramMain/modals/remove/RemoveModal.vue +8 -0
  68. package/components/common/diagramMain/modals/remove/RemoveModalNew.vue +12 -1
  69. package/components/common/diagramMain/modals/remove/RemoveModalOld.vue +12 -1
  70. package/components/common/diagramMain/modals/viewSettings/info/Info.vue +0 -2
  71. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettings.vue +6 -0
  72. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettingsNew.vue +140 -71
  73. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettingsOld.vue +4 -4
  74. package/components/common/diagramMain/network/Contents.vue +497 -497
  75. package/components/common/layout/theHeader/feedback/new/New.vue +2 -2
  76. package/components/common/layout/theHeader/feedback/new/description/Description.vue +3 -3
  77. package/components/common/layout/theHeader/feedback/new/tabs/Tabs.vue +4 -2
  78. package/components/common/layout/theHeader/feedback/new/tabs/lib/config/tabs.ts +3 -2
  79. package/components/common/layout/theHeader/feedback/new/tabs/lib/models/interfaces.ts +5 -0
  80. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  81. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +96 -95
  82. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  83. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePasswordNew.vue +1 -2
  84. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesNew.vue +9 -0
  85. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewNew.vue +6 -2
  86. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModalNew.vue +1 -0
  87. package/components/common/monitor/overview/OverviewNew.vue +4 -1
  88. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +0 -2
  89. package/components/common/monitor/overview/filters/customIntervalModal/customIntervalModalNew/CustomIntervalModalNew.vue +6 -6
  90. package/components/common/pages/backups/DetailView.vue +52 -52
  91. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  92. package/components/common/pages/backups/modals/Modals.vue +243 -243
  93. package/components/common/pages/backups/modals/createBackup/configuration/Configuration.vue +29 -29
  94. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  95. package/components/common/pages/backups/modals/createBackup/datastores/tableView/TableView.vue +95 -95
  96. package/components/common/pages/backups/modals/createBackup/general/General.vue +141 -141
  97. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +12 -12
  98. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  99. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  100. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  101. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  102. package/components/common/pages/backups/modals/restore/name/Name.vue +166 -166
  103. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  104. package/components/common/pages/backups/modals/restore/networks/Networks.vue +67 -67
  105. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  106. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  107. package/components/common/pages/backups/tools/Tools.vue +75 -75
  108. package/components/common/pages/backups/tools/lib/config/tabs.ts +36 -36
  109. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  110. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  111. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  112. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  113. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  114. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  115. package/components/common/pages/tasks/table/Table.vue +8 -9
  116. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  117. package/components/common/select/radio/RadioGroup.vue +137 -137
  118. package/components/common/spiceConsole/Drawer.vue +392 -392
  119. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  120. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  121. package/components/common/tools/Actions.vue +207 -207
  122. package/components/common/treeView/TreeView.vue +52 -52
  123. package/components/common/vm/actions/add/Add.vue +32 -5
  124. package/components/common/vm/actions/add/New.vue +8 -2
  125. package/components/common/vm/actions/add/Old.vue +8 -2
  126. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  127. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  128. package/components/common/vm/actions/add/lib/config/steps.ts +14 -3
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +368 -368
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +99 -99
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  138. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  139. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  140. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  141. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  142. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  143. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  144. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  145. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  146. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  147. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  148. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  149. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  150. package/components/common/vm/actions/common/select/name/Name.vue +200 -197
  151. package/components/common/vm/actions/common/select/name/Old.vue +8 -1
  152. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  153. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  154. package/components/common/vm/actions/common/select/storage/new/New.vue +320 -320
  155. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  156. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  157. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  158. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  159. package/components/common/vm/actions/register/Register.vue +267 -267
  160. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  161. package/components/common/vmt/actions/add/Add.vue +1 -0
  162. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  163. package/components/common/wizards/network/add/Add.vue +9 -3
  164. package/components/common/wizards/network/add/AddNew.vue +291 -354
  165. package/components/common/wizards/network/add/AddOld.vue +0 -3
  166. package/components/common/wizards/network/add/lib/config/config.ts +1 -0
  167. package/components/common/wizards/network/add/lib/config/initialData.ts +9 -0
  168. package/components/common/wizards/network/add/lib/config/steps.ts +35 -5
  169. package/components/common/wizards/network/add/lib/models/interfaces.ts +12 -2
  170. package/components/common/wizards/network/add/steps/connectionSettings/ConnectionSettings.vue +83 -0
  171. package/components/common/wizards/network/add/steps/connectionSettings/ConnectionSettingsNew.vue +114 -0
  172. package/components/common/wizards/network/add/steps/{ConnectionSettings.vue → connectionSettings/ConnectionSettingsOld.vue} +11 -42
  173. package/components/common/wizards/network/add/steps/createStandardSwitch/CreateStandardSwitch.vue +99 -0
  174. package/components/common/wizards/network/add/steps/createStandardSwitch/CreateStandardSwitchNew.vue +80 -0
  175. package/components/common/wizards/network/add/steps/{CreateStandardSwitch.vue → createStandardSwitch/CreateStandardSwitchOld.vue} +24 -33
  176. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettings.vue +143 -0
  177. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsNew.vue +224 -0
  178. package/components/common/wizards/network/add/steps/{IpFourSettings.vue → ipFourSettings/IpFourSettingsOld.vue} +13 -101
  179. package/components/common/wizards/network/add/steps/portProperties/PortProperties.vue +214 -0
  180. package/components/common/wizards/network/add/steps/portProperties/PortPropertiesNew.vue +289 -0
  181. package/components/common/wizards/network/add/steps/{PortProperties.vue → portProperties/PortPropertiesOld.vue} +19 -166
  182. package/components/common/wizards/network/add/steps/readyComplete/ReadyComplete.vue +22 -0
  183. package/components/common/wizards/network/add/steps/readyComplete/ReadyCompleteNew.vue +30 -0
  184. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDevice.vue +7 -2
  185. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceNew.vue +1 -3
  186. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceOld.vue +0 -2
  187. package/components/common/wizards/network/add/validations/common.ts +1 -2
  188. package/components/common/wizards/network/add/validations/connectionSettings.ts +14 -7
  189. package/components/common/wizards/network/add/validations/ipFourSettings.ts +24 -10
  190. package/components/common/wizards/network/add/validations/networkValidation.ts +1 -1
  191. package/components/common/wizards/network/add/validations/portProperties.ts +52 -20
  192. package/components/common/wizards/network/add/validations/targetDevice.ts +18 -4
  193. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  194. package/composables/useAppVersion.ts +21 -21
  195. package/composables/useLocal.ts +6 -6
  196. package/composables/useLocalCommon.ts +39 -39
  197. package/package.json +2 -2
  198. package/plugins/date.ts +233 -233
  199. package/plugins/panelStates.ts +70 -70
  200. package/plugins/text.ts +59 -59
  201. package/public/spice-console/lib/images/bitmap.js +203 -203
  202. package/public/spice-console/network/spicechannel.js +440 -440
  203. package/public/spice-console/run.js +210 -210
  204. package/store/main/mutations.ts +7 -7
  205. package/store/main/state.ts +7 -7
  206. package/components/common/wizards/network/add/steps/PhysicalAdapter.vue +0 -13
  207. /package/components/common/adapterManager/ui/actions/{ActionsBar.vue → bar/BarOld.vue} +0 -0
  208. /package/components/common/adapterManager/ui/{NoSelectedAdapter.vue → noSelectedAdapter/NoSelectedAdapterOld.vue} +0 -0
  209. /package/components/common/wizards/network/add/steps/{ReadyComplete.vue → readyComplete/ReadyCompleteOld.vue} +0 -0
@@ -1,170 +1,170 @@
1
- <template>
2
- <div class="tabs-overflow bottom-right">
3
- <button
4
- :id="collapsedBtnId"
5
- :class="[
6
- 'btn btn-link nav-link dropdown-toggle',
7
- { active: collapsedBtnActive },
8
- ]"
9
- :data-id="`${props.testId}-toggle-button`"
10
- @mouseenter="hover = true"
11
- @mouseleave="hover = false"
12
- @mousedown="showMenu"
13
- >
14
- <atoms-the-icon
15
- :class="['collapse-icon', { active: open }]"
16
- name="ellipsis-horizontal"
17
- width="16px"
18
- height="16px"
19
- />
20
- </button>
21
-
22
- <Teleport to="body">
23
- <ul
24
- v-show="open"
25
- :class="['navbar-dropdown-menu', props.popupClass]"
26
- :style="dropdownMenuStyles"
27
- >
28
- <li
29
- v-for="(item, key) in props.items"
30
- :key="key"
31
- v-permission="item.permission"
32
- :title="item.title"
33
- class="navbar-dropdown-menu-item"
34
- @mousedown.stop
35
- >
36
- <div
37
- v-if="item.separate"
38
- class="navbar-dropdown-menu-separator"
39
- ></div>
40
- <atoms-collapse-nav-item
41
- v-else
42
- :is-link="props.isLink"
43
- :item="item"
44
- :value="value"
45
- btn-class="btn"
46
- @change="change"
47
- @select-file="onSelectFile($event, key)"
48
- />
49
- </li>
50
- </ul>
51
- </Teleport>
52
- </div>
53
- </template>
54
-
55
- <script setup lang="ts">
56
- import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
57
-
58
- const props = withDefaults(
59
- defineProps<{
60
- items: UI_I_CollapseNavItem[]
61
- isLink?: boolean
62
- value?: number | string
63
- popupClass?: string
64
- closeAfterClick?: boolean
65
- testId?: string
66
- }>(),
67
- {
68
- isLink: undefined,
69
- value: undefined,
70
- popupClass: undefined,
71
- closeAfterClick: undefined,
72
- testId: '',
73
- }
74
- )
75
- const emits = defineEmits<{
76
- (event: 'change', value: number): void
77
- (event: 'select-file', value1: Event, value2: string, value3: number): void
78
- }>()
79
-
80
- const change = (value: number): void => {
81
- emits('change', value)
82
- props.closeAfterClick && (open.value = false)
83
- }
84
- const onSelectFile = (event: Event, type: string, key: number): void => {
85
- emits('select-file', event, type, key)
86
- }
87
-
88
- const collapsedBtnId = ref<string>('')
89
-
90
- const route = useRoute()
91
- const collapsedBtnActive = computed<boolean>(() => {
92
- if (props.isLink)
93
- return props.items.some((item) => route.path.includes(item.path || ''))
94
-
95
- return props.items.some((item) => item.value === props.value)
96
- })
97
-
98
- const open = ref<boolean>(false)
99
- const hover = ref<boolean>(false)
100
- const dropdownMenuStyles = ref<any>({})
101
- const showMenu = (): void => {
102
- if (open.value) {
103
- hideMenu(true)
104
- return
105
- }
106
-
107
- open.value = true
108
-
109
- const btn = document.querySelector(`#${collapsedBtnId.value}`)
110
- const { top, height, right } = btn!.getBoundingClientRect()
111
- dropdownMenuStyles.value = {
112
- top: `${top + height}px`,
113
- left: `${right}px`,
114
- }
115
- }
116
- const hideMenu = (force?: boolean): void => {
117
- if (hover.value && !force) return
118
-
119
- open.value = false
120
- }
121
-
122
- const windowClick = (): void => {
123
- hideMenu()
124
- }
125
- const windowResize = (): void => {
126
- hideMenu(true)
127
- }
128
- onMounted(() => {
129
- collapsedBtnId.value = `collapsed-btn${useUniqueId()}`
130
- window.addEventListener('mousedown', windowClick)
131
- window.addEventListener('resize', windowResize)
132
- })
133
- onUnmounted(() => {
134
- window.removeEventListener('mousedown', windowClick)
135
- window.removeEventListener('resize', windowResize)
136
- })
137
- </script>
138
-
139
- <style scoped lang="scss">
140
- .tabs-overflow {
141
- position: absolute;
142
- top: 0;
143
- right: 24px;
144
-
145
- .dropdown-toggle {
146
- .collapse-icon {
147
- fill: var(--main-color-mode);
148
-
149
- &.active {
150
- fill: #0077b8;
151
- }
152
- }
153
- }
154
- }
155
-
156
- .navbar-dropdown-menu {
157
- position: fixed;
158
- z-index: var(--z-dropdown);
159
- transform: translateX(-100%);
160
- border: 1px solid var(--global-border-color);
161
- border-radius: 3px;
162
- margin-top: 2px;
163
- background-color: var(--global-bg-color);
164
- padding: 12px 0;
165
- }
166
- .navbar-dropdown-menu-separator {
167
- margin: 6px 0;
168
- border-bottom: 0.8px solid #e8e8e8;
169
- }
170
- </style>
1
+ <template>
2
+ <div class="tabs-overflow bottom-right">
3
+ <button
4
+ :id="collapsedBtnId"
5
+ :class="[
6
+ 'btn btn-link nav-link dropdown-toggle',
7
+ { active: collapsedBtnActive },
8
+ ]"
9
+ :data-id="`${props.testId}-toggle-button`"
10
+ @mouseenter="hover = true"
11
+ @mouseleave="hover = false"
12
+ @mousedown="showMenu"
13
+ >
14
+ <atoms-the-icon
15
+ :class="['collapse-icon', { active: open }]"
16
+ name="ellipsis-horizontal"
17
+ width="16px"
18
+ height="16px"
19
+ />
20
+ </button>
21
+
22
+ <Teleport to="body">
23
+ <ul
24
+ v-show="open"
25
+ :class="['navbar-dropdown-menu', props.popupClass]"
26
+ :style="dropdownMenuStyles"
27
+ >
28
+ <li
29
+ v-for="(item, key) in props.items"
30
+ :key="key"
31
+ v-permission="item.permission"
32
+ :title="item.title"
33
+ class="navbar-dropdown-menu-item"
34
+ @mousedown.stop
35
+ >
36
+ <div
37
+ v-if="item.separate"
38
+ class="navbar-dropdown-menu-separator"
39
+ ></div>
40
+ <atoms-collapse-nav-item
41
+ v-else
42
+ :is-link="props.isLink"
43
+ :item="item"
44
+ :value="value"
45
+ btn-class="btn"
46
+ @change="change"
47
+ @select-file="onSelectFile($event, key)"
48
+ />
49
+ </li>
50
+ </ul>
51
+ </Teleport>
52
+ </div>
53
+ </template>
54
+
55
+ <script setup lang="ts">
56
+ import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
57
+
58
+ const props = withDefaults(
59
+ defineProps<{
60
+ items: UI_I_CollapseNavItem[]
61
+ isLink?: boolean
62
+ value?: number | string
63
+ popupClass?: string
64
+ closeAfterClick?: boolean
65
+ testId?: string
66
+ }>(),
67
+ {
68
+ isLink: undefined,
69
+ value: undefined,
70
+ popupClass: undefined,
71
+ closeAfterClick: undefined,
72
+ testId: '',
73
+ }
74
+ )
75
+ const emits = defineEmits<{
76
+ (event: 'change', value: number): void
77
+ (event: 'select-file', value1: Event, value2: string, value3: number): void
78
+ }>()
79
+
80
+ const change = (value: number): void => {
81
+ emits('change', value)
82
+ props.closeAfterClick && (open.value = false)
83
+ }
84
+ const onSelectFile = (event: Event, type: string, key: number): void => {
85
+ emits('select-file', event, type, key)
86
+ }
87
+
88
+ const collapsedBtnId = ref<string>('')
89
+
90
+ const route = useRoute()
91
+ const collapsedBtnActive = computed<boolean>(() => {
92
+ if (props.isLink)
93
+ return props.items.some((item) => route.path.includes(item.path || ''))
94
+
95
+ return props.items.some((item) => item.value === props.value)
96
+ })
97
+
98
+ const open = ref<boolean>(false)
99
+ const hover = ref<boolean>(false)
100
+ const dropdownMenuStyles = ref<any>({})
101
+ const showMenu = (): void => {
102
+ if (open.value) {
103
+ hideMenu(true)
104
+ return
105
+ }
106
+
107
+ open.value = true
108
+
109
+ const btn = document.querySelector(`#${collapsedBtnId.value}`)
110
+ const { top, height, right } = btn!.getBoundingClientRect()
111
+ dropdownMenuStyles.value = {
112
+ top: `${top + height}px`,
113
+ left: `${right}px`,
114
+ }
115
+ }
116
+ const hideMenu = (force?: boolean): void => {
117
+ if (hover.value && !force) return
118
+
119
+ open.value = false
120
+ }
121
+
122
+ const windowClick = (): void => {
123
+ hideMenu()
124
+ }
125
+ const windowResize = (): void => {
126
+ hideMenu(true)
127
+ }
128
+ onMounted(() => {
129
+ collapsedBtnId.value = `collapsed-btn${useUniqueId()}`
130
+ window.addEventListener('mousedown', windowClick)
131
+ window.addEventListener('resize', windowResize)
132
+ })
133
+ onUnmounted(() => {
134
+ window.removeEventListener('mousedown', windowClick)
135
+ window.removeEventListener('resize', windowResize)
136
+ })
137
+ </script>
138
+
139
+ <style scoped lang="scss">
140
+ .tabs-overflow {
141
+ position: absolute;
142
+ top: 0;
143
+ right: 24px;
144
+
145
+ .dropdown-toggle {
146
+ .collapse-icon {
147
+ fill: var(--main-color-mode);
148
+
149
+ &.active {
150
+ fill: #0077b8;
151
+ }
152
+ }
153
+ }
154
+ }
155
+
156
+ .navbar-dropdown-menu {
157
+ position: fixed;
158
+ z-index: var(--z-dropdown);
159
+ transform: translateX(-100%);
160
+ border: 1px solid var(--global-border-color);
161
+ border-radius: 3px;
162
+ margin-top: 2px;
163
+ background-color: var(--global-bg-color);
164
+ padding: 12px 0;
165
+ }
166
+ .navbar-dropdown-menu-separator {
167
+ margin: 6px 0;
168
+ border-bottom: 0.8px solid #e8e8e8;
169
+ }
170
+ </style>
@@ -1,58 +1,58 @@
1
- <template>
2
- <div class="page-size">
3
- {{ selectLabel }}
4
-
5
- <div class="clr-select-wrapper">
6
- <select
7
- :id="`${props.testId}-select`"
8
- v-development="props.development"
9
- :data-id="`${props.testId}-select`"
10
- :value="props.pageSize"
11
- class="clr-page-size-select"
12
- @change="change"
13
- >
14
- <option
15
- v-for="(item, key) in props.options"
16
- :key="key"
17
- :value="item.value"
18
- >
19
- {{ item.text }}
20
- </option>
21
- </select>
22
- </div>
23
- </div>
24
- </template>
25
-
26
- <script setup lang="ts">
27
- import type { UI_I_Localization } from '~/lib/models/interfaces'
28
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
29
-
30
- const props = withDefaults(
31
- defineProps<{
32
- pageSize: number
33
- options: UI_I_OptionItem[]
34
- label?: string
35
- testId?: string
36
- development?: boolean
37
- }>(),
38
- {
39
- testId: 'ui-per-page',
40
- label: 'itemsPerPage',
41
- development: false,
42
- }
43
- )
44
- const emits = defineEmits<{
45
- (event: 'change', value: number): void
46
- }>()
47
-
48
- const localization = computed<UI_I_Localization>(() => useLocal())
49
- const selectLabel = computed<string>(
50
- () => localization.value.common[props.label]
51
- )
52
-
53
- const change = (event: InputEvent): void => {
54
- emits('change', +(event.target as HTMLInputElement).value)
55
- }
56
- </script>
57
-
58
- <style scoped></style>
1
+ <template>
2
+ <div class="page-size">
3
+ {{ selectLabel }}
4
+
5
+ <div class="clr-select-wrapper">
6
+ <select
7
+ :id="`${props.testId}-select`"
8
+ v-development="props.development"
9
+ :data-id="`${props.testId}-select`"
10
+ :value="props.pageSize"
11
+ class="clr-page-size-select"
12
+ @change="change"
13
+ >
14
+ <option
15
+ v-for="(item, key) in props.options"
16
+ :key="key"
17
+ :value="item.value"
18
+ >
19
+ {{ item.text }}
20
+ </option>
21
+ </select>
22
+ </div>
23
+ </div>
24
+ </template>
25
+
26
+ <script setup lang="ts">
27
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
28
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
29
+
30
+ const props = withDefaults(
31
+ defineProps<{
32
+ pageSize: number
33
+ options: UI_I_OptionItem[]
34
+ label?: string
35
+ testId?: string
36
+ development?: boolean
37
+ }>(),
38
+ {
39
+ testId: 'ui-per-page',
40
+ label: 'itemsPerPage',
41
+ development: false,
42
+ }
43
+ )
44
+ const emits = defineEmits<{
45
+ (event: 'change', value: number): void
46
+ }>()
47
+
48
+ const localization = computed<UI_I_Localization>(() => useLocal())
49
+ const selectLabel = computed<string>(
50
+ () => localization.value.common[props.label]
51
+ )
52
+
53
+ const change = (event: InputEvent): void => {
54
+ emits('change', +(event.target as HTMLInputElement).value)
55
+ }
56
+ </script>
57
+
58
+ <style scoped></style>
@@ -1,97 +1,97 @@
1
- <template>
2
- <div class="pagination">
3
- <div v-if="!props.hidePagination" class="pagination-size">
4
- <atoms-per-page
5
- v-if="!props.hidePageSize"
6
- :test-id="props.testId"
7
- :page-size="props.pageSize"
8
- :options="props.options"
9
- @change="changePageSize"
10
- />
11
- </div>
12
-
13
- <div
14
- :class="['pagination-description', { 'ml-1': !props.isShowHiddenInfo }]"
15
- >
16
- {{ totalItemCount }}
17
- </div>
18
-
19
- <atoms-table-data-grid-page
20
- v-if="!props.hidePagination"
21
- :test-id="props.testId"
22
- :page="props.page"
23
- :total-items="props.totalItems"
24
- :total-pages="props.totalPages"
25
- :page-size="props.pageSize"
26
- @change="changePage"
27
- />
28
- </div>
29
- </template>
30
-
31
- <script setup lang="ts">
32
- import type { UI_I_Localization } from '~/lib/models/interfaces'
33
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
34
-
35
- const props = withDefaults(
36
- defineProps<{
37
- options: UI_I_OptionItem[]
38
- pageSize: number
39
- page: number
40
- totalItems: number
41
- totalPages: number
42
- pageItemsCount: number
43
- hidePagination?: boolean
44
- hidePageSize?: boolean
45
- showPageInfo?: boolean
46
- testId?: string
47
- isShowHiddenInfo?: boolean
48
- }>(),
49
- {
50
- hidePagination: undefined,
51
- hidePageSize: undefined,
52
- showPageInfo: undefined,
53
- testId: 'ui-data-grid-pagination',
54
- isShowHiddenInfo: false,
55
- }
56
- )
57
- const emits = defineEmits<{
58
- (event: 'change-page-size', value: number): void
59
- (event: 'change-page', value: number): void
60
- }>()
61
- const localization = computed<UI_I_Localization>(() => useLocal())
62
- const totalItemCount = computed<string>(() => {
63
- const start = (props.page - 1) * props.pageSize + 1
64
-
65
- // const paginationInfo = props.showPageInfo
66
- // ? `${start} - ${props.pageItemsCount} ${localization.value.common.of}`
67
- // : ''
68
-
69
- if (props.showPageInfo) {
70
- return `${start} - ${props.pageItemsCount}
71
- ${localization.value.common.of}
72
- ${props.totalItems} ${localization.value.common.items.toLowerCase()}`
73
- }
74
-
75
- return `${
76
- // props.totalItems
77
- props.pageItemsCount
78
- } ${localization.value.common.items.toLowerCase()}`
79
- })
80
-
81
- const changePageSize = (pageSize: number): void => {
82
- const newTotalPages = Math.ceil(props.totalItems / pageSize)
83
- if (newTotalPages < props.page) changePage(newTotalPages)
84
- emits('change-page-size', pageSize)
85
- }
86
-
87
- const changePage = (page: number): void => {
88
- emits('change-page', page)
89
- }
90
- </script>
91
-
92
- <style scoped lang="scss">
93
- .pagination {
94
- display: inline-flex;
95
- align-items: center;
96
- }
97
- </style>
1
+ <template>
2
+ <div class="pagination">
3
+ <div v-if="!props.hidePagination" class="pagination-size">
4
+ <atoms-per-page
5
+ v-if="!props.hidePageSize"
6
+ :test-id="props.testId"
7
+ :page-size="props.pageSize"
8
+ :options="props.options"
9
+ @change="changePageSize"
10
+ />
11
+ </div>
12
+
13
+ <div
14
+ :class="['pagination-description', { 'ml-1': !props.isShowHiddenInfo }]"
15
+ >
16
+ {{ totalItemCount }}
17
+ </div>
18
+
19
+ <atoms-table-data-grid-page
20
+ v-if="!props.hidePagination"
21
+ :test-id="props.testId"
22
+ :page="props.page"
23
+ :total-items="props.totalItems"
24
+ :total-pages="props.totalPages"
25
+ :page-size="props.pageSize"
26
+ @change="changePage"
27
+ />
28
+ </div>
29
+ </template>
30
+
31
+ <script setup lang="ts">
32
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
33
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
34
+
35
+ const props = withDefaults(
36
+ defineProps<{
37
+ options: UI_I_OptionItem[]
38
+ pageSize: number
39
+ page: number
40
+ totalItems: number
41
+ totalPages: number
42
+ pageItemsCount: number
43
+ hidePagination?: boolean
44
+ hidePageSize?: boolean
45
+ showPageInfo?: boolean
46
+ testId?: string
47
+ isShowHiddenInfo?: boolean
48
+ }>(),
49
+ {
50
+ hidePagination: undefined,
51
+ hidePageSize: undefined,
52
+ showPageInfo: undefined,
53
+ testId: 'ui-data-grid-pagination',
54
+ isShowHiddenInfo: false,
55
+ }
56
+ )
57
+ const emits = defineEmits<{
58
+ (event: 'change-page-size', value: number): void
59
+ (event: 'change-page', value: number): void
60
+ }>()
61
+ const localization = computed<UI_I_Localization>(() => useLocal())
62
+ const totalItemCount = computed<string>(() => {
63
+ const start = (props.page - 1) * props.pageSize + 1
64
+
65
+ // const paginationInfo = props.showPageInfo
66
+ // ? `${start} - ${props.pageItemsCount} ${localization.value.common.of}`
67
+ // : ''
68
+
69
+ if (props.showPageInfo) {
70
+ return `${start} - ${props.pageItemsCount}
71
+ ${localization.value.common.of}
72
+ ${props.totalItems} ${localization.value.common.items.toLowerCase()}`
73
+ }
74
+
75
+ return `${
76
+ // props.totalItems
77
+ props.pageItemsCount
78
+ } ${localization.value.common.items.toLowerCase()}`
79
+ })
80
+
81
+ const changePageSize = (pageSize: number): void => {
82
+ const newTotalPages = Math.ceil(props.totalItems / pageSize)
83
+ if (newTotalPages < props.page) changePage(newTotalPages)
84
+ emits('change-page-size', pageSize)
85
+ }
86
+
87
+ const changePage = (page: number): void => {
88
+ emits('change-page', page)
89
+ }
90
+ </script>
91
+
92
+ <style scoped lang="scss">
93
+ .pagination {
94
+ display: inline-flex;
95
+ align-items: center;
96
+ }
97
+ </style>