@sentropic/design-system-vue 0.36.26 → 0.36.28

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.
@@ -24,6 +24,8 @@ export const StackedBarChart = defineComponent({
24
24
  label: { type: String, required: true },
25
25
  showLegend: { type: Boolean, default: true },
26
26
  dataLabels: { type: [Boolean, Object], default: undefined },
27
+ hiddenSeries: { type: Array, default: undefined },
28
+ onToggleSeries: { type: Function, default: undefined },
27
29
  class: { type: String, default: undefined },
28
30
  },
29
31
  setup(props, { attrs }) {
@@ -47,13 +49,16 @@ export const StackedBarChart = defineComponent({
47
49
  const showLegend = props.showLegend ?? true;
48
50
  const label = props.label;
49
51
  const data = props.data;
52
+ // Interactive legend is active as soon as the parent wires either prop.
53
+ const legendInteractive = props.onToggleSeries !== undefined || props.hiddenSeries !== undefined;
54
+ const hiddenSet = new Set(props.hiddenSeries ?? []);
50
55
  const seen = new Map();
51
56
  data.forEach((bar) => bar.segments.forEach((seg, i) => {
52
57
  if (!seen.has(seg.label))
53
58
  seen.set(seg.label, seg.tone ?? TONES[i % TONES.length]);
54
59
  }));
55
60
  const legend = [...seen.entries()].map(([seriesLabel, tone]) => ({ seriesLabel, tone }));
56
- const totals = data.map((b) => b.segments.reduce((s, x) => s + Math.max(x.value, 0), 0));
61
+ const totals = data.map((b) => b.segments.reduce((s, x) => (hiddenSet.has(x.label) ? s : s + Math.max(x.value, 0)), 0));
57
62
  const ticks = niceTicks(0, Math.max(0, ...totals));
58
63
  const domainMax = ticks[ticks.length - 1];
59
64
  const plotW = Math.max(width - MARGIN.left - MARGIN.right, 1);
@@ -65,7 +70,12 @@ export const StackedBarChart = defineComponent({
65
70
  bars = data.map((bar, bi) => {
66
71
  const x = MARGIN.left + band * bi + (band - barWidth) / 2;
67
72
  let acc = 0;
68
- const segs = bar.segments.map((seg, si) => {
73
+ // Tone is bound to the original segment index so it stays stable when
74
+ // a series is toggled off; hidden segments are dropped before stacking.
75
+ const segs = bar.segments
76
+ .map((seg, si) => ({ seg, tone: seg.tone ?? TONES[si % TONES.length] }))
77
+ .filter(({ seg }) => !hiddenSet.has(seg.label))
78
+ .map(({ seg, tone }) => {
69
79
  const v = Math.max(seg.value, 0);
70
80
  const yTop = MARGIN.top + scaleLinear(acc + v, 0, domainMax, plotH, 0);
71
81
  const yBottom = MARGIN.top + scaleLinear(acc, 0, domainMax, plotH, 0);
@@ -76,7 +86,7 @@ export const StackedBarChart = defineComponent({
76
86
  width: barWidth,
77
87
  height: Math.max(yBottom - yTop, 0),
78
88
  seg,
79
- tone: seg.tone ?? TONES[si % TONES.length],
89
+ tone,
80
90
  cx: x + barWidth / 2,
81
91
  cy: yTop + (yBottom - yTop) / 2,
82
92
  };
@@ -84,7 +94,7 @@ export const StackedBarChart = defineComponent({
84
94
  return { x, band, label: bar.label, segs, cxLabel: MARGIN.left + band * (bi + 0.5) };
85
95
  });
86
96
  }
87
- const dataValueItems = data.flatMap((bar) => bar.segments.map((seg) => `${bar.label}, ${seg.label}: ${seg.value}`));
97
+ const dataValueItems = data.flatMap((bar) => bar.segments.filter((seg) => !hiddenSet.has(seg.label)).map((seg) => `${bar.label}, ${seg.label}: ${seg.value}`));
88
98
  // --- Data labels ------------------------------------------------------
89
99
  // One value label centred in each segment (default `center`). Segments
90
100
  // shorter than DATA_LABEL_MIN_SEG_PX are skipped so labels stay legible.
@@ -162,13 +172,26 @@ export const StackedBarChart = defineComponent({
162
172
  ])
163
173
  : null,
164
174
  showLegend && legend.length > 0
165
- ? h("ul", { class: "st-stackedBar__legend" }, legend.map((item) => h("li", { key: item.seriesLabel, class: "st-stackedBar__legendItem" }, [
166
- h("span", {
175
+ ? h("ul", { class: "st-stackedBar__legend" }, legend.map((item) => {
176
+ const off = hiddenSet.has(item.seriesLabel);
177
+ const swatch = h("span", {
167
178
  class: classNames("st-stackedBar__legendSwatch", `st-stackedBar__legendSwatch--${item.tone}`),
168
179
  "aria-hidden": "true",
169
- }),
170
- item.seriesLabel,
171
- ])))
180
+ });
181
+ return h("li", {
182
+ key: item.seriesLabel,
183
+ class: classNames("st-stackedBar__legendItem", legendInteractive && off && "st-stackedBar__legendItem--off"),
184
+ }, legendInteractive
185
+ ? [
186
+ h("button", {
187
+ type: "button",
188
+ class: "st-stackedBar__legendButton",
189
+ "aria-pressed": off ? "true" : "false",
190
+ onClick: () => props.onToggleSeries?.(item.seriesLabel),
191
+ }, [swatch, ` ${item.seriesLabel}`]),
192
+ ]
193
+ : [swatch, item.seriesLabel]);
194
+ }))
172
195
  : null,
173
196
  ]);
174
197
  };
@@ -1 +1 @@
1
- {"version":3,"file":"StackedBarChart.js","sourceRoot":"","sources":["../src/StackedBarChart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StackedBarChart.js","sourceRoot":"","sources":["../src/StackedBarChart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /** Keys that drive the roving focus, mapped to an action. */
2
+ export type DatapointNavAction = {
3
+ kind: "move";
4
+ index: number;
5
+ } | {
6
+ kind: "select";
7
+ } | {
8
+ kind: "escape";
9
+ };
10
+ /**
11
+ * Maps a keydown to a roving-nav action given the current focused index and the
12
+ * datum count. Returns `null` for keys we don't handle (so the caller leaves the
13
+ * event untouched). `count` is assumed >= 1 when called.
14
+ */
15
+ export declare function datapointNavAction(key: string, current: number, count: number): DatapointNavAction | null;
16
+ /**
17
+ * The roving `tabindex` for the datum at `index`: `0` (the single tab stop) for
18
+ * the focused datum, `-1` for every other. When nothing is focused yet
19
+ * (`focusedIndex < 0`) the FIRST datum holds the tab stop so the group is
20
+ * reachable by Tab.
21
+ */
22
+ export declare function rovingTabIndex(index: number, focusedIndex: number, count: number): number;
23
+ /**
24
+ * Accessible label for a focused datum: its category followed by its value, e.g.
25
+ * `"Janvier, 42"`. `category` is the x/categorical label, `value` the y value.
26
+ * Kept framework-agnostic and identical across the three packages.
27
+ */
28
+ export declare function datapointAriaLabel(category: string | number, value: string | number): string;
29
+ //# sourceMappingURL=chartKeyboardNav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartKeyboardNav.d.ts","sourceRoot":"","sources":["../src/chartKeyboardNav.ts"],"names":[],"mappings":"AAqBA,6DAA6D;AAC7D,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,kBAAkB,GAAG,IAAI,CAwB3B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGzF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE5F"}
@@ -0,0 +1,70 @@
1
+ // --- Chart datapoint keyboard navigation (shared, framework-agnostic) --------
2
+ //
3
+ // FR-5: ROVING-TABINDEX keyboard navigation over a cartesian chart's data
4
+ // points (Bar / Line / Area). The decorative SVG stays `aria-hidden`; a thin,
5
+ // transparent overlay of focusable hit-rects (one per datum, in data order) is
6
+ // rendered on top. The overlay carries a SINGLE tab stop — the focused datum —
7
+ // and the arrow keys move that focus between datums:
8
+ //
9
+ // ←/↑ previous datum →/↓ next datum
10
+ // Home first datum End last datum
11
+ // Enter / Space select the focused datum Escape leave the nav
12
+ //
13
+ // Each focusable element announces its category + value via `aria-label`
14
+ // (built by `datapointAriaLabel`). Selection emits `onSelectKey?(key | null)`;
15
+ // Escape clears the internal selection (emits null). The focus also feeds the
16
+ // shared crosshair channel: moving focus emits `onHoverKeyChange(key)` so a
17
+ // linked tooltip (FR-3) tracks the keyboard cursor, and leaving emits null.
18
+ //
19
+ // Purely additive: a chart that wires neither `onSelectKey` nor `keyboardNav`
20
+ // renders exactly as before (no overlay, no extra tab stop).
21
+ /**
22
+ * Maps a keydown to a roving-nav action given the current focused index and the
23
+ * datum count. Returns `null` for keys we don't handle (so the caller leaves the
24
+ * event untouched). `count` is assumed >= 1 when called.
25
+ */
26
+ export function datapointNavAction(key, current, count) {
27
+ if (count <= 0)
28
+ return null;
29
+ const clamp = (i) => Math.min(count - 1, Math.max(0, i));
30
+ switch (key) {
31
+ case "ArrowRight":
32
+ case "ArrowDown":
33
+ return { kind: "move", index: clamp(current + 1) };
34
+ case "ArrowLeft":
35
+ case "ArrowUp":
36
+ return { kind: "move", index: clamp(current - 1) };
37
+ case "Home":
38
+ return { kind: "move", index: 0 };
39
+ case "End":
40
+ return { kind: "move", index: count - 1 };
41
+ case "Enter":
42
+ case " ":
43
+ case "Spacebar": // legacy IE/Edge value
44
+ return { kind: "select" };
45
+ case "Escape":
46
+ case "Esc": // legacy value
47
+ return { kind: "escape" };
48
+ default:
49
+ return null;
50
+ }
51
+ }
52
+ /**
53
+ * The roving `tabindex` for the datum at `index`: `0` (the single tab stop) for
54
+ * the focused datum, `-1` for every other. When nothing is focused yet
55
+ * (`focusedIndex < 0`) the FIRST datum holds the tab stop so the group is
56
+ * reachable by Tab.
57
+ */
58
+ export function rovingTabIndex(index, focusedIndex, count) {
59
+ const active = focusedIndex >= 0 && focusedIndex < count ? focusedIndex : 0;
60
+ return index === active ? 0 : -1;
61
+ }
62
+ /**
63
+ * Accessible label for a focused datum: its category followed by its value, e.g.
64
+ * `"Janvier, 42"`. `category` is the x/categorical label, `value` the y value.
65
+ * Kept framework-agnostic and identical across the three packages.
66
+ */
67
+ export function datapointAriaLabel(category, value) {
68
+ return `${category}, ${value}`;
69
+ }
70
+ //# sourceMappingURL=chartKeyboardNav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartKeyboardNav.js","sourceRoot":"","sources":["../src/chartKeyboardNav.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,qDAAqD;AACrD,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,wEAAwE;AACxE,EAAE;AACF,yEAAyE;AACzE,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,6DAA6D;AAQ7D;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,OAAe,EACf,KAAa;IAEb,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,YAAY,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;QACrD,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;QACrD,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACpC,KAAK,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,OAAO,CAAC;QACb,KAAK,GAAG,CAAC;QACT,KAAK,UAAU,EAAE,uBAAuB;YACtC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK,EAAE,eAAe;YACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,YAAoB,EAAE,KAAa;IAC/E,MAAM,MAAM,GAAG,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAyB,EAAE,KAAsB;IAClF,OAAO,GAAG,QAAQ,KAAK,KAAK,EAAE,CAAC;AACjC,CAAC"}
package/dist/styles.css CHANGED
@@ -208,6 +208,7 @@
208
208
 
209
209
  .st-areaChart__visual {
210
210
  display: block;
211
+ position: relative;
211
212
  }
212
213
 
213
214
  .st-areaChart__grid {
@@ -334,6 +335,23 @@
334
335
  stroke-width: 2;
335
336
  }
336
337
 
338
+ /* --- Keyboard navigation layer (FR-5) ------------------------------------
339
+ A focusable, transparent overlay of one hit-rect per point. Carries the
340
+ roving tab stop; the focus ring is tokenised (border-interactive). */
341
+ .st-areaChart__navLayer {
342
+ inset: 0;
343
+ position: absolute;
344
+ }
345
+ .st-areaChart__navDatum {
346
+ fill: transparent;
347
+ outline: none;
348
+ }
349
+ .st-areaChart__navDatum:focus-visible {
350
+ fill: color-mix(in srgb, var(--st-semantic-border-interactive) 12%, transparent);
351
+ outline: 2px solid var(--st-semantic-border-interactive);
352
+ outline-offset: 1px;
353
+ }
354
+
337
355
  .st-aspectRatio {
338
356
  display: block;
339
357
  overflow: hidden;
@@ -442,6 +460,7 @@
442
460
 
443
461
  .st-barChart__visual {
444
462
  display: block;
463
+ position: relative;
445
464
  }
446
465
 
447
466
  .st-chartDataList {
@@ -694,6 +713,23 @@
694
713
  opacity: 0.7;
695
714
  }
696
715
 
716
+ /* --- Keyboard navigation layer (FR-5) ------------------------------------
717
+ A focusable, transparent overlay of one hit-rect per bar. Carries the
718
+ roving tab stop; the focus ring is tokenised (border-interactive). */
719
+ .st-barChart__navLayer {
720
+ inset: 0;
721
+ position: absolute;
722
+ }
723
+ .st-barChart__navDatum {
724
+ fill: transparent;
725
+ outline: none;
726
+ }
727
+ .st-barChart__navDatum:focus-visible {
728
+ fill: color-mix(in srgb, var(--st-semantic-border-interactive) 12%, transparent);
729
+ outline: 2px solid var(--st-semantic-border-interactive);
730
+ outline-offset: 1px;
731
+ }
732
+
697
733
  @media (prefers-reduced-motion: reduce) {
698
734
  .st-barChart__bar,
699
735
  .st-barChart__filterChip { transition: none; }
@@ -3547,6 +3583,7 @@
3547
3583
 
3548
3584
  .st-lineChart__visual {
3549
3585
  display: block;
3586
+ position: relative;
3550
3587
  }
3551
3588
 
3552
3589
  .st-lineChart__grid {
@@ -3735,6 +3772,23 @@
3735
3772
  stroke-width: 2;
3736
3773
  }
3737
3774
 
3775
+ /* --- Keyboard navigation layer (FR-5) ------------------------------------
3776
+ A focusable, transparent overlay of one hit-rect per point. Carries the
3777
+ roving tab stop; the focus ring is tokenised (border-interactive). */
3778
+ .st-lineChart__navLayer {
3779
+ inset: 0;
3780
+ position: absolute;
3781
+ }
3782
+ .st-lineChart__navDatum {
3783
+ fill: transparent;
3784
+ outline: none;
3785
+ }
3786
+ .st-lineChart__navDatum:focus-visible {
3787
+ fill: color-mix(in srgb, var(--st-semantic-border-interactive) 12%, transparent);
3788
+ outline: 2px solid var(--st-semantic-border-interactive);
3789
+ outline-offset: 1px;
3790
+ }
3791
+
3738
3792
  .st-link {
3739
3793
  color: var(--st-component-link-text, var(--st-semantic-text-link));
3740
3794
  cursor: var(--st-cursor-interactive, pointer);
@@ -6083,6 +6137,9 @@
6083
6137
  .st-stackedBar__tooltipValue { opacity: 0.85; }
6084
6138
  .st-stackedBar__legend { display: flex; flex-wrap: wrap; gap: 0.75rem; list-style: none; margin: 0.5rem 0 0; padding: 0; }
6085
6139
  .st-stackedBar__legendItem { align-items: center; color: var(--st-semantic-text-secondary); display: inline-flex; font-size: 0.75rem; gap: 0.35rem; }
6140
+ .st-stackedBar__legendItem--off { opacity: 0.45; }
6141
+ .st-stackedBar__legendButton { align-items: center; background: none; border: 0; border-radius: var(--st-radius-sm, 0.25rem); color: inherit; cursor: pointer; display: inline-flex; font: inherit; gap: 0.35rem; padding: 0.125rem 0.25rem; }
6142
+ .st-stackedBar__legendButton:focus-visible { outline: 2px solid var(--st-semantic-border-interactive); outline-offset: 2px; }
6086
6143
  .st-stackedBar__legendSwatch { border-radius: 2px; height: 0.7rem; width: 0.7rem; }
6087
6144
  .st-stackedBar__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
6088
6145
  .st-stackedBar__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
@@ -9118,6 +9175,28 @@
9118
9175
  gap: var(--st-spacing-1, 0.25rem);
9119
9176
  }
9120
9177
 
9178
+ .st-comboChart__legendItem--off {
9179
+ opacity: 0.45;
9180
+ }
9181
+
9182
+ .st-comboChart__legendButton {
9183
+ align-items: center;
9184
+ background: none;
9185
+ border: 0;
9186
+ border-radius: var(--st-radius-sm, 0.25rem);
9187
+ color: inherit;
9188
+ cursor: pointer;
9189
+ display: inline-flex;
9190
+ font: inherit;
9191
+ gap: var(--st-spacing-1, 0.25rem);
9192
+ padding: 0.125rem 0.25rem;
9193
+ }
9194
+
9195
+ .st-comboChart__legendButton:focus-visible {
9196
+ outline: 2px solid var(--st-semantic-border-interactive);
9197
+ outline-offset: 2px;
9198
+ }
9199
+
9121
9200
  .st-comboChart__legendSwatch {
9122
9201
  display: inline-block;
9123
9202
  flex: none;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentropic/design-system-vue",
3
- "version": "0.36.26",
3
+ "version": "0.36.28",
4
4
  "description": "Vue 3 components for the Sentropic design system.",
5
5
  "type": "module",
6
6
  "publishConfig": {