bfg-common 1.5.92 → 1.5.94

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 (112) hide show
  1. package/assets/scss/common/normalize.scss +347 -347
  2. package/components/atoms/alert/Notification.vue +169 -169
  3. package/components/atoms/autocomplete/Autocomplete.vue +361 -362
  4. package/components/atoms/collapse/CollapseNav.vue +169 -169
  5. package/components/atoms/comboDropdownMenu/ComboDropdownMenu.vue +357 -357
  6. package/components/atoms/combobox/Combobox.vue +154 -154
  7. package/components/atoms/datepicker/Datepicker.vue +639 -639
  8. package/components/atoms/dropdown/Portlet.vue +113 -113
  9. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  10. package/components/atoms/dropdown/tree/Tree.vue +137 -137
  11. package/components/atoms/list/SelectList.vue +63 -63
  12. package/components/atoms/list/dragDropList/DragDropList.vue +148 -148
  13. package/components/atoms/modal/Modal.vue +250 -250
  14. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  15. package/components/atoms/notificationBar/NotificationBar.vue +178 -178
  16. package/components/atoms/popover/Popover.vue +58 -58
  17. package/components/atoms/popover/lib/models/interfaces.ts +4 -4
  18. package/components/atoms/select/TheSelect.vue +187 -187
  19. package/components/atoms/stack/StackBlock.vue +185 -185
  20. package/components/atoms/stack/StackContent.vue +63 -63
  21. package/components/atoms/step/lib/models/verticalStepItem.ts +5 -5
  22. package/components/atoms/switch/Switch.vue +111 -111
  23. package/components/atoms/table/compact/Compact.vue +529 -529
  24. package/components/atoms/table/dataGrid/DataGrid.vue +1716 -1713
  25. package/components/atoms/table/dataGrid/DataGridPage.vue +195 -195
  26. package/components/atoms/table/info/Info.vue +2 -2
  27. package/components/atoms/table/simpleEvent/SimpleEvent.vue +98 -98
  28. package/components/atoms/table/simpleInfo/SimpleInfo.vue +73 -73
  29. package/components/atoms/tabs/Tabs.vue +217 -217
  30. package/components/atoms/wizard/Wizard.vue +341 -341
  31. package/components/common/accordion/Recursion.vue +222 -222
  32. package/components/common/adapterManager/AddAdapterModal.vue +561 -561
  33. package/components/common/adapterManager/ui/actions/AddAdapterButton.vue +30 -30
  34. package/components/common/adapterManager/ui/table/Table.vue +162 -162
  35. package/components/common/browse/BrowseNew.vue +237 -237
  36. package/components/common/browse/BrowseOld.vue +217 -217
  37. package/components/common/browse/blocks/TitleNew.vue +145 -145
  38. package/components/common/browse/blocks/TitleOld.vue +91 -91
  39. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  40. package/components/common/chartOptionsModal/counters/timespan/form/FormNew.vue +262 -262
  41. package/components/common/context/Context.vue +111 -111
  42. package/components/common/context/recursion/RecursionOld.vue +228 -228
  43. package/components/common/details/DetailsItem.vue +109 -109
  44. package/components/common/feedback/Buttons.vue +229 -229
  45. package/components/common/feedback/Feedback.vue +270 -270
  46. package/components/common/feedback/Message.vue +519 -519
  47. package/components/common/graph/graphNew/GraphNew.vue +194 -194
  48. package/components/common/graph/lib/utils/renderGraph.ts +389 -389
  49. package/components/common/layout/theHeader/feedback/new/New.vue +227 -227
  50. package/components/common/layout/theHeader/feedback/new/additionalDetails/AdditionalDetails.vue +606 -606
  51. package/components/common/layout/theHeader/feedback/new/additionalDetails/Headline.vue +98 -98
  52. package/components/common/layout/theHeader/feedback/new/description/Description.vue +59 -59
  53. package/components/common/layout/theHeader/feedback/new/email/Email.vue +43 -43
  54. package/components/common/layout/theHeader/feedback/new/subtitle/Subtitle.vue +103 -103
  55. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +112 -112
  56. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +80 -80
  57. package/components/common/layout/theHeader/helpMenu/helpMenuOld/HelpMenuOld.vue +1 -1
  58. package/components/common/layout/theHeader/modals/Reconnect.vue +2 -2
  59. package/components/common/layout/theHeader/modals/RedirectLogin.vue +3 -3
  60. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +1 -1
  61. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePasswordNew.vue +8 -8
  62. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePasswordOld.vue +3 -3
  63. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesNew.vue +1 -1
  64. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +1 -1
  65. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +1 -1
  66. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguageNew.vue +1 -1
  67. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguageOld.vue +2 -5
  68. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsoleOld.vue +1 -1
  69. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/InventoryNew.vue +1 -1
  70. package/components/common/layout/theHeader/userMenu/userMenuNew/UserMenuNew.vue +2 -2
  71. package/components/common/layout/theHeader/userMenu/userMenuNew/lib/config/dropMenu.ts +1 -1
  72. package/components/common/layout/theHeader/userMenu/userMenuOld/UserMenuOld.vue +1 -1
  73. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +2 -2
  74. package/components/common/modals/Rename.vue +2 -2
  75. package/components/common/modals/confirmByInput/ConfirmByInput.vue +2 -3
  76. package/components/common/modals/confirmByInput/ConfirmByInputOld.vue +3 -3
  77. package/components/common/modals/confirmation/ConfirmationOld.vue +1 -1
  78. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +1 -1
  79. package/components/common/monitor/advanced/Advanced.vue +1 -1
  80. package/components/common/monitor/advanced/AdvancedNew.vue +1 -1
  81. package/components/common/monitor/advanced/AdvancedOld.vue +1 -1
  82. package/components/common/monitor/advanced/graphView/GraphViewNew.vue +1 -1
  83. package/components/common/monitor/advanced/graphView/GraphViewOld.vue +1 -1
  84. package/components/common/monitor/advanced/table/Table.vue +1 -1
  85. package/components/common/monitor/advanced/table/tableNew/TableNew.vue +2 -2
  86. package/components/common/monitor/advanced/table/tableOld/lib/config/performanceDatatable.ts +2 -2
  87. package/components/common/monitor/advanced/tools/ToolsOld.vue +2 -2
  88. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModalOld.vue +1 -1
  89. package/components/common/monitor/advanced/tools/chartOptionsModal/NotificationOld.vue +1 -1
  90. package/components/common/monitor/advanced/tools/chartOptionsModal/actions/ActionsOld.vue +1 -1
  91. package/components/common/monitor/advanced/tools/chartOptionsModal/actions/saveOptionsModal/SaveOptionsModal.vue +1 -1
  92. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/CountersNew.vue +1 -1
  93. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/tableOld/lib/config/tableConfig.ts +2 -2
  94. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/lib/config/objectTable.ts +10 -3
  95. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/objectNew/ObjectNew.vue +1 -1
  96. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/objectOld/ObjectOld.vue +2 -2
  97. package/components/common/monitor/advanced/tools/lib/utils/countCores.ts +1 -1
  98. package/components/common/monitor/lib/models/interfaces.ts +1 -1
  99. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModalOld.vue +3 -3
  100. package/components/common/monitor/overview/filters/customIntervalModal/customIntervalModalNew/CustomIntervalModalNew.vue +4 -3
  101. package/components/common/monitor/resourceAllocation/lib/models/interfaces.ts +8 -8
  102. package/components/common/monitor/resourceAllocation/resourceAllocation.vue +2 -2
  103. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/ChartOptionsModal.vue +1 -1
  104. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/Notification.vue +1 -1
  105. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/actions/SaveOptionsModal.vue +1 -1
  106. package/components/common/pages/hardwareHealth/tableView/lib/config/alertWarningTable.ts +1 -1
  107. package/components/common/pages/hardwareHealth/tableView/lib/config/historyTestimonyTable.ts +5 -5
  108. package/components/common/wizards/vm/migrate/Migrate.vue +39 -2
  109. package/components/common/wizards/vm/migrate/vmOrigin/VmOrigin.vue +92 -0
  110. package/components/common/wizards/vm/migrate/vmOrigin/lib/models/interfaces.ts +19 -0
  111. package/components/common/wizards/vm/migrate/vmOrigin/lib/utils/constructItems.ts +62 -0
  112. package/package.json +1 -1
@@ -1,195 +1,195 @@
1
- <template>
2
- <div v-show="props.totalPages > 1" class="pagination-list">
3
- <button
4
- :id="`${props.testId}-first-button`"
5
- :data-id="`${props.testId}-first-button`"
6
- :disabled="currentPage === 1"
7
- class="pagination-first"
8
- @click="changeCurrentPage(1)"
9
- >
10
- <atoms-the-icon
11
- name="step-forward"
12
- class="pagination-icon"
13
- width="14px"
14
- height="14px"
15
- />
16
- </button>
17
- <button
18
- :id="`${props.testId}-prev-button`"
19
- :data-id="`${props.testId}-prev-button`"
20
- :disabled="currentPage === 1"
21
- class="pagination-previous"
22
- @click="changeCurrentPage(currentPage - 1)"
23
- >
24
- <atoms-the-icon
25
- name="angle"
26
- class="pagination-icon"
27
- width="14px"
28
- height="14px"
29
- />
30
- </button>
31
-
32
- <input
33
- :id="`${props.testId}-page-input`"
34
- v-model="currentPageLazy"
35
- :data-id="`${props.testId}-page-input`"
36
- type="text"
37
- class="pagination-current clr-input"
38
- @keydown.enter="changeCurrentPageManual"
39
- @blur="changeCurrentPageManual"
40
- />
41
- <span class="divider">/</span>
42
- <span class="total-pages">{{ props.totalPages }}</span>
43
-
44
- <button
45
- :id="`${props.testId}-next-button`"
46
- :data-id="`${props.testId}-next-button`"
47
- :disabled="currentPage === props.totalPages"
48
- class="pagination-next"
49
- @click="changeCurrentPage(currentPage + 1)"
50
- >
51
- <atoms-the-icon
52
- name="angle"
53
- class="pagination-icon"
54
- width="14px"
55
- height="14px"
56
- />
57
- </button>
58
- <button
59
- :id="`${props.testId}-last-button`"
60
- :data-id="`${props.testId}-last-button`"
61
- :disabled="currentPage === props.totalPages"
62
- class="pagination-last"
63
- @click="changeCurrentPage(props.totalPages)"
64
- >
65
- <atoms-the-icon
66
- name="step-forward"
67
- class="pagination-icon"
68
- width="14px"
69
- height="14px"
70
- />
71
- </button>
72
- </div>
73
- </template>
74
-
75
- <script setup lang="ts">
76
- const props = withDefaults(
77
- defineProps<{
78
- page: number
79
- totalItems: number
80
- totalPages: number
81
- pageSize: number
82
- testId?: string
83
- }>(),
84
- { testId: 'ui-data-grid-page' }
85
- )
86
-
87
- const emits = defineEmits<{
88
- (event: 'change', value: number): void
89
- }>()
90
-
91
- const currentPage = ref<number>(1)
92
- const currentPageLazy = ref<number>(1)
93
- const changePageAndLazy = (page: number): void => {
94
- currentPage.value = currentPageLazy.value = page
95
- emits('change', page)
96
- }
97
- // const totalPages = computed(() => {
98
- // return Math.ceil(props.totalItems / props.pageSize) || 1
99
- // })
100
- // watch(() => props.totalPages, (val) => {
101
- // if (val < currentPage.value) {
102
- // changePageAndLazy(val)
103
- // }
104
- // })
105
- watch(
106
- () => props.page,
107
- (newValue) => {
108
- changePageAndLazy(Math.min(props.totalPages, newValue))
109
- },
110
- { immediate: true }
111
- )
112
- const changeCurrentPage = (page: number): void => {
113
- if (page > props.totalPages || page < 1) return
114
- changePageAndLazy(page)
115
- }
116
- const changeCurrentPageManual = (event: any): void => {
117
- const newVal = parseInt(event.target.value)
118
-
119
- if (typeof newVal !== 'number' || isNaN(newVal)) {
120
- currentPageLazy.value = currentPage.value
121
- return
122
- }
123
- changePageAndLazy(
124
- newVal > props.totalPages ? props.totalPages : newVal < 1 ? 1 : newVal
125
- )
126
- }
127
- </script>
128
-
129
- <style scoped lang="scss">
130
- @import '~/assets/scss/common/mixins';
131
- .pagination-list {
132
- @include flex($align: center);
133
- margin-left: 24px;
134
-
135
- button {
136
- display: flex;
137
-
138
- &:disabled {
139
- cursor: default;
140
- svg {
141
- fill: #959595;
142
- }
143
- }
144
- }
145
-
146
- .pagination-first {
147
- margin-right: 12px;
148
- svg {
149
- transform: rotate(180deg);
150
- }
151
- }
152
- .pagination-previous {
153
- margin-right: 12px;
154
- background-image: none;
155
-
156
- svg {
157
- transform: rotate(-90deg);
158
- }
159
- }
160
- .pagination-last {
161
- margin-left: 12px;
162
- }
163
- .pagination-next {
164
- margin-left: 12px;
165
- background-image: none;
166
-
167
- svg {
168
- transform: rotate(90deg);
169
- }
170
- }
171
- .pagination-current {
172
- border: 1px solid #ccc;
173
- border-radius: 3px;
174
- min-width: 24px;
175
- transition: none !important;
176
- width: 35px;
177
- @include text($fs: 11px, $fw: normal, $align: center);
178
-
179
- &:focus {
180
- background: none;
181
- border: 1px solid #46afd9;
182
- box-shadow: 0 0 1px #46afd9;
183
- }
184
- }
185
- .divider {
186
- margin: 0 4px;
187
- }
188
- .total-pages {
189
- margin: 0;
190
- }
191
- .pagination-icon {
192
- fill: var(--global-text-color3);
193
- }
194
- }
195
- </style>
1
+ <template>
2
+ <div v-show="props.totalPages > 1" class="pagination-list">
3
+ <button
4
+ :id="`${props.testId}-first-button`"
5
+ :data-id="`${props.testId}-first-button`"
6
+ :disabled="currentPage === 1"
7
+ class="pagination-first"
8
+ @click="changeCurrentPage(1)"
9
+ >
10
+ <atoms-the-icon
11
+ name="step-forward"
12
+ class="pagination-icon"
13
+ width="14px"
14
+ height="14px"
15
+ />
16
+ </button>
17
+ <button
18
+ :id="`${props.testId}-prev-button`"
19
+ :data-id="`${props.testId}-prev-button`"
20
+ :disabled="currentPage === 1"
21
+ class="pagination-previous"
22
+ @click="changeCurrentPage(currentPage - 1)"
23
+ >
24
+ <atoms-the-icon
25
+ name="angle"
26
+ class="pagination-icon"
27
+ width="14px"
28
+ height="14px"
29
+ />
30
+ </button>
31
+
32
+ <input
33
+ :id="`${props.testId}-page-input`"
34
+ v-model="currentPageLazy"
35
+ :data-id="`${props.testId}-page-input`"
36
+ type="text"
37
+ class="pagination-current clr-input"
38
+ @keydown.enter="changeCurrentPageManual"
39
+ @blur="changeCurrentPageManual"
40
+ />
41
+ <span class="divider">/</span>
42
+ <span class="total-pages">{{ props.totalPages }}</span>
43
+
44
+ <button
45
+ :id="`${props.testId}-next-button`"
46
+ :data-id="`${props.testId}-next-button`"
47
+ :disabled="currentPage === props.totalPages"
48
+ class="pagination-next"
49
+ @click="changeCurrentPage(currentPage + 1)"
50
+ >
51
+ <atoms-the-icon
52
+ name="angle"
53
+ class="pagination-icon"
54
+ width="14px"
55
+ height="14px"
56
+ />
57
+ </button>
58
+ <button
59
+ :id="`${props.testId}-last-button`"
60
+ :data-id="`${props.testId}-last-button`"
61
+ :disabled="currentPage === props.totalPages"
62
+ class="pagination-last"
63
+ @click="changeCurrentPage(props.totalPages)"
64
+ >
65
+ <atoms-the-icon
66
+ name="step-forward"
67
+ class="pagination-icon"
68
+ width="14px"
69
+ height="14px"
70
+ />
71
+ </button>
72
+ </div>
73
+ </template>
74
+
75
+ <script setup lang="ts">
76
+ const props = withDefaults(
77
+ defineProps<{
78
+ page: number
79
+ totalItems: number
80
+ totalPages: number
81
+ pageSize: number
82
+ testId?: string
83
+ }>(),
84
+ { testId: 'ui-data-grid-page' }
85
+ )
86
+
87
+ const emits = defineEmits<{
88
+ (event: 'change', value: number): void
89
+ }>()
90
+
91
+ const currentPage = ref<number>(1)
92
+ const currentPageLazy = ref<number>(1)
93
+ const changePageAndLazy = (page: number): void => {
94
+ currentPage.value = currentPageLazy.value = page
95
+ emits('change', page)
96
+ }
97
+ // const totalPages = computed(() => {
98
+ // return Math.ceil(props.totalItems / props.pageSize) || 1
99
+ // })
100
+ // watch(() => props.totalPages, (val) => {
101
+ // if (val < currentPage.value) {
102
+ // changePageAndLazy(val)
103
+ // }
104
+ // })
105
+ watch(
106
+ () => props.page,
107
+ (newValue) => {
108
+ changePageAndLazy(Math.min(props.totalPages, newValue))
109
+ },
110
+ { immediate: true }
111
+ )
112
+ const changeCurrentPage = (page: number): void => {
113
+ if (page > props.totalPages || page < 1) return
114
+ changePageAndLazy(page)
115
+ }
116
+ const changeCurrentPageManual = (event: any): void => {
117
+ const newVal = parseInt(event.target.value)
118
+
119
+ if (typeof newVal !== 'number' || isNaN(newVal)) {
120
+ currentPageLazy.value = currentPage.value
121
+ return
122
+ }
123
+ changePageAndLazy(
124
+ newVal > props.totalPages ? props.totalPages : newVal < 1 ? 1 : newVal
125
+ )
126
+ }
127
+ </script>
128
+
129
+ <style scoped lang="scss">
130
+ @import '~/assets/scss/common/mixins';
131
+ .pagination-list {
132
+ @include flex($align: center);
133
+ margin-left: 24px;
134
+
135
+ button {
136
+ display: flex;
137
+
138
+ &:disabled {
139
+ cursor: default;
140
+ svg {
141
+ fill: #959595;
142
+ }
143
+ }
144
+ }
145
+
146
+ .pagination-first {
147
+ margin-right: 12px;
148
+ svg {
149
+ transform: rotate(180deg);
150
+ }
151
+ }
152
+ .pagination-previous {
153
+ margin-right: 12px;
154
+ background-image: none;
155
+
156
+ svg {
157
+ transform: rotate(-90deg);
158
+ }
159
+ }
160
+ .pagination-last {
161
+ margin-left: 12px;
162
+ }
163
+ .pagination-next {
164
+ margin-left: 12px;
165
+ background-image: none;
166
+
167
+ svg {
168
+ transform: rotate(90deg);
169
+ }
170
+ }
171
+ .pagination-current {
172
+ border: 1px solid #ccc;
173
+ border-radius: 3px;
174
+ min-width: 24px;
175
+ transition: none !important;
176
+ width: 35px;
177
+ @include text($fs: 11px, $fw: normal, $align: center);
178
+
179
+ &:focus {
180
+ background: none;
181
+ border: 1px solid #46afd9;
182
+ box-shadow: 0 0 1px #46afd9;
183
+ }
184
+ }
185
+ .divider {
186
+ margin: 0 4px;
187
+ }
188
+ .total-pages {
189
+ margin: 0;
190
+ }
191
+ .pagination-icon {
192
+ fill: var(--global-text-color3);
193
+ }
194
+ }
195
+ </style>
@@ -2,14 +2,14 @@
2
2
  <!-- TODO refactoring-->
3
3
  <table :data-id="props.testId" class="table table-vertical">
4
4
  <tbody>
5
- <tr v-for="item in list" :key="item.id">
5
+ <tr v-for="(item, index) in list" :key="item.id">
6
6
  <th
7
7
  scope="row"
8
8
  :class="['vm-name-label', item.isProperty && 'hard-disk-properties']"
9
9
  >
10
10
  {{ item.label }}
11
11
  </th>
12
- <td class="vm-name">
12
+ <td :data-id="`${props.testId}-td-${index}-content`" class="vm-name">
13
13
  <slot :name="item.key">
14
14
  {{ item.value }}
15
15
  </slot>
@@ -1,98 +1,98 @@
1
- <template>
2
- <div class="table-wrap">
3
- <table ref="table">
4
- <thead>
5
- <tr>
6
- <th
7
- v-for="item in headItems"
8
- :key="item.text"
9
- :style="{ width: `${100 / headItems.length}%` }"
10
- >
11
- {{ item.text }}
12
- </th>
13
- </tr>
14
- </thead>
15
- <tbody>
16
- <tr v-for="(item, key) in presentBodyItems" :key="key" :class="''">
17
- <td>{{ item.text }}</td>
18
- <td>{{ item.value }}</td>
19
- </tr>
20
- </tbody>
21
- </table>
22
- </div>
23
- </template>
24
-
25
- <script setup lang="ts">
26
- import type {
27
- UI_I_TableHeadItem,
28
- UI_I_TableBodyItem,
29
- } from '~/components/atoms/table/simpleEvent/lib/models/interfaces'
30
-
31
- const props = defineProps<{
32
- headItems: UI_I_TableHeadItem
33
- bodyItems: UI_I_TableBodyItem[][]
34
- }>()
35
-
36
- const presentBodyItems = ref<UI_I_TableBodyItem[][]>([])
37
- watch(
38
- () => props.bodyItems,
39
- (newValue) => {
40
- presentBodyItems.value = useDeepCopy(newValue)
41
- },
42
- { immediate: true, deep: true }
43
- )
44
- </script>
45
-
46
- <style scoped lang="scss">
47
- .table-wrap {
48
- border: 1px solid var(--global-border-color);
49
- border-radius: 3px;
50
- overflow-x: auto;
51
-
52
- table {
53
- width: 100%;
54
-
55
- thead {
56
- background-color: var(--thead-bg-color);
57
- tr {
58
- th {
59
- color: var(--global-font-color4);
60
- background-color: var(--thead-bg-color);
61
- font-size: 11px;
62
- font-weight: 600;
63
- height: 24px;
64
- vertical-align: middle;
65
- padding: 0 0 0 12px;
66
- border-bottom: none;
67
- text-align: left;
68
- border-bottom: 2px solid var(--global-border-color);
69
- }
70
- }
71
- }
72
-
73
- tbody {
74
- tr {
75
- color: var(--global-font-color4);
76
- td {
77
- border-width: 0 0 1px;
78
- border-color: #ddd;
79
- font-size: 13px;
80
- font-weight: 400;
81
- line-height: 24px;
82
- padding: 0 12px;
83
- border-bottom: 1px solid var(--global-border-color);
84
- }
85
- }
86
- }
87
- }
88
- }
89
- </style>
90
-
91
- <style>
92
- :root {
93
- --thead-bg-color: #{$light-grey};
94
- }
95
- :root.dark-theme {
96
- --thead-bg-color: #{$--blue-700};
97
- }
98
- </style>
1
+ <template>
2
+ <div class="table-wrap">
3
+ <table ref="table">
4
+ <thead>
5
+ <tr>
6
+ <th
7
+ v-for="item in headItems"
8
+ :key="item.text"
9
+ :style="{ width: `${100 / headItems.length}%` }"
10
+ >
11
+ {{ item.text }}
12
+ </th>
13
+ </tr>
14
+ </thead>
15
+ <tbody>
16
+ <tr v-for="(item, key) in presentBodyItems" :key="key" :class="''">
17
+ <td>{{ item.text }}</td>
18
+ <td>{{ item.value }}</td>
19
+ </tr>
20
+ </tbody>
21
+ </table>
22
+ </div>
23
+ </template>
24
+
25
+ <script setup lang="ts">
26
+ import type {
27
+ UI_I_TableHeadItem,
28
+ UI_I_TableBodyItem,
29
+ } from '~/components/atoms/table/simpleEvent/lib/models/interfaces'
30
+
31
+ const props = defineProps<{
32
+ headItems: UI_I_TableHeadItem
33
+ bodyItems: UI_I_TableBodyItem[][]
34
+ }>()
35
+
36
+ const presentBodyItems = ref<UI_I_TableBodyItem[][]>([])
37
+ watch(
38
+ () => props.bodyItems,
39
+ (newValue) => {
40
+ presentBodyItems.value = useDeepCopy(newValue)
41
+ },
42
+ { immediate: true, deep: true }
43
+ )
44
+ </script>
45
+
46
+ <style scoped lang="scss">
47
+ .table-wrap {
48
+ border: 1px solid var(--global-border-color);
49
+ border-radius: 3px;
50
+ overflow-x: auto;
51
+
52
+ table {
53
+ width: 100%;
54
+
55
+ thead {
56
+ background-color: var(--thead-bg-color);
57
+ tr {
58
+ th {
59
+ color: var(--global-font-color4);
60
+ background-color: var(--thead-bg-color);
61
+ font-size: 11px;
62
+ font-weight: 600;
63
+ height: 24px;
64
+ vertical-align: middle;
65
+ padding: 0 0 0 12px;
66
+ border-bottom: none;
67
+ text-align: left;
68
+ border-bottom: 2px solid var(--global-border-color);
69
+ }
70
+ }
71
+ }
72
+
73
+ tbody {
74
+ tr {
75
+ color: var(--global-font-color4);
76
+ td {
77
+ border-width: 0 0 1px;
78
+ border-color: #ddd;
79
+ font-size: 13px;
80
+ font-weight: 400;
81
+ line-height: 24px;
82
+ padding: 0 12px;
83
+ border-bottom: 1px solid var(--global-border-color);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ </style>
90
+
91
+ <style>
92
+ :root {
93
+ --thead-bg-color: #{$light-grey};
94
+ }
95
+ :root.dark-theme {
96
+ --thead-bg-color: #{$--blue-700};
97
+ }
98
+ </style>