bfg-common 1.3.160 → 1.3.162

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 (41) hide show
  1. package/assets/localization/local_be.json +28 -1
  2. package/assets/localization/local_en.json +28 -1
  3. package/assets/localization/local_hy.json +28 -1
  4. package/assets/localization/local_kk.json +28 -1
  5. package/assets/localization/local_ru.json +28 -1
  6. package/assets/localization/local_zh.json +28 -1
  7. package/assets/scss/common/icons/icons-2.scss +222 -222
  8. package/assets/scss/common/normalize.scss +4 -2
  9. package/components/atoms/switch/Switch.vue +111 -107
  10. package/components/atoms/table/compact/Compact.vue +525 -526
  11. package/components/atoms/table/dataGrid/DataGrid.vue +1576 -1576
  12. package/components/atoms/tooltip/Signpost.vue +225 -225
  13. package/components/common/pages/Tasks.vue +120 -120
  14. package/components/common/recursionTree/RecursionTree.vue +203 -203
  15. package/components/common/select/input/lib/models/interfaces.ts +1 -1
  16. package/components/common/vm/actions/add/Add.vue +575 -575
  17. package/components/common/vm/actions/clone/Clone.vue +518 -518
  18. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +269 -269
  19. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +682 -682
  20. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuModel.vue +220 -220
  21. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +164 -164
  22. package/components/common/vm/actions/common/select/storage/lib/config/config.ts +166 -166
  23. package/components/common/vm/actions/editSettings/EditSettings.vue +313 -313
  24. package/components/common/weekSelect/WeekSelect.vue +103 -90
  25. package/components/common/weekSelect/lib/config/options.ts +10 -0
  26. package/components/common/weekSelect/lib/models/interfaces.ts +5 -0
  27. package/composables/useAppVersion.ts +21 -21
  28. package/composables/useEnvLanguage.ts +20 -20
  29. package/composables/useLocal.ts +38 -38
  30. package/lib/utils/sendTask.ts +72 -72
  31. package/minify.js +146 -146
  32. package/package.json +1 -1
  33. package/public/spice-console/application/codec.js +257 -257
  34. package/public/spice-console/lib/rasterEngine.js +907 -907
  35. package/public/spice-console/network/spicechannel.js +369 -369
  36. package/store/main/lib/interfaces.ts +9 -9
  37. package/store/tasks/actions.ts +133 -133
  38. package/store/tasks/getters.ts +25 -25
  39. package/store/tasks/lib/models/interfaces.ts +18 -18
  40. package/store/tasks/mutations.ts +58 -58
  41. package/store/tasks/state.ts +16 -16
@@ -1,526 +1,525 @@
1
- <template>
2
- <div class="relative">
3
- <div :id="outerWrapper" class="datagrid-outer-wrapper">
4
- <div class="datagrid-inner-wrapper">
5
- <div class="datagrid">
6
- <div class="datagrid-table-wrapper">
7
- <div class="datagrid-table">
8
- <div class="datagrid-header">
9
- <div class="datagrid-row">
10
- <div class="datagrid-row-master datagrid-row-flex">
11
- <div class="datagrid-row-scrollable">
12
- <div
13
- v-for="(item, key) in props.headItems"
14
- :key="key"
15
- :style="{
16
- width: columnsWidth[key],
17
- }"
18
- class="datagrid-column datagrid-fixed-width"
19
- >
20
- <div class="datagrid-column-flex">
21
- <div class="datagrid-column-title">
22
- <slot name="th" :item="item">
23
-
24
- <span class="title-column">
25
- {{ item.text }}
26
- </span>
27
- </slot>
28
- </div>
29
- <div class="relative"></div>
30
- </div>
31
- </div>
32
- </div>
33
- </div>
34
- </div>
35
- </div>
36
- <template v-if="props.bodyItems.length">
37
- <div
38
- v-for="(item, key) in props.bodyItems"
39
- :key="key"
40
- :class="['datagrid-body-row datagrid-row animation']"
41
- >
42
- <div>
43
- <div class="datagrid-row-master datagrid-row-flex">
44
- <div class="datagrid-row-scrollable">
45
- <div class="datagrid-scrolling-cells">
46
- <div
47
- v-for="(item2, key2) in item"
48
- :key="item2"
49
- class="datagrid-cell datagrid-fixed-width"
50
- :style="{
51
- width: `${columnsWidth[key2]}`,
52
- }"
53
- >
54
- <div class="flex-align-center h-100">
55
- <slot :name="item2.key" :item="item2">
56
- <span>{{ item2 }}</span>
57
- </slot>
58
- </div>
59
- </div>
60
- </div>
61
- </div>
62
- </div>
63
- </div>
64
- </div>
65
- </template>
66
- <template v-else>
67
- <div class="datagrid-placeholder-container">
68
- <div class="datagrid-placeholder datagrid-empty">
69
- <div class="datagrid-placeholder-image"></div>
70
-
71
- <span>No items found</span>
72
- </div>
73
- </div>
74
- </template>
75
- </div>
76
- </div>
77
- </div>
78
-
79
- <div v-show="props.loading" class="datagrid-spinner">
80
- <div class="spinner"></div>
81
- </div>
82
- </div>
83
- </div>
84
- </div>
85
- </template>
86
-
87
- <script setup lang="ts">
88
- import { UI_I_HeadItem } from '~/components/atoms/table/compact/lib/models/interfaces'
89
-
90
- const props = withDefaults(
91
- defineProps<{
92
- headItems: UI_I_HeadItem[]
93
- bodyItems: any // don't know what array fields will be
94
- loading?: boolean
95
- }>(),
96
- {
97
- loading: false,
98
- }
99
- )
100
-
101
- const columnsWidth = ref<string[]>([])
102
- const outerWrapper = `datagrid-outer-wrapper${useUniqueId()}`
103
- let dataGridWidth = 0
104
- const setDataGridWidth = (): void => {
105
- const el = document.getElementById(outerWrapper)
106
-
107
- if (!el) {
108
- setTimeout(setDataGridWidth, 0)
109
- return
110
- }
111
-
112
- dataGridWidth = document.getElementById(outerWrapper)?.clientWidth || 0
113
-
114
- props.headItems.forEach((element) => {
115
- const equalGridWidth =
116
- dataGridWidth / Object.keys(props.headItems).length - 1
117
- const elementMax = Math.max(equalGridWidth, element.width)
118
- columnsWidth.value.push(`${elementMax}px`)
119
- })
120
- }
121
- setDataGridWidth()
122
- </script>
123
-
124
- <style scoped lang="scss">
125
- @import '~/assets/scss/common/mixins';
126
- .datagrid-outer-wrapper {
127
- @include flex($dir: row);
128
- padding-top: 12px;
129
- flex-grow: 1;
130
- overflow: auto;
131
-
132
- & * {
133
- box-sizing: border-box;
134
- }
135
-
136
- & svg {
137
- fill: var(--table-color);
138
- }
139
-
140
- .datagrid-inner-wrapper {
141
- @include flex($dir: column);
142
- flex-grow: 1;
143
- overflow: auto;
144
-
145
- .datagrid {
146
- overflow: auto;
147
- flex: 1 1 auto;
148
- border-radius: 0.125rem 0.125rem 0 0;
149
- background-color: var(--block-view-bg-color);
150
- border-color: var(--global-border-color);
151
-
152
- .datagrid-table-wrapper {
153
- display: flex;
154
- flex: 1 1 auto;
155
- min-height: 100%;
156
-
157
- .datagrid-table {
158
- @include flex($dir: column);
159
- flex: 1 1 auto;
160
- align-content: flex-start;
161
- position: relative;
162
-
163
- .datagrid-header {
164
- position: sticky;
165
- top: 0;
166
- z-index: 501;
167
- width: auto;
168
-
169
- .datagrid-row-scrollable {
170
- flex-direction: row;
171
-
172
- .datagrid-column-separator {
173
- user-select: none;
174
-
175
- &::after {
176
- cursor: col-resize;
177
- }
178
- }
179
- }
180
-
181
- .datagrid-row {
182
- color: var(--table-color);
183
- background-color: var(--block-view-bg-color);
184
-
185
- &.datagrid-selected {
186
- background-color: var(--row-selected-bg-color);
187
- border-bottom: 1px solid var(--global-border-color);
188
-
189
- & :deep(*) {
190
- color: var(--table-active-color);
191
- }
192
- }
193
-
194
- .datagrid-column {
195
- background-color: var(--block-view-bg-color);
196
- border-bottom: 1px solid var(--global-border-color);
197
- padding: 6px 12px 5px;
198
- //flex: 1 1 auto;
199
-
200
- &:last-child {
201
- flex: 1 1 auto;
202
- }
203
-
204
- &.datagrid-toggle-block {
205
- width: 38px;
206
- min-width: 38px;
207
-
208
- .datagrid-column-separator {
209
- cursor: default;
210
-
211
- &::after {
212
- cursor: default;
213
- }
214
- }
215
- }
216
- }
217
-
218
- .datagrid-column-title {
219
- align-self: auto;
220
- color: var(--table-color);
221
- background-color: var(--block-view-bg-color);
222
- border-bottom-color: var(--global-border-color);
223
- font-size: 11px;
224
- @include flex($align: center);
225
- display: flex;
226
- flex-direction: row;
227
- justify-content: flex-start;
228
- align-items: center;
229
- //line-height: 24px;
230
- line-height: normal;
231
-
232
- .title-column {
233
- font-weight: bold;
234
- font-size: 11px;
235
- }
236
-
237
- .sort-arrow-wrap {
238
- margin-left: auto;
239
- height: 14px;
240
- width: 14px;
241
- vertical-align: middle;
242
-
243
- .sort-arrow {
244
- &.down {
245
- transform: rotate(180deg);
246
- }
247
- }
248
- }
249
- .title-icon {
250
- width: 24px;
251
- height: 24px;
252
- }
253
- }
254
-
255
- .datagrid-filter-toggle {
256
- background: unset;
257
-
258
- .filter-icon {
259
- width: 16px;
260
- height: 16px;
261
- }
262
- }
263
- }
264
- }
265
-
266
- .datagrid-placeholder-container {
267
- span {
268
- font-size: 16px;
269
- color: var(--global-font-color4);
270
- }
271
- }
272
-
273
- .datagrid-row {
274
- width: 100%;
275
- min-width: max-content;
276
- border-top: none;
277
- color: var(--table-color);
278
- background-color: var(--block-view-bg-color);
279
- border-bottom: 1px solid var(--global-border-color);
280
-
281
- &.datagrid-selected {
282
- & :deep(*) {
283
- color: var(--table-active-color);
284
- }
285
-
286
- .datagrid-cell {
287
- // background-color: var(--row-selected-bg-color);
288
- // border-bottom: 1px solid var(--global-border-color);
289
- position: relative;
290
- line-height: 1rem;
291
-
292
- &.hidden-text-triangle::after {
293
- content: '';
294
- margin-right: -5%;
295
- position: absolute;
296
- transform: rotate(225deg);
297
- border-bottom: 21px solid transparent;
298
- border-right: 21px solid var(--global-bg-color);
299
- bottom: 4%;
300
- right: 0;
301
- z-index: 1000003;
302
- }
303
- &.hidden-text-triangle::before {
304
- content: '';
305
- margin-right: -5%;
306
- transform: rotate(-135deg);
307
- position: absolute;
308
- border-bottom: 22px solid transparent;
309
- border-right: 22px solid var(--global-border-color);
310
- bottom: 3%;
311
- right: 0%;
312
- z-index: 1000002;
313
- }
314
- }
315
-
316
- .datagrid-row-detail {
317
- background-color: var(--row-selected-bg-color);
318
- border-bottom: 1px solid var(--global-border-color);
319
- }
320
- }
321
-
322
- .datagrid-cell {
323
- min-width: 38px;
324
- min-height: 28px;
325
- padding: 2px 4px 3px 4px;
326
-
327
- &:last-child {
328
- flex: 1 1 auto;
329
- }
330
-
331
- button {
332
- height: 0.9rem;
333
- width: 0.9rem;
334
-
335
- .arrow-icon {
336
- width: 16px;
337
- height: 16px;
338
- transform: rotate(90deg);
339
- }
340
- }
341
-
342
- .datagrid-cell-icon {
343
- display: inline-block;
344
- width: 16px;
345
- height: 16px;
346
- }
347
-
348
- .datagrid-expandable-caret-button {
349
- cursor: pointer;
350
- width: 100%;
351
-
352
- .datagrid-expandable-caret-icon {
353
- width: 16px;
354
- height: 16px;
355
- transform: rotate(90deg);
356
- fill: var(--table-caret-color);
357
-
358
- &.toggle {
359
- transform: rotate(180deg);
360
- }
361
- }
362
- }
363
- }
364
- }
365
-
366
- .datagrid-row-sticky {
367
- @include flex($w: nowrap);
368
- position: sticky;
369
- left: 0;
370
- z-index: 500;
371
- background-color: var(--block-view-bg-color);
372
-
373
- .datagrid-column {
374
- color: var(--table-color);
375
- background-color: var(--block-view-bg-color);
376
- border-bottom-color: var(--global-border-color);
377
- text-align: left;
378
- display: flex;
379
- flex: 1 1 auto;
380
- vertical-align: top;
381
- border: none;
382
-
383
- &.datagrid-expandable-caret {
384
- .datagrid-column-separator {
385
- display: block;
386
-
387
- &::after {
388
- top: 0;
389
- height: 18px;
390
- }
391
- }
392
-
393
- .radio-btn {
394
- width: 16px;
395
- height: 16px;
396
- }
397
- }
398
-
399
- .datagrid-column-separator {
400
- position: relative;
401
- //left: 0.6rem;
402
- flex: 0 0 auto;
403
- width: 0.05rem;
404
- order: 100;
405
- margin-left: auto;
406
- height: 100%;
407
- }
408
- }
409
-
410
- .datagrid-fixed-column {
411
- background-color: var(--block-view-bg-color);
412
-
413
- &::after {
414
- content: '';
415
- width: 0.05rem;
416
- height: calc(100% - 0.5rem);
417
- position: absolute;
418
- right: 0;
419
- top: 0.25rem;
420
- background-color: var(--global-border-color);
421
- }
422
- }
423
- }
424
-
425
- .datagrid-row-scrollable {
426
- @include flex($ff: row nowrap);
427
- flex: 1 1 auto;
428
-
429
- .datagrid-scrolling-cells {
430
- @include flex($ff: row nowrap);
431
- flex: 1 1 auto;
432
- }
433
- }
434
- .datagrid-body-row {
435
- .datagrid-row-scrollable {
436
- @include flex($ff: column nowrap);
437
-
438
- .datagrid-row-detail {
439
- flex: 1;
440
- }
441
- }
442
-
443
- &:not(.datagrid-selected):hover {
444
- // border-bottom: 1px solid var(--table-hover-row-border-color);
445
- // background-color: var(--table-hover-row-background-color);
446
- color: var(--table-hover-row-color);
447
-
448
- .datagrid-fixed-column {
449
- background-color: var(--table-hover-row-background-color);
450
- }
451
- .datagrid-cell {
452
- // background-color: var(--table-hover-row-background-color);
453
- }
454
- }
455
- }
456
- }
457
- }
458
- }
459
-
460
- .datagrid-spinner {
461
- position: absolute;
462
- @include flex($just: center, $align: center);
463
- width: 100%;
464
- top: 0.6rem;
465
- height: calc(100% - 0.6rem);
466
- background-color: #ffffff99;
467
- z-index: 590;
468
-
469
- .spinner {
470
- width: 40px;
471
- height: 40px;
472
- min-width: 40px;
473
- min-height: 40px;
474
- }
475
- }
476
-
477
- .datagrid-footer-description {
478
- flex: 1 1 auto;
479
-
480
- :deep(svg) {
481
- fill: var(--table-switch-color);
482
- }
483
- }
484
-
485
- .clr-radio-wrapper,
486
- .clr-checkbox-wrapper {
487
- height: 18px;
488
- }
489
-
490
- .clr-radio-wrapper label,
491
- .clr-checkbox-wrapper label {
492
- padding-left: 16px;
493
- }
494
- }
495
- }
496
- .vertical-divider {
497
- width: 1px;
498
- height: 22px;
499
- background: #bbb;
500
- margin: 2px 7px 0 -10px;
501
- }
502
- </style>
503
-
504
- <style>
505
- :root {
506
- --table-color: #565656;
507
- --table-active-color: #fff;
508
- --table-checkbox-color: #454545;
509
- --table-caret-color: #454545;
510
- --table-switch-color: #575757;
511
- --table-hover-row-border-color: #666;
512
- --table-hover-row-background-color: #e8e8e8;
513
- --table-hover-row-color: #454545;
514
- }
515
-
516
- :root.dark-theme {
517
- --table-color: #fff;
518
- --table-active-color: #565656;
519
- --table-checkbox-color: #49aeda;
520
- --table-caret-color: #ffffff;
521
- --table-switch-color: #b3b3b3;
522
- --table-hover-row-border-color: #fff;
523
- --table-hover-row-background-color: #324f61;
524
- --table-hover-row-color: #e9ecef;
525
- }
526
- </style>
1
+ <template>
2
+ <div class="relative">
3
+ <div :id="outerWrapper" class="datagrid-outer-wrapper">
4
+ <div class="datagrid-inner-wrapper">
5
+ <div class="datagrid">
6
+ <div class="datagrid-table-wrapper">
7
+ <div class="datagrid-table">
8
+ <div class="datagrid-header">
9
+ <div class="datagrid-row">
10
+ <div class="datagrid-row-master datagrid-row-flex">
11
+ <div class="datagrid-row-scrollable">
12
+ <div
13
+ v-for="(item, key) in props.headItems"
14
+ :key="key"
15
+ :style="{
16
+ width: columnsWidth[key],
17
+ }"
18
+ class="datagrid-column datagrid-fixed-width"
19
+ >
20
+ <div class="datagrid-column-flex">
21
+ <div class="datagrid-column-title">
22
+ <slot name="th" :item="item">
23
+ <span class="title-column">
24
+ {{ item.text }}
25
+ </span>
26
+ </slot>
27
+ </div>
28
+ <div class="relative"></div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ <template v-if="props.bodyItems.length">
36
+ <div
37
+ v-for="(item, key) in props.bodyItems"
38
+ :key="key"
39
+ :class="['datagrid-body-row datagrid-row animation']"
40
+ >
41
+ <div>
42
+ <div class="datagrid-row-master datagrid-row-flex">
43
+ <div class="datagrid-row-scrollable">
44
+ <div class="datagrid-scrolling-cells">
45
+ <div
46
+ v-for="(item2, key2) in item"
47
+ :key="item2"
48
+ class="datagrid-cell datagrid-fixed-width"
49
+ :style="{
50
+ width: `${columnsWidth[key2]}`,
51
+ }"
52
+ >
53
+ <div class="flex-align-center h-100">
54
+ <slot :name="item2.key" :item="item2">
55
+ <span>{{ item2 }}</span>
56
+ </slot>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </template>
65
+ <template v-else>
66
+ <div class="datagrid-placeholder-container">
67
+ <div class="datagrid-placeholder datagrid-empty">
68
+ <div class="datagrid-placeholder-image"></div>
69
+
70
+ <span>No items found</span>
71
+ </div>
72
+ </div>
73
+ </template>
74
+ </div>
75
+ </div>
76
+ </div>
77
+
78
+ <div v-show="props.loading" class="datagrid-spinner">
79
+ <div class="spinner"></div>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </div>
84
+ </template>
85
+
86
+ <script setup lang="ts">
87
+ import { UI_I_HeadItem } from '~/components/atoms/table/compact/lib/models/interfaces'
88
+
89
+ const props = withDefaults(
90
+ defineProps<{
91
+ headItems: UI_I_HeadItem[]
92
+ bodyItems: any // don't know what array fields will be
93
+ loading?: boolean
94
+ }>(),
95
+ {
96
+ loading: false,
97
+ }
98
+ )
99
+
100
+ const columnsWidth = ref<string[]>([])
101
+ const outerWrapper = `datagrid-outer-wrapper${useUniqueId()}`
102
+ let dataGridWidth = 0
103
+ const setDataGridWidth = (): void => {
104
+ const el = document.getElementById(outerWrapper)
105
+
106
+ dataGridWidth = document.getElementById(outerWrapper)?.clientWidth || 0
107
+
108
+ if (!el || !dataGridWidth) {
109
+ setTimeout(setDataGridWidth, 0)
110
+ return
111
+ }
112
+
113
+ const emptyWidthCount = props.headItems.filter((item) => !!item.width).length
114
+ props.headItems.forEach((item) => {
115
+ const equalGridWidth = dataGridWidth / emptyWidthCount
116
+ const elementMax = Math.max(equalGridWidth, item.width)
117
+ columnsWidth.value.push(`${elementMax}px`)
118
+ })
119
+ }
120
+ setDataGridWidth()
121
+ </script>
122
+
123
+ <style scoped lang="scss">
124
+ @import '~/assets/scss/common/mixins';
125
+ .datagrid-outer-wrapper {
126
+ @include flex($dir: row);
127
+ padding-top: 12px;
128
+ flex-grow: 1;
129
+ overflow: auto;
130
+
131
+ & * {
132
+ box-sizing: border-box;
133
+ }
134
+
135
+ & svg {
136
+ fill: var(--table-color);
137
+ }
138
+
139
+ .datagrid-inner-wrapper {
140
+ @include flex($dir: column);
141
+ flex-grow: 1;
142
+ overflow: auto;
143
+
144
+ .datagrid {
145
+ overflow: auto;
146
+ flex: 1 1 auto;
147
+ border-radius: 0.125rem 0.125rem 0 0;
148
+ background-color: var(--block-view-bg-color);
149
+ border-color: var(--global-border-color);
150
+
151
+ .datagrid-table-wrapper {
152
+ display: flex;
153
+ flex: 1 1 auto;
154
+ min-height: 100%;
155
+
156
+ .datagrid-table {
157
+ @include flex($dir: column);
158
+ flex: 1 1 auto;
159
+ align-content: flex-start;
160
+ position: relative;
161
+
162
+ .datagrid-header {
163
+ position: sticky;
164
+ top: 0;
165
+ z-index: 501;
166
+ width: auto;
167
+
168
+ .datagrid-row-scrollable {
169
+ flex-direction: row;
170
+
171
+ .datagrid-column-separator {
172
+ user-select: none;
173
+
174
+ &::after {
175
+ cursor: col-resize;
176
+ }
177
+ }
178
+ }
179
+
180
+ .datagrid-row {
181
+ color: var(--table-color);
182
+ background-color: var(--block-view-bg-color);
183
+
184
+ &.datagrid-selected {
185
+ background-color: var(--row-selected-bg-color);
186
+ border-bottom: 1px solid var(--global-border-color);
187
+
188
+ & :deep(*) {
189
+ color: var(--table-active-color);
190
+ }
191
+ }
192
+
193
+ .datagrid-column {
194
+ background-color: var(--block-view-bg-color);
195
+ border-bottom: 1px solid var(--global-border-color);
196
+ padding: 6px 12px 5px;
197
+ //flex: 1 1 auto;
198
+
199
+ &:last-child {
200
+ flex: 1 1 auto;
201
+ }
202
+
203
+ &.datagrid-toggle-block {
204
+ width: 38px;
205
+ min-width: 38px;
206
+
207
+ .datagrid-column-separator {
208
+ cursor: default;
209
+
210
+ &::after {
211
+ cursor: default;
212
+ }
213
+ }
214
+ }
215
+ }
216
+
217
+ .datagrid-column-title {
218
+ align-self: auto;
219
+ color: var(--table-color);
220
+ background-color: var(--block-view-bg-color);
221
+ border-bottom-color: var(--global-border-color);
222
+ font-size: 11px;
223
+ @include flex($align: center);
224
+ display: flex;
225
+ flex-direction: row;
226
+ justify-content: flex-start;
227
+ align-items: center;
228
+ //line-height: 24px;
229
+ line-height: normal;
230
+
231
+ .title-column {
232
+ font-weight: bold;
233
+ font-size: 11px;
234
+ }
235
+
236
+ .sort-arrow-wrap {
237
+ margin-left: auto;
238
+ height: 14px;
239
+ width: 14px;
240
+ vertical-align: middle;
241
+
242
+ .sort-arrow {
243
+ &.down {
244
+ transform: rotate(180deg);
245
+ }
246
+ }
247
+ }
248
+ .title-icon {
249
+ width: 24px;
250
+ height: 24px;
251
+ }
252
+ }
253
+
254
+ .datagrid-filter-toggle {
255
+ background: unset;
256
+
257
+ .filter-icon {
258
+ width: 16px;
259
+ height: 16px;
260
+ }
261
+ }
262
+ }
263
+ }
264
+
265
+ .datagrid-placeholder-container {
266
+ span {
267
+ font-size: 16px;
268
+ color: var(--global-font-color4);
269
+ }
270
+ }
271
+
272
+ .datagrid-row {
273
+ width: 100%;
274
+ min-width: max-content;
275
+ border-top: none;
276
+ color: var(--table-color);
277
+ background-color: var(--block-view-bg-color);
278
+ border-bottom: 1px solid var(--global-border-color);
279
+
280
+ &.datagrid-selected {
281
+ & :deep(*) {
282
+ color: var(--table-active-color);
283
+ }
284
+
285
+ .datagrid-cell {
286
+ // background-color: var(--row-selected-bg-color);
287
+ // border-bottom: 1px solid var(--global-border-color);
288
+ position: relative;
289
+ line-height: 1rem;
290
+
291
+ &.hidden-text-triangle::after {
292
+ content: '';
293
+ margin-right: -5%;
294
+ position: absolute;
295
+ transform: rotate(225deg);
296
+ border-bottom: 21px solid transparent;
297
+ border-right: 21px solid var(--global-bg-color);
298
+ bottom: 4%;
299
+ right: 0;
300
+ z-index: 1000003;
301
+ }
302
+ &.hidden-text-triangle::before {
303
+ content: '';
304
+ margin-right: -5%;
305
+ transform: rotate(-135deg);
306
+ position: absolute;
307
+ border-bottom: 22px solid transparent;
308
+ border-right: 22px solid var(--global-border-color);
309
+ bottom: 3%;
310
+ right: 0%;
311
+ z-index: 1000002;
312
+ }
313
+ }
314
+
315
+ .datagrid-row-detail {
316
+ background-color: var(--row-selected-bg-color);
317
+ border-bottom: 1px solid var(--global-border-color);
318
+ }
319
+ }
320
+
321
+ .datagrid-cell {
322
+ min-width: 38px;
323
+ min-height: 28px;
324
+ padding: 2px 4px 3px 4px;
325
+
326
+ &:last-child {
327
+ flex: 1 1 auto;
328
+ }
329
+
330
+ button {
331
+ height: 0.9rem;
332
+ width: 0.9rem;
333
+
334
+ .arrow-icon {
335
+ width: 16px;
336
+ height: 16px;
337
+ transform: rotate(90deg);
338
+ }
339
+ }
340
+
341
+ .datagrid-cell-icon {
342
+ display: inline-block;
343
+ width: 16px;
344
+ height: 16px;
345
+ }
346
+
347
+ .datagrid-expandable-caret-button {
348
+ cursor: pointer;
349
+ width: 100%;
350
+
351
+ .datagrid-expandable-caret-icon {
352
+ width: 16px;
353
+ height: 16px;
354
+ transform: rotate(90deg);
355
+ fill: var(--table-caret-color);
356
+
357
+ &.toggle {
358
+ transform: rotate(180deg);
359
+ }
360
+ }
361
+ }
362
+ }
363
+ }
364
+
365
+ .datagrid-row-sticky {
366
+ @include flex($w: nowrap);
367
+ position: sticky;
368
+ left: 0;
369
+ z-index: 500;
370
+ background-color: var(--block-view-bg-color);
371
+
372
+ .datagrid-column {
373
+ color: var(--table-color);
374
+ background-color: var(--block-view-bg-color);
375
+ border-bottom-color: var(--global-border-color);
376
+ text-align: left;
377
+ display: flex;
378
+ flex: 1 1 auto;
379
+ vertical-align: top;
380
+ border: none;
381
+
382
+ &.datagrid-expandable-caret {
383
+ .datagrid-column-separator {
384
+ display: block;
385
+
386
+ &::after {
387
+ top: 0;
388
+ height: 18px;
389
+ }
390
+ }
391
+
392
+ .radio-btn {
393
+ width: 16px;
394
+ height: 16px;
395
+ }
396
+ }
397
+
398
+ .datagrid-column-separator {
399
+ position: relative;
400
+ //left: 0.6rem;
401
+ flex: 0 0 auto;
402
+ width: 0.05rem;
403
+ order: 100;
404
+ margin-left: auto;
405
+ height: 100%;
406
+ }
407
+ }
408
+
409
+ .datagrid-fixed-column {
410
+ background-color: var(--block-view-bg-color);
411
+
412
+ &::after {
413
+ content: '';
414
+ width: 0.05rem;
415
+ height: calc(100% - 0.5rem);
416
+ position: absolute;
417
+ right: 0;
418
+ top: 0.25rem;
419
+ background-color: var(--global-border-color);
420
+ }
421
+ }
422
+ }
423
+
424
+ .datagrid-row-scrollable {
425
+ @include flex($ff: row nowrap);
426
+ flex: 1 1 auto;
427
+
428
+ .datagrid-scrolling-cells {
429
+ @include flex($ff: row nowrap);
430
+ flex: 1 1 auto;
431
+ }
432
+ }
433
+ .datagrid-body-row {
434
+ .datagrid-row-scrollable {
435
+ @include flex($ff: column nowrap);
436
+
437
+ .datagrid-row-detail {
438
+ flex: 1;
439
+ }
440
+ }
441
+
442
+ &:not(.datagrid-selected):hover {
443
+ // border-bottom: 1px solid var(--table-hover-row-border-color);
444
+ // background-color: var(--table-hover-row-background-color);
445
+ color: var(--table-hover-row-color);
446
+
447
+ .datagrid-fixed-column {
448
+ background-color: var(--table-hover-row-background-color);
449
+ }
450
+ .datagrid-cell {
451
+ // background-color: var(--table-hover-row-background-color);
452
+ }
453
+ }
454
+ }
455
+ }
456
+ }
457
+ }
458
+
459
+ .datagrid-spinner {
460
+ position: absolute;
461
+ @include flex($just: center, $align: center);
462
+ width: 100%;
463
+ top: 0.6rem;
464
+ height: calc(100% - 0.6rem);
465
+ background-color: #ffffff99;
466
+ z-index: 590;
467
+
468
+ .spinner {
469
+ width: 40px;
470
+ height: 40px;
471
+ min-width: 40px;
472
+ min-height: 40px;
473
+ }
474
+ }
475
+
476
+ .datagrid-footer-description {
477
+ flex: 1 1 auto;
478
+
479
+ :deep(svg) {
480
+ fill: var(--table-switch-color);
481
+ }
482
+ }
483
+
484
+ .clr-radio-wrapper,
485
+ .clr-checkbox-wrapper {
486
+ height: 18px;
487
+ }
488
+
489
+ .clr-radio-wrapper label,
490
+ .clr-checkbox-wrapper label {
491
+ padding-left: 16px;
492
+ }
493
+ }
494
+ }
495
+ .vertical-divider {
496
+ width: 1px;
497
+ height: 22px;
498
+ background: #bbb;
499
+ margin: 2px 7px 0 -10px;
500
+ }
501
+ </style>
502
+
503
+ <style>
504
+ :root {
505
+ --table-color: #565656;
506
+ --table-active-color: #fff;
507
+ --table-checkbox-color: #454545;
508
+ --table-caret-color: #454545;
509
+ --table-switch-color: #575757;
510
+ --table-hover-row-border-color: #666;
511
+ --table-hover-row-background-color: #e8e8e8;
512
+ --table-hover-row-color: #454545;
513
+ }
514
+
515
+ :root.dark-theme {
516
+ --table-color: #fff;
517
+ --table-active-color: #565656;
518
+ --table-checkbox-color: #49aeda;
519
+ --table-caret-color: #ffffff;
520
+ --table-switch-color: #b3b3b3;
521
+ --table-hover-row-border-color: #fff;
522
+ --table-hover-row-background-color: #324f61;
523
+ --table-hover-row-color: #e9ecef;
524
+ }
525
+ </style>