bfg-common 1.3.259 → 1.3.261

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.
@@ -1,526 +1,526 @@
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
- const existWidthsSum = props.headItems.reduce((acum, item) => acum += item.width, 0)
115
- const equalGridWidth = (dataGridWidth - existWidthsSum) / emptyWidthCount
116
- props.headItems.forEach((item) => {
117
- const elementMax = Math.max(equalGridWidth, item.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
+ const existWidthsSum = props.headItems.reduce((acum, item) => acum += item.width, 0)
115
+ const equalGridWidth = (dataGridWidth - existWidthsSum) / emptyWidthCount
116
+ props.headItems.forEach((item) => {
117
+ const elementMax = Math.max(equalGridWidth, item.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>