@vuu-ui/vuu-table 0.6.14-debug

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/LICENSE +201 -0
  2. package/cjs/index.js +24262 -0
  3. package/index.css +722 -0
  4. package/index.css.map +7 -0
  5. package/package.json +26 -0
  6. package/types/ColumnBasedTable.d.ts +3 -0
  7. package/types/ColumnResizer.d.ts +8 -0
  8. package/types/DragVisualizer.d.ts +8 -0
  9. package/types/RowBasedTable.d.ts +3 -0
  10. package/types/SortIndicator.d.ts +7 -0
  11. package/types/Table.d.ts +4 -0
  12. package/types/TableCell.d.ts +4 -0
  13. package/types/TableGroupCell.d.ts +6 -0
  14. package/types/TableGroupHeaderCell.d.ts +13 -0
  15. package/types/TableHeaderCell.d.ts +11 -0
  16. package/types/TableRow.d.ts +15 -0
  17. package/types/cell-renderers/index.d.ts +1 -0
  18. package/types/cell-renderers/json-cell/JsonCell.d.ts +1 -0
  19. package/types/cell-renderers/json-cell/index.d.ts +1 -0
  20. package/types/context-menu/buildContextMenuDescriptors.d.ts +4 -0
  21. package/types/context-menu/index.d.ts +2 -0
  22. package/types/context-menu/useContextMenu.d.ts +16 -0
  23. package/types/dataTableTypes.d.ts +70 -0
  24. package/types/filter-indicator.d.ts +13 -0
  25. package/types/index.d.ts +4 -0
  26. package/types/keyUtils.d.ts +19 -0
  27. package/types/useDataSource.d.ts +40 -0
  28. package/types/useDataTable.d.ts +54 -0
  29. package/types/useDraggableColumn.d.ts +12 -0
  30. package/types/useKeyboardNavigation.d.ts +22 -0
  31. package/types/useMeasuredContainer.d.ts +25 -0
  32. package/types/useMeasuredSize.d.ts +26 -0
  33. package/types/useResizeObserver.d.ts +15 -0
  34. package/types/useSelection.d.ts +7 -0
  35. package/types/useTableColumnResize.d.ts +17 -0
  36. package/types/useTableModel.d.ts +71 -0
  37. package/types/useTableScroll.d.ts +38 -0
  38. package/types/useTableViewport.d.ts +28 -0
  39. package/types/useVirtualViewport.d.ts +16 -0
package/index.css ADDED
@@ -0,0 +1,722 @@
1
+ /* ../vuu-popups/src/dialog/Dialog.css */
2
+ .vuuDialog {
3
+ background: var(--salt-container-primary-background);
4
+ border: var(--vuuDialog-border, solid 1px #ccc);
5
+ border-radius: 5px;
6
+ padding: var(--vuuDialog-padding, 0);
7
+ box-shadow: var(--salt-overlayable-shadow, none);
8
+ height: var(--vuuDialog-height, fit-content);
9
+ width: var(--vuuDialog-width, fit-content);
10
+ }
11
+ .vuuDialog-header {
12
+ --saltButton-height: 28px;
13
+ --saltButton-width: 28px;
14
+ --saltToolbar-background: transparent;
15
+ --saltToolbar-height: calc(var(--salt-size-base) + 5px);
16
+ border-bottom: solid 1px var(--salt-container-primary-borderColor);
17
+ }
18
+ .vuuDialog-header > .Responsive-inner {
19
+ align-items: center;
20
+ }
21
+ .vuuDialog-header > .Responsive-inner > :last-child {
22
+ right: 2px;
23
+ }
24
+
25
+ /* ../vuu-popups/src/menu/MenuList.css */
26
+ .vuuMenuList {
27
+ --context-menu-color: #161616;
28
+ --context-menu-padding: var(--hw-list-item-padding, 0 6px);
29
+ --context-menu-shadow: var(--hw-dialog-shadow, 0 6px 12px rgba(0, 0, 0, 0.175));
30
+ --focus-visible-border-color: var(--hw-focus-visible-border-color, rgb(141, 154, 179));
31
+ --context-menu-highlight-bg: #a4d5f4;
32
+ --context-menu-blur-focus-bg: #e0e4e9;
33
+ --menu-item-height: var(--hw-list-item-height, 24px);
34
+ --menu-item-icon-color: black;
35
+ --menu-item-twisty-color: black;
36
+ --menu-item-twisty-content: "";
37
+ --menu-item-twisty-top: 50%;
38
+ --menu-item-twisty-left: auto;
39
+ --menu-item-twisty-right: 0px;
40
+ --menu-icon-size: 12px;
41
+ background-clip: padding-box;
42
+ background-color: white;
43
+ border-radius: 4px;
44
+ border: solid 1px rgba(0, 0, 0, 0.15);
45
+ box-shadow: var(--context-menu-shadow);
46
+ font-size: var(--salt-text-label-fontSize);
47
+ font-weight: var(--salt-typography-fontWeight-semiBold);
48
+ list-style: none;
49
+ margin: 2px 0 0;
50
+ outline: 0;
51
+ padding: 0;
52
+ position: absolute;
53
+ }
54
+ .vuuMenuItem {
55
+ align-items: center;
56
+ color: var(--context-menu-color);
57
+ display: flex;
58
+ gap: 6px;
59
+ height: var(--menu-item-height);
60
+ padding: var(--context-menu-padding);
61
+ padding-right: 24px;
62
+ position: relative;
63
+ white-space: nowrap;
64
+ }
65
+ .vuuIconContainer {
66
+ display: inline-block;
67
+ flex: 12px 0 0;
68
+ height: var(--menu-icon-size);
69
+ mask-repeat: no-repeat;
70
+ width: var(--menu-icon-size);
71
+ }
72
+ .vuuMenuItem[aria-expanded=true] {
73
+ background-color: var(--context-menu-blur-focus-bg);
74
+ }
75
+ .vuuMenuItem-separator {
76
+ border-top: solid 1px var(--context-menu-blur-focus-bg);
77
+ }
78
+ .vuuMenuItem[aria-haspopup=true]:after {
79
+ content: var(--menu-item-twisty-content);
80
+ -webkit-mask: var(--svg-chevron-right) center center/12px 12px;
81
+ mask: var(--svg-chevron-down) center center/12px 12px;
82
+ mask-repeat: no-repeat;
83
+ background-color: var(--menu-item-twisty-color);
84
+ height: 16px;
85
+ left: var(--menu-item-twisty-left);
86
+ right: var(--menu-item-twisty-right);
87
+ margin-top: -8px;
88
+ position: absolute;
89
+ top: var(--menu-item-twisty-top);
90
+ transition: transform 0.3s;
91
+ width: 16px;
92
+ }
93
+ .vuuMenuItem[data-highlighted] {
94
+ background-color: var(--context-menu-highlight-bg);
95
+ }
96
+ .vuuMenuItem:hover {
97
+ background-color: var(--context-menu-highlight-bg);
98
+ cursor: default;
99
+ }
100
+ .vuuMenuList-childMenuShowing .hwMenuItem[data-highlighted] {
101
+ background-color: var(--context-menu-blur-focus-bg);
102
+ }
103
+ .vuuMenuItem.focusVisible:before {
104
+ content: "";
105
+ position: absolute;
106
+ top: 0;
107
+ left: 0;
108
+ right: 0;
109
+ bottom: 0px;
110
+ border: dotted var(--focus-visible-border-color) 2px;
111
+ }
112
+ .vuuPopupContainer.top-bottom-right-right .popup-menu {
113
+ left: auto;
114
+ right: 0;
115
+ }
116
+ .popup-menu .menu-item.showing > button,
117
+ .popup-menu .menu-item > button:focus,
118
+ .popup-menu .menu-item > button:hover {
119
+ text-decoration: none;
120
+ color: rgb(0, 0, 0);
121
+ background-color: rgb(220, 220, 220);
122
+ }
123
+ .vuuMenuItem-button:active,
124
+ .hwMenuItem-button:hover {
125
+ outline: 0;
126
+ }
127
+ .popup-menu .menu-item.disabled > button {
128
+ clear: both;
129
+ font-weight: normal;
130
+ line-height: 1.5;
131
+ color: rgb(120, 120, 120);
132
+ white-space: nowrap;
133
+ text-decoration: none;
134
+ cursor: default;
135
+ }
136
+
137
+ /* ../vuu-popups/src/popup/popup-service.css */
138
+ .vuuPopup {
139
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
140
+ position: absolute;
141
+ top: 0;
142
+ left: 0;
143
+ width: 0;
144
+ height: 0;
145
+ overflow: visible;
146
+ z-index: 1000;
147
+ }
148
+ .vuuPopup {
149
+ position: absolute;
150
+ }
151
+
152
+ /* src/TableCell.css */
153
+ .vuuTable {
154
+ --cell-outline-width: 2px;
155
+ user-select: none;
156
+ }
157
+ .vuuTable-table td {
158
+ --saltEditableLabel-height: 17px;
159
+ --saltInput-height: 17px;
160
+ --saltInput-minHeight: 17px;
161
+ border-right: 1px solid var(--vuuTableCell-border-rightColor);
162
+ border-bottom: 1px solid var(--vuuTableCell-border-bottomColor);
163
+ color: var(--salt-text-primary-foreground);
164
+ cursor: default;
165
+ height: var(--vuuTable-rowHeight);
166
+ line-height: calc(var(--vuuTable-rowHeight) - 1px);
167
+ overflow: hidden;
168
+ padding: 0 5px;
169
+ }
170
+ .vuuTable th:focus,
171
+ .vuuTable td:focus {
172
+ outline: var(--vuuTableCell-outline, dotted var(--salt-color-blue-400) var(--cell-outline-width));
173
+ outline-offset: calc(var(--cell-outline-width) * -1);
174
+ box-shadow: inset 0 0 0 var(--cell-outline-width) white;
175
+ border-bottom: none;
176
+ }
177
+ .vuuTable th:focus .vuuTable-headerCell-inner {
178
+ padding-bottom: var(--cell-outline-width);
179
+ }
180
+ .vuuTable th:not(.vuuTable-headerCell-resizing):focus .vuuTable-headerCell-inner {
181
+ --columnResizer-color: transparent;
182
+ }
183
+ .vuuTable td:focus {
184
+ border-right: none;
185
+ padding-bottom: 1px;
186
+ }
187
+ td[data-editable=true] {
188
+ --salt-text-fontSize: 10px;
189
+ --vuu-icon-size: 5px;
190
+ position: relative;
191
+ }
192
+ td[data-editable=true]:after {
193
+ top: 0;
194
+ content: "";
195
+ background-color: var(--salt-text-secondary-foreground, black);
196
+ left: 0;
197
+ height: var(--vuu-icon-height, var(--vuu-icon-size, 12px));
198
+ -webkit-mask: var(--svg-corner-triangle) center center/var(--vuu-icon-size) var(--vuu-icon-size);
199
+ mask: var(--svg-corner-triangle) center center/var(--vuu-icon-size) var(--vuu-icon-size);
200
+ mask-repeat: no-repeat;
201
+ -webkit-mask-repeat: no-repeat;
202
+ position: absolute;
203
+ transform: rotate(180deg);
204
+ width: var(--vuu-icon-width, var(--vuu-icon-size, 12px));
205
+ }
206
+ td:focus[data-editable],
207
+ td:focus-within[data-editable],
208
+ td:has(.saltEditableLabel-editing) {
209
+ outline: solid var(--salt-color-blue-400) 1px;
210
+ background-color: white;
211
+ outline-offset: -1px;
212
+ }
213
+ td:focus[data-editable=true]:after,
214
+ td:has(.saltEditableLabel):after {
215
+ background-color: var(--salt-color-blue-400);
216
+ left: 1px;
217
+ top: 1px;
218
+ }
219
+
220
+ /* src/TableGroupCell.css */
221
+ .vuuTableGroupCell {
222
+ --spacer-width: 20px;
223
+ --toggle-icon-transform: var(--row-toggle-icon-transform, none);
224
+ --vuu-icon-width: 18px;
225
+ display: flex;
226
+ align-items: center;
227
+ }
228
+ .vuuTableGroupCell-spacer {
229
+ height: 100%;
230
+ position: relative;
231
+ width: var(--spacer-width);
232
+ }
233
+ .vuuTableGroupCell-spacer:after {
234
+ background: var(--salt-container-primary-borderColor);
235
+ content: "";
236
+ position: absolute;
237
+ top: 0;
238
+ bottom: -1px;
239
+ left: 9px;
240
+ width: 1px;
241
+ }
242
+ .vuuTableGroupCell-toggle {
243
+ transition: transform 0.25s;
244
+ transform: var(--toggle-icon-transform);
245
+ }
246
+
247
+ /* src/TableRow.css */
248
+ .vuuTableRow {
249
+ background: transparent;
250
+ }
251
+ .vuuTableRow-even {
252
+ --row-background: var(--row-background-even);
253
+ }
254
+ .vuuTableRow :is(.vuuPinFloating, .vuuPinLeft, .vuuPinRight) {
255
+ background-color: var(--row-background);
256
+ }
257
+ .vuuTableRow-expanded {
258
+ --row-toggle-icon-transform: rotate(90deg);
259
+ }
260
+ .vuuTableRow[aria-selected] {
261
+ background-color: var(--vuuTableRow-selected-background, var(--salt-selectable-background-selected));
262
+ --vuuTableCell-border-bottomColor: var(--salt-selectable-borderColor-selected);
263
+ }
264
+ .vuuTableRow-preSelected {
265
+ --vuuTableCell-border-bottomColor: var(--salt-selectable-borderColor-selected);
266
+ }
267
+
268
+ /* src/ColumnResizer.css */
269
+ .vuuColumnResizer {
270
+ cursor: col-resize;
271
+ margin-left: auto;
272
+ width: 4px;
273
+ }
274
+ .vuuColumnResizer:after {
275
+ content: "";
276
+ position: absolute;
277
+ width: var(--columnResizer-width, 1px);
278
+ top: 0;
279
+ bottom: 0;
280
+ right: 0;
281
+ background-color: var(--columnResizer-color, var(--salt-separable-tertiary-borderColor));
282
+ height: var(--columnResizer-height, 100%);
283
+ }
284
+
285
+ /* src/SortIndicator.css */
286
+ .vuuSortIndicator {
287
+ --menu-icon-size: 18px;
288
+ --menu-item-icon-color: black;
289
+ display: flex;
290
+ flex-direction: column;
291
+ position: relative;
292
+ width: 18px;
293
+ }
294
+ .vuuSortPosition {
295
+ font-size: 10px;
296
+ line-height: 10px;
297
+ text-align: center;
298
+ }
299
+
300
+ /* src/TableHeaderCell.css */
301
+ .vuuTable-heading:nth-child(2) {
302
+ --heading-top: calc(var(--header-height));
303
+ }
304
+ .vuuTable-heading:nth-child(3) {
305
+ --heading-top: calc(var(--header-height) * 2);
306
+ }
307
+ .vuuTable-heading:nth-child(3) {
308
+ --heading-top: calc(var(--header-height) * 3);
309
+ }
310
+ .vuuTable-headingCell {
311
+ background: var(--dataTable-background);
312
+ border-color: var(--salt-separable-tertiary-borderColor);
313
+ border-style: solid solid solid none;
314
+ border-width: 1px;
315
+ color: var(--salt-text-secondary-foreground);
316
+ height: var(--vuuTableHeaderHeight);
317
+ padding: 0 !important;
318
+ position: sticky;
319
+ top: var(--heading-top, 0);
320
+ z-index: 1;
321
+ }
322
+ .vuuTable-heading:has(+ .vuuTable-heading) > .vuuTable-headingCell {
323
+ border-bottom-color: transparent;
324
+ }
325
+ .vuuTable-headerCell {
326
+ --cell-align: "flex-start";
327
+ text-align: left;
328
+ background: var(--dataTable-background);
329
+ border-bottom: 2px solid var(--salt-separable-tertiary-borderColor);
330
+ color: var(--salt-text-secondary-foreground);
331
+ cursor: default;
332
+ padding: 0 !important;
333
+ position: sticky;
334
+ top: calc(var(--total-header-height) - var(--header-height));
335
+ height: var(--vuuTableHeaderHeight);
336
+ z-index: 1;
337
+ }
338
+ .vuuTable-headerCell-right {
339
+ --cell-align: flex-end;
340
+ }
341
+ .vuuTable-headerCell-inner {
342
+ align-items: stretch;
343
+ display: flex;
344
+ height: 100%;
345
+ padding: 0 0 0 3px;
346
+ }
347
+ .vuuTable-headerCell-inner:has(.vuuFilterIndicator) {
348
+ padding-left: 0;
349
+ }
350
+ .vuuTable-headerCell-label {
351
+ align-items: center;
352
+ justify-content: var(--cell-align);
353
+ display: flex;
354
+ flex: 1 1 auto;
355
+ }
356
+ .vuuTable-headerCell-resizing {
357
+ --columnResizer-color: var(--salt-color-blue-500);
358
+ --columnResizer-height: var(--table-height);
359
+ --columnResizer-width: 2px;
360
+ }
361
+ .vuuTable-headerCell.vuuPinLeft.vuuEndPin:after {
362
+ box-shadow: 2px 0px 5px rgba(0, 0, 0, 0.4);
363
+ content: "";
364
+ position: absolute;
365
+ width: 1px;
366
+ background-color: transparent;
367
+ height: var(--table-height);
368
+ top: 0;
369
+ right: 0px;
370
+ }
371
+ .vuuTable-headerCell.vuuPinRight.vuuEndPin:after {
372
+ box-shadow: -2px 0px 5px rgba(0, 0, 0, 0.3);
373
+ content: "";
374
+ position: absolute;
375
+ width: 1px;
376
+ background-color: transparent;
377
+ height: var(--table-height);
378
+ top: 0;
379
+ left: 0px;
380
+ }
381
+
382
+ /* src/filter-indicator.css */
383
+ .vuuFilterIndicator {
384
+ --menu-icon-size: 12px;
385
+ --menu-item-icon-color: black;
386
+ align-items: center;
387
+ cursor: pointer;
388
+ display: flex;
389
+ flex: 0 0 18px;
390
+ flex-direction: column;
391
+ justify-content: center;
392
+ position: relative;
393
+ }
394
+ .vuuFilterIndicator + .vuuTable-headerCell-inner {
395
+ padding-left: 0;
396
+ }
397
+
398
+ /* ../vuu-filters/src/filter-input/FilterInput.css */
399
+ .salt-theme {
400
+ --vuuFilterEditor-lineHeight: 28px;
401
+ }
402
+ .salt-density-high {
403
+ --vuuFilterEditor-buttonWidth: 20px;
404
+ --vuuFilterEditor-height: 22px;
405
+ --vuuFilterEditor-lineHeight: 20px;
406
+ }
407
+ .vuuFilterInput {
408
+ --vuuFilterEditor-background: var(--salt-container-primary-background);
409
+ --vuuFilterEditor-color: var(--salt-text-primary-foreground);
410
+ --vuuFilterEditor-fontFamily: var(--salt-typography-fontFamily);
411
+ --vuuFilterEditor-fontSize: var(--salt-text-fontSize);
412
+ --vuuFilterEditor-cursorColor: var(--salt-text-secondary-foreground);
413
+ --vuuFilterEditor-selectionBackground: var(--salt-text-background-selected);
414
+ --vuuFilterEditor-tooltipBackground: var(--salt-container-primary-background);
415
+ --vuuFilterEditor-tooltipBorder: var(--tooltip-status-borderColor) var(--salt-container-borderWidth) var(--salt-container-borderStyle);
416
+ --vuuFilterEditor-tooltipElevation: var(--salt-overlayable-shadow-popout);
417
+ --vuuFilterEditor-suggestion-selectedBackground: var(--salt-selectable-background-selected);
418
+ --vuuFilterEditor-suggestion-selectedColor: var(--vuuFilterEditor-color);
419
+ --vuuFilterEditor-suggestion-height: 24px;
420
+ --vuuFilterEditor-variableColor: blue;
421
+ align-items: center;
422
+ border-color: var(--salt-container-secondary-borderColor);
423
+ border-style: solid none;
424
+ border-width: 1px;
425
+ box-sizing: border-box;
426
+ display: flex;
427
+ height: var(--vuuFilterEditor-height, 30px);
428
+ }
429
+ .vuuFilterInput-Editor {
430
+ flex: 1 1 auto;
431
+ height: 100%;
432
+ }
433
+ .vuuFilterInput-FilterButton,
434
+ .vuuFilterInput-ClearButton {
435
+ --vuu-icon-size: 12px;
436
+ --saltButton-width: var(--vuuFilterEditor-buttonWidth, 28px);
437
+ }
438
+ .vuuIllustration {
439
+ --vuuFilterEditor-suggestion-selectedBackground:var(--salt-container-secondary-background);
440
+ background: var(--salt-container-secondary-background);
441
+ color: var(--salt-text-secondary-foreground);
442
+ }
443
+
444
+ /* ../vuu-filters/src/filter-toolbar/FilterToolbar.css */
445
+ .vuuFilterDropdown,
446
+ .vuuFilterSwitch {
447
+ --saltToolbarField-marginTop: 0;
448
+ height: 100%;
449
+ }
450
+ .vuuFilterDropdown.saltFormField-focused:before {
451
+ top: 2px !important;
452
+ bottom: 2px !important;
453
+ }
454
+
455
+ /* src/TableGroupHeaderCell.css */
456
+ .salt-theme {
457
+ --svg-spinner: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="rgb(38, 112, 169)" d="M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50"><animateTransform attributeName="transform" attributeType="XML" type="rotate" dur="1s" from="0 50 50" to="360 50 50" repeatCount="indefinite" /></path></svg>');
458
+ }
459
+ .vuuTable-groupHeaderCell {
460
+ --cell-align: "flex-start";
461
+ text-align: left;
462
+ background: var(--dataTable-background);
463
+ border-right: 1px solid var(--salt-separable-tertiary-borderColor);
464
+ border-bottom: 2px solid var(--salt-separable-tertiary-borderColor);
465
+ color: var(--salt-text-secondary-foreground);
466
+ cursor: default;
467
+ padding: 0 !important;
468
+ position: sticky;
469
+ top: 0;
470
+ height: var(--vuuTableHeaderHeight);
471
+ z-index: 1;
472
+ }
473
+ .vuuTable-groupHeaderCell-inner {
474
+ display: flex;
475
+ height: 100%;
476
+ }
477
+ .vuuTable-groupHeaderCell-label {
478
+ align-items: center;
479
+ display: flex;
480
+ flex: 0 0 auto;
481
+ }
482
+ .vuuTable-groupHeaderCell-col {
483
+ align-items: center;
484
+ background-color: inherit;
485
+ display: inline-flex;
486
+ flex: 0 1 auto;
487
+ height: calc(var(--vuuTableHeaderHeight) - 4px);
488
+ justify-content: space-between;
489
+ padding-right: 8px;
490
+ position: relative;
491
+ }
492
+ .vuuTable-groupHeaderCell-close {
493
+ --vuu-icon-height: 18px;
494
+ --vuu-icon-width: 18px;
495
+ cursor: pointer;
496
+ left: 3px;
497
+ }
498
+ .vuuTable-groupHeaderCell-col:nth-child(odd) {
499
+ background-color: var(--salt-color-gray-50);
500
+ }
501
+ .vuuTable-groupHeaderCell-col:nth-child(even) {
502
+ background-color: var(--salt-color-gray-40);
503
+ }
504
+ .vuuTable-groupHeaderCell-col:first-child {
505
+ clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, 0 100%);
506
+ padding-left: 3px;
507
+ z-index: 1;
508
+ }
509
+ .vuuTable-groupHeaderCell-col:not(:first-child) {
510
+ margin-left: -6px;
511
+ padding-left: 12px;
512
+ clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, 0 100%, 8px 50%);
513
+ }
514
+ .vuuTable-groupHeaderCell-resizing {
515
+ --columnResizer-color: var(--salt-color-blue-500);
516
+ --columnResizer-height: var(--table-height);
517
+ --columnResizer-width: 2px;
518
+ }
519
+ .vuuTable-groupHeaderCell-pending {
520
+ --pending-content: "";
521
+ }
522
+ .vuuTable-groupHeaderCell-col:has(+ .vuuColumnResizer):after {
523
+ content: var(--pending-content);
524
+ width: 24px;
525
+ height: 24px;
526
+ background-image: var(--svg-spinner);
527
+ background-repeat: no-repeat;
528
+ background-size: cover;
529
+ }
530
+
531
+ /* src/Table.css */
532
+ .vuuTable {
533
+ --dataTable-background: var(--salt-container-primary-background, inherit);
534
+ --row-background-even: var(--dataTable-background);
535
+ --row-background-odd: var(--dataTable-background);
536
+ --table-background: var(--dataTable-background);
537
+ background-color: var(--dataTable-background);
538
+ position: relative;
539
+ }
540
+ .vuuTable-zebra {
541
+ --row-background-even: var(--salt-container-secondary-background);
542
+ --table-background: 0 var(--header-height) repeating-linear-gradient( to bottom, var(--salt-container-secondary-background), var(--salt-container-secondary-background) var(--row-height), var(--dataTable-background) var(--row-height), var(--dataTable-background) calc(var(--row-height) *2));
543
+ }
544
+ .vuuTable-loading .vuuTable-table {
545
+ --skeleton-height: 20px;
546
+ --skeleton-width: calc(var(--content-width) - 8px);
547
+ --skeleton-left: 4px;
548
+ --skeleton-row-height: 16px;
549
+ --skeleton-size: var(--skeleton-width) var(--skeleton-height);
550
+ --skeleton-row: linear-gradient( var(--salt-color-gray-20-fade-background) var(--skeleton-row-height), transparent 0 );
551
+ --skeleton-background-image: var(--skeleton-row);
552
+ background-image: var(--skeleton-background-image);
553
+ background-repeat: repeat-y;
554
+ background-size: var(--skeleton-size);
555
+ background-position-x: var(--skeleton-left);
556
+ background-position-y: 27px;
557
+ }
558
+ .vuuTable-contentContainer {
559
+ --vuuTable-contentHeight: var(--content-height, "auto");
560
+ --vuuTable-contentWidth: var(--content-width, "auto");
561
+ --vuuTableHeaderHeight: var(--header-height, 30px);
562
+ --vuuTable-height: calc(var(--table-height) - var(--scrollbar-size));
563
+ --vuuTable-pinnedWidthLeft: var(--pinned-width-left, 0pxs);
564
+ --vuuTable-scrollbarSize: var(--scrollbar-size, 15px);
565
+ --vuuTable-width: calc(var(--table-width) - var(--scrollbar-size));
566
+ background-color: var(--salt-container-primary-background);
567
+ height: var(--vuuTable-height);
568
+ position: relative;
569
+ overflow: auto;
570
+ overscroll-behavior: none;
571
+ width: var(--vuuTable-width);
572
+ }
573
+ .vuuTable-contentContainer::-webkit-scrollbar {
574
+ display: none;
575
+ }
576
+ .vuuTable-scrollbarContainer {
577
+ --scroll-content-width: calc(var(--content-width) - var(--pinned-width-left));
578
+ border-left: solid 1px var(--salt-container-primary-borderColor);
579
+ border-top: solid 1px var(--salt-container-primary-borderColor);
580
+ overflow: auto;
581
+ position: absolute;
582
+ height: calc(var(--table-height) - var(--total-header-height) + 1px);
583
+ width: calc(var(--table-width) - var(--pinned-width-left) + 1px);
584
+ }
585
+ .vuuTable-scrollContainerHeader {
586
+ background: #777;
587
+ height: var(--header-height);
588
+ position: fixed;
589
+ top: 0;
590
+ right: 0;
591
+ width: var(--vuuTable-scrollbarSize);
592
+ }
593
+ .vuuTable-scrollContainerFooter {
594
+ background-color: green;
595
+ height: var(--vuuTable-scrollbarSize);
596
+ position: fixed;
597
+ bottom: 0;
598
+ left: 0;
599
+ width: var(--pinned-width-left);
600
+ }
601
+ .vuuTable-scrollContent {
602
+ position: absolute;
603
+ height: var(--content-height);
604
+ width: var(--scroll-content-width, var(--content-width));
605
+ }
606
+ .vuuTable-tableContainer {
607
+ background-color: var(--dataTable-background);
608
+ border-bottom: solid 1px var(--salt-container-primary-borderColor);
609
+ height: calc(var(--table-height) - var(--scrollbar-size));
610
+ left: 0px;
611
+ overflow: hidden;
612
+ position: sticky;
613
+ top: 0px;
614
+ width: calc(var(--table-width) - var(--scrollbar-size));
615
+ white-space: nowrap;
616
+ }
617
+ .vuuTable-table {
618
+ --vuuTable-rowHeight: var(--row-height);
619
+ --vuuTableCell-border-bottomColor: transparent;
620
+ --vuuTableCell-border-rightColor: var(--salt-separable-tertiary-borderColor);
621
+ position: absolute;
622
+ top: 0;
623
+ left: 0;
624
+ background: var(--table-background);
625
+ border-collapse: separate;
626
+ border-spacing: 0;
627
+ border-left: 1px solid #ccc;
628
+ border: none;
629
+ font-size: var(--vuuTable-font-size, 10px);
630
+ margin: 0;
631
+ min-height: 100%;
632
+ table-layout: fixed;
633
+ width: var(--vuuTable-contentWidth);
634
+ }
635
+ .vuuTable-columnBased {
636
+ display: inline-table;
637
+ height: var(--vuuTable-height);
638
+ position: static;
639
+ }
640
+ .vuuTable-filler {
641
+ height: var(--filler-height);
642
+ }
643
+ :is(.vuuPinLeft, .vuuPinRight, .vuuPinFloating) {
644
+ position: sticky;
645
+ }
646
+ .vuuAlignRight {
647
+ text-align: right;
648
+ }
649
+ th:is(.vuuPinLeft, .vuuPinRight, .vuuPinFloating) {
650
+ top: 0;
651
+ z-index: 20;
652
+ }
653
+ table:is(.vuuPinLeft, .vuuPinRight, .vuuPinFloating) {
654
+ z-index: 10;
655
+ }
656
+ .vuuTable-settings {
657
+ --saltButton-height: var(--header-height);
658
+ --saltButton-width: 15px;
659
+ position: absolute !important;
660
+ right: 0;
661
+ top: 0;
662
+ }
663
+ .vuuTable:has(.vuuTable-headerCell-resizing) * {
664
+ cursor: col-resize;
665
+ }
666
+ .saltDraggable-table-column {
667
+ background-color: var(--salt-container-primary-background);
668
+ overflow: hidden;
669
+ }
670
+ .vuuTable-loading .vuuTable-table {
671
+ --skeleton-height: 20px;
672
+ --skeleton-width: calc(var(--content-width) - 8px);
673
+ --skeleton-left: 4px;
674
+ --skeleton-row-height: 16px;
675
+ --skeleton-size: var(--skeleton-width) var(--skeleton-height);
676
+ --skeleton-row: linear-gradient( var(--salt-color-gray-20-fade-background) var(--skeleton-row-height), transparent 0 );
677
+ --skeleton-background-image: var(--skeleton-row);
678
+ background-image: var(--skeleton-background-image);
679
+ background-repeat: repeat-y;
680
+ background-size: var(--skeleton-size);
681
+ background-position-x: var(--skeleton-left);
682
+ background-position-y: 27px;
683
+ }
684
+ .vuuTable-loading .vuuTable-table:after {
685
+ animation: shimmer 2s infinite;
686
+ background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0, rgba(255, 255, 255, .2) 20%, rgba(255, 255, 255, .6) 60%, rgba(255, 255, 255, 0));
687
+ content: "";
688
+ height: var(--table-height);
689
+ left: 0px;
690
+ position: absolute;
691
+ transform: translateX(-100%);
692
+ top: var(--header-height);
693
+ width: var(--content-width);
694
+ }
695
+ @keyframes shimmer {
696
+ 100% {
697
+ transform: translateX(100%);
698
+ }
699
+ }
700
+
701
+ /* src/cell-renderers/json-cell/JsonCell.css */
702
+ .vuuJsonCell-group {
703
+ align-items: center;
704
+ display: inline-flex;
705
+ height: calc(var(--vuuTable-rowHeight) - 1px);
706
+ width: 100%;
707
+ }
708
+ .vuuJsonCell-toggle {
709
+ --vuu-icon-color: var(--salt-text-primary-foreground);
710
+ --vuu-icon-height: calc(var(--vuuTable-rowHeight) - 1px);
711
+ --vuu-icon-width: 18px;
712
+ flex-shrink: 0;
713
+ margin-left: auto;
714
+ }
715
+ .vuuJsonCell-name {
716
+ font-weight: var(--salt-typography-fontWeight-semiBold);
717
+ }
718
+ .vuuJsonCell-value {
719
+ overflow: hidden;
720
+ text-overflow: ellipsis;
721
+ }
722
+ /*# sourceMappingURL=index.css.map */