@adia-ai/web-components 0.8.41 → 0.8.43
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 +35 -0
- package/MIGRATION.md +240 -3
- package/USAGE.md +4 -4
- package/color/index.js +1 -1
- package/components/action-list/action-item.a2ui.json +7 -7
- package/components/action-list/action-item.yaml +21 -9
- package/components/action-list/action-list.class.js +13 -7
- package/components/action-list/action-list.d.ts +2 -2
- package/components/button/button.yaml +1 -1
- package/components/calendar-picker/calendar-picker.a2ui.json +1 -1
- package/components/calendar-picker/calendar-picker.class.js +2 -3
- package/components/calendar-picker/calendar-picker.css +16 -18
- package/components/calendar-picker/calendar-picker.yaml +2 -2
- package/components/card/card.css +3 -3
- package/components/chart/chart.a2ui.json +8 -8
- package/components/chart/chart.class.js +21 -19
- package/components/chart/chart.d.ts +6 -6
- package/components/chart/chart.yaml +16 -9
- package/components/chart-legend/chart-legend.a2ui.json +7 -11
- package/components/chart-legend/chart-legend.class.js +17 -8
- package/components/chart-legend/chart-legend.css +5 -2
- package/components/chart-legend/chart-legend.d.ts +2 -2
- package/components/chart-legend/chart-legend.yaml +12 -8
- package/components/check/check.css +9 -0
- package/components/{color-picker/color-picker.a2ui.json → color-area/color-area.a2ui.json} +15 -12
- package/components/{color-picker/color-picker.class.js → color-area/color-area.class.js} +10 -8
- package/components/color-area/color-area.css +185 -0
- package/components/color-area/color-area.d.ts +66 -0
- package/components/color-area/color-area.examples.md +19 -0
- package/components/color-area/color-area.js +17 -0
- package/components/{color-picker/color-picker.yaml → color-area/color-area.yaml} +17 -9
- package/components/color-input/color-input.a2ui.json +5 -5
- package/components/color-input/color-input.class.js +9 -6
- package/components/color-input/color-input.css +1 -1
- package/components/color-input/color-input.js +2 -2
- package/components/color-input/color-input.yaml +14 -12
- package/components/description-list/description-list.a2ui.json +1 -1
- package/components/description-list/description-list.css +1 -1
- package/components/description-list/description-list.d.ts +1 -1
- package/components/description-list/description-list.yaml +1 -1
- package/components/drilldown/drilldown.a2ui.json +3 -0
- package/components/drilldown/drilldown.css +8 -1
- package/components/drilldown/drilldown.yaml +2 -0
- package/components/field/field.a2ui.json +1 -1
- package/components/field/field.class.js +5 -2
- package/components/field/field.yaml +1 -1
- package/components/index.js +1 -4
- package/components/input/input.a2ui.json +4 -4
- package/components/input/input.class.js +8 -0
- package/components/input/input.css +6 -0
- package/components/input/input.yaml +11 -8
- package/components/integration-card/integration-card.examples.md +2 -1
- package/components/menu/menu-item.a2ui.json +7 -7
- package/components/menu/menu-item.yaml +20 -7
- package/components/menu/menu.class.js +13 -7
- package/components/menu/menu.d.ts +2 -2
- package/components/pane/pane.a2ui.json +11 -11
- package/components/pane/pane.class.js +8 -4
- package/components/pane/pane.css +15 -10
- package/components/pane/pane.d.ts +10 -9
- package/components/pane/pane.yaml +9 -7
- package/components/progress/progress.a2ui.json +1 -1
- package/components/progress/progress.class.js +2 -2
- package/components/progress/progress.d.ts +1 -1
- package/components/progress/progress.yaml +2 -2
- package/components/radio/radio.css +7 -0
- package/components/search/search.css +10 -1
- package/components/segment/segment.a2ui.json +1 -2
- package/components/segment/segment.css +10 -0
- package/components/segment/segment.yaml +1 -2
- package/components/segmented/segmented.a2ui.json +1 -3
- package/components/segmented/segmented.class.js +2 -2
- package/components/segmented/segmented.yaml +2 -4
- package/components/select/select.css +6 -0
- package/components/step-progress/step-progress.yaml +1 -1
- package/components/swatch/swatch.yaml +1 -1
- package/components/switch/switch.css +8 -0
- package/components/table-toolbar/table-toolbar.a2ui.json +42 -1
- package/components/table-toolbar/table-toolbar.class.js +166 -14
- package/components/table-toolbar/table-toolbar.css +46 -0
- package/components/table-toolbar/table-toolbar.d.ts +13 -1
- package/components/table-toolbar/table-toolbar.yaml +104 -14
- package/components/textarea/textarea.css +4 -0
- package/components/time-picker/time-picker.yaml +3 -2
- package/components/tree/tree.yaml +1 -1
- package/components/upload/upload.class.js +16 -0
- package/components/upload/upload.d.ts +7 -0
- package/components/upload/upload.yaml +7 -3
- package/core/icons.js +3 -1
- package/custom-elements.json +147 -468
- package/dist/host.min.css +1 -1
- package/dist/host.sheet.js +1 -1
- package/dist/theme-provider.min.js +1 -1
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +88 -85
- package/dist/web-components.sheet.js +1 -1
- package/index.d.ts +9 -13
- package/package.json +1 -1
- package/patterns/admin-shell/admin-shell.examples.html +2 -2
- package/patterns/chart-in-card/chart-in-card.examples.html +10 -10
- package/patterns/conversion-funnel/conversion-funnel.html +2 -2
- package/patterns/editor-shell/editor-shell.examples.html +3 -3
- package/patterns/form-system/form-system.examples.html +1 -1
- package/styles/colors/semantics/features.css +8 -1
- package/styles/components.css +1 -4
- package/traits/arrow-grid-nav/arrow-grid-nav.js +1 -1
- package/traits/resize-observer/resize-observer.js +1 -1
- package/components/color-picker/color-picker.css +0 -182
- package/components/color-picker/color-picker.d.ts +0 -99
- package/components/color-picker/color-picker.examples.md +0 -19
- package/components/color-picker/color-picker.js +0 -17
- package/components/datetime-picker/datetime-picker.a2ui.json +0 -256
- package/components/datetime-picker/datetime-picker.class.js +0 -58
- package/components/datetime-picker/datetime-picker.css +0 -11
- package/components/datetime-picker/datetime-picker.d.ts +0 -87
- package/components/datetime-picker/datetime-picker.examples.md +0 -25
- package/components/datetime-picker/datetime-picker.js +0 -17
- package/components/datetime-picker/datetime-picker.yaml +0 -254
- package/components/progress-row/progress-row.a2ui.json +0 -107
- package/components/progress-row/progress-row.class.js +0 -118
- package/components/progress-row/progress-row.css +0 -60
- package/components/progress-row/progress-row.d.ts +0 -24
- package/components/progress-row/progress-row.examples.md +0 -7
- package/components/progress-row/progress-row.js +0 -17
- package/components/progress-row/progress-row.yaml +0 -85
- package/components/toggle-group/toggle-group.a2ui.json +0 -148
- package/components/toggle-group/toggle-group.class.js +0 -195
- package/components/toggle-group/toggle-group.css +0 -127
- package/components/toggle-group/toggle-group.d.ts +0 -50
- package/components/toggle-group/toggle-group.examples.md +0 -33
- package/components/toggle-group/toggle-group.js +0 -18
- package/components/toggle-group/toggle-group.yaml +0 -135
- package/components/toggle-group/toggle-option.a2ui.json +0 -86
- package/components/toggle-group/toggle-option.yaml +0 -75
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
/* gh#1372, #1363 C3c — datetime-picker-ui
|
|
2
|
-
subclass
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<calendar-picker-ui precision="minute">. */
|
|
6
|
-
@scope (calendar-picker-ui, datetime-picker-ui) {
|
|
1
|
+
/* gh#1372, #1363 C3c — datetime-picker-ui was a thin UICalendarPicker
|
|
2
|
+
subclass folding datetime mode into this component's widened precision
|
|
3
|
+
axis; cut in 0.8.43 (gh#1617). calendar-picker-ui is the sole tag now. */
|
|
4
|
+
@scope (calendar-picker-ui) {
|
|
7
5
|
:where(:scope) {
|
|
8
6
|
/* ── Tokens ── */
|
|
9
7
|
|
|
@@ -192,7 +190,7 @@
|
|
|
192
190
|
/* ── Calendar popover (outside @scope — popover lives in top layer) ── */
|
|
193
191
|
/* Custom properties inherit from the host, so --calendar-picker-* tokens are available here. */
|
|
194
192
|
|
|
195
|
-
|
|
193
|
+
calendar-picker-ui [slot="popover"] {
|
|
196
194
|
margin: 0;
|
|
197
195
|
padding: var(--calendar-picker-popover-padding);
|
|
198
196
|
border: 1px solid var(--calendar-picker-popover-border);
|
|
@@ -211,7 +209,7 @@
|
|
|
211
209
|
translate var(--a-duration-fast) var(--a-easing-out);
|
|
212
210
|
}
|
|
213
211
|
|
|
214
|
-
|
|
212
|
+
calendar-picker-ui [slot="popover"]:popover-open {
|
|
215
213
|
@starting-style {
|
|
216
214
|
opacity: 0;
|
|
217
215
|
translate: 0 -4px;
|
|
@@ -219,7 +217,7 @@
|
|
|
219
217
|
}
|
|
220
218
|
|
|
221
219
|
@media (prefers-reduced-motion: reduce) {
|
|
222
|
-
|
|
220
|
+
calendar-picker-ui [slot="popover"] { transition: none; }
|
|
223
221
|
}
|
|
224
222
|
|
|
225
223
|
/* ── Substrate grid (gh#1371, #1363 C3a) ──
|
|
@@ -231,7 +229,7 @@
|
|
|
231
229
|
so an existing consumer override keeps working unchanged (non-breaking —
|
|
232
230
|
ADR-0055 precedent) and mirrors date-range-picker's own
|
|
233
231
|
`date-range-picker-ui calendar-grid-ui { --calendar-grid-*: … }` pattern. */
|
|
234
|
-
|
|
232
|
+
calendar-picker-ui calendar-grid-ui {
|
|
235
233
|
--calendar-grid-header-gap: var(--calendar-picker-header-gap);
|
|
236
234
|
--calendar-grid-header-mb: var(--calendar-picker-header-mb);
|
|
237
235
|
--calendar-grid-title-fg: var(--calendar-picker-title-fg);
|
|
@@ -281,11 +279,11 @@
|
|
|
281
279
|
single-pane (date-only, default) popover keeps its original fixed-width
|
|
282
280
|
block layout unchanged. Ported near-verbatim from the former
|
|
283
281
|
datetime-picker.css. */
|
|
284
|
-
|
|
282
|
+
calendar-picker-ui [slot="popover"]:has([data-time-pane]) {
|
|
285
283
|
width: auto;
|
|
286
284
|
}
|
|
287
285
|
|
|
288
|
-
|
|
286
|
+
calendar-picker-ui [slot="popover"]:has([data-time-pane]):popover-open {
|
|
289
287
|
display: grid;
|
|
290
288
|
grid-template-columns: auto auto auto;
|
|
291
289
|
grid-template-areas: "cal divider time";
|
|
@@ -293,22 +291,22 @@
|
|
|
293
291
|
align-items: start;
|
|
294
292
|
}
|
|
295
293
|
|
|
296
|
-
|
|
294
|
+
calendar-picker-ui [slot="popover"] > calendar-grid-ui {
|
|
297
295
|
grid-area: cal;
|
|
298
296
|
}
|
|
299
|
-
|
|
297
|
+
calendar-picker-ui [slot="popover"] > [data-pane-divider] {
|
|
300
298
|
grid-area: divider;
|
|
301
299
|
align-self: stretch;
|
|
302
300
|
--divider-color: var(--calendar-picker-divider);
|
|
303
301
|
}
|
|
304
|
-
|
|
302
|
+
calendar-picker-ui [slot="popover"] > [data-time-pane] {
|
|
305
303
|
grid-area: time;
|
|
306
304
|
align-self: start;
|
|
307
305
|
}
|
|
308
306
|
|
|
309
307
|
/* Footer area (consumer-supplied [slot="footer"]) — spans all columns
|
|
310
308
|
under the pane(s), in either single- or two-pane mode. */
|
|
311
|
-
|
|
309
|
+
calendar-picker-ui [slot="popover"] [slot="footer"] {
|
|
312
310
|
grid-column: 1 / -1;
|
|
313
311
|
display: flex;
|
|
314
312
|
justify-content: flex-end;
|
|
@@ -320,14 +318,14 @@
|
|
|
320
318
|
/* Narrow surfaces (e.g. inside a card on mobile): stack the panes
|
|
321
319
|
vertically and replace the vertical divider with a horizontal rule. */
|
|
322
320
|
@container (max-width: 32rem) {
|
|
323
|
-
|
|
321
|
+
calendar-picker-ui [slot="popover"]:has([data-time-pane]):popover-open {
|
|
324
322
|
grid-template-columns: 1fr;
|
|
325
323
|
grid-template-areas:
|
|
326
324
|
"cal"
|
|
327
325
|
"divider"
|
|
328
326
|
"time";
|
|
329
327
|
}
|
|
330
|
-
|
|
328
|
+
calendar-picker-ui [slot="popover"] > [data-pane-divider] {
|
|
331
329
|
align-self: auto;
|
|
332
330
|
}
|
|
333
331
|
}
|
|
@@ -13,8 +13,8 @@ description: >-
|
|
|
13
13
|
single-datetime input in forms; for date ranges use
|
|
14
14
|
<date-range-picker-ui> instead of composing two calendar-picker
|
|
15
15
|
instances. gh#1372 (#1363 C3c) folded <datetime-picker-ui>'s surface into
|
|
16
|
-
this widened `precision` axis —
|
|
17
|
-
|
|
16
|
+
this widened `precision` axis — that thin alias component was cut in
|
|
17
|
+
0.8.43 (gh#1617); this is the sole tag now.
|
|
18
18
|
# Per ADR-0027 — primitives that programmatically create other primitives
|
|
19
19
|
# in their render() do NOT auto-import them. Consumer (or demo shell) must
|
|
20
20
|
# explicitly import each composed primitive.
|
package/components/card/card.css
CHANGED
|
@@ -431,7 +431,7 @@
|
|
|
431
431
|
only collision-free for the bare-marks case: a sparkline (its
|
|
432
432
|
renderer never emits axis ticks, gridlines, value labels, or a
|
|
433
433
|
legend — chart.class.js #renderSparkline), or any other chart-ui
|
|
434
|
-
type with BOTH [
|
|
434
|
+
type with BOTH [no-grid] and [no-values] set (the author opted
|
|
435
435
|
out of every text element). A chart that still draws guides or
|
|
436
436
|
value text — or is paired with a <chart-legend-ui> — needs
|
|
437
437
|
clearance from the card's frame, or that text collides with the
|
|
@@ -444,8 +444,8 @@
|
|
|
444
444
|
section below, wired via chart-legend-ui[for="<chart id>"], which
|
|
445
445
|
never enters this selector (see chart-in-card.examples.html's
|
|
446
446
|
"Full-bleed chart + legend band" example). */
|
|
447
|
-
& > section[bleed]:has(> chart-ui:not([type="sparkline"]):not([
|
|
448
|
-
& > section[bleed]:has(> chart-ui:not([type="sparkline"]):not([
|
|
447
|
+
& > section[bleed]:has(> chart-ui:not([type="sparkline"]):not([no-grid])),
|
|
448
|
+
& > section[bleed]:has(> chart-ui:not([type="sparkline"]):not([no-values])),
|
|
449
449
|
& > section[bleed]:has(> chart-legend-ui) {
|
|
450
450
|
margin: var(--card-inset);
|
|
451
451
|
padding: 0;
|
|
@@ -87,23 +87,23 @@
|
|
|
87
87
|
],
|
|
88
88
|
"default": "abbr"
|
|
89
89
|
},
|
|
90
|
-
"
|
|
91
|
-
"description": "
|
|
90
|
+
"loading": {
|
|
91
|
+
"description": "Show a skeleton placeholder instead of the chart body. Set to true while data is being fetched; clear once data arrives. Preserves the element's aspect-ratio dimensions so the skeleton occupies the same space the chart will fill. Parity with stat-ui[loading] and table-ui[loading] (§FB-12, v0.6.27).",
|
|
92
92
|
"type": "boolean",
|
|
93
93
|
"default": false
|
|
94
94
|
},
|
|
95
|
-
"
|
|
96
|
-
"description": "
|
|
95
|
+
"noAverage": {
|
|
96
|
+
"description": "When true, suppress the overlaid average line. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideAverage` dual-read shim was cut in 0.8.43 (gh#1617).",
|
|
97
97
|
"type": "boolean",
|
|
98
98
|
"default": false
|
|
99
99
|
},
|
|
100
|
-
"
|
|
101
|
-
"description": "Hide
|
|
100
|
+
"noGrid": {
|
|
101
|
+
"description": "Hide gridlines. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideGrid` dual-read shim was cut in 0.8.43 (gh#1617).",
|
|
102
102
|
"type": "boolean",
|
|
103
103
|
"default": false
|
|
104
104
|
},
|
|
105
|
-
"
|
|
106
|
-
"description": "
|
|
105
|
+
"noValues": {
|
|
106
|
+
"description": "Hide value labels. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideValues` dual-read shim was cut in 0.8.43 (gh#1617).",
|
|
107
107
|
"type": "boolean",
|
|
108
108
|
"default": false
|
|
109
109
|
},
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
* type — chart type (default: 'bar')
|
|
22
22
|
* x — key for X-axis data
|
|
23
23
|
* y — key(s) for Y-axis, comma-separated for multi-series
|
|
24
|
-
*
|
|
24
|
+
* no-average — suppress the overlaid average line on bar/line (default: false — line shown).
|
|
25
25
|
* color — accent/success/warning/danger/info
|
|
26
|
-
*
|
|
27
|
-
*
|
|
26
|
+
* no-grid — hide gridlines.
|
|
27
|
+
* no-values — hide value labels.
|
|
28
28
|
* corner-radius — bar corner radius in px (default: null, falls back to --a-radius)
|
|
29
29
|
* dots — line/multi-line marker visibility: all|none|hover|last (default: all)
|
|
30
30
|
* series-emphasis — multi-line: series key that keeps full area+line treatment; others render line-only, dimmed
|
|
@@ -215,10 +215,12 @@ export class UIChart extends UIElement {
|
|
|
215
215
|
type: { type: String, default: 'bar', reflect: true },
|
|
216
216
|
x: { type: String, default: '', reflect: true },
|
|
217
217
|
y: { type: String, default: '', reflect: true },
|
|
218
|
-
|
|
218
|
+
// ADR-0063 (gh#1563) — `no-*` is the ratified negation prefix; the
|
|
219
|
+
// deprecated `hide-*` dual-read shim was cut in 0.8.43 (gh#1617).
|
|
220
|
+
noAverage: { type: Boolean, default: false, reflect: true, attribute: 'no-average' },
|
|
219
221
|
color: { type: String, default: '', reflect: true },
|
|
220
|
-
|
|
221
|
-
|
|
222
|
+
noGrid: { type: Boolean, default: false, reflect: true, attribute: 'no-grid' },
|
|
223
|
+
noValues: { type: Boolean, default: false, reflect: true, attribute: 'no-values' },
|
|
222
224
|
cornerRadius: { type: Number, default: null, reflect: true, attribute: 'corner-radius' },
|
|
223
225
|
smooth: { type: Number, default: 0.4, reflect: true },
|
|
224
226
|
size: { type: String, default: '', reflect: true },
|
|
@@ -439,13 +441,13 @@ export class UIChart extends UIElement {
|
|
|
439
441
|
// When the grid is hidden (in-card sparkline-like use) we can zero
|
|
440
442
|
// out the Y-axis label gutter entirely — otherwise the plot area
|
|
441
443
|
// collapses at small sizes.
|
|
442
|
-
const
|
|
443
|
-
const yLabelW =
|
|
444
|
+
const noGrid = this.noGrid;
|
|
445
|
+
const yLabelW = noGrid ? 0 : fontSize * 3.2;
|
|
444
446
|
const hasXLabels = !!this.x;
|
|
445
447
|
const pad = {
|
|
446
|
-
top:
|
|
447
|
-
right:
|
|
448
|
-
bottom: !hasXLabels ||
|
|
448
|
+
top: noGrid ? 2 : fontSize * 1.6,
|
|
449
|
+
right: noGrid ? 2 : fontSize * 1.2,
|
|
450
|
+
bottom: !hasXLabels || noGrid ? 2 : fontSize * 2.2,
|
|
449
451
|
left: yLabelW,
|
|
450
452
|
};
|
|
451
453
|
|
|
@@ -1035,11 +1037,11 @@ export class UIChart extends UIElement {
|
|
|
1035
1037
|
displayTicks = ticks.filter((_, i) => i % 2 === 0 || i === ticks.length - 1);
|
|
1036
1038
|
}
|
|
1037
1039
|
|
|
1038
|
-
//
|
|
1039
|
-
// want labels without gridlines can omit
|
|
1040
|
+
// noGrid suppresses both gridlines AND axis labels — callers who
|
|
1041
|
+
// want labels without gridlines can omit no-grid and rely on token
|
|
1040
1042
|
// overrides to make gridlines transparent. This keeps compact in-card
|
|
1041
1043
|
// charts visually clean.
|
|
1042
|
-
if (!this.
|
|
1044
|
+
if (!this.noGrid) {
|
|
1043
1045
|
const tickRange = ticks[ticks.length - 1] - ticks[0];
|
|
1044
1046
|
const safeRange = tickRange || 1; // Prevent division by zero
|
|
1045
1047
|
for (const t of displayTicks) {
|
|
@@ -1094,8 +1096,8 @@ export class UIChart extends UIElement {
|
|
|
1094
1096
|
let svg = this.#gridAndAxes(width, height, ticks, labels, pad, dims);
|
|
1095
1097
|
|
|
1096
1098
|
// At sm auto-hide value labels (they overlap at narrow widths).
|
|
1097
|
-
const showValues = !this.
|
|
1098
|
-
const showAverage = !this.
|
|
1099
|
+
const showValues = !this.noValues && dims.sizeClass !== 'sm';
|
|
1100
|
+
const showAverage = !this.noAverage && vals.length > 1 && dims.sizeClass !== 'sm' && !this.noGrid;
|
|
1099
1101
|
|
|
1100
1102
|
for (let i = 0; i < data.length; i++) {
|
|
1101
1103
|
const v = vals[i];
|
|
@@ -1155,8 +1157,8 @@ export class UIChart extends UIElement {
|
|
|
1155
1157
|
const isSm = dims.sizeClass === 'sm';
|
|
1156
1158
|
const dotR = isSm ? 1.5 : 3;
|
|
1157
1159
|
const hitR = Math.max(dotR, 10); // invisible hit-target for tooltip
|
|
1158
|
-
const showValues = !this.
|
|
1159
|
-
const showAverage = !this.
|
|
1160
|
+
const showValues = !this.noValues && !isSm;
|
|
1161
|
+
const showAverage = !this.noAverage && vals.length > 1 && !isSm && !this.noGrid;
|
|
1160
1162
|
|
|
1161
1163
|
points.forEach((p, i) => {
|
|
1162
1164
|
if (this.#shouldRenderDot(i, points.length)) {
|
|
@@ -2108,7 +2110,7 @@ export class UIChart extends UIElement {
|
|
|
2108
2110
|
const by = pad.top + plotH - barH;
|
|
2109
2111
|
svg += `<path${this.#seriesFill(k % 10, keys[k])}${tip({ label: labels[i], value: v, series: keys[k] })} d="${topRoundedBarPath(bx, by, subBarW, barH, this.#resolveRadius())}"/>`;
|
|
2110
2112
|
|
|
2111
|
-
if (!this.
|
|
2113
|
+
if (!this.noValues) {
|
|
2112
2114
|
svg += `<text data-value x="${bx + subBarW / 2}" y="${by - 4}" text-anchor="middle" font-size="${dims.valueSize}">${this.#fmtValue(v)}</text>`;
|
|
2113
2115
|
}
|
|
2114
2116
|
}
|
|
@@ -30,14 +30,14 @@ export class UIChart extends UIElement {
|
|
|
30
30
|
dots: 'all' | 'none' | 'hover' | 'last';
|
|
31
31
|
/** Number-format mode applied to axis labels + value overlays + donut total + gauge value + treemap value + funnel value + internal tooltip. `abbr` is the legacy 1.2K / 3M format; `decimal` fixes 2 decimals; `currency` prefixes via `--chart-currency-prefix` token (default "$"); `percent` multiplies × 100 and adds a % suffix. */
|
|
32
32
|
format: 'abbr' | 'decimal' | 'currency' | 'percent';
|
|
33
|
-
/** When true, suppress the overlaid average line */
|
|
34
|
-
hideAverage: boolean;
|
|
35
|
-
/** Hide gridlines */
|
|
36
|
-
hideGrid: boolean;
|
|
37
|
-
/** Hide value labels */
|
|
38
|
-
hideValues: boolean;
|
|
39
33
|
/** Show a skeleton placeholder instead of the chart body. Set to true while data is being fetched; clear once data arrives. Preserves the element's aspect-ratio dimensions so the skeleton occupies the same space the chart will fill. Parity with stat-ui[loading] and table-ui[loading] (§FB-12, v0.6.27). */
|
|
40
34
|
loading: boolean;
|
|
35
|
+
/** When true, suppress the overlaid average line. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideAverage` dual-read shim was cut in 0.8.43 (gh#1617). */
|
|
36
|
+
noAverage: boolean;
|
|
37
|
+
/** Hide gridlines. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideGrid` dual-read shim was cut in 0.8.43 (gh#1617). */
|
|
38
|
+
noGrid: boolean;
|
|
39
|
+
/** Hide value labels. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideValues` dual-read shim was cut in 0.8.43 (gh#1617). */
|
|
40
|
+
noValues: boolean;
|
|
41
41
|
/** Multi-line only. Names one series key (matching a `y` key) to render at full strength — area fill + full-opacity line. Every other series drops its area fill and renders line-only at --chart-deemphasized-opacity. Empty (default) applies full treatment to every series, unchanged from pre-gh#561 behavior. */
|
|
42
42
|
seriesEmphasis: string;
|
|
43
43
|
/** Chart size */
|
|
@@ -61,21 +61,28 @@ props:
|
|
|
61
61
|
- warning
|
|
62
62
|
- danger
|
|
63
63
|
- info
|
|
64
|
-
|
|
65
|
-
description:
|
|
64
|
+
noAverage:
|
|
65
|
+
description: >-
|
|
66
|
+
When true, suppress the overlaid average line. Canonical spelling
|
|
67
|
+
(ADR-0063, gh#1563) — the deprecated `hideAverage` dual-read shim
|
|
68
|
+
was cut in 0.8.43 (gh#1617).
|
|
66
69
|
type: boolean
|
|
67
70
|
default: false
|
|
68
|
-
attribute:
|
|
69
|
-
|
|
70
|
-
description:
|
|
71
|
+
attribute: no-average
|
|
72
|
+
noGrid:
|
|
73
|
+
description: >-
|
|
74
|
+
Hide gridlines. Canonical spelling (ADR-0063, gh#1563) — the
|
|
75
|
+
deprecated `hideGrid` dual-read shim was cut in 0.8.43 (gh#1617).
|
|
71
76
|
type: boolean
|
|
72
77
|
default: false
|
|
73
|
-
attribute:
|
|
74
|
-
|
|
75
|
-
description:
|
|
78
|
+
attribute: no-grid
|
|
79
|
+
noValues:
|
|
80
|
+
description: >-
|
|
81
|
+
Hide value labels. Canonical spelling (ADR-0063, gh#1563) — the
|
|
82
|
+
deprecated `hideValues` dual-read shim was cut in 0.8.43 (gh#1617).
|
|
76
83
|
type: boolean
|
|
77
84
|
default: false
|
|
78
|
-
attribute:
|
|
85
|
+
attribute: no-values
|
|
79
86
|
cornerRadius:
|
|
80
87
|
description: Bar corner radius in px (null = let CSS tokens decide)
|
|
81
88
|
type: number
|
|
@@ -26,6 +26,11 @@
|
|
|
26
26
|
"type": "string",
|
|
27
27
|
"default": ""
|
|
28
28
|
},
|
|
29
|
+
"interactive": {
|
|
30
|
+
"description": "Canonical opt-in spelling (ADR-0063, gh#1563) — the deprecated `static` opt-out alias was cut in 0.8.43 (gh#1617). Rows are interactive <button>-role badges by default — this default stays `true` (deliberately NOT flipped yet; the 0.9.0 cut inverts it to `false` after a full consumer scan of every `<chart-legend-ui>` tag per the ADR).",
|
|
31
|
+
"type": "boolean",
|
|
32
|
+
"default": true
|
|
33
|
+
},
|
|
29
34
|
"onToggle": {
|
|
30
35
|
"description": "Series-toggle mode emitted via the `toggle` event. `hide` removes the series from the render; `opacity` fades it. Wired via [for] on chart-ui.",
|
|
31
36
|
"type": "string",
|
|
@@ -56,11 +61,6 @@
|
|
|
56
61
|
"dashed"
|
|
57
62
|
],
|
|
58
63
|
"default": "dot"
|
|
59
|
-
},
|
|
60
|
-
"static": {
|
|
61
|
-
"description": "When set, rows are non-interactive <span>s (no click, no toggle).",
|
|
62
|
-
"type": "boolean",
|
|
63
|
-
"default": false
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"required": [
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
],
|
|
77
77
|
"events": {
|
|
78
78
|
"toggle": {
|
|
79
|
-
"description": "Fires on row click
|
|
79
|
+
"description": "Fires on row click when interactive. Detail: {key, active, mode}. `active` is the new state (true=visible). Consumers (or chart-ui via [for]) wire this to series visibility.",
|
|
80
80
|
"detail": {
|
|
81
81
|
"active": {
|
|
82
82
|
"description": "New visibility state (true = visible).",
|
|
@@ -133,12 +133,8 @@
|
|
|
133
133
|
"name": "idle"
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
|
-
"description": "Rows are <button>s.
|
|
136
|
+
"description": "Rows are <button>s (the default). When false, rows are <span>s — no click handler, no toggle affordance.",
|
|
137
137
|
"name": "interactive"
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
"description": "Rows are <span>s. No click handler, no toggle affordance.",
|
|
141
|
-
"name": "static"
|
|
142
138
|
}
|
|
143
139
|
],
|
|
144
140
|
"status": "stable",
|
|
@@ -35,16 +35,18 @@
|
|
|
35
35
|
* position — top | bottom | left | right. Layout hint; actual placement
|
|
36
36
|
* is where the element is placed in the DOM. Drives
|
|
37
37
|
* flex-direction.
|
|
38
|
-
*
|
|
39
|
-
* role
|
|
40
|
-
*
|
|
38
|
+
* interactive — canonical opt-in spelling (ADR-0063, gh#1563). Rows
|
|
39
|
+
* default interactive (`role="button"` badges that toggle
|
|
40
|
+
* on click + Enter/Space) until the 0.9.0 default-inversion
|
|
41
|
+
* cut. The deprecated `static` opt-out alias was cut in
|
|
42
|
+
* 0.8.43 (gh#1617).
|
|
41
43
|
* on-toggle — hide | opacity. Default hide. Escape hatch per OD-CHART-09.
|
|
42
44
|
* Reported via the `toggle` event detail; chart-ui reads it
|
|
43
45
|
* when wired via [for].
|
|
44
46
|
*
|
|
45
47
|
* Events:
|
|
46
48
|
* toggle — detail: {key, active, mode}. Fires on row click when
|
|
47
|
-
*
|
|
49
|
+
* interactive. `active` is the new state (true=visible).
|
|
48
50
|
*/
|
|
49
51
|
|
|
50
52
|
import { UIElement } from '../../core/element.js';
|
|
@@ -58,7 +60,14 @@ export class UIChartLegend extends UIElement {
|
|
|
58
60
|
items: { type: String, default: '', reflect: false },
|
|
59
61
|
shape: { type: String, default: 'dot', reflect: true },
|
|
60
62
|
position: { type: String, default: 'bottom', reflect: true },
|
|
61
|
-
|
|
63
|
+
// ADR-0063 (gh#1563) — `interactive` (opt-in) is the canonical
|
|
64
|
+
// positively-named boolean; the deprecated `static` opt-out alias was
|
|
65
|
+
// cut in 0.8.43 (gh#1617). Deliberately keeps its `true` default:
|
|
66
|
+
// the real default-inversion (interactive defaulting to `false`) is
|
|
67
|
+
// still scheduled for 0.9.0 per the ADR's own consumer-scan
|
|
68
|
+
// requirement (every `<chart-legend-ui>` tag needs review first) —
|
|
69
|
+
// out of this ticket's scope, which only cuts the `static` alias.
|
|
70
|
+
interactive: { type: Boolean, default: true, reflect: true },
|
|
62
71
|
onToggle: { type: String, default: 'hide', reflect: true, attribute: 'on-toggle' },
|
|
63
72
|
};
|
|
64
73
|
|
|
@@ -152,11 +161,11 @@ export class UIChartLegend extends UIElement {
|
|
|
152
161
|
keyboard-operable without a wrapping <button>. */
|
|
153
162
|
const row = document.createElement('badge-ui');
|
|
154
163
|
row.setAttribute('data-row', '');
|
|
155
|
-
row.setAttribute('role', this.
|
|
164
|
+
row.setAttribute('role', this.interactive ? 'button' : 'listitem');
|
|
156
165
|
row.setAttribute('text', label);
|
|
157
166
|
if (key) row.setAttribute('data-key', key);
|
|
158
167
|
if (active) row.setAttribute('data-active', '');
|
|
159
|
-
if (
|
|
168
|
+
if (this.interactive) {
|
|
160
169
|
row.setAttribute('tabindex', '0');
|
|
161
170
|
row.setAttribute('aria-pressed', active ? 'true' : 'false');
|
|
162
171
|
}
|
|
@@ -181,7 +190,7 @@ export class UIChartLegend extends UIElement {
|
|
|
181
190
|
swatch.style.setProperty('--swatch-color', swatchColor);
|
|
182
191
|
row.appendChild(swatch);
|
|
183
192
|
|
|
184
|
-
if (
|
|
193
|
+
if (this.interactive) {
|
|
185
194
|
row.addEventListener('click', (e) => this.#onRowToggle(e, key));
|
|
186
195
|
row.addEventListener('keydown', (e) => {
|
|
187
196
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
@@ -66,8 +66,11 @@
|
|
|
66
66
|
color var(--a-duration-fast) var(--a-easing);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
/*
|
|
70
|
-
|
|
69
|
+
/* Non-interactive rows. ADR-0063 (gh#1563): `:not([interactive])` covers
|
|
70
|
+
both today's opt-out spelling (`[static]` mirrors onto `[interactive]`
|
|
71
|
+
being removed, in chart-legend.class.js's connected()) and the eventual
|
|
72
|
+
0.9.0 default-inversion, in one selector. */
|
|
73
|
+
:scope:not([interactive]) badge-ui[data-row] {
|
|
71
74
|
cursor: default;
|
|
72
75
|
}
|
|
73
76
|
|
|
@@ -28,14 +28,14 @@ export class UIChartLegend extends UIElement {
|
|
|
28
28
|
items: string;
|
|
29
29
|
/** id-ref of a chart-ui / heatmap-ui to mirror series from. */
|
|
30
30
|
for: string;
|
|
31
|
+
/** Canonical opt-in spelling (ADR-0063, gh#1563) — the deprecated `static` opt-out alias was cut in 0.8.43 (gh#1617). Rows are interactive <button>-role badges by default — this default stays `true` (deliberately NOT flipped yet; the 0.9.0 cut inverts it to `false` after a full consumer scan of every `<chart-legend-ui>` tag per the ADR). */
|
|
32
|
+
interactive: boolean;
|
|
31
33
|
/** Series-toggle mode emitted via the `toggle` event. `hide` removes the series from the render; `opacity` fades it. Wired via [for] on chart-ui. */
|
|
32
34
|
onToggle: 'hide' | 'opacity';
|
|
33
35
|
/** Layout hint — drives flex-direction. Actual placement follows DOM order. */
|
|
34
36
|
position: 'top' | 'bottom' | 'left' | 'right';
|
|
35
37
|
/** Swatch shape. Maps to badge-ui's icon for dot/square variants. */
|
|
36
38
|
shape: 'dot' | 'square' | 'line' | 'dashed';
|
|
37
|
-
/** When set, rows are non-interactive <span>s (no click, no toggle). */
|
|
38
|
-
static: boolean;
|
|
39
39
|
|
|
40
40
|
addEventListener(type: 'toggle', listener: (ev: ChartLegendToggleEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
|
|
41
41
|
addEventListener<K extends keyof HTMLElementEventMap>(
|
|
@@ -47,10 +47,16 @@ props:
|
|
|
47
47
|
- left
|
|
48
48
|
- right
|
|
49
49
|
reflect: true
|
|
50
|
-
|
|
51
|
-
description:
|
|
50
|
+
interactive:
|
|
51
|
+
description: >-
|
|
52
|
+
Canonical opt-in spelling (ADR-0063, gh#1563) — the deprecated
|
|
53
|
+
`static` opt-out alias was cut in 0.8.43 (gh#1617). Rows are
|
|
54
|
+
interactive <button>-role badges by default — this default stays
|
|
55
|
+
`true` (deliberately NOT flipped yet; the 0.9.0 cut inverts it to
|
|
56
|
+
`false` after a full consumer scan of every `<chart-legend-ui>` tag
|
|
57
|
+
per the ADR).
|
|
52
58
|
type: boolean
|
|
53
|
-
default:
|
|
59
|
+
default: true
|
|
54
60
|
reflect: true
|
|
55
61
|
onToggle:
|
|
56
62
|
description: >-
|
|
@@ -66,7 +72,7 @@ props:
|
|
|
66
72
|
events:
|
|
67
73
|
toggle:
|
|
68
74
|
description: >-
|
|
69
|
-
Fires on row click
|
|
75
|
+
Fires on row click when interactive. Detail: {key, active, mode}. `active` is
|
|
70
76
|
the new state (true=visible). Consumers (or chart-ui via [for]) wire
|
|
71
77
|
this to series visibility.
|
|
72
78
|
detail:
|
|
@@ -90,9 +96,7 @@ states:
|
|
|
90
96
|
- name: idle
|
|
91
97
|
description: Default, ready for interaction.
|
|
92
98
|
- name: interactive
|
|
93
|
-
description: Rows are <button>s.
|
|
94
|
-
- name: static
|
|
95
|
-
description: Rows are <span>s. No click handler, no toggle affordance.
|
|
99
|
+
description: Rows are <button>s (the default). When false, rows are <span>s — no click handler, no toggle affordance.
|
|
96
100
|
traits: []
|
|
97
101
|
tokens: {}
|
|
98
102
|
a2ui:
|
|
@@ -101,7 +105,7 @@ a2ui:
|
|
|
101
105
|
reason: 'Legend pattern.'
|
|
102
106
|
- rule: 'Pairs with <chart-ui> via [for] id-ref (auto-bidirectional series toggling) or via items= for standalone use.'
|
|
103
107
|
reason: 'Composition contract.'
|
|
104
|
-
- rule: 'position attribute (top|bottom|left|right) places legend relative to its chart;
|
|
108
|
+
- rule: 'position attribute (top|bottom|left|right) places legend relative to its chart; interactive="false" disables interactivity.'
|
|
105
109
|
reason: 'Layout + interaction knobs.'
|
|
106
110
|
anti_patterns: []
|
|
107
111
|
examples:
|
|
@@ -17,6 +17,14 @@ check-ui[indeterminate] [slot="box"] {
|
|
|
17
17
|
background: var(--check-bg-checked);
|
|
18
18
|
border-color: var(--check-border-checked);
|
|
19
19
|
}
|
|
20
|
+
/* gh#1596 — a checked/indeterminate box kept its full primary fill when
|
|
21
|
+
disabled (only the label fg dimmed); higher specificity (2 attrs) than
|
|
22
|
+
the rule above wins without reordering. */
|
|
23
|
+
check-ui[checked][disabled] [slot="box"],
|
|
24
|
+
check-ui[indeterminate][disabled] [slot="box"] {
|
|
25
|
+
background: var(--check-bg-checked-disabled);
|
|
26
|
+
border-color: var(--check-bg-checked-disabled);
|
|
27
|
+
}
|
|
20
28
|
check-ui[checked] {
|
|
21
29
|
--_icon-w: calc(var(--check-size) * 0.3);
|
|
22
30
|
--_icon-h: calc(var(--check-size) * 0.55);
|
|
@@ -61,6 +69,7 @@ check-ui[indeterminate] {
|
|
|
61
69
|
|
|
62
70
|
/* ── State: disabled ── */
|
|
63
71
|
--check-fg-disabled: var(--a-ui-text-disabled);
|
|
72
|
+
--check-bg-checked-disabled: var(--a-ui-bg-disabled);
|
|
64
73
|
|
|
65
74
|
/* ── Check icon (CSS border trick, no SVG) ── */
|
|
66
75
|
--_icon-w: 0;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://adiaui.dev/a2ui/v0_9/components/
|
|
4
|
-
"title": "
|
|
5
|
-
"description": "OKLCH-native color picker with 2D area and H/C/L sliders. Form-associated input emitting OKLCH color strings; canonical color authoring surface in the AdiaUI token system. Use for color input in design tools or theming UIs; for simple color swatches use <swatch-ui> or <color-input-ui> instead.",
|
|
3
|
+
"$id": "https://adiaui.dev/a2ui/v0_9/components/ColorArea.json",
|
|
4
|
+
"title": "ColorArea",
|
|
5
|
+
"description": "OKLCH-native color picker with 2D area and H/C/L sliders. Form-associated input emitting OKLCH color strings; canonical color authoring surface in the AdiaUI token system. Use for color input in design tools or theming UIs; for simple color swatches use <swatch-ui> or <color-input-ui> instead. Renamed from `<color-picker-ui>` (ADR-0063, gh#1563 — `-picker` is reserved for the outer trigger + popover composite shape; this is the inline substrate, mirroring <calendar-grid-ui>'s naming precedent). `<color-picker-ui>` was cut in 0.8.43 (gh#1617) — this is the sole tag now.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"default": "NaN"
|
|
20
20
|
},
|
|
21
21
|
"component": {
|
|
22
|
-
"const": "
|
|
22
|
+
"const": "ColorArea"
|
|
23
23
|
},
|
|
24
24
|
"disabled": {
|
|
25
25
|
"description": "Disables all interaction",
|
|
@@ -96,22 +96,24 @@
|
|
|
96
96
|
"examples": [
|
|
97
97
|
{
|
|
98
98
|
"description": "Color picker card with a color picker component for selecting colors with swatches.",
|
|
99
|
-
"a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"cp\"\n ]\n },\n {\n \"id\": \"cp\",\n \"component\": \"
|
|
100
|
-
"name": "color-
|
|
99
|
+
"a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"cp\"\n ]\n },\n {\n \"id\": \"cp\",\n \"component\": \"ColorArea\",\n \"value\": \"#6366f1\"\n }\n]",
|
|
100
|
+
"name": "color-area-demo"
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
103
|
"description": "Color picker with swatch selection in a card.",
|
|
104
|
-
"a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"cp\"\n ]\n },\n {\n \"id\": \"cp\",\n \"component\": \"
|
|
105
|
-
"name": "color-
|
|
104
|
+
"a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"cp\"\n ]\n },\n {\n \"id\": \"cp\",\n \"component\": \"ColorArea\",\n \"value\": \"#3b82f6\"\n }\n]",
|
|
105
|
+
"name": "color-area-panel"
|
|
106
106
|
}
|
|
107
107
|
],
|
|
108
108
|
"keywords": [
|
|
109
|
+
"colorarea",
|
|
110
|
+
"color-area",
|
|
109
111
|
"colorpicker",
|
|
110
112
|
"color-picker",
|
|
111
113
|
"color",
|
|
112
114
|
"picker"
|
|
113
115
|
],
|
|
114
|
-
"name": "
|
|
116
|
+
"name": "UIColorArea",
|
|
115
117
|
"parts": {},
|
|
116
118
|
"related": [
|
|
117
119
|
"grid",
|
|
@@ -131,13 +133,14 @@
|
|
|
131
133
|
],
|
|
132
134
|
"status": "stable",
|
|
133
135
|
"synonyms": {
|
|
134
|
-
"color-
|
|
136
|
+
"color-area": [
|
|
135
137
|
"color-canvas",
|
|
136
138
|
"color-surface",
|
|
137
|
-
"swatch-picker"
|
|
139
|
+
"swatch-picker",
|
|
140
|
+
"color-picker"
|
|
138
141
|
]
|
|
139
142
|
},
|
|
140
|
-
"tag": "color-
|
|
143
|
+
"tag": "color-area-ui",
|
|
141
144
|
"tokens": {},
|
|
142
145
|
"traits": [],
|
|
143
146
|
"version": 1
|