bfg-common 1.0.15 → 1.0.17

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 (120) hide show
  1. package/components/atoms/alert/Notification.vue +167 -167
  2. package/components/atoms/autocomplete/Autocomplete.vue +236 -236
  3. package/components/atoms/combobox/Combobox.vue +131 -131
  4. package/components/atoms/datepicker/Datepicker.vue +612 -612
  5. package/components/atoms/dropdown/tree/Tree.vue +134 -134
  6. package/components/atoms/list/SelectList.vue +62 -62
  7. package/components/atoms/modal/bySteps/BySteps.vue +234 -234
  8. package/components/atoms/modal/byStepsSecond/ByStepsSecond.vue +174 -174
  9. package/components/atoms/nav/NavBar.vue +116 -116
  10. package/components/atoms/nav/VerticalNavBar.vue +89 -89
  11. package/components/atoms/notificationBar/NotificationBar.vue +175 -175
  12. package/components/atoms/perPage/PerPage.vue +52 -52
  13. package/components/atoms/popup/SimplePopup.vue +90 -90
  14. package/components/atoms/step/VerticalStep.vue +104 -104
  15. package/components/atoms/switch/Switch.vue +107 -107
  16. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +204 -204
  17. package/components/atoms/table/dataGrid/DataGridPage.vue +189 -189
  18. package/components/atoms/table/dataGrid/DataGridPagination.vue +83 -83
  19. package/components/atoms/table/dataGrid/config/itemsPerPage.ts +20 -20
  20. package/components/atoms/tabs/Tabs.vue +189 -189
  21. package/components/atoms/tooltip/Signpost.vue +224 -224
  22. package/components/common/accordion/Accordion.vue +176 -176
  23. package/components/common/accordion/Recursion.vue +195 -195
  24. package/components/common/adapterManager/AdapterManager.vue +9 -9
  25. package/components/common/adapterManager/AddAdapterWarningModal.vue +82 -82
  26. package/components/common/adapterManager/NoActiveAdaptersModal.vue +62 -62
  27. package/components/common/adapterManager/NoConnectedActiveAdaptersModal.vue +62 -62
  28. package/components/common/adapterManager/ui/table/Table.vue +2 -2
  29. package/components/common/addNetworking/AddNetworking.vue +2 -2
  30. package/components/common/addNetworking/config/sendData.ts +1 -1
  31. package/components/common/addNetworking/mappers/mappers.ts +1 -1
  32. package/components/common/browse/Browse.vue +182 -182
  33. package/components/common/browse/blocks/Title.vue +66 -66
  34. package/components/common/diagramMain/DiagramMain.vue +2 -2
  35. package/components/common/diagramMain/Header.vue +160 -160
  36. package/components/common/diagramMain/adapter/AdapterItem.vue +227 -227
  37. package/components/common/diagramMain/adapter/AdapterItems.vue +57 -57
  38. package/components/common/diagramMain/config/initial.ts +1 -1
  39. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +1 -1
  40. package/components/common/diagramMain/modals/config/initial.ts +31 -45
  41. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +6 -5
  42. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +9 -4
  43. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +2 -1
  44. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +5 -4
  45. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +339 -339
  46. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +202 -202
  47. package/components/common/diagramMain/modals/remove/RemoveModal.vue +226 -226
  48. package/components/common/diagramMain/modals/viewSettings/Info.vue +94 -94
  49. package/components/common/diagramMain/models/interfaces.ts +53 -74
  50. package/components/common/diagramMain/models/types.ts +1 -1
  51. package/components/common/diagramMain/network/Contents.vue +238 -238
  52. package/components/common/feedback/Buttons.vue +232 -232
  53. package/components/common/feedback/Message.vue +468 -468
  54. package/components/common/feedback/VisitPortal.vue +54 -54
  55. package/components/common/modals/Rename.vue +165 -165
  56. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/form/Form.vue +388 -388
  57. package/components/common/perPage/PerPage.vue +51 -51
  58. package/components/common/recursionTree/RecursionTree.vue +201 -201
  59. package/components/common/vm/actions/add/Add.vue +687 -687
  60. package/components/common/vm/actions/add/FolderTreeView.vue +83 -83
  61. package/components/common/vm/actions/add/config/capabilities.ts +670 -670
  62. package/components/common/vm/actions/add/customizeHardware/CustomizeHardware.vue +1 -1
  63. package/components/common/vm/actions/add/customizeHardware/virtualHardware/browseView/BrowseView.vue +203 -203
  64. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +55 -55
  65. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/CoresPerSocket.vue +1 -1
  66. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/Cpu.vue +8 -5
  67. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/CpuModel.vue +2 -2
  68. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/MaxCpu.vue +10 -4
  69. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/shares/Shares.vue +7 -3
  70. package/components/common/vm/actions/add/customizeHardware/virtualHardware/limit/Limit.vue +7 -3
  71. package/components/common/vm/actions/add/customizeHardware/virtualHardware/memory/Memory.vue +9 -5
  72. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/Location.vue +10 -10
  73. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +10 -6
  74. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/cache/Cache.vue +1 -1
  75. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/limitIops/LimitIops.vue +7 -3
  76. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/provisioning/Provisioning.vue +2 -2
  77. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newNetwork/Location.vue +1 -1
  78. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +256 -252
  79. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newNetwork/adapterType/AdapterType.vue +86 -86
  80. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +6 -6
  81. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +3 -3
  82. package/components/common/vm/actions/add/customizeHardware/virtualHardware/reservation/Reservation.vue +231 -228
  83. package/components/common/vm/actions/add/customizeHardware/virtualHardware/videoCard/TotalVideoMemory.vue +1 -1
  84. package/components/common/vm/actions/add/customizeHardware/virtualHardware/videoCard/VideoCard.vue +173 -169
  85. package/components/common/vm/actions/add/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +1 -1
  86. package/components/common/vm/actions/add/customizeHardware/vmoptions/Vmoptions.vue +145 -141
  87. package/components/common/vm/actions/add/customizeHardware/vmoptions/bootOptions/BootOptions.vue +1 -1
  88. package/components/common/vm/actions/add/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +1 -1
  89. package/components/common/vm/actions/add/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +114 -114
  90. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +7 -3
  91. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/imgCompression/ImgCompression.vue +1 -1
  92. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/jpegCompression/JpegCompression.vue +1 -1
  93. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +50 -50
  94. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/mouseMode/MouseMode.vue +52 -52
  95. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/streamingMode/StreamingMode.vue +1 -1
  96. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/type/Type.vue +1 -1
  97. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/zlibCompression/ZlibCompression.vue +1 -1
  98. package/components/common/vm/actions/add/select/compatibility/Compatibility.vue +6 -6
  99. package/components/common/vm/actions/add/select/computeResource/ComputeResource.vue +170 -170
  100. package/components/common/vm/actions/add/select/computeResource/TreeView.vue +126 -126
  101. package/components/common/vm/actions/add/select/name/Name.vue +173 -173
  102. package/components/common/vm/actions/add/select/os/os.vue +221 -221
  103. package/components/common/vm/actions/add/utils.ts +118 -118
  104. package/components/common/wizards/datastore/add/nfs/accessibility/tablesView/TablesView.vue +141 -141
  105. package/components/common/wizards/datastore/add/nfs/configuration/Configuration.vue +373 -373
  106. package/components/common/wizards/datastore/add/nfs/configuration/serversList/ServersList.vue +123 -123
  107. package/components/common/wizards/datastore/add/nfs/kerberosAuthentication/KerberosAuthentication.vue +54 -54
  108. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/hostTable/HostTable.vue +131 -131
  109. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/PartitionConfiguration.vue +230 -230
  110. package/models/store/storage/interfaces.ts +32 -32
  111. package/package.json +1 -1
  112. package/plugins/recursion.ts +230 -230
  113. package/public/spice-console/application/codec.js +257 -257
  114. package/public/spice-console/lib/rasterEngine.js +907 -907
  115. package/public/spice-console-minify/lib/decoder/dixie.min.js +4 -4
  116. package/public/spice-console-minify/lib/jgestures.min.js +24 -24
  117. package/public/spice-console-minify/lib/jquery-2.0.3.min.js +24 -24
  118. package/public/spice-console-minify/lib/jquery-mousewheel.min.js +11 -11
  119. package/public/spice-console-minify/lib/jquery-visibility.min.js +1 -1
  120. package/public/spice-console-minify/lib/lodash.4.0.0.min.js +5 -5
@@ -1,189 +1,189 @@
1
- <template>
2
- <div v-show="props.totalPages > 1" class="pagination-list">
3
- <button
4
- :id="`${props.testId}-first-button`"
5
- class="pagination-first"
6
- :disabled="currentPage === 1"
7
- @click="changeCurrentPage(1)"
8
- >
9
- <atoms-the-icon
10
- name="step-forward"
11
- class="pagination-icon"
12
- width="14px"
13
- height="14px"
14
- />
15
- </button>
16
- <button
17
- :id="`${props.testId}-prev-button`"
18
- class="pagination-previous"
19
- :disabled="currentPage === 1"
20
- @click="changeCurrentPage(currentPage - 1)"
21
- >
22
- <atoms-the-icon
23
- name="angle"
24
- class="pagination-icon"
25
- width="14px"
26
- height="14px"
27
- />
28
- </button>
29
-
30
- <input
31
- :id="`${props.testId}-page-input`"
32
- v-model="currentPageLazy"
33
- type="text"
34
- class="pagination-current clr-input"
35
- @blur="changeCurrentPageManual"
36
- />
37
- <span class="divider">/</span>
38
- <span class="total-pages">{{ props.totalPages }}</span>
39
-
40
- <button
41
- :id="`${props.testId}-next-button`"
42
- class="pagination-next"
43
- :disabled="currentPage === props.totalPages"
44
- @click="changeCurrentPage(currentPage + 1)"
45
- >
46
- <atoms-the-icon
47
- name="angle"
48
- class="pagination-icon"
49
- width="14px"
50
- height="14px"
51
- />
52
- </button>
53
- <button
54
- :id="`${props.testId}-last-button`"
55
- class="pagination-last"
56
- :disabled="currentPage === props.totalPages"
57
- @click="changeCurrentPage(props.totalPages)"
58
- >
59
- <atoms-the-icon
60
- name="step-forward"
61
- class="pagination-icon"
62
- width="14px"
63
- height="14px"
64
- />
65
- </button>
66
- </div>
67
- </template>
68
-
69
- <script setup lang="ts">
70
- import { UI_I_HTMLSelectElement } from '~/models/interfaces'
71
- const props = withDefaults(
72
- defineProps<{
73
- page: number
74
- totalItems: number
75
- totalPages: number
76
- pageSize: number
77
- testId?: string
78
- }>(),
79
- { testId: 'ui-data-grid-page' }
80
- )
81
- const emits = defineEmits<{
82
- (event: 'change', num: number): void
83
- }>()
84
-
85
- const currentPage = ref(1)
86
- const currentPageLazy = ref(1)
87
- const changePageAndLazy = (page: number): void => {
88
- currentPage.value = currentPageLazy.value = page
89
- emits('change', page)
90
- }
91
- // const totalPages = computed(() => {
92
- // return Math.ceil(props.totalItems / props.pageSize) || 1
93
- // })
94
- // watch(() => props.totalPages, (val) => {
95
- // if (val < currentPage.value) {
96
- // changePageAndLazy(val)
97
- // }
98
- // })
99
- watch(
100
- () => props.page,
101
- (val) => {
102
- changePageAndLazy(Math.min(props.totalPages, val))
103
- },
104
- { immediate: true }
105
- )
106
- const changeCurrentPage = (page: number): void => {
107
- if (page > props.totalPages || page < 1) return
108
- changePageAndLazy(page)
109
- }
110
- const changeCurrentPageManual = (e: UI_I_HTMLSelectElement): void => {
111
- const newVal = parseInt(e.target.value)
112
-
113
- if (typeof newVal !== 'number' || isNaN(newVal)) {
114
- currentPageLazy.value = currentPage.value
115
- return
116
- }
117
- changePageAndLazy(
118
- newVal > props.totalPages ? props.totalPages : newVal < 1 ? 1 : newVal
119
- )
120
- }
121
- </script>
122
-
123
- <style scoped lang="scss">
124
- @import '~/assets/scss/common/mixins';
125
- .pagination-list {
126
- @include flex($align: center);
127
- margin-left: 24px;
128
-
129
- button {
130
- display: flex;
131
-
132
- &:disabled {
133
- cursor: default;
134
- svg {
135
- fill: #959595;
136
- }
137
- }
138
- }
139
-
140
- .pagination-first {
141
- margin-right: 12px;
142
- svg {
143
- transform: rotate(180deg);
144
- }
145
- }
146
- .pagination-previous {
147
- margin-right: 12px;
148
- background-image: none;
149
-
150
- svg {
151
- transform: rotate(-90deg);
152
- }
153
- }
154
- .pagination-last {
155
- margin-left: 12px;
156
- }
157
- .pagination-next {
158
- margin-left: 12px;
159
- background-image: none;
160
-
161
- svg {
162
- transform: rotate(90deg);
163
- }
164
- }
165
- .pagination-current {
166
- border: 1px solid #ccc;
167
- border-radius: 3px;
168
- min-width: 24px;
169
- transition: none !important;
170
- width: 35px;
171
- @include text($fs: 11px, $fw: normal, $align: center);
172
-
173
- &:focus {
174
- background: none;
175
- border: 1px solid #46afd9;
176
- box-shadow: 0 0 1px #46afd9;
177
- }
178
- }
179
- .divider {
180
- margin: 0 4px;
181
- }
182
- .total-pages {
183
- margin: 0;
184
- }
185
- .pagination-icon {
186
- fill: var(--global-text-color3);
187
- }
188
- }
189
- </style>
1
+ <template>
2
+ <div v-show="props.totalPages > 1" class="pagination-list">
3
+ <button
4
+ :id="`${props.testId}-first-button`"
5
+ class="pagination-first"
6
+ :disabled="currentPage === 1"
7
+ @click="changeCurrentPage(1)"
8
+ >
9
+ <atoms-the-icon
10
+ name="step-forward"
11
+ class="pagination-icon"
12
+ width="14px"
13
+ height="14px"
14
+ />
15
+ </button>
16
+ <button
17
+ :id="`${props.testId}-prev-button`"
18
+ class="pagination-previous"
19
+ :disabled="currentPage === 1"
20
+ @click="changeCurrentPage(currentPage - 1)"
21
+ >
22
+ <atoms-the-icon
23
+ name="angle"
24
+ class="pagination-icon"
25
+ width="14px"
26
+ height="14px"
27
+ />
28
+ </button>
29
+
30
+ <input
31
+ :id="`${props.testId}-page-input`"
32
+ v-model="currentPageLazy"
33
+ type="text"
34
+ class="pagination-current clr-input"
35
+ @blur="changeCurrentPageManual"
36
+ />
37
+ <span class="divider">/</span>
38
+ <span class="total-pages">{{ props.totalPages }}</span>
39
+
40
+ <button
41
+ :id="`${props.testId}-next-button`"
42
+ class="pagination-next"
43
+ :disabled="currentPage === props.totalPages"
44
+ @click="changeCurrentPage(currentPage + 1)"
45
+ >
46
+ <atoms-the-icon
47
+ name="angle"
48
+ class="pagination-icon"
49
+ width="14px"
50
+ height="14px"
51
+ />
52
+ </button>
53
+ <button
54
+ :id="`${props.testId}-last-button`"
55
+ class="pagination-last"
56
+ :disabled="currentPage === props.totalPages"
57
+ @click="changeCurrentPage(props.totalPages)"
58
+ >
59
+ <atoms-the-icon
60
+ name="step-forward"
61
+ class="pagination-icon"
62
+ width="14px"
63
+ height="14px"
64
+ />
65
+ </button>
66
+ </div>
67
+ </template>
68
+
69
+ <script setup lang="ts">
70
+ import { UI_I_HTMLSelectElement } from '~/models/interfaces'
71
+ const props = withDefaults(
72
+ defineProps<{
73
+ page: number
74
+ totalItems: number
75
+ totalPages: number
76
+ pageSize: number
77
+ testId?: string
78
+ }>(),
79
+ { testId: 'ui-data-grid-page' }
80
+ )
81
+ const emits = defineEmits<{
82
+ (event: 'change', num: number): void
83
+ }>()
84
+
85
+ const currentPage = ref(1)
86
+ const currentPageLazy = ref(1)
87
+ const changePageAndLazy = (page: number): void => {
88
+ currentPage.value = currentPageLazy.value = page
89
+ emits('change', page)
90
+ }
91
+ // const totalPages = computed(() => {
92
+ // return Math.ceil(props.totalItems / props.pageSize) || 1
93
+ // })
94
+ // watch(() => props.totalPages, (val) => {
95
+ // if (val < currentPage.value) {
96
+ // changePageAndLazy(val)
97
+ // }
98
+ // })
99
+ watch(
100
+ () => props.page,
101
+ (val) => {
102
+ changePageAndLazy(Math.min(props.totalPages, val))
103
+ },
104
+ { immediate: true }
105
+ )
106
+ const changeCurrentPage = (page: number): void => {
107
+ if (page > props.totalPages || page < 1) return
108
+ changePageAndLazy(page)
109
+ }
110
+ const changeCurrentPageManual = (e: UI_I_HTMLSelectElement): void => {
111
+ const newVal = parseInt(e.target.value)
112
+
113
+ if (typeof newVal !== 'number' || isNaN(newVal)) {
114
+ currentPageLazy.value = currentPage.value
115
+ return
116
+ }
117
+ changePageAndLazy(
118
+ newVal > props.totalPages ? props.totalPages : newVal < 1 ? 1 : newVal
119
+ )
120
+ }
121
+ </script>
122
+
123
+ <style scoped lang="scss">
124
+ @import '~/assets/scss/common/mixins';
125
+ .pagination-list {
126
+ @include flex($align: center);
127
+ margin-left: 24px;
128
+
129
+ button {
130
+ display: flex;
131
+
132
+ &:disabled {
133
+ cursor: default;
134
+ svg {
135
+ fill: #959595;
136
+ }
137
+ }
138
+ }
139
+
140
+ .pagination-first {
141
+ margin-right: 12px;
142
+ svg {
143
+ transform: rotate(180deg);
144
+ }
145
+ }
146
+ .pagination-previous {
147
+ margin-right: 12px;
148
+ background-image: none;
149
+
150
+ svg {
151
+ transform: rotate(-90deg);
152
+ }
153
+ }
154
+ .pagination-last {
155
+ margin-left: 12px;
156
+ }
157
+ .pagination-next {
158
+ margin-left: 12px;
159
+ background-image: none;
160
+
161
+ svg {
162
+ transform: rotate(90deg);
163
+ }
164
+ }
165
+ .pagination-current {
166
+ border: 1px solid #ccc;
167
+ border-radius: 3px;
168
+ min-width: 24px;
169
+ transition: none !important;
170
+ width: 35px;
171
+ @include text($fs: 11px, $fw: normal, $align: center);
172
+
173
+ &:focus {
174
+ background: none;
175
+ border: 1px solid #46afd9;
176
+ box-shadow: 0 0 1px #46afd9;
177
+ }
178
+ }
179
+ .divider {
180
+ margin: 0 4px;
181
+ }
182
+ .total-pages {
183
+ margin: 0;
184
+ }
185
+ .pagination-icon {
186
+ fill: var(--global-text-color3);
187
+ }
188
+ }
189
+ </style>
@@ -1,83 +1,83 @@
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 class="pagination-description ml-1">
14
- {{ totalItemCount }}
15
- </div>
16
-
17
- <atoms-table-data-grid-page
18
- v-if="!props.hidePagination"
19
- :test-id="props.testId"
20
- :page="props.page"
21
- :total-items="props.totalItems"
22
- :total-pages="props.totalPages"
23
- :page-size="props.pageSize"
24
- @change="changePage"
25
- />
26
- </div>
27
- </template>
28
-
29
- <script setup lang="ts">
30
- import { UI_I_Localization } from '~/models/interfaces'
31
- import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
32
-
33
- const props = withDefaults(
34
- defineProps<{
35
- options: UI_I_OptionItem[]
36
- pageSize: number
37
- page: number
38
- totalItems: number
39
- totalPages: number
40
- pageItemsCount: number
41
- hidePagination?: boolean
42
- hidePageSize?: boolean
43
- showPageInfo?: boolean
44
- testId?: string
45
- }>(),
46
- { testId: 'ui-data-grid-pagination' }
47
- )
48
- const emits = defineEmits<{
49
- (event: 'change-page-size', value: number): void
50
- (event: 'change-page', value: number): void
51
- }>()
52
- const localization = computed<UI_I_Localization>(() => useLocal())
53
- const totalItemCount = computed<string>(() => {
54
- const start = (props.page - 1) * props.pageSize + 1
55
- // const end = Math.min(props.totalItems, props.page * props.pageSize)
56
-
57
- const paginationInfo = props.showPageInfo
58
- ? `${start} - ${props.pageItemsCount} ${localization.value.of}`
59
- : ''
60
- // props.totalPages > 1 ? `${start} - ${end} ${localization.of}` : ''
61
-
62
- return `${paginationInfo} ${
63
- props.totalItems
64
- } ${localization.value.items.toLowerCase()}`
65
- })
66
-
67
- const changePageSize = (pageSize: number): void => {
68
- const newTotalPages = Math.ceil(props.totalItems / pageSize)
69
- if (newTotalPages < props.page) changePage(newTotalPages)
70
- emits('change-page-size', pageSize)
71
- }
72
-
73
- const changePage = (page: number): void => {
74
- emits('change-page', page)
75
- }
76
- </script>
77
-
78
- <style scoped lang="scss">
79
- .pagination {
80
- display: inline-flex;
81
- align-items: center;
82
- }
83
- </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 class="pagination-description ml-1">
14
+ {{ totalItemCount }}
15
+ </div>
16
+
17
+ <atoms-table-data-grid-page
18
+ v-if="!props.hidePagination"
19
+ :test-id="props.testId"
20
+ :page="props.page"
21
+ :total-items="props.totalItems"
22
+ :total-pages="props.totalPages"
23
+ :page-size="props.pageSize"
24
+ @change="changePage"
25
+ />
26
+ </div>
27
+ </template>
28
+
29
+ <script setup lang="ts">
30
+ import { UI_I_Localization } from '~/models/interfaces'
31
+ import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
32
+
33
+ const props = withDefaults(
34
+ defineProps<{
35
+ options: UI_I_OptionItem[]
36
+ pageSize: number
37
+ page: number
38
+ totalItems: number
39
+ totalPages: number
40
+ pageItemsCount: number
41
+ hidePagination?: boolean
42
+ hidePageSize?: boolean
43
+ showPageInfo?: boolean
44
+ testId?: string
45
+ }>(),
46
+ { testId: 'ui-data-grid-pagination' }
47
+ )
48
+ const emits = defineEmits<{
49
+ (event: 'change-page-size', value: number): void
50
+ (event: 'change-page', value: number): void
51
+ }>()
52
+ const localization = computed<UI_I_Localization>(() => useLocal())
53
+ const totalItemCount = computed<string>(() => {
54
+ const start = (props.page - 1) * props.pageSize + 1
55
+ // const end = Math.min(props.totalItems, props.page * props.pageSize)
56
+
57
+ const paginationInfo = props.showPageInfo
58
+ ? `${start} - ${props.pageItemsCount} ${localization.value.of}`
59
+ : ''
60
+ // props.totalPages > 1 ? `${start} - ${end} ${localization.of}` : ''
61
+
62
+ return `${paginationInfo} ${
63
+ props.totalItems
64
+ } ${localization.value.items.toLowerCase()}`
65
+ })
66
+
67
+ const changePageSize = (pageSize: number): void => {
68
+ const newTotalPages = Math.ceil(props.totalItems / pageSize)
69
+ if (newTotalPages < props.page) changePage(newTotalPages)
70
+ emits('change-page-size', pageSize)
71
+ }
72
+
73
+ const changePage = (page: number): void => {
74
+ emits('change-page', page)
75
+ }
76
+ </script>
77
+
78
+ <style scoped lang="scss">
79
+ .pagination {
80
+ display: inline-flex;
81
+ align-items: center;
82
+ }
83
+ </style>
@@ -1,20 +1,20 @@
1
- import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
2
-
3
- export const itemsPerPage: UI_I_OptionItem[] = [
4
- {
5
- text: '35',
6
- value: 35,
7
- },
8
- {
9
- text: '50',
10
- value: 50,
11
- },
12
- {
13
- text: '100',
14
- value: 100,
15
- },
16
- {
17
- text: '200',
18
- value: 200,
19
- },
20
- ]
1
+ import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
2
+
3
+ export const itemsPerPage: UI_I_OptionItem[] = [
4
+ {
5
+ text: '35',
6
+ value: 35,
7
+ },
8
+ {
9
+ text: '50',
10
+ value: 50,
11
+ },
12
+ {
13
+ text: '100',
14
+ value: 100,
15
+ },
16
+ {
17
+ text: '200',
18
+ value: 200,
19
+ },
20
+ ]