bfg-common 1.5.323 → 1.5.325

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 (143) 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 +1 -0
  7. package/assets/localization/local_en.json +1 -0
  8. package/assets/localization/local_hy.json +1 -0
  9. package/assets/localization/local_kk.json +1 -0
  10. package/assets/localization/local_ru.json +1 -0
  11. package/assets/localization/local_zh.json +1 -0
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/collapse/CollapseNavItem.vue +226 -226
  15. package/components/atoms/nav/NavBar.vue +147 -147
  16. package/components/atoms/perPage/PerPage.vue +58 -58
  17. package/components/atoms/table/dataGrid/DataGrid.vue +1717 -1717
  18. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  19. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  20. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  21. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  22. package/components/common/backup/storage/actions/add/steps/hostAccessibility/HostAccessibility.vue +52 -52
  23. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  24. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  25. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  26. package/components/common/context/lib/models/interfaces.ts +33 -33
  27. package/components/common/diagramMain/DiagramMain.vue +897 -897
  28. package/components/common/diagramMain/modals/lib/config/networkModal.ts +398 -398
  29. package/components/common/diagramMain/network/Network.vue +141 -141
  30. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  31. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  32. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  33. package/components/common/monitor/overview/filters/lib/config/filterOptions.ts +100 -100
  34. package/components/common/pages/home/headline/Headline.vue +45 -45
  35. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  36. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  37. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  38. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  39. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  40. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  41. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  42. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  43. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  44. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  45. package/components/common/pages/packages/Packages.vue +208 -208
  46. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  47. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  48. package/components/common/recursionTree/RecursionTree.vue +223 -223
  49. package/components/common/select/button/ButtonDropdown.vue +112 -112
  50. package/components/common/spiceConsole/Drawer.vue +377 -377
  51. package/components/common/spiceConsole/SpiceConsole.vue +127 -127
  52. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  53. package/components/common/tools/Actions.vue +207 -207
  54. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  55. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  56. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  57. package/components/common/vm/actions/clone/Clone.vue +823 -823
  58. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  59. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  60. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +3 -0
  61. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +2 -0
  62. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +2 -0
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +321 -321
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +227 -227
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +385 -385
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +154 -154
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +155 -152
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +130 -128
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +113 -111
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +95 -83
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +2 -1
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +155 -154
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  108. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  109. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  110. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  111. package/components/common/vm/actions/common/select/createType/lib/config/items.ts +48 -48
  112. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  113. package/components/common/vm/actions/common/select/name/Name.vue +174 -174
  114. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  115. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  116. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  117. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  118. package/components/common/vm/actions/editSettings/EditSettings.vue +242 -239
  119. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +2 -0
  120. package/components/common/vm/actions/editSettings/new/New.vue +2 -0
  121. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  122. package/components/common/vmt/actions/add/Add.vue +641 -641
  123. package/components/common/vmt/actions/add/lib/config/steps.ts +107 -107
  124. package/components/common/vmt/actions/add/lib/models/interfaces.ts +23 -23
  125. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +104 -104
  126. package/components/common/wizards/network/add/steps/SelectedTargetDevice.vue +467 -467
  127. package/components/common/wizards/vm/migrate/Migrate.vue +349 -349
  128. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  129. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  130. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  131. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  132. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  133. package/composables/productNameLocal.ts +30 -30
  134. package/composables/useAppVersion.ts +21 -21
  135. package/package.json +1 -1
  136. package/plugins/date.ts +233 -233
  137. package/plugins/panelStates.ts +70 -70
  138. package/plugins/text.ts +59 -59
  139. package/public/spice-console/lib/images/bitmap.js +203 -203
  140. package/public/spice-console/network/spicechannel.js +387 -387
  141. package/store/main/mutations.ts +7 -7
  142. package/store/main/state.ts +7 -7
  143. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,147 +1,147 @@
1
- <template>
2
- <nav :id="id" :class="['nav', { 'not-collapse': notCollapse }]">
3
- <ul>
4
- <li
5
- v-for="(item, key) in props.items"
6
- :key="key"
7
- v-permission="item.permission"
8
- class="nav-item"
9
- >
10
- <atoms-collapse-nav-item
11
- :is-link="props.isLink"
12
- :item="item"
13
- :value="props.modelValue"
14
- :title="item.title"
15
- btn-class="btn btn-link nav-link"
16
- @change="change"
17
- />
18
- </li>
19
- <atoms-collapse-nav
20
- v-show="collapsedItems.length && !notCollapse"
21
- :test-id="`${props.testId}-container`"
22
- :items="collapsedItems"
23
- :is-link="props.isLink"
24
- :value="props.modelValue"
25
- @change="change"
26
- />
27
- </ul>
28
- </nav>
29
- </template>
30
-
31
- <script setup lang="ts">
32
- import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
33
-
34
- const props = withDefaults(
35
- defineProps<{
36
- items: UI_I_CollapseNavItem[]
37
- testId?: string
38
- modelValue?: number | string
39
- isLink?: boolean
40
- notCollapse?: boolean
41
- }>(),
42
- { testId: 'ui-nav-bar' }
43
- )
44
- const emits = defineEmits<{
45
- (event: 'update:model-value', value: number): void
46
- (event: 'change', value: number): void
47
- }>()
48
-
49
- const change = (value: number): void => {
50
- emits('update:model-value', value)
51
- emits('change', value)
52
- }
53
-
54
- const visibleCount = ref<number>(props.items.length)
55
- const collapsedItems = computed<UI_I_CollapseNavItem[]>(() => {
56
- return props.items.filter((_, index) => {
57
- return index >= visibleCount.value
58
- })
59
- })
60
-
61
- let triggerElementWidth = 0
62
- const setTriggerElementWidth = (): void => {
63
- if (!id.value || !props.testId) return
64
-
65
- const element = document.querySelector(
66
- `#${id.value} #${props.testId}-container`
67
- )
68
- triggerElementWidth =
69
- element && element?.style?.display !== 'none'
70
- ? element.getBoundingClientRect().width
71
- : 0
72
- }
73
-
74
- const spaceForCollapseBtn = ref<number>(60)
75
-
76
- let outputSize = (): void => {
77
- const el = document.getElementById(id.value)
78
- if (!el) return
79
-
80
- const elWidth = el.clientWidth
81
- const elItems = el.children[0].children
82
-
83
- setTriggerElementWidth()
84
- const elItemsMarginLeft = parseInt(getComputedStyle(elItems[0]).marginLeft)
85
- const elItemsMarginRight = parseInt(getComputedStyle(elItems[0]).marginRight)
86
- const childrenMarginY = elItemsMarginLeft + elItemsMarginRight
87
-
88
- let childrenWidth = spaceForCollapseBtn.value
89
- let count = 0
90
- for (let i = 0; i < elItems.length; i++) {
91
- childrenWidth += elItems[i].clientWidth + childrenMarginY
92
- const isWrap = elWidth - triggerElementWidth < childrenWidth
93
-
94
- if (isWrap) break
95
- count++
96
- }
97
-
98
- visibleCount.value = count
99
-
100
- const element = document.querySelector(`#${id.value} ul`)
101
- if (element) {
102
- element.style.paddingRight =
103
- collapsedItems.value.length && !props.notCollapse
104
- ? `${spaceForCollapseBtn.value}px`
105
- : ''
106
- }
107
- }
108
- outputSize = useThrottle(outputSize)
109
-
110
- const id = ref<string>('')
111
- const setResizeObserve = (): void => {
112
- const el = document.getElementById(id.value)
113
-
114
- if (!el) {
115
- setTimeout(setResizeObserve, 0)
116
- return
117
- }
118
-
119
- new ResizeObserver(outputSize).observe(el)
120
- }
121
- onMounted(() => {
122
- setTriggerElementWidth()
123
- setResizeObserve()
124
- id.value = `nav-bar${useUniqueId()}`
125
- })
126
- </script>
127
-
128
- <style scoped lang="scss">
129
- .nav {
130
- box-shadow: inset 0 -0.05rem 0 var(--nav-panel-border-color);
131
- align-items: flex-start;
132
-
133
- &.not-collapse {
134
- ul {
135
- flex-wrap: nowrap;
136
- }
137
- }
138
-
139
- ul {
140
- position: relative;
141
- height: 36px;
142
- overflow: hidden;
143
- display: flex;
144
- flex-wrap: wrap;
145
- }
146
- }
147
- </style>
1
+ <template>
2
+ <nav :id="id" :class="['nav', { 'not-collapse': notCollapse }]">
3
+ <ul>
4
+ <li
5
+ v-for="(item, key) in props.items"
6
+ :key="key"
7
+ v-permission="item.permission"
8
+ class="nav-item"
9
+ >
10
+ <atoms-collapse-nav-item
11
+ :is-link="props.isLink"
12
+ :item="item"
13
+ :value="props.modelValue"
14
+ :title="item.title"
15
+ btn-class="btn btn-link nav-link"
16
+ @change="change"
17
+ />
18
+ </li>
19
+ <atoms-collapse-nav
20
+ v-show="collapsedItems.length && !notCollapse"
21
+ :test-id="`${props.testId}-container`"
22
+ :items="collapsedItems"
23
+ :is-link="props.isLink"
24
+ :value="props.modelValue"
25
+ @change="change"
26
+ />
27
+ </ul>
28
+ </nav>
29
+ </template>
30
+
31
+ <script setup lang="ts">
32
+ import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
33
+
34
+ const props = withDefaults(
35
+ defineProps<{
36
+ items: UI_I_CollapseNavItem[]
37
+ testId?: string
38
+ modelValue?: number | string
39
+ isLink?: boolean
40
+ notCollapse?: boolean
41
+ }>(),
42
+ { testId: 'ui-nav-bar' }
43
+ )
44
+ const emits = defineEmits<{
45
+ (event: 'update:model-value', value: number): void
46
+ (event: 'change', value: number): void
47
+ }>()
48
+
49
+ const change = (value: number): void => {
50
+ emits('update:model-value', value)
51
+ emits('change', value)
52
+ }
53
+
54
+ const visibleCount = ref<number>(props.items.length)
55
+ const collapsedItems = computed<UI_I_CollapseNavItem[]>(() => {
56
+ return props.items.filter((_, index) => {
57
+ return index >= visibleCount.value
58
+ })
59
+ })
60
+
61
+ let triggerElementWidth = 0
62
+ const setTriggerElementWidth = (): void => {
63
+ if (!id.value || !props.testId) return
64
+
65
+ const element = document.querySelector(
66
+ `#${id.value} #${props.testId}-container`
67
+ )
68
+ triggerElementWidth =
69
+ element && element?.style?.display !== 'none'
70
+ ? element.getBoundingClientRect().width
71
+ : 0
72
+ }
73
+
74
+ const spaceForCollapseBtn = ref<number>(60)
75
+
76
+ let outputSize = (): void => {
77
+ const el = document.getElementById(id.value)
78
+ if (!el) return
79
+
80
+ const elWidth = el.clientWidth
81
+ const elItems = el.children[0].children
82
+
83
+ setTriggerElementWidth()
84
+ const elItemsMarginLeft = parseInt(getComputedStyle(elItems[0]).marginLeft)
85
+ const elItemsMarginRight = parseInt(getComputedStyle(elItems[0]).marginRight)
86
+ const childrenMarginY = elItemsMarginLeft + elItemsMarginRight
87
+
88
+ let childrenWidth = spaceForCollapseBtn.value
89
+ let count = 0
90
+ for (let i = 0; i < elItems.length; i++) {
91
+ childrenWidth += elItems[i].clientWidth + childrenMarginY
92
+ const isWrap = elWidth - triggerElementWidth < childrenWidth
93
+
94
+ if (isWrap) break
95
+ count++
96
+ }
97
+
98
+ visibleCount.value = count
99
+
100
+ const element = document.querySelector(`#${id.value} ul`)
101
+ if (element) {
102
+ element.style.paddingRight =
103
+ collapsedItems.value.length && !props.notCollapse
104
+ ? `${spaceForCollapseBtn.value}px`
105
+ : ''
106
+ }
107
+ }
108
+ outputSize = useThrottle(outputSize)
109
+
110
+ const id = ref<string>('')
111
+ const setResizeObserve = (): void => {
112
+ const el = document.getElementById(id.value)
113
+
114
+ if (!el) {
115
+ setTimeout(setResizeObserve, 0)
116
+ return
117
+ }
118
+
119
+ new ResizeObserver(outputSize).observe(el)
120
+ }
121
+ onMounted(() => {
122
+ setTriggerElementWidth()
123
+ setResizeObserve()
124
+ id.value = `nav-bar${useUniqueId()}`
125
+ })
126
+ </script>
127
+
128
+ <style scoped lang="scss">
129
+ .nav {
130
+ box-shadow: inset 0 -0.05rem 0 var(--nav-panel-border-color);
131
+ align-items: flex-start;
132
+
133
+ &.not-collapse {
134
+ ul {
135
+ flex-wrap: nowrap;
136
+ }
137
+ }
138
+
139
+ ul {
140
+ position: relative;
141
+ height: 36px;
142
+ overflow: hidden;
143
+ display: flex;
144
+ flex-wrap: wrap;
145
+ }
146
+ }
147
+ </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>