@adia-ai/web-components 0.6.32 → 0.6.34
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/CHANGELOG.md +44 -0
- package/components/accordion/accordion.css +2 -2
- package/components/action-list/action-list.css +2 -2
- package/components/agent-artifact/agent-artifact.css +31 -31
- package/components/agent-feedback-bar/agent-feedback-bar.css +10 -10
- package/components/agent-questions/agent-questions.css +57 -57
- package/components/agent-reasoning/agent-reasoning.css +62 -62
- package/components/agent-suggestions/agent-suggestions.css +4 -4
- package/components/agent-trace/agent-trace.css +53 -53
- package/components/alert/alert.css +41 -41
- package/components/avatar/avatar.css +27 -27
- package/components/badge/badge.css +27 -27
- package/components/block/block.css +16 -16
- package/components/breadcrumb/breadcrumb.css +23 -23
- package/components/button/button.css +101 -91
- package/components/calendar-grid/calendar-grid.a2ui.json +136 -0
- package/components/calendar-grid/calendar-grid.css +226 -0
- package/components/calendar-grid/calendar-grid.d.ts +37 -0
- package/components/calendar-grid/calendar-grid.js +17 -0
- package/components/calendar-grid/calendar-grid.yaml +116 -0
- package/components/calendar-grid/class.js +300 -0
- package/components/calendar-picker/calendar-picker.css +139 -139
- package/components/canvas/canvas.css +12 -12
- package/components/card/card.css +83 -83
- package/components/chart/chart.css +224 -224
- package/components/chart-legend/chart-legend.css +26 -26
- package/components/check/check.css +40 -40
- package/components/code/code.css +125 -125
- package/components/col/col.css +15 -15
- package/components/color-picker/color-picker.css +55 -55
- package/components/combobox/class.js +861 -0
- package/components/combobox/combobox.a2ui.json +363 -0
- package/components/combobox/combobox.css +244 -0
- package/components/combobox/combobox.d.ts +113 -0
- package/components/combobox/combobox.examples.md +59 -0
- package/components/combobox/combobox.js +17 -0
- package/components/combobox/combobox.test.js +181 -0
- package/components/combobox/combobox.yaml +369 -0
- package/components/command/command.css +90 -90
- package/components/date-range-picker/class.js +775 -0
- package/components/date-range-picker/date-range-picker.a2ui.json +300 -0
- package/components/date-range-picker/date-range-picker.css +178 -0
- package/components/date-range-picker/date-range-picker.d.ts +82 -0
- package/components/date-range-picker/date-range-picker.examples.md +37 -0
- package/components/date-range-picker/date-range-picker.js +17 -0
- package/components/date-range-picker/date-range-picker.test.js +387 -0
- package/components/date-range-picker/date-range-picker.yaml +285 -0
- package/components/datetime-picker/class.js +706 -0
- package/components/datetime-picker/datetime-picker.a2ui.json +334 -0
- package/components/datetime-picker/datetime-picker.css +150 -0
- package/components/datetime-picker/datetime-picker.d.ts +86 -0
- package/components/datetime-picker/datetime-picker.examples.md +46 -0
- package/components/datetime-picker/datetime-picker.js +17 -0
- package/components/datetime-picker/datetime-picker.test.js +454 -0
- package/components/datetime-picker/datetime-picker.yaml +332 -0
- package/components/demo-toggle/demo-toggle.css +27 -27
- package/components/description-list/description-list.css +18 -18
- package/components/divider/divider.css +24 -24
- package/components/embed/embed.css +6 -6
- package/components/empty-state/empty-state.css +27 -27
- package/components/feed/feed.css +12 -12
- package/components/field/field.css +37 -28
- package/components/field/field.test.js +32 -0
- package/components/fields/fields.css +5 -5
- package/components/grid/grid.css +5 -5
- package/components/heatmap/heatmap.css +63 -63
- package/components/icon/icon.css +12 -12
- package/components/image/image.css +14 -14
- package/components/index.js +8 -0
- package/components/input/input.css +66 -66
- package/components/inspector/inspector.css +6 -6
- package/components/integration-card/class.js +410 -0
- package/components/integration-card/integration-card.a2ui.json +268 -0
- package/components/integration-card/integration-card.css +169 -0
- package/components/integration-card/integration-card.d.ts +63 -0
- package/components/integration-card/integration-card.examples.md +41 -0
- package/components/integration-card/integration-card.js +17 -0
- package/components/integration-card/integration-card.test.js +306 -0
- package/components/integration-card/integration-card.yaml +280 -0
- package/components/kbd/kbd.css +32 -32
- package/components/link/link.css +12 -12
- package/components/list/list.css +8 -8
- package/components/list-window/class.js +688 -0
- package/components/list-window/list-window.a2ui.json +277 -0
- package/components/list-window/list-window.css +124 -0
- package/components/list-window/list-window.d.ts +84 -0
- package/components/list-window/list-window.examples.md +73 -0
- package/components/list-window/list-window.js +17 -0
- package/components/list-window/list-window.test.js +303 -0
- package/components/list-window/list-window.yaml +270 -0
- package/components/menu/menu.css +8 -8
- package/components/modal/modal.css +43 -43
- package/components/nav/nav.css +40 -40
- package/components/nav-group/nav-group.css +52 -52
- package/components/nav-item/nav-item.css +44 -44
- package/components/noodles/noodles.css +31 -31
- package/components/option-card/option-card.css +69 -69
- package/components/otp-input/otp-input.css +30 -30
- package/components/page/page.css +18 -18
- package/components/pagination/pagination.css +61 -61
- package/components/pane/pane.css +57 -57
- package/components/pipeline-status/pipeline-status.css +65 -65
- package/components/popover/popover.css +17 -17
- package/components/progress/progress.css +23 -23
- package/components/progress-row/progress-row.css +17 -17
- package/components/radio/radio.css +39 -39
- package/components/range/range.css +55 -55
- package/components/rating/rating.css +28 -28
- package/components/richtext/richtext.css +133 -133
- package/components/row/row.css +19 -19
- package/components/search/search.css +5 -5
- package/components/segment/segment.css +24 -24
- package/components/segmented/segmented.css +25 -25
- package/components/select/select.css +84 -84
- package/components/skeleton/skeleton.css +14 -14
- package/components/slider/slider.css +46 -46
- package/components/spinner/class.js +69 -0
- package/components/spinner/spinner.a2ui.json +197 -0
- package/components/spinner/spinner.css +165 -0
- package/components/spinner/spinner.d.ts +26 -0
- package/components/spinner/spinner.examples.md +26 -0
- package/components/spinner/spinner.js +17 -0
- package/components/spinner/spinner.test.js +234 -0
- package/components/spinner/spinner.yaml +230 -0
- package/components/stack/stack.css +11 -11
- package/components/stat/stat.css +25 -25
- package/components/step-progress/step-progress.css +20 -20
- package/components/stepper/stepper.css +29 -29
- package/components/stream/stream.css +12 -12
- package/components/swatch/swatch.css +68 -68
- package/components/swiper/swiper.css +57 -57
- package/components/switch/switch.css +52 -52
- package/components/table/class.js +9 -0
- package/components/table/table.a2ui.json +1 -1
- package/components/table/table.css +162 -162
- package/components/table/table.d.ts +1 -1
- package/components/table/table.test.js +53 -0
- package/components/table/table.yaml +13 -1
- package/components/table-toolbar/table-toolbar.css +32 -32
- package/components/tabs/tabs.css +51 -51
- package/components/tag/tag.css +48 -48
- package/components/text/text.css +44 -44
- package/components/textarea/textarea.css +46 -46
- package/components/time-picker/class.js +693 -0
- package/components/time-picker/time-picker.a2ui.json +267 -0
- package/components/time-picker/time-picker.css +122 -0
- package/components/time-picker/time-picker.d.ts +75 -0
- package/components/time-picker/time-picker.examples.md +35 -0
- package/components/time-picker/time-picker.js +17 -0
- package/components/time-picker/time-picker.test.js +287 -0
- package/components/time-picker/time-picker.yaml +256 -0
- package/components/timeline/timeline.css +50 -50
- package/components/toast/toast.css +58 -58
- package/components/toggle-group/toggle-group.css +6 -6
- package/components/toggle-scheme/toggle-scheme.css +2 -2
- package/components/toolbar/toolbar.css +17 -17
- package/components/tooltip/tooltip.css +2 -2
- package/components/tree/tree.css +37 -37
- package/components/upload/upload.css +49 -49
- package/dist/icons-manifest.js +3 -3
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +121 -83
- package/package.json +1 -1
- package/styles/components.css +8 -0
|
@@ -1,95 +1,95 @@
|
|
|
1
1
|
@scope (table-ui) {
|
|
2
2
|
:where(:scope) {
|
|
3
3
|
/* ── Tokens ── */
|
|
4
|
-
--table-font-size: var(--a-ui-size);
|
|
5
|
-
--table-heading-size: var(--a-ui-xs);
|
|
6
|
-
--table-heading-weight: var(--a-weight-medium);
|
|
7
|
-
--table-heading-tracking: 0.06em;
|
|
8
|
-
--table-heading-fg: var(--a-fg-muted);
|
|
9
|
-
--table-heading-bg: transparent;
|
|
10
|
-
|
|
11
|
-
--table-fg: var(--a-fg);
|
|
12
|
-
--table-fg-hover: var(--a-fg-strong);
|
|
13
|
-
--table-fg-secondary: var(--a-fg-muted);
|
|
14
|
-
--table-border: var(--a-border-subtle);
|
|
15
|
-
--table-border-strong: var(--a-border);
|
|
16
|
-
--table-py: var(--a-space-3);
|
|
17
|
-
--table-px: var(--a-space-4);
|
|
18
|
-
|
|
19
|
-
--table-row-bg: transparent;
|
|
20
|
-
--table-row-bg-hover: var(--a-bg-hover);
|
|
21
|
-
--table-row-bg-selected: var(--a-bg-selected);
|
|
22
|
-
--table-row-bg-striped: var(--a-bg-subtle);
|
|
23
|
-
|
|
24
|
-
--table-sort-fg: var(--a-fg-muted);
|
|
25
|
-
--table-accent: var(--a-primary);
|
|
26
|
-
--table-fg-disabled: var(--a-ui-text-disabled);
|
|
27
|
-
--table-bg: var(--a-bg);
|
|
28
|
-
--table-radius: var(--a-radius-lg);
|
|
4
|
+
--table-font-size-default: var(--a-ui-size);
|
|
5
|
+
--table-heading-size-default: var(--a-ui-xs);
|
|
6
|
+
--table-heading-weight-default: var(--a-weight-medium);
|
|
7
|
+
--table-heading-tracking-default: 0.06em;
|
|
8
|
+
--table-heading-fg-default: var(--a-fg-muted);
|
|
9
|
+
--table-heading-bg-default: transparent;
|
|
10
|
+
|
|
11
|
+
--table-fg-default: var(--a-fg);
|
|
12
|
+
--table-fg-hover-default: var(--a-fg-strong);
|
|
13
|
+
--table-fg-secondary-default: var(--a-fg-muted);
|
|
14
|
+
--table-border-default: var(--a-border-subtle);
|
|
15
|
+
--table-border-strong-default: var(--a-border);
|
|
16
|
+
--table-py-default: var(--a-space-3);
|
|
17
|
+
--table-px-default: var(--a-space-4);
|
|
18
|
+
|
|
19
|
+
--table-row-bg-default: transparent;
|
|
20
|
+
--table-row-bg-hover-default: var(--a-bg-hover);
|
|
21
|
+
--table-row-bg-selected-default: var(--a-bg-selected);
|
|
22
|
+
--table-row-bg-striped-default: var(--a-bg-subtle);
|
|
23
|
+
|
|
24
|
+
--table-sort-fg-default: var(--a-fg-muted);
|
|
25
|
+
--table-accent-default: var(--a-primary);
|
|
26
|
+
--table-fg-disabled-default: var(--a-ui-text-disabled);
|
|
27
|
+
--table-bg-default: var(--a-bg);
|
|
28
|
+
--table-radius-default: var(--a-radius-lg);
|
|
29
29
|
|
|
30
30
|
/* ── Resize + pinned-column intrinsics ── */
|
|
31
|
-
--table-resize-width: var(--a-space-1);
|
|
32
|
-
--table-pin-shadow-width: var(--a-space-1);
|
|
33
|
-
--table-cell-min-width: 11.25rem;
|
|
31
|
+
--table-resize-width-default: var(--a-space-1);
|
|
32
|
+
--table-pin-shadow-width-default: var(--a-space-1);
|
|
33
|
+
--table-cell-min-width-default: 11.25rem;
|
|
34
34
|
|
|
35
35
|
/* ── Filter popover ── */
|
|
36
|
-
--table-filter-bg: var(--a-canvas);
|
|
37
|
-
--table-filter-fg: var(--a-canvas-text);
|
|
38
|
-
--table-filter-border: var(--a-border);
|
|
39
|
-
--table-filter-radius: var(--a-radius-md);
|
|
40
|
-
--table-filter-inset: var(--a-space-2);
|
|
41
|
-
--table-filter-gap: var(--a-space-1);
|
|
42
|
-
--table-filter-shadow: var(--a-shadow-md);
|
|
43
|
-
--table-filter-input-py: var(--a-space-1);
|
|
44
|
-
--table-filter-input-px: var(--a-space-2);
|
|
45
|
-
--table-filter-input-radius: var(--a-radius-sm);
|
|
46
|
-
--table-filter-input-size: var(--a-ui-tiny);
|
|
47
|
-
--table-filter-btn-px: var(--a-space-1);
|
|
48
|
-
--table-filter-clear-fg: var(--a-accent);
|
|
36
|
+
--table-filter-bg-default: var(--a-canvas);
|
|
37
|
+
--table-filter-fg-default: var(--a-canvas-text);
|
|
38
|
+
--table-filter-border-default: var(--a-border);
|
|
39
|
+
--table-filter-radius-default: var(--a-radius-md);
|
|
40
|
+
--table-filter-inset-default: var(--a-space-2);
|
|
41
|
+
--table-filter-gap-default: var(--a-space-1);
|
|
42
|
+
--table-filter-shadow-default: var(--a-shadow-md);
|
|
43
|
+
--table-filter-input-py-default: var(--a-space-1);
|
|
44
|
+
--table-filter-input-px-default: var(--a-space-2);
|
|
45
|
+
--table-filter-input-radius-default: var(--a-radius-sm);
|
|
46
|
+
--table-filter-input-size-default: var(--a-ui-tiny);
|
|
47
|
+
--table-filter-btn-px-default: var(--a-space-1);
|
|
48
|
+
--table-filter-clear-fg-default: var(--a-accent);
|
|
49
49
|
|
|
50
50
|
/* ── Chips / filter bar ── */
|
|
51
|
-
--table-chip-bar-bg: var(--a-canvas-subtle);
|
|
52
|
-
--table-chip-bar-border: var(--a-border);
|
|
53
|
-
--table-chip-bar-gap: var(--a-space-1);
|
|
54
|
-
--table-chip-bar-py: var(--a-space-1);
|
|
55
|
-
--table-chip-bar-px: var(--a-space-2);
|
|
56
|
-
--table-chip-dismiss-gap: var(--a-space-1);
|
|
51
|
+
--table-chip-bar-bg-default: var(--a-canvas-subtle);
|
|
52
|
+
--table-chip-bar-border-default: var(--a-border);
|
|
53
|
+
--table-chip-bar-gap-default: var(--a-space-1);
|
|
54
|
+
--table-chip-bar-py-default: var(--a-space-1);
|
|
55
|
+
--table-chip-bar-px-default: var(--a-space-2);
|
|
56
|
+
--table-chip-dismiss-gap-default: var(--a-space-1);
|
|
57
57
|
|
|
58
58
|
/* ── Detail / expansion row ── */
|
|
59
|
-
--table-detail-bg: var(--a-canvas-subtle);
|
|
60
|
-
--table-detail-border: var(--a-border);
|
|
61
|
-
--table-detail-py: var(--a-space-3);
|
|
62
|
-
--table-detail-px: var(--a-space-4);
|
|
59
|
+
--table-detail-bg-default: var(--a-canvas-subtle);
|
|
60
|
+
--table-detail-border-default: var(--a-border);
|
|
61
|
+
--table-detail-py-default: var(--a-space-3);
|
|
62
|
+
--table-detail-px-default: var(--a-space-4);
|
|
63
63
|
|
|
64
64
|
/* ── Pinning ── */
|
|
65
|
-
--table-pinned-bg: var(--a-canvas);
|
|
66
|
-
--table-pinned-shadow: var(--a-chrome-shadow-soft);
|
|
65
|
+
--table-pinned-bg-default: var(--a-canvas);
|
|
66
|
+
--table-pinned-shadow-default: var(--a-chrome-shadow-soft);
|
|
67
67
|
|
|
68
68
|
/* ── Aggregation row ── */
|
|
69
|
-
--table-agg-border: var(--a-border);
|
|
70
|
-
--table-agg-size: var(--a-ui-tiny);
|
|
71
|
-
--table-agg-py: var(--a-space-2);
|
|
72
|
-
--table-agg-px: var(--a-space-3);
|
|
69
|
+
--table-agg-border-default: var(--a-border);
|
|
70
|
+
--table-agg-size-default: var(--a-ui-tiny);
|
|
71
|
+
--table-agg-py-default: var(--a-space-2);
|
|
72
|
+
--table-agg-px-default: var(--a-space-3);
|
|
73
73
|
|
|
74
74
|
/* ── Sort priority badge ── */
|
|
75
|
-
--table-sort-priority-fg: var(--a-chrome-light);
|
|
75
|
+
--table-sort-priority-fg-default: var(--a-chrome-light);
|
|
76
76
|
|
|
77
77
|
/* ── Sort icon gap ── */
|
|
78
|
-
--table-sort-icon-gap: var(--a-space-1);
|
|
78
|
+
--table-sort-icon-gap-default: var(--a-space-1);
|
|
79
79
|
|
|
80
80
|
/* ── Footer / pagination ── */
|
|
81
|
-
--table-footer-py: var(--a-space-3);
|
|
81
|
+
--table-footer-py-default: var(--a-space-3);
|
|
82
82
|
|
|
83
83
|
/* ── Overlays ── */
|
|
84
|
-
--table-overlay-gap: var(--a-space-3);
|
|
85
|
-
--table-overlay-pad: var(--a-space-8);
|
|
84
|
+
--table-overlay-gap-default: var(--a-space-3);
|
|
85
|
+
--table-overlay-pad-default: var(--a-space-8);
|
|
86
86
|
|
|
87
87
|
/* ── Transitions ── */
|
|
88
|
-
--table-duration: var(--a-duration-fast);
|
|
89
|
-
--table-easing: var(--a-easing);
|
|
88
|
+
--table-duration-default: var(--a-duration-fast);
|
|
89
|
+
--table-easing-default: var(--a-easing);
|
|
90
90
|
|
|
91
91
|
/* ── State ── */
|
|
92
|
-
--table-focus-ring: var(--a-focus-ring);
|
|
92
|
+
--table-focus-ring-default: var(--a-focus-ring);
|
|
93
93
|
|
|
94
94
|
/* ── Z-index layers ── */
|
|
95
95
|
--_z-cell: 0;
|
|
@@ -104,11 +104,11 @@
|
|
|
104
104
|
box-sizing: border-box;
|
|
105
105
|
display: grid;
|
|
106
106
|
overflow-x: auto;
|
|
107
|
-
font-size: var(--table-font-size);
|
|
108
|
-
color: var(--table-fg);
|
|
109
|
-
background: var(--table-bg);
|
|
110
|
-
border: 1px solid var(--table-border);
|
|
111
|
-
border-radius: var(--table-radius);
|
|
107
|
+
font-size: var(--table-font-size, var(--table-font-size-default));
|
|
108
|
+
color: var(--table-fg, var(--table-fg-default));
|
|
109
|
+
background: var(--table-bg, var(--table-bg-default));
|
|
110
|
+
border: 1px solid var(--table-border, var(--table-border-default));
|
|
111
|
+
border-radius: var(--table-radius, var(--table-radius-default));
|
|
112
112
|
position: relative;
|
|
113
113
|
/* Own stacking context — sticky headers, pinned columns, and filter
|
|
114
114
|
dropdowns use internal z-indices that must not leak to parents. */
|
|
@@ -144,11 +144,11 @@
|
|
|
144
144
|
/* ═══════ Header row ═══════ */
|
|
145
145
|
|
|
146
146
|
[data-header] {
|
|
147
|
-
border-bottom: 1px solid var(--table-border-strong);
|
|
147
|
+
border-bottom: 1px solid var(--table-border-strong, var(--table-border-strong-default));
|
|
148
148
|
position: sticky;
|
|
149
149
|
top: 0;
|
|
150
150
|
z-index: var(--_z-header);
|
|
151
|
-
background: var(--table-bg);
|
|
151
|
+
background: var(--table-bg, var(--table-bg-default));
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
/* ═══════ Column headers ═══════ */
|
|
@@ -156,13 +156,13 @@
|
|
|
156
156
|
[role="columnheader"] {
|
|
157
157
|
box-sizing: border-box;
|
|
158
158
|
text-align: left;
|
|
159
|
-
padding: var(--table-py) var(--table-px);
|
|
160
|
-
font-size: var(--table-heading-size);
|
|
161
|
-
font-weight: var(--table-heading-weight);
|
|
162
|
-
color: var(--table-heading-fg);
|
|
163
|
-
background: var(--table-heading-bg);
|
|
159
|
+
padding: var(--table-py, var(--table-py-default)) var(--table-px, var(--table-px-default));
|
|
160
|
+
font-size: var(--table-heading-size, var(--table-heading-size-default));
|
|
161
|
+
font-weight: var(--table-heading-weight, var(--table-heading-weight-default));
|
|
162
|
+
color: var(--table-heading-fg, var(--table-heading-fg-default));
|
|
163
|
+
background: var(--table-heading-bg, var(--table-heading-bg-default));
|
|
164
164
|
text-transform: uppercase;
|
|
165
|
-
letter-spacing: var(--table-heading-tracking);
|
|
165
|
+
letter-spacing: var(--table-heading-tracking, var(--table-heading-tracking-default));
|
|
166
166
|
white-space: nowrap;
|
|
167
167
|
position: relative;
|
|
168
168
|
display: flex;
|
|
@@ -186,31 +186,31 @@
|
|
|
186
186
|
cursor: pointer;
|
|
187
187
|
user-select: none;
|
|
188
188
|
-webkit-user-select: none;
|
|
189
|
-
transition: color var(--table-duration) var(--table-easing);
|
|
189
|
+
transition: color var(--table-duration, var(--table-duration-default)) var(--table-easing, var(--table-easing-default));
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
[data-sort-key]:hover {
|
|
193
|
-
color: var(--table-fg);
|
|
193
|
+
color: var(--table-fg, var(--table-fg-default));
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
/* ═══════ Sort indicator ═══════ */
|
|
197
197
|
|
|
198
198
|
[data-sort-icon] {
|
|
199
|
-
color: var(--table-sort-fg);
|
|
200
|
-
margin-inline-start: var(--table-sort-icon-gap);
|
|
199
|
+
color: var(--table-sort-fg, var(--table-sort-fg-default));
|
|
200
|
+
margin-inline-start: var(--table-sort-icon-gap, var(--table-sort-icon-gap-default));
|
|
201
201
|
vertical-align: middle;
|
|
202
202
|
--a-icon-size: 0.75em;
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
[aria-sort] [data-sort-icon] {
|
|
206
|
-
color: var(--table-fg);
|
|
206
|
+
color: var(--table-fg, var(--table-fg-default));
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
[data-sort-priority] {
|
|
210
210
|
display: inline-flex;
|
|
211
211
|
font-size: 0.6em;
|
|
212
|
-
background: var(--table-accent);
|
|
213
|
-
color: var(--table-sort-priority-fg);
|
|
212
|
+
background: var(--table-accent, var(--table-accent-default));
|
|
213
|
+
color: var(--table-sort-priority-fg, var(--table-sort-priority-fg-default));
|
|
214
214
|
width: 1em;
|
|
215
215
|
height: 1em;
|
|
216
216
|
border-radius: 50%;
|
|
@@ -226,8 +226,8 @@
|
|
|
226
226
|
display: flex;
|
|
227
227
|
align-items: center;
|
|
228
228
|
align-self: stretch;
|
|
229
|
-
padding: var(--table-py) var(--table-px);
|
|
230
|
-
border-bottom: 1px solid var(--table-border);
|
|
229
|
+
padding: var(--table-py, var(--table-py-default)) var(--table-px, var(--table-px-default));
|
|
230
|
+
border-bottom: 1px solid var(--table-border, var(--table-border-default));
|
|
231
231
|
min-width: 0;
|
|
232
232
|
/* Default: single line with ellipsis. Authors opt in to wrapping
|
|
233
233
|
via [wrap] on the host (whole table) or [data-wrap] on a column /
|
|
@@ -299,17 +299,17 @@
|
|
|
299
299
|
/* ═══════ Row states ═══════ */
|
|
300
300
|
|
|
301
301
|
[data-body] > [role="row"] {
|
|
302
|
-
background: var(--table-row-bg);
|
|
303
|
-
transition: background var(--table-duration) var(--table-easing);
|
|
302
|
+
background: var(--table-row-bg, var(--table-row-bg-default));
|
|
303
|
+
transition: background var(--table-duration, var(--table-duration-default)) var(--table-easing, var(--table-easing-default));
|
|
304
304
|
}
|
|
305
305
|
|
|
306
306
|
[data-body] > [role="row"]:hover {
|
|
307
|
-
background: var(--table-row-bg-hover);
|
|
308
|
-
color: var(--table-fg-hover);
|
|
307
|
+
background: var(--table-row-bg-hover, var(--table-row-bg-hover-default));
|
|
308
|
+
color: var(--table-fg-hover, var(--table-fg-hover-default));
|
|
309
309
|
}
|
|
310
310
|
|
|
311
311
|
[data-selected] {
|
|
312
|
-
background: var(--table-row-bg-selected);
|
|
312
|
+
background: var(--table-row-bg-selected, var(--table-row-bg-selected-default));
|
|
313
313
|
}
|
|
314
314
|
|
|
315
315
|
/* ═══════ Striped ═══════ */
|
|
@@ -319,11 +319,11 @@
|
|
|
319
319
|
}
|
|
320
320
|
|
|
321
321
|
:scope[striped] [data-body] > [role="row"]:nth-child(even) {
|
|
322
|
-
background: var(--table-row-bg-striped);
|
|
322
|
+
background: var(--table-row-bg-striped, var(--table-row-bg-striped-default));
|
|
323
323
|
}
|
|
324
324
|
|
|
325
325
|
:scope[striped] [data-body] > [role="row"]:nth-child(even):hover {
|
|
326
|
-
background: var(--table-row-bg-hover);
|
|
326
|
+
background: var(--table-row-bg-hover, var(--table-row-bg-hover-default));
|
|
327
327
|
}
|
|
328
328
|
|
|
329
329
|
/* ═══════ Selection checkboxes ═══════ */
|
|
@@ -340,12 +340,12 @@
|
|
|
340
340
|
/* ═══════ Density ═══════ */
|
|
341
341
|
|
|
342
342
|
:scope[density="compact"] {
|
|
343
|
-
--table-py: var(--a-space-1);
|
|
344
|
-
--table-px: var(--a-space-2);
|
|
343
|
+
--table-py-default: var(--a-space-1);
|
|
344
|
+
--table-px-default: var(--a-space-2);
|
|
345
345
|
}
|
|
346
346
|
|
|
347
347
|
:scope[density="comfortable"] {
|
|
348
|
-
--table-py: var(--a-space-4);
|
|
348
|
+
--table-py-default: var(--a-space-4);
|
|
349
349
|
}
|
|
350
350
|
|
|
351
351
|
/* ═══════ Pinned cells ═══════ */
|
|
@@ -354,14 +354,14 @@
|
|
|
354
354
|
position: sticky;
|
|
355
355
|
left: var(--_pin-left, 0);
|
|
356
356
|
z-index: var(--_z-pinned);
|
|
357
|
-
background: var(--table-bg);
|
|
357
|
+
background: var(--table-bg, var(--table-bg-default));
|
|
358
358
|
}
|
|
359
359
|
|
|
360
360
|
[data-pinned="right"] {
|
|
361
361
|
position: sticky;
|
|
362
362
|
right: var(--_pin-right, 0);
|
|
363
363
|
z-index: var(--_z-pinned);
|
|
364
|
-
background: var(--table-bg);
|
|
364
|
+
background: var(--table-bg, var(--table-bg-default));
|
|
365
365
|
}
|
|
366
366
|
|
|
367
367
|
[data-header] [data-pinned] {
|
|
@@ -372,17 +372,17 @@
|
|
|
372
372
|
|
|
373
373
|
[data-resize-handle] {
|
|
374
374
|
position: absolute;
|
|
375
|
-
right: calc(-1 * var(--table-resize-width) / 2);
|
|
375
|
+
right: calc(-1 * var(--table-resize-width, var(--table-resize-width-default)) / 2);
|
|
376
376
|
top: 0;
|
|
377
377
|
bottom: 0;
|
|
378
|
-
width: var(--table-resize-width);
|
|
378
|
+
width: var(--table-resize-width, var(--table-resize-width-default));
|
|
379
379
|
cursor: col-resize;
|
|
380
380
|
z-index: 1;
|
|
381
381
|
}
|
|
382
382
|
|
|
383
383
|
[data-resize-handle]:hover,
|
|
384
384
|
[data-resize-handle][data-resizing] {
|
|
385
|
-
background: var(--table-accent);
|
|
385
|
+
background: var(--table-accent, var(--table-accent-default));
|
|
386
386
|
}
|
|
387
387
|
|
|
388
388
|
/* ═══════ Footer / pagination ═══════ */
|
|
@@ -391,10 +391,10 @@
|
|
|
391
391
|
display: flex;
|
|
392
392
|
align-items: center;
|
|
393
393
|
justify-content: space-between;
|
|
394
|
-
padding: var(--table-footer-py) var(--table-px);
|
|
395
|
-
font-size: var(--table-heading-size);
|
|
396
|
-
color: var(--table-heading-fg);
|
|
397
|
-
border-top: 1px solid var(--table-border);
|
|
394
|
+
padding: var(--table-footer-py, var(--table-footer-py-default)) var(--table-px, var(--table-px-default));
|
|
395
|
+
font-size: var(--table-heading-size, var(--table-heading-size-default));
|
|
396
|
+
color: var(--table-heading-fg, var(--table-heading-fg-default));
|
|
397
|
+
border-top: 1px solid var(--table-border, var(--table-border-default));
|
|
398
398
|
}
|
|
399
399
|
|
|
400
400
|
/* ═══════ Overlays (empty / loading / error) ═══════ */
|
|
@@ -407,15 +407,15 @@
|
|
|
407
407
|
flex-direction: column;
|
|
408
408
|
align-items: center;
|
|
409
409
|
justify-content: center;
|
|
410
|
-
gap: var(--table-overlay-gap);
|
|
411
|
-
padding: var(--table-overlay-pad);
|
|
412
|
-
color: var(--table-heading-fg);
|
|
410
|
+
gap: var(--table-overlay-gap, var(--table-overlay-gap-default));
|
|
411
|
+
padding: var(--table-overlay-pad, var(--table-overlay-pad-default));
|
|
412
|
+
color: var(--table-heading-fg, var(--table-heading-fg-default));
|
|
413
413
|
}
|
|
414
414
|
|
|
415
415
|
/* ═══════ Keyboard focus ═══════ */
|
|
416
416
|
|
|
417
417
|
[data-focused] {
|
|
418
|
-
outline: 2px solid var(--table-accent);
|
|
418
|
+
outline: 2px solid var(--table-accent, var(--table-accent-default));
|
|
419
419
|
outline-offset: -2px;
|
|
420
420
|
}
|
|
421
421
|
|
|
@@ -423,12 +423,12 @@
|
|
|
423
423
|
|
|
424
424
|
:scope[disabled] {
|
|
425
425
|
pointer-events: none;
|
|
426
|
-
color: var(--table-fg-disabled);
|
|
426
|
+
color: var(--table-fg-disabled, var(--table-fg-disabled-default));
|
|
427
427
|
}
|
|
428
428
|
|
|
429
429
|
:scope[disabled] [data-body] > [role="row"]:hover {
|
|
430
|
-
background: var(--table-row-bg);
|
|
431
|
-
color: var(--table-fg-disabled);
|
|
430
|
+
background: var(--table-row-bg, var(--table-row-bg-default));
|
|
431
|
+
color: var(--table-fg-disabled, var(--table-fg-disabled-default));
|
|
432
432
|
}
|
|
433
433
|
|
|
434
434
|
/* ═══════ Loading (skeleton rows) ═══════
|
|
@@ -460,7 +460,7 @@
|
|
|
460
460
|
all: unset;
|
|
461
461
|
cursor: pointer;
|
|
462
462
|
opacity: 0.5;
|
|
463
|
-
padding: 0 var(--table-filter-btn-px);
|
|
463
|
+
padding: 0 var(--table-filter-btn-px, var(--table-filter-btn-px-default));
|
|
464
464
|
&:hover { opacity: 1; }
|
|
465
465
|
}
|
|
466
466
|
|
|
@@ -471,55 +471,55 @@
|
|
|
471
471
|
top: 100%;
|
|
472
472
|
left: 0;
|
|
473
473
|
right: 0;
|
|
474
|
-
min-width: var(--table-cell-min-width);
|
|
474
|
+
min-width: var(--table-cell-min-width, var(--table-cell-min-width-default));
|
|
475
475
|
z-index: 10;
|
|
476
|
-
background: var(--table-filter-bg);
|
|
477
|
-
border: 1px solid var(--table-filter-border);
|
|
478
|
-
border-radius: var(--table-filter-radius);
|
|
479
|
-
padding: var(--table-filter-inset);
|
|
480
|
-
box-shadow: var(--table-filter-shadow);
|
|
476
|
+
background: var(--table-filter-bg, var(--table-filter-bg-default));
|
|
477
|
+
border: 1px solid var(--table-filter-border, var(--table-filter-border-default));
|
|
478
|
+
border-radius: var(--table-filter-radius, var(--table-filter-radius-default));
|
|
479
|
+
padding: var(--table-filter-inset, var(--table-filter-inset-default));
|
|
480
|
+
box-shadow: var(--table-filter-shadow, var(--table-filter-shadow-default));
|
|
481
481
|
display: flex;
|
|
482
482
|
flex-direction: column;
|
|
483
|
-
gap: var(--table-filter-gap);
|
|
483
|
+
gap: var(--table-filter-gap, var(--table-filter-gap-default));
|
|
484
484
|
}
|
|
485
485
|
|
|
486
486
|
[data-filter-input] {
|
|
487
487
|
width: 100%;
|
|
488
|
-
padding: var(--table-filter-input-py) var(--table-filter-input-px);
|
|
489
|
-
border: 1px solid var(--table-filter-border);
|
|
490
|
-
border-radius: var(--table-filter-input-radius);
|
|
488
|
+
padding: var(--table-filter-input-py, var(--table-filter-input-py-default)) var(--table-filter-input-px, var(--table-filter-input-px-default));
|
|
489
|
+
border: 1px solid var(--table-filter-border, var(--table-filter-border-default));
|
|
490
|
+
border-radius: var(--table-filter-input-radius, var(--table-filter-input-radius-default));
|
|
491
491
|
font: inherit;
|
|
492
|
-
font-size: var(--table-filter-input-size);
|
|
493
|
-
background: var(--table-filter-bg);
|
|
494
|
-
color: var(--table-filter-fg);
|
|
492
|
+
font-size: var(--table-filter-input-size, var(--table-filter-input-size-default));
|
|
493
|
+
background: var(--table-filter-bg, var(--table-filter-bg-default));
|
|
494
|
+
color: var(--table-filter-fg, var(--table-filter-fg-default));
|
|
495
495
|
}
|
|
496
496
|
|
|
497
497
|
[data-filter-op] {
|
|
498
|
-
padding: var(--table-filter-input-py);
|
|
499
|
-
border: 1px solid var(--table-filter-border);
|
|
500
|
-
border-radius: var(--table-filter-input-radius);
|
|
498
|
+
padding: var(--table-filter-input-py, var(--table-filter-input-py-default));
|
|
499
|
+
border: 1px solid var(--table-filter-border, var(--table-filter-border-default));
|
|
500
|
+
border-radius: var(--table-filter-input-radius, var(--table-filter-input-radius-default));
|
|
501
501
|
font: inherit;
|
|
502
|
-
font-size: var(--table-filter-input-size);
|
|
503
|
-
background: var(--table-filter-bg);
|
|
504
|
-
color: var(--table-filter-fg);
|
|
502
|
+
font-size: var(--table-filter-input-size, var(--table-filter-input-size-default));
|
|
503
|
+
background: var(--table-filter-bg, var(--table-filter-bg-default));
|
|
504
|
+
color: var(--table-filter-fg, var(--table-filter-fg-default));
|
|
505
505
|
}
|
|
506
506
|
|
|
507
507
|
[data-filter-option] {
|
|
508
508
|
display: flex;
|
|
509
509
|
align-items: center;
|
|
510
|
-
gap: var(--table-filter-gap);
|
|
511
|
-
font-size: var(--table-filter-input-size);
|
|
510
|
+
gap: var(--table-filter-gap, var(--table-filter-gap-default));
|
|
511
|
+
font-size: var(--table-filter-input-size, var(--table-filter-input-size-default));
|
|
512
512
|
cursor: pointer;
|
|
513
|
-
padding: var(--table-filter-input-py) 0;
|
|
513
|
+
padding: var(--table-filter-input-py, var(--table-filter-input-py-default)) 0;
|
|
514
514
|
}
|
|
515
515
|
|
|
516
516
|
[data-filter-clear] {
|
|
517
517
|
all: unset;
|
|
518
518
|
cursor: pointer;
|
|
519
|
-
font-size: var(--table-filter-input-size);
|
|
520
|
-
color: var(--table-filter-clear-fg);
|
|
519
|
+
font-size: var(--table-filter-input-size, var(--table-filter-input-size-default));
|
|
520
|
+
color: var(--table-filter-clear-fg, var(--table-filter-clear-fg-default));
|
|
521
521
|
text-align: center;
|
|
522
|
-
padding: var(--table-filter-input-py);
|
|
522
|
+
padding: var(--table-filter-input-py, var(--table-filter-input-py-default));
|
|
523
523
|
&:hover { text-decoration: underline; }
|
|
524
524
|
}
|
|
525
525
|
|
|
@@ -530,16 +530,16 @@
|
|
|
530
530
|
display: flex;
|
|
531
531
|
flex-wrap: wrap;
|
|
532
532
|
align-items: center;
|
|
533
|
-
gap: var(--table-chip-bar-gap);
|
|
534
|
-
padding: var(--table-chip-bar-py) var(--table-chip-bar-px);
|
|
535
|
-
border-bottom: 1px solid var(--table-chip-bar-border);
|
|
536
|
-
background: var(--table-chip-bar-bg);
|
|
533
|
+
gap: var(--table-chip-bar-gap, var(--table-chip-bar-gap-default));
|
|
534
|
+
padding: var(--table-chip-bar-py, var(--table-chip-bar-py-default)) var(--table-chip-bar-px, var(--table-chip-bar-px-default));
|
|
535
|
+
border-bottom: 1px solid var(--table-chip-bar-border, var(--table-chip-bar-border-default));
|
|
536
|
+
background: var(--table-chip-bar-bg, var(--table-chip-bar-bg-default));
|
|
537
537
|
}
|
|
538
538
|
|
|
539
539
|
[data-chip-dismiss] {
|
|
540
540
|
all: unset;
|
|
541
541
|
cursor: pointer;
|
|
542
|
-
margin-left: var(--table-chip-dismiss-gap);
|
|
542
|
+
margin-left: var(--table-chip-dismiss-gap, var(--table-chip-dismiss-gap-default));
|
|
543
543
|
opacity: 0.6;
|
|
544
544
|
&:hover { opacity: 1; }
|
|
545
545
|
}
|
|
@@ -547,9 +547,9 @@
|
|
|
547
547
|
[data-filter-clear-all] {
|
|
548
548
|
all: unset;
|
|
549
549
|
cursor: pointer;
|
|
550
|
-
font-size: var(--table-filter-input-size);
|
|
551
|
-
color: var(--table-filter-clear-fg);
|
|
552
|
-
padding: var(--table-chip-bar-py) var(--table-chip-bar-px);
|
|
550
|
+
font-size: var(--table-filter-input-size, var(--table-filter-input-size-default));
|
|
551
|
+
color: var(--table-filter-clear-fg, var(--table-filter-clear-fg-default));
|
|
552
|
+
padding: var(--table-chip-bar-py, var(--table-chip-bar-py-default)) var(--table-chip-bar-px, var(--table-chip-bar-px-default));
|
|
553
553
|
&:hover { text-decoration: underline; }
|
|
554
554
|
}
|
|
555
555
|
|
|
@@ -557,9 +557,9 @@
|
|
|
557
557
|
|
|
558
558
|
[data-detail-row] {
|
|
559
559
|
grid-column: 1 / -1;
|
|
560
|
-
padding: var(--table-detail-py) var(--table-detail-px);
|
|
561
|
-
background: var(--table-detail-bg);
|
|
562
|
-
border-bottom: 1px solid var(--table-detail-border);
|
|
560
|
+
padding: var(--table-detail-py, var(--table-detail-py-default)) var(--table-detail-px, var(--table-detail-px-default));
|
|
561
|
+
background: var(--table-detail-bg, var(--table-detail-bg-default));
|
|
562
|
+
border-bottom: 1px solid var(--table-detail-border, var(--table-detail-border-default));
|
|
563
563
|
}
|
|
564
564
|
|
|
565
565
|
[data-expand-toggle] {
|
|
@@ -568,7 +568,7 @@
|
|
|
568
568
|
display: flex;
|
|
569
569
|
align-items: center;
|
|
570
570
|
justify-content: center;
|
|
571
|
-
transition: transform var(--table-duration) var(--table-easing);
|
|
571
|
+
transition: transform var(--table-duration, var(--table-duration-default)) var(--table-easing, var(--table-easing-default));
|
|
572
572
|
}
|
|
573
573
|
|
|
574
574
|
[data-expanded] [data-expand-toggle] {
|
|
@@ -580,25 +580,25 @@
|
|
|
580
580
|
[data-pinned] {
|
|
581
581
|
position: sticky;
|
|
582
582
|
z-index: 1;
|
|
583
|
-
background: var(--table-pinned-bg);
|
|
583
|
+
background: var(--table-pinned-bg, var(--table-pinned-bg-default));
|
|
584
584
|
}
|
|
585
585
|
|
|
586
586
|
[data-pinned="left"]::after {
|
|
587
587
|
content: '';
|
|
588
588
|
position: absolute;
|
|
589
|
-
right: calc(-1 * var(--table-pin-shadow-width)); top: 0; bottom: 0;
|
|
590
|
-
width: var(--table-pin-shadow-width);
|
|
589
|
+
right: calc(-1 * var(--table-pin-shadow-width, var(--table-pin-shadow-width-default))); top: 0; bottom: 0;
|
|
590
|
+
width: var(--table-pin-shadow-width, var(--table-pin-shadow-width-default));
|
|
591
591
|
pointer-events: none;
|
|
592
|
-
background: linear-gradient(to right, var(--table-pinned-shadow), transparent);
|
|
592
|
+
background: linear-gradient(to right, var(--table-pinned-shadow, var(--table-pinned-shadow-default)), transparent);
|
|
593
593
|
}
|
|
594
594
|
|
|
595
595
|
[data-pinned="right"]::before {
|
|
596
596
|
content: '';
|
|
597
597
|
position: absolute;
|
|
598
|
-
left: calc(-1 * var(--table-pin-shadow-width)); top: 0; bottom: 0;
|
|
599
|
-
width: var(--table-pin-shadow-width);
|
|
598
|
+
left: calc(-1 * var(--table-pin-shadow-width, var(--table-pin-shadow-width-default))); top: 0; bottom: 0;
|
|
599
|
+
width: var(--table-pin-shadow-width, var(--table-pin-shadow-width-default));
|
|
600
600
|
pointer-events: none;
|
|
601
|
-
background: linear-gradient(to left, var(--table-pinned-shadow), transparent);
|
|
601
|
+
background: linear-gradient(to left, var(--table-pinned-shadow, var(--table-pinned-shadow-default)), transparent);
|
|
602
602
|
}
|
|
603
603
|
|
|
604
604
|
/* ═══════ Aggregation Footer ═══════ */
|
|
@@ -607,13 +607,13 @@
|
|
|
607
607
|
display: grid;
|
|
608
608
|
grid-template-columns: subgrid;
|
|
609
609
|
grid-column: 1 / -1;
|
|
610
|
-
border-top: 2px solid var(--table-agg-border);
|
|
610
|
+
border-top: 2px solid var(--table-agg-border, var(--table-agg-border-default));
|
|
611
611
|
font-weight: 600;
|
|
612
|
-
font-size: var(--table-agg-size);
|
|
613
|
-
color: var(--table-fg-secondary);
|
|
612
|
+
font-size: var(--table-agg-size, var(--table-agg-size-default));
|
|
613
|
+
color: var(--table-fg-secondary, var(--table-fg-secondary-default));
|
|
614
614
|
}
|
|
615
615
|
|
|
616
616
|
[data-agg-row] > [role="gridcell"] {
|
|
617
|
-
padding: var(--table-agg-py) var(--table-agg-px);
|
|
617
|
+
padding: var(--table-agg-py, var(--table-agg-py-default)) var(--table-agg-px, var(--table-agg-px-default));
|
|
618
618
|
}
|
|
619
619
|
}
|
|
@@ -98,7 +98,7 @@ export class UITable extends UIElement {
|
|
|
98
98
|
loading: boolean;
|
|
99
99
|
/** Rows per page. 0 = show all rows without pagination. When > 0, renders a pagination bar below the table. */
|
|
100
100
|
paginate: number;
|
|
101
|
-
/**
|
|
101
|
+
/** Visual-only passthrough — applies `<table-ui>`'s chrome reset (background / border / border-radius all transparent) AND short-circuits the data lifecycle entirely. The consumer owns the body shape: no header injection, no row reconciliation from `.data`, no empty-state / loading overlays, no aggregation or pagination footers. Use raw when embedding `<table-ui>` inside surfaces that supply their own chrome (e.g. `<card-ui><section bleed>`), or when wrapping a consumer-authored native `<table>` for design-token styling without the framework's data semantics. Pre-v0.6.33 (FB-53 §2) `raw` was visual-only and the data lifecycle still ran — wrapping a `.data`-unset native table produced a phantom "No data" overlay. v0.6.33+ matches the documented contract. */
|
|
102
102
|
raw: boolean;
|
|
103
103
|
/** Global search/filter string. Filters visible rows across all columns using case-insensitive substring matching. Resets to page 1 on change. */
|
|
104
104
|
search: string;
|
|
@@ -283,3 +283,56 @@ describe('table-ui — FB-47 keyboard: Enter activates focused body cell', () =>
|
|
|
283
283
|
expect(cellClickFired).toBe(false);
|
|
284
284
|
});
|
|
285
285
|
});
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Raw mode: visual-only passthrough — consumer owns the body shape.
|
|
289
|
+
*
|
|
290
|
+
* Pre-v0.6.33 (FB-53 §2), `<table-ui raw>` only applied the CSS chrome
|
|
291
|
+
* reset (background/border/radius transparent) but the data lifecycle
|
|
292
|
+
* still ran. With `.data === []` (the natural state when wrapping a
|
|
293
|
+
* consumer-authored native <table>), `#renderOverlays` injected a
|
|
294
|
+
* [data-empty] "No data" placeholder above the consumer's content.
|
|
295
|
+
*
|
|
296
|
+
* v0.6.33 short-circuits `render()` at the top when `this.raw` is set:
|
|
297
|
+
* no header injection, no body reconciliation, no overlays, no
|
|
298
|
+
* aggregation, no pagination.
|
|
299
|
+
*/
|
|
300
|
+
describe('table-ui — raw mode passthrough (FB-53 §2)', () => {
|
|
301
|
+
beforeEach(() => { document.body.innerHTML = ''; });
|
|
302
|
+
|
|
303
|
+
it('raw mode does NOT inject [data-empty] overlay when .data is empty', async () => {
|
|
304
|
+
const el = mount('<table-ui raw><table><tr><td>foo</td></tr></table></table-ui>');
|
|
305
|
+
// No .data set → empty by default. Without the raw early-return,
|
|
306
|
+
// #renderOverlays would create the [data-empty] placeholder.
|
|
307
|
+
await raf();
|
|
308
|
+
expect(el.querySelector(':scope > [data-empty]')).toBeNull();
|
|
309
|
+
// Consumer's native <table> survives untouched.
|
|
310
|
+
expect(el.querySelector(':scope > table')).not.toBeNull();
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
it('raw mode does NOT inject [data-header] or [data-body] rowgroups', async () => {
|
|
314
|
+
const el = mount('<table-ui raw><table><tr><td>x</td></tr></table></table-ui>');
|
|
315
|
+
await raf();
|
|
316
|
+
expect(el.querySelector(':scope > [data-header]')).toBeNull();
|
|
317
|
+
expect(el.querySelector(':scope > [data-body]')).toBeNull();
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
it('raw mode preserves consumer markup even when .columns + .data are set', async () => {
|
|
321
|
+
const el = mount('<table-ui raw><table id="consumer"><tr><td>consumer-owned</td></tr></table></table-ui>');
|
|
322
|
+
el.columns = COLS;
|
|
323
|
+
el.data = ROWS;
|
|
324
|
+
await raf();
|
|
325
|
+
// The consumer's native <table> is still the only table-shaped child.
|
|
326
|
+
expect(el.querySelector('#consumer')).not.toBeNull();
|
|
327
|
+
expect(el.querySelectorAll(':scope > [role="rowgroup"]').length).toBe(0);
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
it('non-raw mode (default) still injects header + body rowgroups', async () => {
|
|
331
|
+
const el = mount('<table-ui></table-ui>');
|
|
332
|
+
el.columns = COLS;
|
|
333
|
+
el.data = ROWS;
|
|
334
|
+
await raf();
|
|
335
|
+
expect(el.querySelector(':scope > [data-header]')).not.toBeNull();
|
|
336
|
+
expect(el.querySelector(':scope > [data-body]')).not.toBeNull();
|
|
337
|
+
});
|
|
338
|
+
});
|