@coreui/data-grid 0.1.0-rc.0 → 0.3.0-rc.0
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.
- package/README.md +9 -6
- package/dist/css/data-grid.css +156 -38
- package/dist/css/data-grid.css.map +1 -1
- package/dist/css/data-grid.min.css +2 -2
- package/dist/css/data-grid.min.css.map +1 -1
- package/dist/css/data-grid.standalone.css +1066 -0
- package/dist/css/data-grid.standalone.css.map +1 -0
- package/dist/css/data-grid.standalone.min.css +5 -0
- package/dist/css/data-grid.standalone.min.css.map +1 -0
- package/dist/js/clipboard.cjs +56 -0
- package/dist/js/clipboard.cjs.map +1 -0
- package/dist/js/clipboard.mjs +54 -0
- package/dist/js/clipboard.mjs.map +1 -0
- package/dist/js/csv.cjs +36 -59
- package/dist/js/csv.cjs.map +1 -1
- package/dist/js/csv.mjs +35 -55
- package/dist/js/csv.mjs.map +1 -1
- package/dist/js/data-grid.esm.js +14108 -9331
- package/dist/js/data-grid.esm.js.map +1 -1
- package/dist/js/data-grid.esm.min.js +6 -6
- package/dist/js/data-grid.esm.min.js.map +1 -1
- package/dist/js/data-grid.js +14408 -9634
- package/dist/js/data-grid.js.map +1 -1
- package/dist/js/data-grid.lite.esm.js +10507 -0
- package/dist/js/data-grid.lite.esm.js.map +1 -0
- package/dist/js/data-grid.lite.esm.min.js +8 -0
- package/dist/js/data-grid.lite.esm.min.js.map +1 -0
- package/dist/js/data-grid.lite.js +10520 -0
- package/dist/js/data-grid.lite.js.map +1 -0
- package/dist/js/data-grid.lite.min.js +8 -0
- package/dist/js/data-grid.lite.min.js.map +1 -0
- package/dist/js/data-grid.lite.mjs +10507 -0
- package/dist/js/data-grid.lite.mjs.map +1 -0
- package/dist/js/data-grid.min.js +6 -6
- package/dist/js/data-grid.min.js.map +1 -1
- package/dist/js/data-grid.mjs +14108 -9331
- package/dist/js/data-grid.mjs.map +1 -1
- package/dist/js/direction.cjs +26 -0
- package/dist/js/direction.cjs.map +1 -0
- package/dist/js/direction.mjs +24 -0
- package/dist/js/direction.mjs.map +1 -0
- package/dist/js/drag.cjs +467 -0
- package/dist/js/drag.cjs.map +1 -0
- package/dist/js/drag.mjs +464 -0
- package/dist/js/drag.mjs.map +1 -0
- package/dist/js/export-table-BdabEbJG.mjs +26 -0
- package/dist/js/export-table-BdabEbJG.mjs.map +1 -0
- package/dist/js/export-table-D762wrZ1.cjs +55 -0
- package/dist/js/export-table-D762wrZ1.cjs.map +1 -0
- package/dist/js/filters.cjs +89 -132
- package/dist/js/filters.cjs.map +1 -1
- package/dist/js/filters.mjs +88 -128
- package/dist/js/filters.mjs.map +1 -1
- package/dist/js/labels.cjs +65 -70
- package/dist/js/labels.cjs.map +1 -1
- package/dist/js/labels.mjs +64 -66
- package/dist/js/labels.mjs.map +1 -1
- package/dist/js/print.cjs +66 -0
- package/dist/js/print.cjs.map +1 -0
- package/dist/js/print.mjs +64 -0
- package/dist/js/print.mjs.map +1 -0
- package/dist/js/validate.cjs +43 -0
- package/dist/js/validate.cjs.map +1 -0
- package/dist/js/validate.mjs +42 -0
- package/dist/js/validate.mjs.map +1 -0
- package/dist/js/xlsx.cjs +240 -0
- package/dist/js/xlsx.cjs.map +1 -0
- package/dist/js/xlsx.mjs +238 -0
- package/dist/js/xlsx.mjs.map +1 -0
- package/dist/types/base-component.d.ts +28 -18
- package/dist/types/data-grid.d.ts +26 -13
- package/dist/types/dom/data.d.ts +15 -0
- package/dist/types/dom/event-handler.d.ts +21 -10
- package/dist/types/dom/manipulator.d.ts +15 -8
- package/dist/types/engine/active-cell.d.ts +1 -0
- package/dist/types/engine/data-source.d.ts +1 -1
- package/dist/types/engine/features-lite.d.ts +25 -0
- package/dist/types/engine/features.d.ts +35 -0
- package/dist/types/engine/table.d.ts +3 -3
- package/dist/types/engine/validate.d.mts +1 -0
- package/dist/types/engine/validate.d.ts +20 -0
- package/dist/types/engine/virtualizer.d.ts +2 -0
- package/dist/types/icons.d.ts +6 -4
- package/dist/types/index-lite.d.mts +1 -0
- package/dist/types/index-lite.d.ts +19 -0
- package/dist/types/index.d.ts +11 -2
- package/dist/types/types.d.ts +53 -31
- package/dist/types/ui/body.d.ts +6 -3
- package/dist/types/ui/header.d.ts +3 -2
- package/dist/types/ui/loading.d.ts +1 -1
- package/dist/types/ui/pinning.d.ts +1 -1
- package/dist/types/ui/toolbar.d.ts +10 -2
- package/dist/types/util/clipboard.d.mts +1 -0
- package/dist/types/util/clipboard.d.ts +29 -0
- package/dist/types/util/config.d.ts +27 -10
- package/dist/types/util/csv.d.ts +5 -5
- package/dist/types/util/direction.d.mts +1 -0
- package/dist/types/util/direction.d.ts +17 -0
- package/dist/types/util/drag.d.mts +1 -0
- package/dist/types/util/drag.d.ts +48 -0
- package/dist/types/util/export-table.d.ts +47 -0
- package/dist/types/util/index.d.ts +66 -10
- package/dist/types/util/print.d.mts +1 -0
- package/dist/types/util/print.d.ts +32 -0
- package/dist/types/util/sanitizer.d.ts +15 -11
- package/dist/types/util/xlsx.d.mts +1 -0
- package/dist/types/util/xlsx.d.ts +17 -0
- package/dist/types/util/zip.d.ts +11 -0
- package/package.json +101 -10
- package/scss/_base.scss +13 -0
- package/scss/_config.scss +14 -0
- package/scss/_functions.scss +1 -0
- package/scss/_mixins.scss +1 -0
- package/scss/base/_buttons.scss +113 -0
- package/scss/base/_forms.scss +157 -0
- package/scss/base/_helpers.scss +24 -0
- package/scss/base/_pagination.scss +100 -0
- package/scss/base/_reboot.scss +93 -0
- package/scss/base/_root.scss +85 -0
- package/scss/base/_spinner.scss +45 -0
- package/scss/base/_table.scss +78 -0
- package/scss/components/_data-grid.scss +807 -0
- package/scss/data-grid.scss +7 -555
- package/scss/data-grid.standalone.scss +16 -0
- package/scss/functions/_defaults.scss +25 -0
- package/scss/mixins/_tokens.scss +12 -0
- package/src/{base-component.js → base-component.ts} +21 -17
- package/src/data-grid.ts +523 -201
- package/src/dom/{data.js → data.ts} +13 -10
- package/src/dom/event-handler.ts +380 -0
- package/src/dom/{manipulator.js → manipulator.ts} +11 -11
- package/src/engine/active-cell.ts +10 -3
- package/src/engine/data-source.ts +7 -3
- package/src/engine/features-lite.ts +47 -0
- package/src/engine/features.ts +68 -0
- package/src/engine/table.ts +86 -45
- package/src/engine/validate.ts +64 -0
- package/src/engine/virtualizer.ts +17 -1
- package/src/icons.ts +11 -5
- package/src/index-lite.ts +85 -0
- package/src/index.ts +30 -2
- package/src/labels.ts +6 -4
- package/src/types.ts +87 -32
- package/src/ui/body.ts +73 -17
- package/src/ui/header.ts +51 -26
- package/src/ui/loading.ts +2 -2
- package/src/ui/pinning.ts +16 -16
- package/src/ui/toolbar.ts +27 -3
- package/src/util/clipboard.ts +112 -0
- package/src/util/{config.js → config.ts} +25 -11
- package/src/util/csv.ts +11 -30
- package/src/util/direction.ts +37 -0
- package/src/util/drag.ts +832 -0
- package/src/util/export-table.ts +86 -0
- package/src/util/{index.js → index.ts} +55 -35
- package/src/util/print.ts +125 -0
- package/src/util/{sanitizer.js → sanitizer.ts} +17 -13
- package/src/util/xlsx.ts +183 -0
- package/src/util/zip.ts +170 -0
- package/src/base-component.d.ts +0 -19
- package/src/dom/event-handler.d.ts +0 -11
- package/src/dom/event-handler.js +0 -331
- package/src/dom/manipulator.d.ts +0 -9
- package/src/util/config.d.ts +0 -11
- package/src/util/index.d.ts +0 -10
- package/src/util/sanitizer.d.ts +0 -11
package/README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
# @coreui/data-grid
|
|
2
2
|
|
|
3
|
-
High-performance vanilla JavaScript data grid for CoreUI,
|
|
4
|
-
|
|
3
|
+
High-performance vanilla JavaScript data grid for CoreUI — sorting, filtering,
|
|
4
|
+
selection, pagination, column resizing/reordering/pinning, inline editing, CSV
|
|
5
|
+
export, and server-side data, virtualized to 100,000 rows in ~48 KB gzip with no
|
|
6
|
+
runtime dependencies to install.
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
Load `data-grid.css` next to the CoreUI stylesheet (`@coreui/coreui` or
|
|
9
|
+
`@coreui/coreui-pro` ≥ 5), which supplies the base `.table`, `.btn` and form
|
|
10
|
+
styles. Without CoreUI on the page, load `data-grid.standalone.css` instead — it
|
|
11
|
+
carries those base styles itself for ~2.7 kB gzip, scoped to `.data-grid`.
|
|
8
12
|
|
|
9
13
|
## Usage
|
|
10
14
|
|
|
@@ -33,5 +37,4 @@ Or with the UMD bundle: `new coreui.DataGrid(element, options)`.
|
|
|
33
37
|
|
|
34
38
|
## License
|
|
35
39
|
|
|
36
|
-
Commercial — see [LICENSE](LICENSE).
|
|
37
|
-
Virtual (MIT).
|
|
40
|
+
Commercial — see [LICENSE](LICENSE).
|
package/dist/css/data-grid.css
CHANGED
|
@@ -1,29 +1,36 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* CoreUI PRO data-grid.scss v0.
|
|
2
|
+
* CoreUI PRO data-grid.scss v0.3.0
|
|
3
3
|
* License (https://coreui.io/pro/license/)
|
|
4
4
|
*/
|
|
5
5
|
.data-grid {
|
|
6
6
|
position: relative;
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
7
9
|
--cui-data-grid-viewport-max-height: 30rem;
|
|
8
10
|
--cui-data-grid-header-bg: var(--cui-body-bg, #fff);
|
|
9
11
|
--cui-data-grid-header-shadow: inset 0 calc(-1 * var(--cui-border-width, 1px)) 0 var(--cui-border-color, #dee2e6);
|
|
12
|
+
--cui-data-grid-cell-selected-bg: rgba(var(--cui-primary-rgb, 50, 31, 219), 0.12);
|
|
13
|
+
--cui-data-grid-cell-selected-border-color: var(--cui-primary, #321fdb);
|
|
14
|
+
--cui-data-grid-cell-selected-border-width: 1px;
|
|
15
|
+
--cui-data-grid-row-handle-width: 2rem;
|
|
10
16
|
--cui-data-grid-select-cell-width: 2.5rem;
|
|
11
|
-
--cui-data-grid-sorter-margin: .25rem;
|
|
12
|
-
--cui-data-grid-sorter-opacity: .3;
|
|
13
|
-
--cui-data-grid-spacing: .5rem;
|
|
14
|
-
--cui-data-grid-resizer-width: .625rem;
|
|
17
|
+
--cui-data-grid-sorter-margin: 0.25rem;
|
|
18
|
+
--cui-data-grid-sorter-opacity: 0.3;
|
|
19
|
+
--cui-data-grid-spacing: 0.5rem;
|
|
20
|
+
--cui-data-grid-resizer-width: 0.625rem;
|
|
15
21
|
--cui-data-grid-resizer-grip-height: 60%;
|
|
16
22
|
--cui-data-grid-resizer-grip-color: var(--cui-border-color, #dee2e6);
|
|
17
23
|
--cui-data-grid-resizer-grip-color-hover: var(--cui-secondary-color, #6c757d);
|
|
18
24
|
--cui-data-grid-pinned-border-width: var(--cui-border-width);
|
|
19
25
|
--cui-data-grid-pinned-border-color: var(--cui-border-color, #dee2e6);
|
|
20
26
|
--cui-data-grid-drop-indicator: var(--cui-primary, #321fdb);
|
|
27
|
+
--cui-data-grid-drag-transition: 0.15s ease;
|
|
21
28
|
--cui-data-grid-menu-bg: var(--cui-body-bg, #fff);
|
|
22
29
|
--cui-data-grid-menu-border-color: var(--cui-border-color, #dee2e6);
|
|
23
|
-
--cui-data-grid-menu-shadow: var(--cui-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));
|
|
30
|
+
--cui-data-grid-menu-shadow: var(--cui-box-shadow, 0 0.5rem 1rem rgba(0, 0, 0, 0.15));
|
|
24
31
|
--cui-data-grid-menu-min-width: 10rem;
|
|
25
32
|
--cui-data-grid-menu-item-hover-bg: var(--cui-tertiary-bg, #f8f9fa);
|
|
26
|
-
--cui-data-grid-loading-bg: rgba(var(--cui-body-bg-rgb, 255, 255, 255), .6);
|
|
33
|
+
--cui-data-grid-loading-bg: rgba(var(--cui-body-bg-rgb, 255, 255, 255), 0.6);
|
|
27
34
|
--cui-data-grid-pinned-bg: var(--cui-body-bg, #fff);
|
|
28
35
|
--cui-data-grid-focus-ring-width: 2px;
|
|
29
36
|
--cui-data-grid-focus-ring-color: var(--cui-primary, #321fdb);
|
|
@@ -43,11 +50,12 @@
|
|
|
43
50
|
align-items: center;
|
|
44
51
|
}
|
|
45
52
|
.data-grid .data-grid-toolbar-search {
|
|
46
|
-
-webkit-margin-start: auto;
|
|
47
53
|
margin-inline-start: auto;
|
|
48
54
|
}
|
|
49
55
|
.data-grid .data-grid-viewport {
|
|
50
56
|
position: relative;
|
|
57
|
+
flex: 1 1 auto;
|
|
58
|
+
min-height: 0;
|
|
51
59
|
max-height: var(--cui-data-grid-viewport-max-height);
|
|
52
60
|
overflow-y: auto;
|
|
53
61
|
overflow-anchor: none;
|
|
@@ -73,7 +81,6 @@
|
|
|
73
81
|
outline: 0;
|
|
74
82
|
}
|
|
75
83
|
.data-grid .data-grid-header {
|
|
76
|
-
position: -webkit-sticky;
|
|
77
84
|
position: sticky;
|
|
78
85
|
top: 0;
|
|
79
86
|
z-index: 2;
|
|
@@ -89,7 +96,6 @@
|
|
|
89
96
|
font-weight: normal;
|
|
90
97
|
}
|
|
91
98
|
.data-grid .data-grid-header th[data-coreui-draggable] {
|
|
92
|
-
cursor: -webkit-grab;
|
|
93
99
|
cursor: grab;
|
|
94
100
|
}
|
|
95
101
|
.data-grid .data-grid-header-cell {
|
|
@@ -107,7 +113,6 @@
|
|
|
107
113
|
--cui-btn-line-height: 1;
|
|
108
114
|
}
|
|
109
115
|
.data-grid .data-grid-menu-button {
|
|
110
|
-
-webkit-margin-start: auto;
|
|
111
116
|
margin-inline-start: auto;
|
|
112
117
|
}
|
|
113
118
|
.data-grid .data-grid-menu {
|
|
@@ -218,11 +223,9 @@
|
|
|
218
223
|
}
|
|
219
224
|
.data-grid .data-grid-filter-button {
|
|
220
225
|
position: relative;
|
|
221
|
-
-webkit-margin-start: auto;
|
|
222
226
|
margin-inline-start: auto;
|
|
223
227
|
}
|
|
224
228
|
.data-grid .data-grid-filter-button ~ .data-grid-menu-button {
|
|
225
|
-
-webkit-margin-start: 0;
|
|
226
229
|
margin-inline-start: 0;
|
|
227
230
|
}
|
|
228
231
|
.data-grid .data-grid-filter-button-filtered::after {
|
|
@@ -248,11 +251,92 @@
|
|
|
248
251
|
margin: 0.25rem 0;
|
|
249
252
|
background-color: var(--cui-data-grid-menu-border-color);
|
|
250
253
|
}
|
|
251
|
-
.data-grid .data-grid-
|
|
254
|
+
.data-grid .data-grid-dragging {
|
|
252
255
|
opacity: 0.5;
|
|
253
256
|
}
|
|
254
|
-
.data-grid
|
|
255
|
-
|
|
257
|
+
.data-grid.data-grid-drag-active {
|
|
258
|
+
cursor: grabbing;
|
|
259
|
+
-webkit-user-select: none;
|
|
260
|
+
user-select: none;
|
|
261
|
+
}
|
|
262
|
+
.data-grid .data-grid-drag-ghost {
|
|
263
|
+
position: fixed;
|
|
264
|
+
top: 0;
|
|
265
|
+
left: 0;
|
|
266
|
+
z-index: 1080;
|
|
267
|
+
display: flex;
|
|
268
|
+
align-items: center;
|
|
269
|
+
max-width: 16rem;
|
|
270
|
+
padding: 0 var(--cui-data-grid-cell-padding-x, 0.5rem);
|
|
271
|
+
overflow: hidden;
|
|
272
|
+
font-weight: 600;
|
|
273
|
+
text-overflow: ellipsis;
|
|
274
|
+
white-space: nowrap;
|
|
275
|
+
pointer-events: none;
|
|
276
|
+
background-color: var(--cui-data-grid-pinned-bg);
|
|
277
|
+
border: var(--cui-border-width, 1px) solid var(--cui-data-grid-drop-indicator);
|
|
278
|
+
border-radius: var(--cui-border-radius, 0.375rem);
|
|
279
|
+
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
|
280
|
+
transform: translate(-9999px, -9999px);
|
|
281
|
+
opacity: 0.9;
|
|
282
|
+
}
|
|
283
|
+
.data-grid .data-grid-drag-ghost-settle {
|
|
284
|
+
transition: transform var(--cui-data-grid-drag-transition), opacity var(--cui-data-grid-drag-transition);
|
|
285
|
+
}
|
|
286
|
+
.data-grid .data-grid-drop-indicator {
|
|
287
|
+
position: fixed;
|
|
288
|
+
z-index: 1080;
|
|
289
|
+
pointer-events: none;
|
|
290
|
+
background-color: var(--cui-data-grid-drop-indicator);
|
|
291
|
+
transition: top var(--cui-data-grid-drag-transition), left var(--cui-data-grid-drag-transition);
|
|
292
|
+
}
|
|
293
|
+
.data-grid .data-grid-drag-preview {
|
|
294
|
+
transition: transform var(--cui-data-grid-drag-transition);
|
|
295
|
+
}
|
|
296
|
+
@media (prefers-reduced-motion: reduce) {
|
|
297
|
+
.data-grid :is(.data-grid-drop-indicator, .data-grid-drag-preview, .data-grid-drag-ghost-settle) {
|
|
298
|
+
transition: none;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
.data-grid .data-grid-drop-indicator-x {
|
|
302
|
+
width: 0.125rem;
|
|
303
|
+
}
|
|
304
|
+
.data-grid .data-grid-drop-indicator-y {
|
|
305
|
+
height: 0.125rem;
|
|
306
|
+
}
|
|
307
|
+
.data-grid .data-grid-cell-selected {
|
|
308
|
+
position: relative;
|
|
309
|
+
background-color: var(--cui-data-grid-cell-selected-bg);
|
|
310
|
+
}
|
|
311
|
+
.data-grid .data-grid-cell-selected::after {
|
|
312
|
+
position: absolute;
|
|
313
|
+
inset: 0;
|
|
314
|
+
pointer-events: none;
|
|
315
|
+
content: "";
|
|
316
|
+
border: 0 solid var(--cui-data-grid-cell-selected-border-color);
|
|
317
|
+
}
|
|
318
|
+
.data-grid .data-grid-cell-selected-top::after {
|
|
319
|
+
border-top-width: var(--cui-data-grid-cell-selected-border-width);
|
|
320
|
+
}
|
|
321
|
+
.data-grid .data-grid-cell-selected-right::after {
|
|
322
|
+
border-right-width: var(--cui-data-grid-cell-selected-border-width);
|
|
323
|
+
}
|
|
324
|
+
.data-grid .data-grid-cell-selected-bottom::after {
|
|
325
|
+
border-bottom-width: var(--cui-data-grid-cell-selected-border-width);
|
|
326
|
+
}
|
|
327
|
+
.data-grid .data-grid-cell-selected-left::after {
|
|
328
|
+
border-left-width: var(--cui-data-grid-cell-selected-border-width);
|
|
329
|
+
}
|
|
330
|
+
.data-grid .data-grid-row-handle-cell {
|
|
331
|
+
width: var(--cui-data-grid-row-handle-width);
|
|
332
|
+
padding-inline: 0;
|
|
333
|
+
text-align: center;
|
|
334
|
+
}
|
|
335
|
+
.data-grid .data-grid-row-handle {
|
|
336
|
+
display: inline-flex;
|
|
337
|
+
color: var(--cui-secondary-color, #6c757d);
|
|
338
|
+
cursor: grab;
|
|
339
|
+
touch-action: none;
|
|
256
340
|
}
|
|
257
341
|
.data-grid .data-grid-select-cell {
|
|
258
342
|
width: var(--cui-data-grid-select-cell-width);
|
|
@@ -267,7 +351,6 @@
|
|
|
267
351
|
color: inherit;
|
|
268
352
|
cursor: pointer;
|
|
269
353
|
-webkit-user-select: none;
|
|
270
|
-
-moz-user-select: none;
|
|
271
354
|
user-select: none;
|
|
272
355
|
background: none;
|
|
273
356
|
border: 0;
|
|
@@ -294,7 +377,7 @@
|
|
|
294
377
|
margin-bottom: 0;
|
|
295
378
|
table-layout: fixed;
|
|
296
379
|
}
|
|
297
|
-
.data-grid .data-grid-viewport > .table > tbody > tr:not(.data-grid-empty) > td:not(.data-grid-select-cell):not(.data-grid-cell-pinned-
|
|
380
|
+
.data-grid:not(.data-grid-auto-row-height) .data-grid-viewport > .table > tbody > tr:not(.data-grid-empty) > td:not(.data-grid-select-cell):not(.data-grid-cell-pinned-start):not(.data-grid-cell-pinned-end) {
|
|
298
381
|
overflow: hidden;
|
|
299
382
|
text-overflow: ellipsis;
|
|
300
383
|
white-space: nowrap;
|
|
@@ -303,36 +386,32 @@
|
|
|
303
386
|
overflow-x: auto;
|
|
304
387
|
}
|
|
305
388
|
.data-grid.data-grid-resizable .table, .data-grid.data-grid-pinned .table {
|
|
306
|
-
width: -webkit-max-content;
|
|
307
|
-
width: -moz-max-content;
|
|
308
389
|
width: max-content;
|
|
309
390
|
min-width: 100%;
|
|
310
391
|
}
|
|
311
|
-
.data-grid.data-grid-resizable .data-grid-header th:not(.data-grid-cell-pinned-
|
|
392
|
+
.data-grid.data-grid-resizable .data-grid-header th:not(.data-grid-cell-pinned-start):not(.data-grid-cell-pinned-end) {
|
|
312
393
|
position: relative;
|
|
313
394
|
}
|
|
314
395
|
.data-grid.data-grid-pinned .table {
|
|
315
396
|
border-collapse: separate;
|
|
316
397
|
border-spacing: 0;
|
|
317
398
|
}
|
|
318
|
-
.data-grid .data-grid-cell-pinned-
|
|
319
|
-
.data-grid .data-grid-cell-pinned-
|
|
320
|
-
position: -webkit-sticky;
|
|
399
|
+
.data-grid .data-grid-cell-pinned-start,
|
|
400
|
+
.data-grid .data-grid-cell-pinned-end {
|
|
321
401
|
position: sticky;
|
|
322
402
|
z-index: 1;
|
|
323
403
|
background-color: var(--cui-data-grid-pinned-bg);
|
|
324
404
|
}
|
|
325
|
-
.data-grid .data-grid-header .data-grid-cell-pinned-
|
|
326
|
-
.data-grid .data-grid-header .data-grid-cell-pinned-
|
|
405
|
+
.data-grid .data-grid-header .data-grid-cell-pinned-start,
|
|
406
|
+
.data-grid .data-grid-header .data-grid-cell-pinned-end {
|
|
327
407
|
z-index: 3;
|
|
328
408
|
}
|
|
329
|
-
.data-grid .data-grid-cell-pinned-
|
|
330
|
-
.data-grid .data-grid-cell-pinned-
|
|
331
|
-
position: -webkit-sticky;
|
|
409
|
+
.data-grid .data-grid-cell-pinned-start-last,
|
|
410
|
+
.data-grid .data-grid-cell-pinned-end-first {
|
|
332
411
|
position: sticky;
|
|
333
412
|
}
|
|
334
|
-
.data-grid .data-grid-cell-pinned-
|
|
335
|
-
.data-grid .data-grid-cell-pinned-
|
|
413
|
+
.data-grid .data-grid-cell-pinned-start-last::after,
|
|
414
|
+
.data-grid .data-grid-cell-pinned-end-first::after {
|
|
336
415
|
position: absolute;
|
|
337
416
|
top: 0;
|
|
338
417
|
bottom: 0;
|
|
@@ -340,18 +419,18 @@
|
|
|
340
419
|
pointer-events: none;
|
|
341
420
|
content: "";
|
|
342
421
|
}
|
|
343
|
-
.data-grid .data-grid-cell-pinned-
|
|
344
|
-
|
|
422
|
+
.data-grid .data-grid-cell-pinned-start-last::after {
|
|
423
|
+
inset-inline-end: 0;
|
|
345
424
|
background: var(--cui-data-grid-pinned-border-color);
|
|
346
425
|
}
|
|
347
|
-
.data-grid .data-grid-cell-pinned-
|
|
348
|
-
|
|
426
|
+
.data-grid .data-grid-cell-pinned-end-first::after {
|
|
427
|
+
inset-inline-start: 0;
|
|
349
428
|
background: var(--cui-data-grid-pinned-border-color);
|
|
350
429
|
}
|
|
351
430
|
.data-grid .data-grid-resizer {
|
|
352
431
|
position: absolute;
|
|
353
432
|
top: 0;
|
|
354
|
-
|
|
433
|
+
inset-inline-end: calc(-0.5 * var(--cui-data-grid-resizer-width));
|
|
355
434
|
z-index: 1;
|
|
356
435
|
display: flex;
|
|
357
436
|
align-items: center;
|
|
@@ -361,7 +440,6 @@
|
|
|
361
440
|
cursor: col-resize;
|
|
362
441
|
touch-action: none;
|
|
363
442
|
-webkit-user-select: none;
|
|
364
|
-
-moz-user-select: none;
|
|
365
443
|
user-select: none;
|
|
366
444
|
}
|
|
367
445
|
.data-grid .data-grid-resizer::after {
|
|
@@ -398,6 +476,16 @@
|
|
|
398
476
|
justify-content: center;
|
|
399
477
|
background-color: var(--cui-data-grid-loading-bg);
|
|
400
478
|
}
|
|
479
|
+
.data-grid .data-grid-loading-more {
|
|
480
|
+
position: sticky;
|
|
481
|
+
inset-inline: 0;
|
|
482
|
+
bottom: 0;
|
|
483
|
+
z-index: 3;
|
|
484
|
+
display: flex;
|
|
485
|
+
justify-content: center;
|
|
486
|
+
padding: var(--cui-data-grid-spacing);
|
|
487
|
+
background-color: var(--cui-data-grid-loading-bg);
|
|
488
|
+
}
|
|
401
489
|
.data-grid .data-grid-tooltip {
|
|
402
490
|
position: fixed;
|
|
403
491
|
z-index: 1080;
|
|
@@ -433,7 +521,6 @@
|
|
|
433
521
|
margin-bottom: 0;
|
|
434
522
|
}
|
|
435
523
|
.data-grid .data-grid-pagination .data-grid-pagination-info {
|
|
436
|
-
-webkit-margin-start: auto;
|
|
437
524
|
margin-inline-start: auto;
|
|
438
525
|
color: var(--cui-secondary-color, #6c757d);
|
|
439
526
|
}
|
|
@@ -441,4 +528,35 @@
|
|
|
441
528
|
width: auto;
|
|
442
529
|
}
|
|
443
530
|
|
|
531
|
+
@media print {
|
|
532
|
+
.data-grid-print-root {
|
|
533
|
+
position: absolute;
|
|
534
|
+
inset: 0 0 auto;
|
|
535
|
+
z-index: 2000;
|
|
536
|
+
background-color: #fff;
|
|
537
|
+
}
|
|
538
|
+
.data-grid-print-root h1 {
|
|
539
|
+
margin-bottom: 1rem;
|
|
540
|
+
font-size: 1.25rem;
|
|
541
|
+
}
|
|
542
|
+
.data-grid-print-root table {
|
|
543
|
+
width: 100%;
|
|
544
|
+
border-collapse: collapse;
|
|
545
|
+
}
|
|
546
|
+
.data-grid-print-root :is(th, td) {
|
|
547
|
+
padding: 0.25rem 0.5rem;
|
|
548
|
+
text-align: start;
|
|
549
|
+
border: 1px solid #000;
|
|
550
|
+
}
|
|
551
|
+
.data-grid-print-root thead {
|
|
552
|
+
display: table-header-group;
|
|
553
|
+
}
|
|
554
|
+
.data-grid-print-root tr {
|
|
555
|
+
break-inside: avoid;
|
|
556
|
+
}
|
|
557
|
+
body:has(.data-grid-print-root) > :not(.data-grid-print-root) {
|
|
558
|
+
display: none !important;
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
|
|
444
562
|
/*# sourceMappingURL=data-grid.css.map */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../scss/data-grid.scss","data-grid.css"],"names":[],"mappings":"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","file":"data-grid.css","sourcesContent":["/*!\n * CoreUI PRO data-grid.scss v0.1.0\n * License (https://coreui.io/pro/license/)\n */\n\n.data-grid {\n // The column menu is positioned against the grid root (it must escape the\n // viewport's overflow while staying inside the token scope).\n position: relative;\n\n // Component tokens. Everything resolves through CoreUI semantic variables,\n // so light/dark theming via [data-coreui-theme] works with no extra rules.\n --cui-data-grid-viewport-max-height: 30rem;\n --cui-data-grid-header-bg: var(--cui-body-bg, #fff);\n --cui-data-grid-header-shadow: inset 0 calc(-1 * var(--cui-border-width, 1px)) 0 var(--cui-border-color, #dee2e6);\n --cui-data-grid-select-cell-width: 2.5rem;\n --cui-data-grid-sorter-margin: .25rem;\n --cui-data-grid-sorter-opacity: .3;\n --cui-data-grid-spacing: .5rem;\n --cui-data-grid-resizer-width: .625rem;\n --cui-data-grid-resizer-grip-height: 60%;\n --cui-data-grid-resizer-grip-color: var(--cui-border-color, #dee2e6);\n --cui-data-grid-resizer-grip-color-hover: var(--cui-secondary-color, #6c757d);\n --cui-data-grid-pinned-border-width: var(--cui-border-width);\n --cui-data-grid-pinned-border-color: var(--cui-border-color, #dee2e6);\n --cui-data-grid-drop-indicator: var(--cui-primary, #321fdb);\n --cui-data-grid-menu-bg: var(--cui-body-bg, #fff);\n --cui-data-grid-menu-border-color: var(--cui-border-color, #dee2e6);\n --cui-data-grid-menu-shadow: var(--cui-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));\n --cui-data-grid-menu-min-width: 10rem;\n --cui-data-grid-menu-item-hover-bg: var(--cui-tertiary-bg, #f8f9fa);\n --cui-data-grid-loading-bg: rgba(var(--cui-body-bg-rgb, 255, 255, 255), .6);\n --cui-data-grid-pinned-bg: var(--cui-body-bg, #fff);\n --cui-data-grid-focus-ring-width: 2px;\n --cui-data-grid-focus-ring-color: var(--cui-primary, #321fdb);\n\n .data-grid-toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--cui-data-grid-spacing);\n align-items: center;\n min-height: 48px;\n padding: var(--cui-data-grid-spacing);\n border-bottom: var(--cui-border-width, 1px) solid var(--cui-border-color, #dee2e6);\n }\n\n .data-grid-toolbar-actions {\n display: flex;\n gap: .25rem;\n align-items: center;\n }\n\n .data-grid-toolbar-search {\n margin-inline-start: auto;\n }\n\n .data-grid-viewport {\n position: relative;\n max-height: var(--cui-data-grid-viewport-max-height);\n overflow-y: auto;\n // Windowed rendering resizes the spacer rows and recycles row elements on\n // every frame; browser scroll anchoring chases those mutations and keeps\n // adjusting scrollTop, which turns wheel scrolling into a feedback loop.\n overflow-anchor: none;\n }\n\n // Inline editing: the in-cell editor fills the cell; the popup layer hosts\n // rich editors (date pickers, selects) anchored over the cell.\n .data-grid-cell-editor {\n width: 100%;\n min-width: 4rem;\n }\n\n .data-grid-editor-popup {\n position: absolute;\n z-index: 4;\n padding: .25rem;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, .375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n }\n\n // cellNavigation: the roving-tabindex active cell. The ring is inset so the\n // sticky header and pinned columns don't clip it.\n [role=\"grid\"] :is(td, th):focus-visible {\n outline: var(--cui-data-grid-focus-ring-width) solid var(--cui-data-grid-focus-ring-color);\n outline-offset: calc(-1 * var(--cui-data-grid-focus-ring-width));\n }\n\n .data-grid-viewport:focus-visible {\n outline: 0;\n }\n\n .data-grid-header {\n position: sticky;\n top: 0;\n z-index: 2;\n background-color: var(--cui-data-grid-header-bg);\n box-shadow: var(--cui-data-grid-header-shadow);\n }\n\n // Header label row: fixed 48px with vertically centered content (height on a\n // table cell acts as a min; min-height is ignored on table-cell).\n .data-grid-header tr:not(.data-grid-filter-row) > th {\n height: 48px;\n vertical-align: middle;\n }\n\n .data-grid-filter-row > th {\n padding-top: 0;\n font-weight: normal;\n }\n\n .data-grid-header th[data-coreui-draggable] {\n cursor: grab;\n }\n\n .data-grid-header-cell {\n display: flex;\n align-items: center;\n gap: .25rem;\n }\n\n .data-grid-header-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n // Icon-only ghost buttons: square them by matching horizontal padding to\n // vertical (follows .btn / .btn-sm automatically) and collapsing the text\n // line-height so height follows the icon, not a 1.5em text line.\n .btn-ghost {\n --cui-btn-padding-x: var(--cui-btn-padding-y);\n --cui-btn-line-height: 1;\n }\n\n .data-grid-menu-button {\n margin-inline-start: auto;\n }\n\n .data-grid-menu {\n position: absolute;\n z-index: 4;\n min-width: var(--cui-data-grid-menu-min-width);\n padding: .25rem 0;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, .375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n }\n\n .data-grid-menu-item {\n display: flex;\n align-items: center;\n gap: .5rem;\n width: 100%;\n padding: .25rem .75rem;\n font: inherit;\n color: inherit;\n text-align: start;\n cursor: pointer;\n background: none;\n border: 0;\n\n &:hover,\n &:focus-visible {\n background-color: var(--cui-data-grid-menu-item-hover-bg);\n }\n\n // Disabled items stay focusable (aria-disabled, APG menu pattern) so the\n // roving arrow cycle can reach them.\n &[aria-disabled=\"true\"] {\n color: var(--cui-secondary-color, #6c757d);\n cursor: default;\n background: none;\n }\n }\n\n .data-grid-filter-menu {\n position: absolute;\n z-index: 4;\n display: flex;\n flex-direction: column;\n gap: .5rem;\n min-width: var(--cui-data-grid-menu-min-width);\n max-width: 18rem;\n padding: .75rem;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, .375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n\n > div {\n display: flex;\n flex-direction: column;\n gap: .5rem;\n }\n }\n\n .data-grid-filter-menu-condition {\n display: flex;\n flex-direction: column;\n gap: .25rem;\n }\n\n .data-grid-filter-menu-join {\n display: flex;\n gap: 1rem;\n\n label {\n display: flex;\n gap: .375rem;\n align-items: center;\n }\n }\n\n .data-grid-filter-menu-values {\n display: flex;\n flex-direction: column;\n gap: .25rem;\n max-height: 14rem;\n overflow-y: auto;\n }\n\n .data-grid-filter-menu-footer {\n display: flex;\n gap: .5rem;\n justify-content: flex-end;\n }\n\n .data-grid-column-chooser {\n position: absolute;\n z-index: 4;\n display: flex;\n flex-direction: column;\n gap: .5rem;\n min-width: var(--cui-data-grid-menu-min-width);\n max-width: 18rem;\n max-height: 20rem;\n padding: .75rem;\n overflow-y: auto;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, .375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n }\n\n .data-grid-column-chooser-option {\n display: flex;\n gap: .375rem;\n align-items: center;\n margin-bottom: 0;\n }\n\n .data-grid-column-chooser-footer {\n display: flex;\n gap: .5rem;\n justify-content: flex-end;\n padding-top: .25rem;\n margin-top: .25rem;\n border-top: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n }\n\n .data-grid-filter-button {\n position: relative;\n // Right-align the trailing controls as a group: the filter button takes the\n // auto margin (menu drops its own below) so filter and menu sit together at\n // the end, matching a menu-only header.\n margin-inline-start: auto;\n\n ~ .data-grid-menu-button {\n margin-inline-start: 0;\n }\n }\n\n // Active-filter indicator dot on the filter button.\n .data-grid-filter-button-filtered::after {\n position: absolute;\n inset-block-start: .125rem;\n inset-inline-end: .125rem;\n width: .375rem;\n height: .375rem;\n content: \"\";\n background-color: var(--cui-primary, #321fdb);\n border-radius: 50%;\n }\n\n .data-grid-menu-item-icon {\n display: inline-flex;\n opacity: .75;\n\n svg {\n width: 1em;\n height: 1em;\n }\n }\n\n .data-grid-menu-divider {\n height: var(--cui-border-width, 1px);\n margin: .25rem 0;\n background-color: var(--cui-data-grid-menu-border-color);\n }\n\n .data-grid-header .data-grid-dragging {\n opacity: .5;\n }\n\n .data-grid-header .data-grid-drop-target {\n box-shadow: inset .125rem 0 0 var(--cui-data-grid-drop-indicator);\n }\n\n .data-grid-select-cell {\n width: var(--cui-data-grid-select-cell-width);\n text-align: center;\n }\n\n .data-grid-sort-button {\n display: inline-flex;\n align-items: center;\n gap: var(--cui-data-grid-sorter-margin);\n padding: 0;\n font: inherit;\n color: inherit;\n cursor: pointer;\n user-select: none;\n background: none;\n border: 0;\n }\n\n .data-grid-sort-icon {\n display: inline-flex;\n font-size: .875em;\n opacity: 0;\n\n svg {\n width: 1em;\n height: 1em;\n }\n }\n\n // The active sort direction is always visible; the neutral (unsorted) icon is\n // hidden unless `sorterVisibility` opts it in (steadily via \"always\", or on\n // header hover/focus via \"hover\").\n .data-grid-sortable[aria-sort] .data-grid-sort-icon {\n opacity: 1;\n }\n\n &[data-coreui-sorter-visibility=\"always\"] .data-grid-sortable:not([aria-sort]) .data-grid-sort-icon {\n opacity: var(--cui-data-grid-sorter-opacity);\n }\n\n &[data-coreui-sorter-visibility=\"hover\"] .data-grid-sortable:not([aria-sort]):hover .data-grid-sort-icon,\n &[data-coreui-sorter-visibility=\"hover\"] .data-grid-sortable:not([aria-sort]):focus-within .data-grid-sort-icon {\n opacity: var(--cui-data-grid-sorter-opacity);\n }\n\n .data-grid-viewport > .table {\n margin-bottom: 0;\n table-layout: fixed;\n }\n\n // Body cells render on a single line and truncate with an ellipsis instead of\n // spilling their content across the fixed-layout column boundary onto the next\n // column. Matches the default of AG Grid / MUI X Data Grid and TanStack's\n // virtualized-table guidance, and keeps every row a uniform height for the\n // fixed-height virtualizer (wrapping would desync `estimateSize`). Pinned cells\n // are excluded so their shadow pseudo-element (painted outside the box via a\n // translate) isn't clipped; the select cell holds only a checkbox.\n .data-grid-viewport > .table > tbody > tr:not(.data-grid-empty) > td:not(.data-grid-select-cell):not(.data-grid-cell-pinned-left):not(.data-grid-cell-pinned-right) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n // Widths applied to each header cell drive the column layout; letting the\n // table grow to its content (min-width keeps it filling a wide viewport)\n // turns a resize or a pin into horizontal scroll rather than squeezing\n // neighbours. Both features share this layout mode.\n &.data-grid-resizable,\n &.data-grid-pinned {\n .data-grid-viewport {\n overflow-x: auto;\n }\n\n .table {\n width: max-content;\n min-width: 100%;\n }\n }\n\n // A pinned th is already sticky (a positioned containing block for the\n // resizer), so only non-pinned header cells need explicit relative here.\n &.data-grid-resizable .data-grid-header th:not(.data-grid-cell-pinned-left):not(.data-grid-cell-pinned-right) {\n position: relative;\n }\n\n &.data-grid-pinned .table {\n // position: sticky is unreliable on collapsed-border tables; the grid opts\n // into separate borders so pinned cells stay put on horizontal scroll.\n border-collapse: separate;\n border-spacing: 0;\n }\n\n .data-grid-cell-pinned-left,\n .data-grid-cell-pinned-right {\n position: sticky;\n z-index: 1;\n background-color: var(--cui-data-grid-pinned-bg);\n }\n\n .data-grid-header .data-grid-cell-pinned-left,\n .data-grid-header .data-grid-cell-pinned-right {\n z-index: 3;\n }\n\n // Edge cells cast a shadow over the scrolling content. A pseudo-element is\n // used because the cell's own box-shadow carries the table striping accent.\n .data-grid-cell-pinned-left-last,\n .data-grid-cell-pinned-right-first {\n position: sticky;\n\n &::after {\n position: absolute;\n top: 0;\n bottom: 0;\n width: var(--cui-data-grid-pinned-border-width);\n pointer-events: none;\n content: \"\";\n }\n }\n\n .data-grid-cell-pinned-left-last::after {\n right: 0;\n background: var(--cui-data-grid-pinned-border-color);\n }\n\n .data-grid-cell-pinned-right-first::after {\n left: 0;\n background: var(--cui-data-grid-pinned-border-color);\n }\n\n .data-grid-resizer {\n position: absolute;\n top: 0;\n right: calc(-.5 * var(--cui-data-grid-resizer-width));\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cui-data-grid-resizer-width);\n height: 100%;\n cursor: col-resize;\n touch-action: none;\n user-select: none;\n\n // Always-visible grip so the resizable edge is discoverable, not just a\n // bare hover target.\n &::after {\n width: 2px;\n height: var(--cui-data-grid-resizer-grip-height);\n content: \"\";\n background-color: var(--cui-data-grid-resizer-grip-color);\n transition: background-color .15s ease;\n }\n\n &:hover::after,\n &.data-grid-resizer-active::after {\n background-color: var(--cui-data-grid-resizer-grip-color-hover);\n }\n }\n\n .data-grid-spacer > td {\n padding: 0;\n border: 0;\n }\n\n // Spacer rows break `nth-of-type` striping, so striping inside the grid is\n // driven by the absolute row index (.data-grid-row-odd) instead.\n .data-grid-viewport > .table-striped > tbody > tr:nth-of-type(odd) > * {\n --cui-table-color-type: initial;\n --cui-table-bg-type: initial;\n }\n\n .data-grid-viewport > .table-striped > tbody > tr.data-grid-row-odd > * {\n --cui-table-color-type: var(--cui-table-striped-color);\n --cui-table-bg-type: var(--cui-table-striped-bg);\n }\n\n // The last row closes on the viewport edge (or the pagination border), so it\n // doesn't need its own separator line.\n .data-grid-viewport > .table > tbody > tr:last-child > * {\n border-bottom-width: 0;\n }\n\n .data-grid-loading {\n position: absolute;\n inset: 0;\n z-index: 3;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--cui-data-grid-loading-bg);\n }\n\n // Shared icon-button tooltip. position: fixed (set in JS) so it escapes the\n // viewport overflow; theme-inverted like CoreUI's own tooltip.\n .data-grid-tooltip {\n position: fixed;\n z-index: 1080;\n max-width: 12rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n line-height: 1.4;\n color: var(--cui-body-bg, #fff);\n text-align: center;\n pointer-events: none;\n background-color: var(--cui-emphasis-color, #000);\n border-radius: var(--cui-border-radius, .375rem);\n }\n\n .data-grid-empty > td {\n padding: 2rem 1rem;\n color: var(--cui-secondary-color, #6c757d);\n text-align: center;\n }\n\n .data-grid-pagination {\n display: flex;\n // Wrap the page controls, count and page-size select onto multiple rows on\n // narrow viewports; without this the fixed row overflows and scrolls the page\n // instead of staying inside the grid.\n flex-wrap: wrap;\n gap: var(--cui-data-grid-spacing);\n align-items: center;\n min-height: 48px;\n padding: var(--cui-data-grid-spacing);\n border-top: var(--cui-border-width, 1px) solid var(--cui-border-color, #dee2e6);\n\n &.data-grid-pagination-top {\n border-top: 0;\n border-bottom: var(--cui-border-width, 1px) solid var(--cui-border-color, #dee2e6);\n }\n\n .pagination {\n margin-bottom: 0;\n }\n\n .data-grid-pagination-info {\n margin-inline-start: auto;\n color: var(--cui-secondary-color, #6c757d);\n }\n\n .form-select {\n width: auto;\n }\n }\n}\n","/*!\n * CoreUI PRO data-grid.scss v0.1.0\n * License (https://coreui.io/pro/license/)\n */\n.data-grid {\n position: relative;\n --cui-data-grid-viewport-max-height: 30rem;\n --cui-data-grid-header-bg: var(--cui-body-bg, #fff);\n --cui-data-grid-header-shadow: inset 0 calc(-1 * var(--cui-border-width, 1px)) 0 var(--cui-border-color, #dee2e6);\n --cui-data-grid-select-cell-width: 2.5rem;\n --cui-data-grid-sorter-margin: .25rem;\n --cui-data-grid-sorter-opacity: .3;\n --cui-data-grid-spacing: .5rem;\n --cui-data-grid-resizer-width: .625rem;\n --cui-data-grid-resizer-grip-height: 60%;\n --cui-data-grid-resizer-grip-color: var(--cui-border-color, #dee2e6);\n --cui-data-grid-resizer-grip-color-hover: var(--cui-secondary-color, #6c757d);\n --cui-data-grid-pinned-border-width: var(--cui-border-width);\n --cui-data-grid-pinned-border-color: var(--cui-border-color, #dee2e6);\n --cui-data-grid-drop-indicator: var(--cui-primary, #321fdb);\n --cui-data-grid-menu-bg: var(--cui-body-bg, #fff);\n --cui-data-grid-menu-border-color: var(--cui-border-color, #dee2e6);\n --cui-data-grid-menu-shadow: var(--cui-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));\n --cui-data-grid-menu-min-width: 10rem;\n --cui-data-grid-menu-item-hover-bg: var(--cui-tertiary-bg, #f8f9fa);\n --cui-data-grid-loading-bg: rgba(var(--cui-body-bg-rgb, 255, 255, 255), .6);\n --cui-data-grid-pinned-bg: var(--cui-body-bg, #fff);\n --cui-data-grid-focus-ring-width: 2px;\n --cui-data-grid-focus-ring-color: var(--cui-primary, #321fdb);\n}\n.data-grid .data-grid-toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--cui-data-grid-spacing);\n align-items: center;\n min-height: 48px;\n padding: var(--cui-data-grid-spacing);\n border-bottom: var(--cui-border-width, 1px) solid var(--cui-border-color, #dee2e6);\n}\n.data-grid .data-grid-toolbar-actions {\n display: flex;\n gap: 0.25rem;\n align-items: center;\n}\n.data-grid .data-grid-toolbar-search {\n margin-inline-start: auto;\n}\n.data-grid .data-grid-viewport {\n position: relative;\n max-height: var(--cui-data-grid-viewport-max-height);\n overflow-y: auto;\n overflow-anchor: none;\n}\n.data-grid .data-grid-cell-editor {\n width: 100%;\n min-width: 4rem;\n}\n.data-grid .data-grid-editor-popup {\n position: absolute;\n z-index: 4;\n padding: 0.25rem;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, 0.375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n}\n.data-grid [role=grid] :is(td, th):focus-visible {\n outline: var(--cui-data-grid-focus-ring-width) solid var(--cui-data-grid-focus-ring-color);\n outline-offset: calc(-1 * var(--cui-data-grid-focus-ring-width));\n}\n.data-grid .data-grid-viewport:focus-visible {\n outline: 0;\n}\n.data-grid .data-grid-header {\n position: sticky;\n top: 0;\n z-index: 2;\n background-color: var(--cui-data-grid-header-bg);\n box-shadow: var(--cui-data-grid-header-shadow);\n}\n.data-grid .data-grid-header tr:not(.data-grid-filter-row) > th {\n height: 48px;\n vertical-align: middle;\n}\n.data-grid .data-grid-filter-row > th {\n padding-top: 0;\n font-weight: normal;\n}\n.data-grid .data-grid-header th[data-coreui-draggable] {\n cursor: grab;\n}\n.data-grid .data-grid-header-cell {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n.data-grid .data-grid-header-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.data-grid .btn-ghost {\n --cui-btn-padding-x: var(--cui-btn-padding-y);\n --cui-btn-line-height: 1;\n}\n.data-grid .data-grid-menu-button {\n margin-inline-start: auto;\n}\n.data-grid .data-grid-menu {\n position: absolute;\n z-index: 4;\n min-width: var(--cui-data-grid-menu-min-width);\n padding: 0.25rem 0;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, 0.375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n}\n.data-grid .data-grid-menu-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.25rem 0.75rem;\n font: inherit;\n color: inherit;\n text-align: start;\n cursor: pointer;\n background: none;\n border: 0;\n}\n.data-grid .data-grid-menu-item:hover, .data-grid .data-grid-menu-item:focus-visible {\n background-color: var(--cui-data-grid-menu-item-hover-bg);\n}\n.data-grid .data-grid-menu-item[aria-disabled=true] {\n color: var(--cui-secondary-color, #6c757d);\n cursor: default;\n background: none;\n}\n.data-grid .data-grid-filter-menu {\n position: absolute;\n z-index: 4;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n min-width: var(--cui-data-grid-menu-min-width);\n max-width: 18rem;\n padding: 0.75rem;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, 0.375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n}\n.data-grid .data-grid-filter-menu > div {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n.data-grid .data-grid-filter-menu-condition {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n.data-grid .data-grid-filter-menu-join {\n display: flex;\n gap: 1rem;\n}\n.data-grid .data-grid-filter-menu-join label {\n display: flex;\n gap: 0.375rem;\n align-items: center;\n}\n.data-grid .data-grid-filter-menu-values {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n max-height: 14rem;\n overflow-y: auto;\n}\n.data-grid .data-grid-filter-menu-footer {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n.data-grid .data-grid-column-chooser {\n position: absolute;\n z-index: 4;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n min-width: var(--cui-data-grid-menu-min-width);\n max-width: 18rem;\n max-height: 20rem;\n padding: 0.75rem;\n overflow-y: auto;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, 0.375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n}\n.data-grid .data-grid-column-chooser-option {\n display: flex;\n gap: 0.375rem;\n align-items: center;\n margin-bottom: 0;\n}\n.data-grid .data-grid-column-chooser-footer {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n padding-top: 0.25rem;\n margin-top: 0.25rem;\n border-top: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n}\n.data-grid .data-grid-filter-button {\n position: relative;\n margin-inline-start: auto;\n}\n.data-grid .data-grid-filter-button ~ .data-grid-menu-button {\n margin-inline-start: 0;\n}\n.data-grid .data-grid-filter-button-filtered::after {\n position: absolute;\n inset-block-start: 0.125rem;\n inset-inline-end: 0.125rem;\n width: 0.375rem;\n height: 0.375rem;\n content: \"\";\n background-color: var(--cui-primary, #321fdb);\n border-radius: 50%;\n}\n.data-grid .data-grid-menu-item-icon {\n display: inline-flex;\n opacity: 0.75;\n}\n.data-grid .data-grid-menu-item-icon svg {\n width: 1em;\n height: 1em;\n}\n.data-grid .data-grid-menu-divider {\n height: var(--cui-border-width, 1px);\n margin: 0.25rem 0;\n background-color: var(--cui-data-grid-menu-border-color);\n}\n.data-grid .data-grid-header .data-grid-dragging {\n opacity: 0.5;\n}\n.data-grid .data-grid-header .data-grid-drop-target {\n box-shadow: inset 0.125rem 0 0 var(--cui-data-grid-drop-indicator);\n}\n.data-grid .data-grid-select-cell {\n width: var(--cui-data-grid-select-cell-width);\n text-align: center;\n}\n.data-grid .data-grid-sort-button {\n display: inline-flex;\n align-items: center;\n gap: var(--cui-data-grid-sorter-margin);\n padding: 0;\n font: inherit;\n color: inherit;\n cursor: pointer;\n user-select: none;\n background: none;\n border: 0;\n}\n.data-grid .data-grid-sort-icon {\n display: inline-flex;\n font-size: 0.875em;\n opacity: 0;\n}\n.data-grid .data-grid-sort-icon svg {\n width: 1em;\n height: 1em;\n}\n.data-grid .data-grid-sortable[aria-sort] .data-grid-sort-icon {\n opacity: 1;\n}\n.data-grid[data-coreui-sorter-visibility=always] .data-grid-sortable:not([aria-sort]) .data-grid-sort-icon {\n opacity: var(--cui-data-grid-sorter-opacity);\n}\n.data-grid[data-coreui-sorter-visibility=hover] .data-grid-sortable:not([aria-sort]):hover .data-grid-sort-icon, .data-grid[data-coreui-sorter-visibility=hover] .data-grid-sortable:not([aria-sort]):focus-within .data-grid-sort-icon {\n opacity: var(--cui-data-grid-sorter-opacity);\n}\n.data-grid .data-grid-viewport > .table {\n margin-bottom: 0;\n table-layout: fixed;\n}\n.data-grid .data-grid-viewport > .table > tbody > tr:not(.data-grid-empty) > td:not(.data-grid-select-cell):not(.data-grid-cell-pinned-left):not(.data-grid-cell-pinned-right) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.data-grid.data-grid-resizable .data-grid-viewport, .data-grid.data-grid-pinned .data-grid-viewport {\n overflow-x: auto;\n}\n.data-grid.data-grid-resizable .table, .data-grid.data-grid-pinned .table {\n width: max-content;\n min-width: 100%;\n}\n.data-grid.data-grid-resizable .data-grid-header th:not(.data-grid-cell-pinned-left):not(.data-grid-cell-pinned-right) {\n position: relative;\n}\n.data-grid.data-grid-pinned .table {\n border-collapse: separate;\n border-spacing: 0;\n}\n.data-grid .data-grid-cell-pinned-left,\n.data-grid .data-grid-cell-pinned-right {\n position: sticky;\n z-index: 1;\n background-color: var(--cui-data-grid-pinned-bg);\n}\n.data-grid .data-grid-header .data-grid-cell-pinned-left,\n.data-grid .data-grid-header .data-grid-cell-pinned-right {\n z-index: 3;\n}\n.data-grid .data-grid-cell-pinned-left-last,\n.data-grid .data-grid-cell-pinned-right-first {\n position: sticky;\n}\n.data-grid .data-grid-cell-pinned-left-last::after,\n.data-grid .data-grid-cell-pinned-right-first::after {\n position: absolute;\n top: 0;\n bottom: 0;\n width: var(--cui-data-grid-pinned-border-width);\n pointer-events: none;\n content: \"\";\n}\n.data-grid .data-grid-cell-pinned-left-last::after {\n right: 0;\n background: var(--cui-data-grid-pinned-border-color);\n}\n.data-grid .data-grid-cell-pinned-right-first::after {\n left: 0;\n background: var(--cui-data-grid-pinned-border-color);\n}\n.data-grid .data-grid-resizer {\n position: absolute;\n top: 0;\n right: calc(-0.5 * var(--cui-data-grid-resizer-width));\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cui-data-grid-resizer-width);\n height: 100%;\n cursor: col-resize;\n touch-action: none;\n user-select: none;\n}\n.data-grid .data-grid-resizer::after {\n width: 2px;\n height: var(--cui-data-grid-resizer-grip-height);\n content: \"\";\n background-color: var(--cui-data-grid-resizer-grip-color);\n transition: background-color 0.15s ease;\n}\n.data-grid .data-grid-resizer:hover::after, .data-grid .data-grid-resizer.data-grid-resizer-active::after {\n background-color: var(--cui-data-grid-resizer-grip-color-hover);\n}\n.data-grid .data-grid-spacer > td {\n padding: 0;\n border: 0;\n}\n.data-grid .data-grid-viewport > .table-striped > tbody > tr:nth-of-type(odd) > * {\n --cui-table-color-type: initial;\n --cui-table-bg-type: initial;\n}\n.data-grid .data-grid-viewport > .table-striped > tbody > tr.data-grid-row-odd > * {\n --cui-table-color-type: var(--cui-table-striped-color);\n --cui-table-bg-type: var(--cui-table-striped-bg);\n}\n.data-grid .data-grid-viewport > .table > tbody > tr:last-child > * {\n border-bottom-width: 0;\n}\n.data-grid .data-grid-loading {\n position: absolute;\n inset: 0;\n z-index: 3;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--cui-data-grid-loading-bg);\n}\n.data-grid .data-grid-tooltip {\n position: fixed;\n z-index: 1080;\n max-width: 12rem;\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.4;\n color: var(--cui-body-bg, #fff);\n text-align: center;\n pointer-events: none;\n background-color: var(--cui-emphasis-color, #000);\n border-radius: var(--cui-border-radius, 0.375rem);\n}\n.data-grid .data-grid-empty > td {\n padding: 2rem 1rem;\n color: var(--cui-secondary-color, #6c757d);\n text-align: center;\n}\n.data-grid .data-grid-pagination {\n display: flex;\n flex-wrap: wrap;\n gap: var(--cui-data-grid-spacing);\n align-items: center;\n min-height: 48px;\n padding: var(--cui-data-grid-spacing);\n border-top: var(--cui-border-width, 1px) solid var(--cui-border-color, #dee2e6);\n}\n.data-grid .data-grid-pagination.data-grid-pagination-top {\n border-top: 0;\n border-bottom: var(--cui-border-width, 1px) solid var(--cui-border-color, #dee2e6);\n}\n.data-grid .data-grid-pagination .pagination {\n margin-bottom: 0;\n}\n.data-grid .data-grid-pagination .data-grid-pagination-info {\n margin-inline-start: auto;\n color: var(--cui-secondary-color, #6c757d);\n}\n.data-grid .data-grid-pagination .form-select {\n width: auto;\n}\n\n/*# sourceMappingURL=data-grid.css.map */\n"]}
|
|
1
|
+
{"version":3,"sources":["../../scss/data-grid.scss","../../scss/components/_data-grid.scss","../../scss/mixins/_tokens.scss","data-grid.css"],"names":[],"mappings":"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","file":"data-grid.css","sourcesContent":["/*!\n * CoreUI PRO data-grid.scss v0.3.0\n * License (https://coreui.io/pro/license/)\n */\n\n// scss-docs-start import-stack\n@forward \"config\";\n@forward \"functions\";\n@forward \"mixins\";\n@forward \"components/data-grid\";\n// scss-docs-end import-stack\n","@use \"../functions/defaults\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../config\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n\n// Everything resolves through CoreUI semantic variables, so light/dark theming\n// via [data-coreui-theme] works with no extra rules. The fallbacks keep the grid\n// legible when the CoreUI stylesheet is absent; `data-grid.standalone.css` fills\n// the rest in.\n\n// scss-docs-start data-grid-variables\n$data-grid-viewport-max-height: 30rem !default;\n$data-grid-header-bg: var(--#{$prefix}body-bg, #fff) !default;\n$data-grid-header-shadow: inset 0 calc(-1 * var(--#{$prefix}border-width, 1px)) 0 var(--#{$prefix}border-color, #dee2e6) !default;\n$data-grid-cell-selected-bg: rgba(var(--#{$prefix}primary-rgb, 50, 31, 219), .12) !default;\n$data-grid-cell-selected-border-color: var(--#{$prefix}primary, #321fdb) !default;\n$data-grid-cell-selected-border-width: 1px !default;\n$data-grid-row-handle-width: 2rem !default;\n$data-grid-select-cell-width: 2.5rem !default;\n$data-grid-sorter-margin: .25rem !default;\n$data-grid-sorter-opacity: .3 !default;\n$data-grid-spacing: .5rem !default;\n$data-grid-resizer-width: .625rem !default;\n$data-grid-resizer-grip-height: 60% !default;\n$data-grid-resizer-grip-color: var(--#{$prefix}border-color, #dee2e6) !default;\n$data-grid-resizer-grip-color-hover: var(--#{$prefix}secondary-color, #6c757d) !default;\n$data-grid-pinned-border-width: var(--#{$prefix}border-width) !default;\n$data-grid-pinned-border-color: var(--#{$prefix}border-color, #dee2e6) !default;\n$data-grid-drop-indicator: var(--#{$prefix}primary, #321fdb) !default;\n$data-grid-drag-transition: .15s ease !default;\n$data-grid-menu-bg: var(--#{$prefix}body-bg, #fff) !default;\n$data-grid-menu-border-color: var(--#{$prefix}border-color, #dee2e6) !default;\n$data-grid-menu-shadow: var(--#{$prefix}box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)) !default;\n$data-grid-menu-min-width: 10rem !default;\n$data-grid-menu-item-hover-bg: var(--#{$prefix}tertiary-bg, #f8f9fa) !default;\n$data-grid-loading-bg: rgba(var(--#{$prefix}body-bg-rgb, 255, 255, 255), .6) !default;\n$data-grid-pinned-bg: var(--#{$prefix}body-bg, #fff) !default;\n$data-grid-focus-ring-width: 2px !default;\n$data-grid-focus-ring-color: var(--#{$prefix}primary, #321fdb) !default;\n// scss-docs-end data-grid-variables\n\n// Values that shape the grid but have no runtime knob. Sass-only on purpose:\n// a token here would be a new public custom property, which is a separate call.\n// scss-docs-start data-grid-layout-variables\n$data-grid-bar-min-height: 48px !default;\n$data-grid-border-width: var(--#{$prefix}border-width, 1px) !default;\n$data-grid-border-color: var(--#{$prefix}border-color, #dee2e6) !default;\n$data-grid-border-radius: var(--#{$prefix}border-radius, .375rem) !default;\n$data-grid-muted-color: var(--#{$prefix}secondary-color, #6c757d) !default;\n$data-grid-popup-max-width: 18rem !default;\n$data-grid-gap-sm: .25rem !default;\n$data-grid-tooltip-z-index: 1080 !default;\n// scss-docs-end data-grid-layout-variables\n\n$data-grid-tokens: () !default;\n\n// scss-docs-start data-grid-css-vars\n// stylelint-disable-next-line scss/dollar-variable-default\n$data-grid-tokens: defaults(\n (\n --#{$prefix}data-grid-viewport-max-height: #{$data-grid-viewport-max-height},\n --#{$prefix}data-grid-header-bg: #{$data-grid-header-bg},\n --#{$prefix}data-grid-header-shadow: #{$data-grid-header-shadow},\n --#{$prefix}data-grid-cell-selected-bg: #{$data-grid-cell-selected-bg},\n --#{$prefix}data-grid-cell-selected-border-color: #{$data-grid-cell-selected-border-color},\n --#{$prefix}data-grid-cell-selected-border-width: #{$data-grid-cell-selected-border-width},\n --#{$prefix}data-grid-row-handle-width: #{$data-grid-row-handle-width},\n --#{$prefix}data-grid-select-cell-width: #{$data-grid-select-cell-width},\n --#{$prefix}data-grid-sorter-margin: #{$data-grid-sorter-margin},\n --#{$prefix}data-grid-sorter-opacity: #{$data-grid-sorter-opacity},\n --#{$prefix}data-grid-spacing: #{$data-grid-spacing},\n --#{$prefix}data-grid-resizer-width: #{$data-grid-resizer-width},\n --#{$prefix}data-grid-resizer-grip-height: #{$data-grid-resizer-grip-height},\n --#{$prefix}data-grid-resizer-grip-color: #{$data-grid-resizer-grip-color},\n --#{$prefix}data-grid-resizer-grip-color-hover: #{$data-grid-resizer-grip-color-hover},\n --#{$prefix}data-grid-pinned-border-width: #{$data-grid-pinned-border-width},\n --#{$prefix}data-grid-pinned-border-color: #{$data-grid-pinned-border-color},\n --#{$prefix}data-grid-drop-indicator: #{$data-grid-drop-indicator},\n --#{$prefix}data-grid-drag-transition: #{$data-grid-drag-transition},\n --#{$prefix}data-grid-menu-bg: #{$data-grid-menu-bg},\n --#{$prefix}data-grid-menu-border-color: #{$data-grid-menu-border-color},\n --#{$prefix}data-grid-menu-shadow: #{$data-grid-menu-shadow},\n --#{$prefix}data-grid-menu-min-width: #{$data-grid-menu-min-width},\n --#{$prefix}data-grid-menu-item-hover-bg: #{$data-grid-menu-item-hover-bg},\n --#{$prefix}data-grid-loading-bg: #{$data-grid-loading-bg},\n --#{$prefix}data-grid-pinned-bg: #{$data-grid-pinned-bg},\n --#{$prefix}data-grid-focus-ring-width: #{$data-grid-focus-ring-width},\n --#{$prefix}data-grid-focus-ring-color: #{$data-grid-focus-ring-color},\n ),\n $data-grid-tokens\n);\n// scss-docs-end data-grid-css-vars\n\n.data-grid {\n // The column menu is positioned against the grid root (it must escape the\n // viewport's overflow while staying inside the token scope).\n position: relative;\n // A column so that a root given an explicit height actually constrains the\n // scroller: the viewport takes what the toolbar and pagination leave, and\n // min-height: 0 lets it shrink below its content instead of overflowing the\n // root. With no height set, this changes nothing — the viewport is sized by\n // its content up to the max-height token.\n display: flex;\n flex-direction: column;\n\n @include tokens($data-grid-tokens);\n\n .data-grid-toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--#{$prefix}data-grid-spacing);\n align-items: center;\n min-height: $data-grid-bar-min-height;\n padding: var(--#{$prefix}data-grid-spacing);\n border-bottom: $data-grid-border-width solid $data-grid-border-color;\n }\n\n .data-grid-toolbar-actions {\n display: flex;\n gap: $data-grid-gap-sm;\n align-items: center;\n }\n\n .data-grid-toolbar-search {\n margin-inline-start: auto;\n }\n\n .data-grid-viewport {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n max-height: var(--#{$prefix}data-grid-viewport-max-height);\n overflow-y: auto;\n // Windowed rendering resizes the spacer rows and recycles row elements on\n // every frame; browser scroll anchoring chases those mutations and keeps\n // adjusting scrollTop, which turns wheel scrolling into a feedback loop.\n overflow-anchor: none;\n }\n\n // Inline editing: the in-cell editor fills the cell; the popup layer hosts\n // rich editors (date pickers, selects) anchored over the cell.\n .data-grid-cell-editor {\n width: 100%;\n min-width: 4rem;\n }\n\n .data-grid-editor-popup {\n position: absolute;\n z-index: 4;\n padding: $data-grid-gap-sm;\n background-color: var(--#{$prefix}data-grid-menu-bg);\n border: $data-grid-border-width solid var(--#{$prefix}data-grid-menu-border-color);\n border-radius: $data-grid-border-radius;\n box-shadow: var(--#{$prefix}data-grid-menu-shadow);\n }\n\n // cellNavigation: the roving-tabindex active cell. The ring is inset so the\n // sticky header and pinned columns don't clip it.\n [role=\"grid\"] :is(td, th):focus-visible {\n outline: var(--#{$prefix}data-grid-focus-ring-width) solid var(--#{$prefix}data-grid-focus-ring-color);\n outline-offset: calc(-1 * var(--#{$prefix}data-grid-focus-ring-width));\n }\n\n .data-grid-viewport:focus-visible {\n outline: 0;\n }\n\n .data-grid-header {\n position: sticky;\n top: 0;\n z-index: 2;\n background-color: var(--#{$prefix}data-grid-header-bg);\n box-shadow: var(--#{$prefix}data-grid-header-shadow);\n }\n\n // Header label row: fixed 48px with vertically centered content (height on a\n // table cell acts as a min; min-height is ignored on table-cell).\n .data-grid-header tr:not(.data-grid-filter-row) > th {\n height: $data-grid-bar-min-height;\n vertical-align: middle;\n }\n\n .data-grid-filter-row > th {\n padding-top: 0;\n font-weight: normal;\n }\n\n .data-grid-header th[data-coreui-draggable] {\n cursor: grab;\n }\n\n .data-grid-header-cell {\n display: flex;\n align-items: center;\n gap: $data-grid-gap-sm;\n }\n\n .data-grid-header-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n // Icon-only ghost buttons: square them by matching horizontal padding to\n // vertical (follows .btn / .btn-sm automatically) and collapsing the text\n // line-height so height follows the icon, not a 1.5em text line.\n .btn-ghost {\n --#{$prefix}btn-padding-x: var(--#{$prefix}btn-padding-y);\n --#{$prefix}btn-line-height: 1;\n }\n\n .data-grid-menu-button {\n margin-inline-start: auto;\n }\n\n .data-grid-menu {\n position: absolute;\n z-index: 4;\n min-width: var(--#{$prefix}data-grid-menu-min-width);\n padding: $data-grid-gap-sm 0;\n background-color: var(--#{$prefix}data-grid-menu-bg);\n border: $data-grid-border-width solid var(--#{$prefix}data-grid-menu-border-color);\n border-radius: $data-grid-border-radius;\n box-shadow: var(--#{$prefix}data-grid-menu-shadow);\n }\n\n .data-grid-menu-item {\n display: flex;\n align-items: center;\n gap: .5rem;\n width: 100%;\n padding: $data-grid-gap-sm .75rem;\n font: inherit;\n color: inherit;\n text-align: start;\n cursor: pointer;\n background: none;\n border: 0;\n\n &:hover,\n &:focus-visible {\n background-color: var(--#{$prefix}data-grid-menu-item-hover-bg);\n }\n\n // Disabled items stay focusable (aria-disabled, APG menu pattern) so the\n // roving arrow cycle can reach them.\n &[aria-disabled=\"true\"] {\n color: $data-grid-muted-color;\n cursor: default;\n background: none;\n }\n }\n\n .data-grid-filter-menu {\n position: absolute;\n z-index: 4;\n display: flex;\n flex-direction: column;\n gap: .5rem;\n min-width: var(--#{$prefix}data-grid-menu-min-width);\n max-width: $data-grid-popup-max-width;\n padding: .75rem;\n background-color: var(--#{$prefix}data-grid-menu-bg);\n border: $data-grid-border-width solid var(--#{$prefix}data-grid-menu-border-color);\n border-radius: $data-grid-border-radius;\n box-shadow: var(--#{$prefix}data-grid-menu-shadow);\n\n > div {\n display: flex;\n flex-direction: column;\n gap: .5rem;\n }\n }\n\n .data-grid-filter-menu-condition {\n display: flex;\n flex-direction: column;\n gap: $data-grid-gap-sm;\n }\n\n .data-grid-filter-menu-join {\n display: flex;\n gap: 1rem;\n\n label {\n display: flex;\n gap: .375rem;\n align-items: center;\n }\n }\n\n .data-grid-filter-menu-values {\n display: flex;\n flex-direction: column;\n gap: $data-grid-gap-sm;\n max-height: 14rem;\n overflow-y: auto;\n }\n\n .data-grid-filter-menu-footer {\n display: flex;\n gap: .5rem;\n justify-content: flex-end;\n }\n\n .data-grid-column-chooser {\n position: absolute;\n z-index: 4;\n display: flex;\n flex-direction: column;\n gap: .5rem;\n min-width: var(--#{$prefix}data-grid-menu-min-width);\n max-width: $data-grid-popup-max-width;\n max-height: 20rem;\n padding: .75rem;\n overflow-y: auto;\n background-color: var(--#{$prefix}data-grid-menu-bg);\n border: $data-grid-border-width solid var(--#{$prefix}data-grid-menu-border-color);\n border-radius: $data-grid-border-radius;\n box-shadow: var(--#{$prefix}data-grid-menu-shadow);\n }\n\n .data-grid-column-chooser-option {\n display: flex;\n gap: .375rem;\n align-items: center;\n margin-bottom: 0;\n }\n\n .data-grid-column-chooser-footer {\n display: flex;\n gap: .5rem;\n justify-content: flex-end;\n padding-top: $data-grid-gap-sm;\n margin-top: $data-grid-gap-sm;\n border-top: $data-grid-border-width solid var(--#{$prefix}data-grid-menu-border-color);\n }\n\n .data-grid-filter-button {\n position: relative;\n // Right-align the trailing controls as a group: the filter button takes the\n // auto margin (menu drops its own below) so filter and menu sit together at\n // the end, matching a menu-only header.\n margin-inline-start: auto;\n\n ~ .data-grid-menu-button {\n margin-inline-start: 0;\n }\n }\n\n // Active-filter indicator dot on the filter button.\n .data-grid-filter-button-filtered::after {\n position: absolute;\n inset-block-start: .125rem;\n inset-inline-end: .125rem;\n width: .375rem;\n height: .375rem;\n content: \"\";\n background-color: var(--#{$prefix}primary, #321fdb);\n border-radius: 50%;\n }\n\n .data-grid-menu-item-icon {\n display: inline-flex;\n opacity: .75;\n\n svg {\n width: 1em;\n height: 1em;\n }\n }\n\n .data-grid-menu-divider {\n height: $data-grid-border-width;\n margin: $data-grid-gap-sm 0;\n background-color: var(--#{$prefix}data-grid-menu-border-color);\n }\n\n .data-grid-dragging {\n opacity: .5;\n }\n\n // While a drag is live the whole grid keeps the grabbing cursor and stops\n // painting a text selection under the pointer.\n &.data-grid-drag-active {\n cursor: grabbing;\n user-select: none;\n }\n\n // Both overlays are position: fixed (placed from viewport coordinates in JS)\n // so they escape the viewport's overflow, like the tooltip.\n .data-grid-drag-ghost {\n position: fixed;\n top: 0;\n left: 0;\n z-index: $data-grid-tooltip-z-index;\n display: flex;\n align-items: center;\n max-width: 16rem;\n padding: 0 var(--#{$prefix}data-grid-cell-padding-x, .5rem);\n overflow: hidden;\n font-weight: 600;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n background-color: var(--#{$prefix}data-grid-pinned-bg);\n border: $data-grid-border-width solid var(--#{$prefix}data-grid-drop-indicator);\n border-radius: $data-grid-border-radius;\n box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);\n transform: translate(-9999px, -9999px);\n opacity: .9;\n }\n\n // The settling ghost: on release it flies from the pointer to the slot the\n // item landed in (or back home on cancel) and fades out there.\n .data-grid-drag-ghost-settle {\n transition: transform var(--#{$prefix}data-grid-drag-transition), opacity var(--#{$prefix}data-grid-drag-transition);\n }\n\n .data-grid-drop-indicator {\n position: fixed;\n z-index: $data-grid-tooltip-z-index;\n pointer-events: none;\n background-color: var(--#{$prefix}data-grid-drop-indicator);\n transition: top var(--#{$prefix}data-grid-drag-transition), left var(--#{$prefix}data-grid-drag-transition);\n }\n\n // The live reorder preview: cells slide to the layout the drop will produce.\n // Transform only, so nothing reflows and the real order still changes once.\n .data-grid-drag-preview {\n transition: transform var(--#{$prefix}data-grid-drag-transition);\n }\n\n // Someone who asked the OS to stop moving things still gets the preview —\n // it snaps to the final layout instead of gliding there.\n @media (prefers-reduced-motion: reduce) {\n :is(.data-grid-drop-indicator, .data-grid-drag-preview, .data-grid-drag-ghost-settle) {\n transition: none;\n }\n }\n\n // The line is 2px across its short axis and spans the grid along the other;\n // JS sets the spanning size, the axis class sets the thickness.\n .data-grid-drop-indicator-x {\n width: .125rem;\n }\n\n .data-grid-drop-indicator-y {\n height: .125rem;\n }\n\n // Cell selection: a tinted fill on every selected cell, plus an outline\n // drawn only on the sides that sit on the selection's boundary — so a\n // rectangle reads as one region instead of a grid of boxes. The outline is\n // an overlay rather than a border: a border on a table cell would shift the\n // whole row's layout the moment a range is selected.\n .data-grid-cell-selected {\n position: relative;\n background-color: var(--#{$prefix}data-grid-cell-selected-bg);\n }\n\n .data-grid-cell-selected::after {\n position: absolute;\n inset: 0;\n pointer-events: none;\n content: \"\";\n border: 0 solid var(--#{$prefix}data-grid-cell-selected-border-color);\n }\n\n .data-grid-cell-selected-top::after {\n border-top-width: var(--#{$prefix}data-grid-cell-selected-border-width);\n }\n\n .data-grid-cell-selected-right::after {\n border-right-width: var(--#{$prefix}data-grid-cell-selected-border-width);\n }\n\n .data-grid-cell-selected-bottom::after {\n border-bottom-width: var(--#{$prefix}data-grid-cell-selected-border-width);\n }\n\n .data-grid-cell-selected-left::after {\n border-left-width: var(--#{$prefix}data-grid-cell-selected-border-width);\n }\n\n // The reorder column: as narrow as the grip, and the grip itself is the only\n // thing that starts a row drag (a row is full of interactive content that a\n // whole-row handle would swallow).\n .data-grid-row-handle-cell {\n width: var(--#{$prefix}data-grid-row-handle-width);\n padding-inline: 0;\n text-align: center;\n }\n\n .data-grid-row-handle {\n display: inline-flex;\n color: $data-grid-resizer-grip-color-hover;\n cursor: grab;\n touch-action: none;\n }\n\n .data-grid-select-cell {\n width: var(--#{$prefix}data-grid-select-cell-width);\n text-align: center;\n }\n\n .data-grid-sort-button {\n display: inline-flex;\n align-items: center;\n gap: var(--#{$prefix}data-grid-sorter-margin);\n padding: 0;\n font: inherit;\n color: inherit;\n cursor: pointer;\n user-select: none;\n background: none;\n border: 0;\n }\n\n .data-grid-sort-icon {\n display: inline-flex;\n font-size: .875em;\n opacity: 0;\n\n svg {\n width: 1em;\n height: 1em;\n }\n }\n\n // The active sort direction is always visible; the neutral (unsorted) icon is\n // hidden unless `sorterVisibility` opts it in (steadily via \"always\", or on\n // header hover/focus via \"hover\").\n .data-grid-sortable[aria-sort] .data-grid-sort-icon {\n opacity: 1;\n }\n\n &[data-coreui-sorter-visibility=\"always\"] .data-grid-sortable:not([aria-sort]) .data-grid-sort-icon {\n opacity: var(--#{$prefix}data-grid-sorter-opacity);\n }\n\n &[data-coreui-sorter-visibility=\"hover\"] .data-grid-sortable:not([aria-sort]):hover .data-grid-sort-icon,\n &[data-coreui-sorter-visibility=\"hover\"] .data-grid-sortable:not([aria-sort]):focus-within .data-grid-sort-icon {\n opacity: var(--#{$prefix}data-grid-sorter-opacity);\n }\n\n .data-grid-viewport > .table {\n margin-bottom: 0;\n table-layout: fixed;\n }\n\n // Body cells render on a single line and truncate with an ellipsis instead of\n // spilling their content across the fixed-layout column boundary onto the next\n // column. Matches the default of AG Grid / MUI X Data Grid and TanStack's\n // virtualized-table guidance, and keeps every row a uniform height for the\n // fixed-height virtualizer (wrapping would desync `estimateSize`). Pinned cells\n // are excluded so their shadow pseudo-element (painted outside the box via a\n // translate) isn't clipped; the select cell holds only a checkbox.\n //\n // Auto row height is the deliberate exception: there the virtualizer measures\n // each row, so cells are free to wrap. Scoping the rule out is what keeps the\n // two modes from fighting over specificity.\n &:not(.data-grid-auto-row-height) .data-grid-viewport > .table > tbody > tr:not(.data-grid-empty) > td:not(.data-grid-select-cell):not(.data-grid-cell-pinned-start):not(.data-grid-cell-pinned-end) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n // Widths applied to each header cell drive the column layout; letting the\n // table grow to its content (min-width keeps it filling a wide viewport)\n // turns a resize or a pin into horizontal scroll rather than squeezing\n // neighbours. Both features share this layout mode.\n &.data-grid-resizable,\n &.data-grid-pinned {\n .data-grid-viewport {\n overflow-x: auto;\n }\n\n .table {\n width: max-content;\n min-width: 100%;\n }\n }\n\n // A pinned th is already sticky (a positioned containing block for the\n // resizer), so only non-pinned header cells need explicit relative here.\n &.data-grid-resizable .data-grid-header th:not(.data-grid-cell-pinned-start):not(.data-grid-cell-pinned-end) {\n position: relative;\n }\n\n &.data-grid-pinned .table {\n // position: sticky is unreliable on collapsed-border tables; the grid opts\n // into separate borders so pinned cells stay put on horizontal scroll.\n border-collapse: separate;\n border-spacing: 0;\n }\n\n .data-grid-cell-pinned-start,\n .data-grid-cell-pinned-end {\n position: sticky;\n z-index: 1;\n background-color: var(--#{$prefix}data-grid-pinned-bg);\n }\n\n .data-grid-header .data-grid-cell-pinned-start,\n .data-grid-header .data-grid-cell-pinned-end {\n z-index: 3;\n }\n\n // Edge cells cast a shadow over the scrolling content. A pseudo-element is\n // used because the cell's own box-shadow carries the table striping accent.\n .data-grid-cell-pinned-start-last,\n .data-grid-cell-pinned-end-first {\n position: sticky;\n\n &::after {\n position: absolute;\n top: 0;\n bottom: 0;\n width: var(--#{$prefix}data-grid-pinned-border-width);\n pointer-events: none;\n content: \"\";\n }\n }\n\n .data-grid-cell-pinned-start-last::after {\n inset-inline-end: 0;\n background: var(--#{$prefix}data-grid-pinned-border-color);\n }\n\n .data-grid-cell-pinned-end-first::after {\n inset-inline-start: 0;\n background: var(--#{$prefix}data-grid-pinned-border-color);\n }\n\n .data-grid-resizer {\n position: absolute;\n top: 0;\n inset-inline-end: calc(-.5 * var(--#{$prefix}data-grid-resizer-width));\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--#{$prefix}data-grid-resizer-width);\n height: 100%;\n cursor: col-resize;\n touch-action: none;\n user-select: none;\n\n // Always-visible grip so the resizable edge is discoverable, not just a\n // bare hover target.\n &::after {\n width: 2px;\n height: var(--#{$prefix}data-grid-resizer-grip-height);\n content: \"\";\n background-color: var(--#{$prefix}data-grid-resizer-grip-color);\n transition: background-color .15s ease;\n }\n\n &:hover::after,\n &.data-grid-resizer-active::after {\n background-color: var(--#{$prefix}data-grid-resizer-grip-color-hover);\n }\n }\n\n .data-grid-spacer > td {\n padding: 0;\n border: 0;\n }\n\n // Spacer rows break `nth-of-type` striping, so striping inside the grid is\n // driven by the absolute row index (.data-grid-row-odd) instead.\n .data-grid-viewport > .table-striped > tbody > tr:nth-of-type(odd) > * {\n --#{$prefix}table-color-type: initial;\n --#{$prefix}table-bg-type: initial;\n }\n\n .data-grid-viewport > .table-striped > tbody > tr.data-grid-row-odd > * {\n --#{$prefix}table-color-type: var(--#{$prefix}table-striped-color);\n --#{$prefix}table-bg-type: var(--#{$prefix}table-striped-bg);\n }\n\n // The last row closes on the viewport edge (or the pagination border), so it\n // doesn't need its own separator line.\n .data-grid-viewport > .table > tbody > tr:last-child > * {\n border-bottom-width: 0;\n }\n\n .data-grid-loading {\n position: absolute;\n inset: 0;\n z-index: 3;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--#{$prefix}data-grid-loading-bg);\n }\n\n // Infinite scroll's \"next page arriving\" strip. Sticky, not an overlay: the\n // rows already loaded stay readable while the grid appends to them.\n .data-grid-loading-more {\n position: sticky;\n inset-inline: 0;\n bottom: 0;\n z-index: 3;\n display: flex;\n justify-content: center;\n padding: var(--#{$prefix}data-grid-spacing);\n background-color: var(--#{$prefix}data-grid-loading-bg);\n }\n\n // Shared icon-button tooltip. position: fixed (set in JS) so it escapes the\n // viewport overflow; theme-inverted like CoreUI's own tooltip.\n .data-grid-tooltip {\n position: fixed;\n z-index: $data-grid-tooltip-z-index;\n max-width: 12rem;\n padding: $data-grid-gap-sm .5rem;\n font-size: .875rem;\n line-height: 1.4;\n color: var(--#{$prefix}body-bg, #fff);\n text-align: center;\n pointer-events: none;\n background-color: var(--#{$prefix}emphasis-color, #000);\n border-radius: $data-grid-border-radius;\n }\n\n .data-grid-empty > td {\n padding: 2rem 1rem;\n color: $data-grid-muted-color;\n text-align: center;\n }\n\n .data-grid-pagination {\n display: flex;\n // Wrap the page controls, count and page-size select onto multiple rows on\n // narrow viewports; without this the fixed row overflows and scrolls the page\n // instead of staying inside the grid.\n flex-wrap: wrap;\n gap: var(--#{$prefix}data-grid-spacing);\n align-items: center;\n min-height: $data-grid-bar-min-height;\n padding: var(--#{$prefix}data-grid-spacing);\n border-top: $data-grid-border-width solid $data-grid-border-color;\n\n &.data-grid-pagination-top {\n border-top: 0;\n border-bottom: $data-grid-border-width solid $data-grid-border-color;\n }\n\n .pagination {\n margin-bottom: 0;\n }\n\n .data-grid-pagination-info {\n margin-inline-start: auto;\n color: $data-grid-muted-color;\n }\n\n .form-select {\n width: auto;\n }\n }\n}\n\n// Print: the grid renders a plain, complete table into the document (see\n// util/print.ts) and hides everything else, so a virtualized grid prints all\n// its rows instead of the twenty in the window.\n@media print {\n .data-grid-print-root {\n position: absolute;\n inset: 0 0 auto;\n z-index: 2000;\n background-color: #fff;\n\n h1 {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n }\n\n table {\n width: 100%;\n border-collapse: collapse;\n }\n\n :is(th, td) {\n padding: $data-grid-gap-sm .5rem;\n text-align: start;\n border: 1px solid #000;\n }\n\n thead {\n display: table-header-group;\n }\n\n tr {\n break-inside: avoid;\n }\n }\n\n // :has() is inside the browser floor (.browserslistrc), and scoping to the\n // body's own children keeps the clone's ancestors from being hidden.\n body:has(.data-grid-print-root) > :not(.data-grid-print-root) {\n display: none !important;\n }\n}\n","// Vendored from @coreui/coreui-pro (scss/mixins/_tokens.scss, v6 line).\n// Sync manually — do not diverge.\n\n// Output a token map as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n @each $prop, $value in $map {\n #{$prop}: #{$value};\n }\n}\n// scss-docs-end mixin-tokens\n","/*!\n * CoreUI PRO data-grid.scss v0.3.0\n * License (https://coreui.io/pro/license/)\n */\n.data-grid {\n position: relative;\n display: flex;\n flex-direction: column;\n --cui-data-grid-viewport-max-height: 30rem;\n --cui-data-grid-header-bg: var(--cui-body-bg, #fff);\n --cui-data-grid-header-shadow: inset 0 calc(-1 * var(--cui-border-width, 1px)) 0 var(--cui-border-color, #dee2e6);\n --cui-data-grid-cell-selected-bg: rgba(var(--cui-primary-rgb, 50, 31, 219), 0.12);\n --cui-data-grid-cell-selected-border-color: var(--cui-primary, #321fdb);\n --cui-data-grid-cell-selected-border-width: 1px;\n --cui-data-grid-row-handle-width: 2rem;\n --cui-data-grid-select-cell-width: 2.5rem;\n --cui-data-grid-sorter-margin: 0.25rem;\n --cui-data-grid-sorter-opacity: 0.3;\n --cui-data-grid-spacing: 0.5rem;\n --cui-data-grid-resizer-width: 0.625rem;\n --cui-data-grid-resizer-grip-height: 60%;\n --cui-data-grid-resizer-grip-color: var(--cui-border-color, #dee2e6);\n --cui-data-grid-resizer-grip-color-hover: var(--cui-secondary-color, #6c757d);\n --cui-data-grid-pinned-border-width: var(--cui-border-width);\n --cui-data-grid-pinned-border-color: var(--cui-border-color, #dee2e6);\n --cui-data-grid-drop-indicator: var(--cui-primary, #321fdb);\n --cui-data-grid-drag-transition: 0.15s ease;\n --cui-data-grid-menu-bg: var(--cui-body-bg, #fff);\n --cui-data-grid-menu-border-color: var(--cui-border-color, #dee2e6);\n --cui-data-grid-menu-shadow: var(--cui-box-shadow, 0 0.5rem 1rem rgba(0, 0, 0, 0.15));\n --cui-data-grid-menu-min-width: 10rem;\n --cui-data-grid-menu-item-hover-bg: var(--cui-tertiary-bg, #f8f9fa);\n --cui-data-grid-loading-bg: rgba(var(--cui-body-bg-rgb, 255, 255, 255), 0.6);\n --cui-data-grid-pinned-bg: var(--cui-body-bg, #fff);\n --cui-data-grid-focus-ring-width: 2px;\n --cui-data-grid-focus-ring-color: var(--cui-primary, #321fdb);\n}\n.data-grid .data-grid-toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--cui-data-grid-spacing);\n align-items: center;\n min-height: 48px;\n padding: var(--cui-data-grid-spacing);\n border-bottom: var(--cui-border-width, 1px) solid var(--cui-border-color, #dee2e6);\n}\n.data-grid .data-grid-toolbar-actions {\n display: flex;\n gap: 0.25rem;\n align-items: center;\n}\n.data-grid .data-grid-toolbar-search {\n margin-inline-start: auto;\n}\n.data-grid .data-grid-viewport {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n max-height: var(--cui-data-grid-viewport-max-height);\n overflow-y: auto;\n overflow-anchor: none;\n}\n.data-grid .data-grid-cell-editor {\n width: 100%;\n min-width: 4rem;\n}\n.data-grid .data-grid-editor-popup {\n position: absolute;\n z-index: 4;\n padding: 0.25rem;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, 0.375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n}\n.data-grid [role=grid] :is(td, th):focus-visible {\n outline: var(--cui-data-grid-focus-ring-width) solid var(--cui-data-grid-focus-ring-color);\n outline-offset: calc(-1 * var(--cui-data-grid-focus-ring-width));\n}\n.data-grid .data-grid-viewport:focus-visible {\n outline: 0;\n}\n.data-grid .data-grid-header {\n position: sticky;\n top: 0;\n z-index: 2;\n background-color: var(--cui-data-grid-header-bg);\n box-shadow: var(--cui-data-grid-header-shadow);\n}\n.data-grid .data-grid-header tr:not(.data-grid-filter-row) > th {\n height: 48px;\n vertical-align: middle;\n}\n.data-grid .data-grid-filter-row > th {\n padding-top: 0;\n font-weight: normal;\n}\n.data-grid .data-grid-header th[data-coreui-draggable] {\n cursor: grab;\n}\n.data-grid .data-grid-header-cell {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n.data-grid .data-grid-header-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.data-grid .btn-ghost {\n --cui-btn-padding-x: var(--cui-btn-padding-y);\n --cui-btn-line-height: 1;\n}\n.data-grid .data-grid-menu-button {\n margin-inline-start: auto;\n}\n.data-grid .data-grid-menu {\n position: absolute;\n z-index: 4;\n min-width: var(--cui-data-grid-menu-min-width);\n padding: 0.25rem 0;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, 0.375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n}\n.data-grid .data-grid-menu-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.25rem 0.75rem;\n font: inherit;\n color: inherit;\n text-align: start;\n cursor: pointer;\n background: none;\n border: 0;\n}\n.data-grid .data-grid-menu-item:hover, .data-grid .data-grid-menu-item:focus-visible {\n background-color: var(--cui-data-grid-menu-item-hover-bg);\n}\n.data-grid .data-grid-menu-item[aria-disabled=true] {\n color: var(--cui-secondary-color, #6c757d);\n cursor: default;\n background: none;\n}\n.data-grid .data-grid-filter-menu {\n position: absolute;\n z-index: 4;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n min-width: var(--cui-data-grid-menu-min-width);\n max-width: 18rem;\n padding: 0.75rem;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, 0.375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n}\n.data-grid .data-grid-filter-menu > div {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n.data-grid .data-grid-filter-menu-condition {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n.data-grid .data-grid-filter-menu-join {\n display: flex;\n gap: 1rem;\n}\n.data-grid .data-grid-filter-menu-join label {\n display: flex;\n gap: 0.375rem;\n align-items: center;\n}\n.data-grid .data-grid-filter-menu-values {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n max-height: 14rem;\n overflow-y: auto;\n}\n.data-grid .data-grid-filter-menu-footer {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n.data-grid .data-grid-column-chooser {\n position: absolute;\n z-index: 4;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n min-width: var(--cui-data-grid-menu-min-width);\n max-width: 18rem;\n max-height: 20rem;\n padding: 0.75rem;\n overflow-y: auto;\n background-color: var(--cui-data-grid-menu-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n border-radius: var(--cui-border-radius, 0.375rem);\n box-shadow: var(--cui-data-grid-menu-shadow);\n}\n.data-grid .data-grid-column-chooser-option {\n display: flex;\n gap: 0.375rem;\n align-items: center;\n margin-bottom: 0;\n}\n.data-grid .data-grid-column-chooser-footer {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n padding-top: 0.25rem;\n margin-top: 0.25rem;\n border-top: var(--cui-border-width, 1px) solid var(--cui-data-grid-menu-border-color);\n}\n.data-grid .data-grid-filter-button {\n position: relative;\n margin-inline-start: auto;\n}\n.data-grid .data-grid-filter-button ~ .data-grid-menu-button {\n margin-inline-start: 0;\n}\n.data-grid .data-grid-filter-button-filtered::after {\n position: absolute;\n inset-block-start: 0.125rem;\n inset-inline-end: 0.125rem;\n width: 0.375rem;\n height: 0.375rem;\n content: \"\";\n background-color: var(--cui-primary, #321fdb);\n border-radius: 50%;\n}\n.data-grid .data-grid-menu-item-icon {\n display: inline-flex;\n opacity: 0.75;\n}\n.data-grid .data-grid-menu-item-icon svg {\n width: 1em;\n height: 1em;\n}\n.data-grid .data-grid-menu-divider {\n height: var(--cui-border-width, 1px);\n margin: 0.25rem 0;\n background-color: var(--cui-data-grid-menu-border-color);\n}\n.data-grid .data-grid-dragging {\n opacity: 0.5;\n}\n.data-grid.data-grid-drag-active {\n cursor: grabbing;\n user-select: none;\n}\n.data-grid .data-grid-drag-ghost {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1080;\n display: flex;\n align-items: center;\n max-width: 16rem;\n padding: 0 var(--cui-data-grid-cell-padding-x, 0.5rem);\n overflow: hidden;\n font-weight: 600;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n background-color: var(--cui-data-grid-pinned-bg);\n border: var(--cui-border-width, 1px) solid var(--cui-data-grid-drop-indicator);\n border-radius: var(--cui-border-radius, 0.375rem);\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n transform: translate(-9999px, -9999px);\n opacity: 0.9;\n}\n.data-grid .data-grid-drag-ghost-settle {\n transition: transform var(--cui-data-grid-drag-transition), opacity var(--cui-data-grid-drag-transition);\n}\n.data-grid .data-grid-drop-indicator {\n position: fixed;\n z-index: 1080;\n pointer-events: none;\n background-color: var(--cui-data-grid-drop-indicator);\n transition: top var(--cui-data-grid-drag-transition), left var(--cui-data-grid-drag-transition);\n}\n.data-grid .data-grid-drag-preview {\n transition: transform var(--cui-data-grid-drag-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .data-grid :is(.data-grid-drop-indicator, .data-grid-drag-preview, .data-grid-drag-ghost-settle) {\n transition: none;\n }\n}\n.data-grid .data-grid-drop-indicator-x {\n width: 0.125rem;\n}\n.data-grid .data-grid-drop-indicator-y {\n height: 0.125rem;\n}\n.data-grid .data-grid-cell-selected {\n position: relative;\n background-color: var(--cui-data-grid-cell-selected-bg);\n}\n.data-grid .data-grid-cell-selected::after {\n position: absolute;\n inset: 0;\n pointer-events: none;\n content: \"\";\n border: 0 solid var(--cui-data-grid-cell-selected-border-color);\n}\n.data-grid .data-grid-cell-selected-top::after {\n border-top-width: var(--cui-data-grid-cell-selected-border-width);\n}\n.data-grid .data-grid-cell-selected-right::after {\n border-right-width: var(--cui-data-grid-cell-selected-border-width);\n}\n.data-grid .data-grid-cell-selected-bottom::after {\n border-bottom-width: var(--cui-data-grid-cell-selected-border-width);\n}\n.data-grid .data-grid-cell-selected-left::after {\n border-left-width: var(--cui-data-grid-cell-selected-border-width);\n}\n.data-grid .data-grid-row-handle-cell {\n width: var(--cui-data-grid-row-handle-width);\n padding-inline: 0;\n text-align: center;\n}\n.data-grid .data-grid-row-handle {\n display: inline-flex;\n color: var(--cui-secondary-color, #6c757d);\n cursor: grab;\n touch-action: none;\n}\n.data-grid .data-grid-select-cell {\n width: var(--cui-data-grid-select-cell-width);\n text-align: center;\n}\n.data-grid .data-grid-sort-button {\n display: inline-flex;\n align-items: center;\n gap: var(--cui-data-grid-sorter-margin);\n padding: 0;\n font: inherit;\n color: inherit;\n cursor: pointer;\n user-select: none;\n background: none;\n border: 0;\n}\n.data-grid .data-grid-sort-icon {\n display: inline-flex;\n font-size: 0.875em;\n opacity: 0;\n}\n.data-grid .data-grid-sort-icon svg {\n width: 1em;\n height: 1em;\n}\n.data-grid .data-grid-sortable[aria-sort] .data-grid-sort-icon {\n opacity: 1;\n}\n.data-grid[data-coreui-sorter-visibility=always] .data-grid-sortable:not([aria-sort]) .data-grid-sort-icon {\n opacity: var(--cui-data-grid-sorter-opacity);\n}\n.data-grid[data-coreui-sorter-visibility=hover] .data-grid-sortable:not([aria-sort]):hover .data-grid-sort-icon, .data-grid[data-coreui-sorter-visibility=hover] .data-grid-sortable:not([aria-sort]):focus-within .data-grid-sort-icon {\n opacity: var(--cui-data-grid-sorter-opacity);\n}\n.data-grid .data-grid-viewport > .table {\n margin-bottom: 0;\n table-layout: fixed;\n}\n.data-grid:not(.data-grid-auto-row-height) .data-grid-viewport > .table > tbody > tr:not(.data-grid-empty) > td:not(.data-grid-select-cell):not(.data-grid-cell-pinned-start):not(.data-grid-cell-pinned-end) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.data-grid.data-grid-resizable .data-grid-viewport, .data-grid.data-grid-pinned .data-grid-viewport {\n overflow-x: auto;\n}\n.data-grid.data-grid-resizable .table, .data-grid.data-grid-pinned .table {\n width: max-content;\n min-width: 100%;\n}\n.data-grid.data-grid-resizable .data-grid-header th:not(.data-grid-cell-pinned-start):not(.data-grid-cell-pinned-end) {\n position: relative;\n}\n.data-grid.data-grid-pinned .table {\n border-collapse: separate;\n border-spacing: 0;\n}\n.data-grid .data-grid-cell-pinned-start,\n.data-grid .data-grid-cell-pinned-end {\n position: sticky;\n z-index: 1;\n background-color: var(--cui-data-grid-pinned-bg);\n}\n.data-grid .data-grid-header .data-grid-cell-pinned-start,\n.data-grid .data-grid-header .data-grid-cell-pinned-end {\n z-index: 3;\n}\n.data-grid .data-grid-cell-pinned-start-last,\n.data-grid .data-grid-cell-pinned-end-first {\n position: sticky;\n}\n.data-grid .data-grid-cell-pinned-start-last::after,\n.data-grid .data-grid-cell-pinned-end-first::after {\n position: absolute;\n top: 0;\n bottom: 0;\n width: var(--cui-data-grid-pinned-border-width);\n pointer-events: none;\n content: \"\";\n}\n.data-grid .data-grid-cell-pinned-start-last::after {\n inset-inline-end: 0;\n background: var(--cui-data-grid-pinned-border-color);\n}\n.data-grid .data-grid-cell-pinned-end-first::after {\n inset-inline-start: 0;\n background: var(--cui-data-grid-pinned-border-color);\n}\n.data-grid .data-grid-resizer {\n position: absolute;\n top: 0;\n inset-inline-end: calc(-0.5 * var(--cui-data-grid-resizer-width));\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cui-data-grid-resizer-width);\n height: 100%;\n cursor: col-resize;\n touch-action: none;\n user-select: none;\n}\n.data-grid .data-grid-resizer::after {\n width: 2px;\n height: var(--cui-data-grid-resizer-grip-height);\n content: \"\";\n background-color: var(--cui-data-grid-resizer-grip-color);\n transition: background-color 0.15s ease;\n}\n.data-grid .data-grid-resizer:hover::after, .data-grid .data-grid-resizer.data-grid-resizer-active::after {\n background-color: var(--cui-data-grid-resizer-grip-color-hover);\n}\n.data-grid .data-grid-spacer > td {\n padding: 0;\n border: 0;\n}\n.data-grid .data-grid-viewport > .table-striped > tbody > tr:nth-of-type(odd) > * {\n --cui-table-color-type: initial;\n --cui-table-bg-type: initial;\n}\n.data-grid .data-grid-viewport > .table-striped > tbody > tr.data-grid-row-odd > * {\n --cui-table-color-type: var(--cui-table-striped-color);\n --cui-table-bg-type: var(--cui-table-striped-bg);\n}\n.data-grid .data-grid-viewport > .table > tbody > tr:last-child > * {\n border-bottom-width: 0;\n}\n.data-grid .data-grid-loading {\n position: absolute;\n inset: 0;\n z-index: 3;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--cui-data-grid-loading-bg);\n}\n.data-grid .data-grid-loading-more {\n position: sticky;\n inset-inline: 0;\n bottom: 0;\n z-index: 3;\n display: flex;\n justify-content: center;\n padding: var(--cui-data-grid-spacing);\n background-color: var(--cui-data-grid-loading-bg);\n}\n.data-grid .data-grid-tooltip {\n position: fixed;\n z-index: 1080;\n max-width: 12rem;\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.4;\n color: var(--cui-body-bg, #fff);\n text-align: center;\n pointer-events: none;\n background-color: var(--cui-emphasis-color, #000);\n border-radius: var(--cui-border-radius, 0.375rem);\n}\n.data-grid .data-grid-empty > td {\n padding: 2rem 1rem;\n color: var(--cui-secondary-color, #6c757d);\n text-align: center;\n}\n.data-grid .data-grid-pagination {\n display: flex;\n flex-wrap: wrap;\n gap: var(--cui-data-grid-spacing);\n align-items: center;\n min-height: 48px;\n padding: var(--cui-data-grid-spacing);\n border-top: var(--cui-border-width, 1px) solid var(--cui-border-color, #dee2e6);\n}\n.data-grid .data-grid-pagination.data-grid-pagination-top {\n border-top: 0;\n border-bottom: var(--cui-border-width, 1px) solid var(--cui-border-color, #dee2e6);\n}\n.data-grid .data-grid-pagination .pagination {\n margin-bottom: 0;\n}\n.data-grid .data-grid-pagination .data-grid-pagination-info {\n margin-inline-start: auto;\n color: var(--cui-secondary-color, #6c757d);\n}\n.data-grid .data-grid-pagination .form-select {\n width: auto;\n}\n\n@media print {\n .data-grid-print-root {\n position: absolute;\n inset: 0 0 auto;\n z-index: 2000;\n background-color: #fff;\n }\n .data-grid-print-root h1 {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n }\n .data-grid-print-root table {\n width: 100%;\n border-collapse: collapse;\n }\n .data-grid-print-root :is(th, td) {\n padding: 0.25rem 0.5rem;\n text-align: start;\n border: 1px solid #000;\n }\n .data-grid-print-root thead {\n display: table-header-group;\n }\n .data-grid-print-root tr {\n break-inside: avoid;\n }\n body:has(.data-grid-print-root) > :not(.data-grid-print-root) {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=data-grid.css.map */\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* CoreUI PRO data-grid.scss v0.
|
|
2
|
+
* CoreUI PRO data-grid.scss v0.3.0
|
|
3
3
|
* License (https://coreui.io/pro/license/)
|
|
4
|
-
*/.data-grid{position:relative;--cui-data-grid-viewport-max-height:30rem;--cui-data-grid-header-bg:var(--cui-body-bg, #fff);--cui-data-grid-header-shadow:inset 0 calc(-1 * var(--cui-border-width, 1px)) 0 var(--cui-border-color, #dee2e6);--cui-data-grid-select-cell-width:2.5rem;--cui-data-grid-sorter-margin:.25rem;--cui-data-grid-sorter-opacity:.3;--cui-data-grid-spacing:.5rem;--cui-data-grid-resizer-width:.625rem;--cui-data-grid-resizer-grip-height:60%;--cui-data-grid-resizer-grip-color:var(--cui-border-color, #dee2e6);--cui-data-grid-resizer-grip-color-hover:var(--cui-secondary-color, #6c757d);--cui-data-grid-pinned-border-width:var(--cui-border-width);--cui-data-grid-pinned-border-color:var(--cui-border-color, #dee2e6);--cui-data-grid-drop-indicator:var(--cui-primary, #321fdb);--cui-data-grid-menu-bg:var(--cui-body-bg, #fff);--cui-data-grid-menu-border-color:var(--cui-border-color, #dee2e6);--cui-data-grid-menu-shadow:var(--cui-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--cui-data-grid-menu-min-width:10rem;--cui-data-grid-menu-item-hover-bg:var(--cui-tertiary-bg, #f8f9fa);--cui-data-grid-loading-bg:rgba(var(--cui-body-bg-rgb, 255, 255, 255), .6);--cui-data-grid-pinned-bg:var(--cui-body-bg, #fff);--cui-data-grid-focus-ring-width:2px;--cui-data-grid-focus-ring-color:var(--cui-primary, #321fdb)}.data-grid .data-grid-toolbar{display:flex;flex-wrap:wrap;gap:var(--cui-data-grid-spacing);align-items:center;min-height:48px;padding:var(--cui-data-grid-spacing);border-bottom:var(--cui-border-width,1px) solid var(--cui-border-color,#dee2e6)}.data-grid .data-grid-toolbar-actions{display:flex;gap:.25rem;align-items:center}.data-grid .data-grid-toolbar-search{-webkit-margin-start:auto;margin-inline-start:auto}.data-grid .data-grid-viewport{position:relative;max-height:var(--cui-data-grid-viewport-max-height);overflow-y:auto;overflow-anchor:none}.data-grid .data-grid-cell-editor{width:100%;min-width:4rem}.data-grid .data-grid-editor-popup{position:absolute;z-index:4;padding:.25rem;background-color:var(--cui-data-grid-menu-bg);border:var(--cui-border-width,1px) solid var(--cui-data-grid-menu-border-color);border-radius:var(--cui-border-radius,.375rem);box-shadow:var(--cui-data-grid-menu-shadow)}.data-grid [role=grid] :is(td,th):focus-visible{outline:var(--cui-data-grid-focus-ring-width) solid var(--cui-data-grid-focus-ring-color);outline-offset:calc(-1 * var(--cui-data-grid-focus-ring-width))}.data-grid .data-grid-viewport:focus-visible{outline:0}.data-grid .data-grid-header{position:-webkit-sticky;position:sticky;top:0;z-index:2;background-color:var(--cui-data-grid-header-bg);box-shadow:var(--cui-data-grid-header-shadow)}.data-grid .data-grid-header tr:not(.data-grid-filter-row)>th{height:48px;vertical-align:middle}.data-grid .data-grid-filter-row>th{padding-top:0;font-weight:400}.data-grid .data-grid-header th[data-coreui-draggable]{cursor:-webkit-grab;cursor:grab}.data-grid .data-grid-header-cell{display:flex;align-items:center;gap:.25rem}.data-grid .data-grid-header-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-grid .btn-ghost{--cui-btn-padding-x:var(--cui-btn-padding-y);--cui-btn-line-height:1}.data-grid .data-grid-menu-button{-webkit-margin-start:auto;margin-inline-start:auto}.data-grid .data-grid-menu{position:absolute;z-index:4;min-width:var(--cui-data-grid-menu-min-width);padding:.25rem 0;background-color:var(--cui-data-grid-menu-bg);border:var(--cui-border-width,1px) solid var(--cui-data-grid-menu-border-color);border-radius:var(--cui-border-radius,.375rem);box-shadow:var(--cui-data-grid-menu-shadow)}.data-grid .data-grid-menu-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.25rem .75rem;font:inherit;color:inherit;text-align:start;cursor:pointer;background:0 0;border:0}.data-grid .data-grid-menu-item:focus-visible,.data-grid .data-grid-menu-item:hover{background-color:var(--cui-data-grid-menu-item-hover-bg)}.data-grid .data-grid-menu-item[aria-disabled=true]{color:var(--cui-secondary-color,#6c757d);cursor:default;background:0 0}.data-grid .data-grid-filter-menu{position:absolute;z-index:4;display:flex;flex-direction:column;gap:.5rem;min-width:var(--cui-data-grid-menu-min-width);max-width:18rem;padding:.75rem;background-color:var(--cui-data-grid-menu-bg);border:var(--cui-border-width,1px) solid var(--cui-data-grid-menu-border-color);border-radius:var(--cui-border-radius,.375rem);box-shadow:var(--cui-data-grid-menu-shadow)}.data-grid .data-grid-filter-menu>div{display:flex;flex-direction:column;gap:.5rem}.data-grid .data-grid-filter-menu-condition{display:flex;flex-direction:column;gap:.25rem}.data-grid .data-grid-filter-menu-join{display:flex;gap:1rem}.data-grid .data-grid-filter-menu-join label{display:flex;gap:.375rem;align-items:center}.data-grid .data-grid-filter-menu-values{display:flex;flex-direction:column;gap:.25rem;max-height:14rem;overflow-y:auto}.data-grid .data-grid-filter-menu-footer{display:flex;gap:.5rem;justify-content:flex-end}.data-grid .data-grid-column-chooser{position:absolute;z-index:4;display:flex;flex-direction:column;gap:.5rem;min-width:var(--cui-data-grid-menu-min-width);max-width:18rem;max-height:20rem;padding:.75rem;overflow-y:auto;background-color:var(--cui-data-grid-menu-bg);border:var(--cui-border-width,1px) solid var(--cui-data-grid-menu-border-color);border-radius:var(--cui-border-radius,.375rem);box-shadow:var(--cui-data-grid-menu-shadow)}.data-grid .data-grid-column-chooser-option{display:flex;gap:.375rem;align-items:center;margin-bottom:0}.data-grid .data-grid-column-chooser-footer{display:flex;gap:.5rem;justify-content:flex-end;padding-top:.25rem;margin-top:.25rem;border-top:var(--cui-border-width,1px) solid var(--cui-data-grid-menu-border-color)}.data-grid .data-grid-filter-button{position:relative;-webkit-margin-start:auto;margin-inline-start:auto}.data-grid .data-grid-filter-button~.data-grid-menu-button{-webkit-margin-start:0;margin-inline-start:0}.data-grid .data-grid-filter-button-filtered::after{position:absolute;inset-block-start:0.125rem;inset-inline-end:0.125rem;width:.375rem;height:.375rem;content:"";background-color:var(--cui-primary,#321fdb);border-radius:50%}.data-grid .data-grid-menu-item-icon{display:inline-flex;opacity:.75}.data-grid .data-grid-menu-item-icon svg{width:1em;height:1em}.data-grid .data-grid-menu-divider{height:var(--cui-border-width,1px);margin:.25rem 0;background-color:var(--cui-data-grid-menu-border-color)}.data-grid .data-grid-header .data-grid-dragging{opacity:.5}.data-grid .data-grid-header .data-grid-drop-target{box-shadow:inset .125rem 0 0 var(--cui-data-grid-drop-indicator)}.data-grid .data-grid-select-cell{width:var(--cui-data-grid-select-cell-width);text-align:center}.data-grid .data-grid-sort-button{display:inline-flex;align-items:center;gap:var(--cui-data-grid-sorter-margin);padding:0;font:inherit;color:inherit;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:0 0;border:0}.data-grid .data-grid-sort-icon{display:inline-flex;font-size:.875em;opacity:0}.data-grid .data-grid-sort-icon svg{width:1em;height:1em}.data-grid .data-grid-sortable[aria-sort] .data-grid-sort-icon{opacity:1}.data-grid[data-coreui-sorter-visibility=always] .data-grid-sortable:not([aria-sort]) .data-grid-sort-icon{opacity:var(--cui-data-grid-sorter-opacity)}.data-grid[data-coreui-sorter-visibility=hover] .data-grid-sortable:not([aria-sort]):focus-within .data-grid-sort-icon,.data-grid[data-coreui-sorter-visibility=hover] .data-grid-sortable:not([aria-sort]):hover .data-grid-sort-icon{opacity:var(--cui-data-grid-sorter-opacity)}.data-grid .data-grid-viewport>.table{margin-bottom:0;table-layout:fixed}.data-grid .data-grid-viewport>.table>tbody>tr:not(.data-grid-empty)>td:not(.data-grid-select-cell):not(.data-grid-cell-pinned-left):not(.data-grid-cell-pinned-right){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-grid.data-grid-pinned .data-grid-viewport,.data-grid.data-grid-resizable .data-grid-viewport{overflow-x:auto}.data-grid.data-grid-pinned .table,.data-grid.data-grid-resizable .table{width:-webkit-max-content;width:-moz-max-content;width:max-content;min-width:100%}.data-grid.data-grid-resizable .data-grid-header th:not(.data-grid-cell-pinned-left):not(.data-grid-cell-pinned-right){position:relative}.data-grid.data-grid-pinned .table{border-collapse:separate;border-spacing:0}.data-grid .data-grid-cell-pinned-left,.data-grid .data-grid-cell-pinned-right{position:-webkit-sticky;position:sticky;z-index:1;background-color:var(--cui-data-grid-pinned-bg)}.data-grid .data-grid-header .data-grid-cell-pinned-left,.data-grid .data-grid-header .data-grid-cell-pinned-right{z-index:3}.data-grid .data-grid-cell-pinned-left-last,.data-grid .data-grid-cell-pinned-right-first{position:-webkit-sticky;position:sticky}.data-grid .data-grid-cell-pinned-left-last::after,.data-grid .data-grid-cell-pinned-right-first::after{position:absolute;top:0;bottom:0;width:var(--cui-data-grid-pinned-border-width);pointer-events:none;content:""}.data-grid .data-grid-cell-pinned-left-last::after{right:0;background:var(--cui-data-grid-pinned-border-color)}.data-grid .data-grid-cell-pinned-right-first::after{left:0;background:var(--cui-data-grid-pinned-border-color)}.data-grid .data-grid-resizer{position:absolute;top:0;right:calc(-.5 * var(--cui-data-grid-resizer-width));z-index:1;display:flex;align-items:center;justify-content:center;width:var(--cui-data-grid-resizer-width);height:100%;cursor:col-resize;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.data-grid .data-grid-resizer::after{width:2px;height:var(--cui-data-grid-resizer-grip-height);content:"";background-color:var(--cui-data-grid-resizer-grip-color);transition:background-color .15s ease}.data-grid .data-grid-resizer.data-grid-resizer-active::after,.data-grid .data-grid-resizer:hover::after{background-color:var(--cui-data-grid-resizer-grip-color-hover)}.data-grid .data-grid-spacer>td{padding:0;border:0}.data-grid .data-grid-viewport>.table-striped>tbody>tr:nth-of-type(odd)>*{--cui-table-color-type:initial;--cui-table-bg-type:initial}.data-grid .data-grid-viewport>.table-striped>tbody>tr.data-grid-row-odd>*{--cui-table-color-type:var(--cui-table-striped-color);--cui-table-bg-type:var(--cui-table-striped-bg)}.data-grid .data-grid-viewport>.table>tbody>tr:last-child>*{border-bottom-width:0}.data-grid .data-grid-loading{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;background-color:var(--cui-data-grid-loading-bg)}.data-grid .data-grid-tooltip{position:fixed;z-index:1080;max-width:12rem;padding:.25rem .5rem;font-size:.875rem;line-height:1.4;color:var(--cui-body-bg,#fff);text-align:center;pointer-events:none;background-color:var(--cui-emphasis-color,#000);border-radius:var(--cui-border-radius,.375rem)}.data-grid .data-grid-empty>td{padding:2rem 1rem;color:var(--cui-secondary-color,#6c757d);text-align:center}.data-grid .data-grid-pagination{display:flex;flex-wrap:wrap;gap:var(--cui-data-grid-spacing);align-items:center;min-height:48px;padding:var(--cui-data-grid-spacing);border-top:var(--cui-border-width,1px) solid var(--cui-border-color,#dee2e6)}.data-grid .data-grid-pagination.data-grid-pagination-top{border-top:0;border-bottom:var(--cui-border-width,1px) solid var(--cui-border-color,#dee2e6)}.data-grid .data-grid-pagination .pagination{margin-bottom:0}.data-grid .data-grid-pagination .data-grid-pagination-info{-webkit-margin-start:auto;margin-inline-start:auto;color:var(--cui-secondary-color,#6c757d)}.data-grid .data-grid-pagination .form-select{width:auto}
|
|
4
|
+
*/.data-grid{position:relative;display:flex;flex-direction:column;--cui-data-grid-viewport-max-height:30rem;--cui-data-grid-header-bg:var(--cui-body-bg, #fff);--cui-data-grid-header-shadow:inset 0 calc(-1 * var(--cui-border-width, 1px)) 0 var(--cui-border-color, #dee2e6);--cui-data-grid-cell-selected-bg:rgba(var(--cui-primary-rgb, 50, 31, 219), 0.12);--cui-data-grid-cell-selected-border-color:var(--cui-primary, #321fdb);--cui-data-grid-cell-selected-border-width:1px;--cui-data-grid-row-handle-width:2rem;--cui-data-grid-select-cell-width:2.5rem;--cui-data-grid-sorter-margin:0.25rem;--cui-data-grid-sorter-opacity:0.3;--cui-data-grid-spacing:0.5rem;--cui-data-grid-resizer-width:0.625rem;--cui-data-grid-resizer-grip-height:60%;--cui-data-grid-resizer-grip-color:var(--cui-border-color, #dee2e6);--cui-data-grid-resizer-grip-color-hover:var(--cui-secondary-color, #6c757d);--cui-data-grid-pinned-border-width:var(--cui-border-width);--cui-data-grid-pinned-border-color:var(--cui-border-color, #dee2e6);--cui-data-grid-drop-indicator:var(--cui-primary, #321fdb);--cui-data-grid-drag-transition:0.15s ease;--cui-data-grid-menu-bg:var(--cui-body-bg, #fff);--cui-data-grid-menu-border-color:var(--cui-border-color, #dee2e6);--cui-data-grid-menu-shadow:var(--cui-box-shadow, 0 0.5rem 1rem rgba(0, 0, 0, 0.15));--cui-data-grid-menu-min-width:10rem;--cui-data-grid-menu-item-hover-bg:var(--cui-tertiary-bg, #f8f9fa);--cui-data-grid-loading-bg:rgba(var(--cui-body-bg-rgb, 255, 255, 255), 0.6);--cui-data-grid-pinned-bg:var(--cui-body-bg, #fff);--cui-data-grid-focus-ring-width:2px;--cui-data-grid-focus-ring-color:var(--cui-primary, #321fdb)}.data-grid .data-grid-toolbar{display:flex;flex-wrap:wrap;gap:var(--cui-data-grid-spacing);align-items:center;min-height:48px;padding:var(--cui-data-grid-spacing);border-bottom:var(--cui-border-width,1px) solid var(--cui-border-color,#dee2e6)}.data-grid .data-grid-toolbar-actions{display:flex;gap:.25rem;align-items:center}.data-grid .data-grid-toolbar-search{margin-inline-start:auto}.data-grid .data-grid-viewport{position:relative;flex:1 1 auto;min-height:0;max-height:var(--cui-data-grid-viewport-max-height);overflow-y:auto;overflow-anchor:none}.data-grid .data-grid-cell-editor{width:100%;min-width:4rem}.data-grid .data-grid-editor-popup{position:absolute;z-index:4;padding:.25rem;background-color:var(--cui-data-grid-menu-bg);border:var(--cui-border-width,1px) solid var(--cui-data-grid-menu-border-color);border-radius:var(--cui-border-radius,.375rem);box-shadow:var(--cui-data-grid-menu-shadow)}.data-grid [role=grid] :is(td,th):focus-visible{outline:var(--cui-data-grid-focus-ring-width) solid var(--cui-data-grid-focus-ring-color);outline-offset:calc(-1 * var(--cui-data-grid-focus-ring-width))}.data-grid .data-grid-viewport:focus-visible{outline:0}.data-grid .data-grid-header{position:sticky;top:0;z-index:2;background-color:var(--cui-data-grid-header-bg);box-shadow:var(--cui-data-grid-header-shadow)}.data-grid .data-grid-header tr:not(.data-grid-filter-row)>th{height:48px;vertical-align:middle}.data-grid .data-grid-filter-row>th{padding-top:0;font-weight:400}.data-grid .data-grid-header th[data-coreui-draggable]{cursor:grab}.data-grid .data-grid-header-cell{display:flex;align-items:center;gap:.25rem}.data-grid .data-grid-header-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-grid .btn-ghost{--cui-btn-padding-x:var(--cui-btn-padding-y);--cui-btn-line-height:1}.data-grid .data-grid-menu-button{margin-inline-start:auto}.data-grid .data-grid-menu{position:absolute;z-index:4;min-width:var(--cui-data-grid-menu-min-width);padding:.25rem 0;background-color:var(--cui-data-grid-menu-bg);border:var(--cui-border-width,1px) solid var(--cui-data-grid-menu-border-color);border-radius:var(--cui-border-radius,.375rem);box-shadow:var(--cui-data-grid-menu-shadow)}.data-grid .data-grid-menu-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.25rem .75rem;font:inherit;color:inherit;text-align:start;cursor:pointer;background:0 0;border:0}.data-grid .data-grid-menu-item:focus-visible,.data-grid .data-grid-menu-item:hover{background-color:var(--cui-data-grid-menu-item-hover-bg)}.data-grid .data-grid-menu-item[aria-disabled=true]{color:var(--cui-secondary-color,#6c757d);cursor:default;background:0 0}.data-grid .data-grid-filter-menu{position:absolute;z-index:4;display:flex;flex-direction:column;gap:.5rem;min-width:var(--cui-data-grid-menu-min-width);max-width:18rem;padding:.75rem;background-color:var(--cui-data-grid-menu-bg);border:var(--cui-border-width,1px) solid var(--cui-data-grid-menu-border-color);border-radius:var(--cui-border-radius,.375rem);box-shadow:var(--cui-data-grid-menu-shadow)}.data-grid .data-grid-filter-menu>div{display:flex;flex-direction:column;gap:.5rem}.data-grid .data-grid-filter-menu-condition{display:flex;flex-direction:column;gap:.25rem}.data-grid .data-grid-filter-menu-join{display:flex;gap:1rem}.data-grid .data-grid-filter-menu-join label{display:flex;gap:.375rem;align-items:center}.data-grid .data-grid-filter-menu-values{display:flex;flex-direction:column;gap:.25rem;max-height:14rem;overflow-y:auto}.data-grid .data-grid-filter-menu-footer{display:flex;gap:.5rem;justify-content:flex-end}.data-grid .data-grid-column-chooser{position:absolute;z-index:4;display:flex;flex-direction:column;gap:.5rem;min-width:var(--cui-data-grid-menu-min-width);max-width:18rem;max-height:20rem;padding:.75rem;overflow-y:auto;background-color:var(--cui-data-grid-menu-bg);border:var(--cui-border-width,1px) solid var(--cui-data-grid-menu-border-color);border-radius:var(--cui-border-radius,.375rem);box-shadow:var(--cui-data-grid-menu-shadow)}.data-grid .data-grid-column-chooser-option{display:flex;gap:.375rem;align-items:center;margin-bottom:0}.data-grid .data-grid-column-chooser-footer{display:flex;gap:.5rem;justify-content:flex-end;padding-top:.25rem;margin-top:.25rem;border-top:var(--cui-border-width,1px) solid var(--cui-data-grid-menu-border-color)}.data-grid .data-grid-filter-button{position:relative;margin-inline-start:auto}.data-grid .data-grid-filter-button~.data-grid-menu-button{margin-inline-start:0}.data-grid .data-grid-filter-button-filtered::after{position:absolute;inset-block-start:0.125rem;inset-inline-end:0.125rem;width:.375rem;height:.375rem;content:"";background-color:var(--cui-primary,#321fdb);border-radius:50%}.data-grid .data-grid-menu-item-icon{display:inline-flex;opacity:.75}.data-grid .data-grid-menu-item-icon svg{width:1em;height:1em}.data-grid .data-grid-menu-divider{height:var(--cui-border-width,1px);margin:.25rem 0;background-color:var(--cui-data-grid-menu-border-color)}.data-grid .data-grid-dragging{opacity:.5}.data-grid.data-grid-drag-active{cursor:grabbing;-webkit-user-select:none;user-select:none}.data-grid .data-grid-drag-ghost{position:fixed;top:0;left:0;z-index:1080;display:flex;align-items:center;max-width:16rem;padding:0 var(--cui-data-grid-cell-padding-x,.5rem);overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;background-color:var(--cui-data-grid-pinned-bg);border:var(--cui-border-width,1px) solid var(--cui-data-grid-drop-indicator);border-radius:var(--cui-border-radius,.375rem);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);transform:translate(-9999px,-9999px);opacity:.9}.data-grid .data-grid-drag-ghost-settle{transition:transform var(--cui-data-grid-drag-transition),opacity var(--cui-data-grid-drag-transition)}.data-grid .data-grid-drop-indicator{position:fixed;z-index:1080;pointer-events:none;background-color:var(--cui-data-grid-drop-indicator);transition:top var(--cui-data-grid-drag-transition),left var(--cui-data-grid-drag-transition)}.data-grid .data-grid-drag-preview{transition:transform var(--cui-data-grid-drag-transition)}@media (prefers-reduced-motion:reduce){.data-grid :is(.data-grid-drop-indicator,.data-grid-drag-preview,.data-grid-drag-ghost-settle){transition:none}}.data-grid .data-grid-drop-indicator-x{width:.125rem}.data-grid .data-grid-drop-indicator-y{height:.125rem}.data-grid .data-grid-cell-selected{position:relative;background-color:var(--cui-data-grid-cell-selected-bg)}.data-grid .data-grid-cell-selected::after{position:absolute;inset:0;pointer-events:none;content:"";border:0 solid var(--cui-data-grid-cell-selected-border-color)}.data-grid .data-grid-cell-selected-top::after{border-top-width:var(--cui-data-grid-cell-selected-border-width)}.data-grid .data-grid-cell-selected-right::after{border-right-width:var(--cui-data-grid-cell-selected-border-width)}.data-grid .data-grid-cell-selected-bottom::after{border-bottom-width:var(--cui-data-grid-cell-selected-border-width)}.data-grid .data-grid-cell-selected-left::after{border-left-width:var(--cui-data-grid-cell-selected-border-width)}.data-grid .data-grid-row-handle-cell{width:var(--cui-data-grid-row-handle-width);padding-inline:0;text-align:center}.data-grid .data-grid-row-handle{display:inline-flex;color:var(--cui-secondary-color,#6c757d);cursor:grab;touch-action:none}.data-grid .data-grid-select-cell{width:var(--cui-data-grid-select-cell-width);text-align:center}.data-grid .data-grid-sort-button{display:inline-flex;align-items:center;gap:var(--cui-data-grid-sorter-margin);padding:0;font:inherit;color:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:0}.data-grid .data-grid-sort-icon{display:inline-flex;font-size:.875em;opacity:0}.data-grid .data-grid-sort-icon svg{width:1em;height:1em}.data-grid .data-grid-sortable[aria-sort] .data-grid-sort-icon{opacity:1}.data-grid[data-coreui-sorter-visibility=always] .data-grid-sortable:not([aria-sort]) .data-grid-sort-icon{opacity:var(--cui-data-grid-sorter-opacity)}.data-grid[data-coreui-sorter-visibility=hover] .data-grid-sortable:not([aria-sort]):focus-within .data-grid-sort-icon,.data-grid[data-coreui-sorter-visibility=hover] .data-grid-sortable:not([aria-sort]):hover .data-grid-sort-icon{opacity:var(--cui-data-grid-sorter-opacity)}.data-grid .data-grid-viewport>.table{margin-bottom:0;table-layout:fixed}.data-grid:not(.data-grid-auto-row-height) .data-grid-viewport>.table>tbody>tr:not(.data-grid-empty)>td:not(.data-grid-select-cell):not(.data-grid-cell-pinned-start):not(.data-grid-cell-pinned-end){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-grid.data-grid-pinned .data-grid-viewport,.data-grid.data-grid-resizable .data-grid-viewport{overflow-x:auto}.data-grid.data-grid-pinned .table,.data-grid.data-grid-resizable .table{width:max-content;min-width:100%}.data-grid.data-grid-resizable .data-grid-header th:not(.data-grid-cell-pinned-start):not(.data-grid-cell-pinned-end){position:relative}.data-grid.data-grid-pinned .table{border-collapse:separate;border-spacing:0}.data-grid .data-grid-cell-pinned-end,.data-grid .data-grid-cell-pinned-start{position:sticky;z-index:1;background-color:var(--cui-data-grid-pinned-bg)}.data-grid .data-grid-header .data-grid-cell-pinned-end,.data-grid .data-grid-header .data-grid-cell-pinned-start{z-index:3}.data-grid .data-grid-cell-pinned-end-first,.data-grid .data-grid-cell-pinned-start-last{position:sticky}.data-grid .data-grid-cell-pinned-end-first::after,.data-grid .data-grid-cell-pinned-start-last::after{position:absolute;top:0;bottom:0;width:var(--cui-data-grid-pinned-border-width);pointer-events:none;content:""}.data-grid .data-grid-cell-pinned-start-last::after{inset-inline-end:0;background:var(--cui-data-grid-pinned-border-color)}.data-grid .data-grid-cell-pinned-end-first::after{inset-inline-start:0;background:var(--cui-data-grid-pinned-border-color)}.data-grid .data-grid-resizer{position:absolute;top:0;inset-inline-end:calc(-0.5 * var(--cui-data-grid-resizer-width));z-index:1;display:flex;align-items:center;justify-content:center;width:var(--cui-data-grid-resizer-width);height:100%;cursor:col-resize;touch-action:none;-webkit-user-select:none;user-select:none}.data-grid .data-grid-resizer::after{width:2px;height:var(--cui-data-grid-resizer-grip-height);content:"";background-color:var(--cui-data-grid-resizer-grip-color);transition:background-color .15s ease}.data-grid .data-grid-resizer.data-grid-resizer-active::after,.data-grid .data-grid-resizer:hover::after{background-color:var(--cui-data-grid-resizer-grip-color-hover)}.data-grid .data-grid-spacer>td{padding:0;border:0}.data-grid .data-grid-viewport>.table-striped>tbody>tr:nth-of-type(odd)>*{--cui-table-color-type:initial;--cui-table-bg-type:initial}.data-grid .data-grid-viewport>.table-striped>tbody>tr.data-grid-row-odd>*{--cui-table-color-type:var(--cui-table-striped-color);--cui-table-bg-type:var(--cui-table-striped-bg)}.data-grid .data-grid-viewport>.table>tbody>tr:last-child>*{border-bottom-width:0}.data-grid .data-grid-loading{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;background-color:var(--cui-data-grid-loading-bg)}.data-grid .data-grid-loading-more{position:sticky;inset-inline:0;bottom:0;z-index:3;display:flex;justify-content:center;padding:var(--cui-data-grid-spacing);background-color:var(--cui-data-grid-loading-bg)}.data-grid .data-grid-tooltip{position:fixed;z-index:1080;max-width:12rem;padding:.25rem .5rem;font-size:.875rem;line-height:1.4;color:var(--cui-body-bg,#fff);text-align:center;pointer-events:none;background-color:var(--cui-emphasis-color,#000);border-radius:var(--cui-border-radius,.375rem)}.data-grid .data-grid-empty>td{padding:2rem 1rem;color:var(--cui-secondary-color,#6c757d);text-align:center}.data-grid .data-grid-pagination{display:flex;flex-wrap:wrap;gap:var(--cui-data-grid-spacing);align-items:center;min-height:48px;padding:var(--cui-data-grid-spacing);border-top:var(--cui-border-width,1px) solid var(--cui-border-color,#dee2e6)}.data-grid .data-grid-pagination.data-grid-pagination-top{border-top:0;border-bottom:var(--cui-border-width,1px) solid var(--cui-border-color,#dee2e6)}.data-grid .data-grid-pagination .pagination{margin-bottom:0}.data-grid .data-grid-pagination .data-grid-pagination-info{margin-inline-start:auto;color:var(--cui-secondary-color,#6c757d)}.data-grid .data-grid-pagination .form-select{width:auto}@media print{.data-grid-print-root{position:absolute;inset:0 0 auto;z-index:2000;background-color:#fff}.data-grid-print-root h1{margin-bottom:1rem;font-size:1.25rem}.data-grid-print-root table{width:100%;border-collapse:collapse}.data-grid-print-root :is(th,td){padding:.25rem .5rem;text-align:start;border:1px solid #000}.data-grid-print-root thead{display:table-header-group}.data-grid-print-root tr{break-inside:avoid}body:has(.data-grid-print-root)>:not(.data-grid-print-root){display:none!important}}
|
|
5
5
|
/*# sourceMappingURL=data-grid.min.css.map */
|