@sentropic/design-system-svelte 0.34.25 → 0.34.26
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/dist/ComboChart.svelte
CHANGED
|
@@ -33,6 +33,15 @@
|
|
|
33
33
|
leftAxisLabel?: string;
|
|
34
34
|
rightAxisLabel?: string;
|
|
35
35
|
legend?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Interactive legend (FR-4). Ids/labels of bar/line series hidden from the
|
|
38
|
+
* render (controlled by the parent; default = all visible). Hidden series
|
|
39
|
+
* are omitted and their legend item is shown "off" (`aria-pressed`).
|
|
40
|
+
* Undefined → legacy non-interactive legend, unless `onToggleSeries` is set.
|
|
41
|
+
*/
|
|
42
|
+
hiddenSeries?: string[];
|
|
43
|
+
/** Emitted on click / Enter / Space on a legend item. */
|
|
44
|
+
onToggleSeries?: (seriesId: string) => void;
|
|
36
45
|
width?: number;
|
|
37
46
|
height?: number;
|
|
38
47
|
label: string;
|
|
@@ -46,12 +55,18 @@
|
|
|
46
55
|
leftAxisLabel,
|
|
47
56
|
rightAxisLabel,
|
|
48
57
|
legend = true,
|
|
58
|
+
hiddenSeries,
|
|
59
|
+
onToggleSeries,
|
|
49
60
|
width = 480,
|
|
50
61
|
height = 240,
|
|
51
62
|
label,
|
|
52
63
|
class: className
|
|
53
64
|
}: ComboChartProps = $props();
|
|
54
65
|
|
|
66
|
+
// Interactive legend is active as soon as the parent wires either prop.
|
|
67
|
+
const legendInteractive = $derived(onToggleSeries !== undefined || hiddenSeries !== undefined);
|
|
68
|
+
const hiddenSet = $derived(new Set(hiddenSeries ?? []));
|
|
69
|
+
|
|
55
70
|
const MARGIN = { top: 12, right: 52, bottom: 32, left: 52 };
|
|
56
71
|
|
|
57
72
|
function niceTicks(min: number, max: number, target = 5): number[] {
|
|
@@ -92,8 +107,9 @@
|
|
|
92
107
|
const plotHeight = $derived(Math.max(height - MARGIN.top - MARGIN.bottom, 1));
|
|
93
108
|
|
|
94
109
|
// Left axis (bars): include zero in the domain so bars rest on a baseline.
|
|
110
|
+
// Hidden series are excluded so the axis rescales to what is visible.
|
|
95
111
|
const leftScale = $derived.by(() => {
|
|
96
|
-
const values = bars.flatMap((s) => s.data);
|
|
112
|
+
const values = bars.filter((s) => !hiddenSet.has(s.label)).flatMap((s) => s.data);
|
|
97
113
|
const minRaw = Math.min(0, ...(values.length ? values : [0]));
|
|
98
114
|
const maxRaw = Math.max(0, ...(values.length ? values : [0]));
|
|
99
115
|
const ticks = niceTicks(minRaw, maxRaw, 5);
|
|
@@ -102,7 +118,7 @@
|
|
|
102
118
|
|
|
103
119
|
// Right axis (lines): padded domain like LineChart.
|
|
104
120
|
const rightScale = $derived.by(() => {
|
|
105
|
-
const values = lines.flatMap((s) => s.data);
|
|
121
|
+
const values = lines.filter((s) => !hiddenSet.has(s.label)).flatMap((s) => s.data);
|
|
106
122
|
if (values.length === 0) {
|
|
107
123
|
const ticks = niceTicks(0, 1, 5);
|
|
108
124
|
return { ticks, domainMin: ticks[0], domainMax: ticks[ticks.length - 1] };
|
|
@@ -136,6 +152,7 @@
|
|
|
136
152
|
const groupX = MARGIN.left + band * ci + (band - groupWidth) / 2;
|
|
137
153
|
const segments = bars
|
|
138
154
|
.map((series, si) => {
|
|
155
|
+
if (hiddenSet.has(series.label)) return null;
|
|
139
156
|
const raw = series.data[ci];
|
|
140
157
|
if (!isPresent(raw)) return null;
|
|
141
158
|
const value = raw;
|
|
@@ -203,6 +220,7 @@
|
|
|
203
220
|
path,
|
|
204
221
|
points,
|
|
205
222
|
seriesLabel: series.label,
|
|
223
|
+
hidden: hiddenSet.has(series.label),
|
|
206
224
|
tone: series.tone ?? `category${((bars.length + li) % 8) + 1}`
|
|
207
225
|
};
|
|
208
226
|
});
|
|
@@ -240,12 +258,12 @@
|
|
|
240
258
|
]);
|
|
241
259
|
|
|
242
260
|
const dataValueItems = $derived([
|
|
243
|
-
...bars
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
...lines
|
|
247
|
-
|
|
248
|
-
|
|
261
|
+
...bars
|
|
262
|
+
.filter((s) => !hiddenSet.has(s.label))
|
|
263
|
+
.flatMap((s) => categories.map((c, ci) => `${s.label}, ${c}: ${s.data[ci] ?? 0}`)),
|
|
264
|
+
...lines
|
|
265
|
+
.filter((s) => !hiddenSet.has(s.label))
|
|
266
|
+
.flatMap((s) => categories.map((c, ci) => `${s.label}, ${c}: ${s.data[ci] ?? 0}`))
|
|
249
267
|
]);
|
|
250
268
|
|
|
251
269
|
type Hover =
|
|
@@ -404,25 +422,27 @@
|
|
|
404
422
|
|
|
405
423
|
<!-- lines -->
|
|
406
424
|
{#each lineSeries as series, li (li)}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
{#each series.points as p, pi (pi)}
|
|
416
|
-
<circle
|
|
417
|
-
class="st-comboChart__dot st-comboChart__dot--{series.tone}"
|
|
418
|
-
cx={p.x}
|
|
419
|
-
cy={p.y}
|
|
420
|
-
r="4"
|
|
421
|
-
data-chart-kind="line"
|
|
422
|
-
data-chart-a={li}
|
|
423
|
-
data-chart-b={pi}
|
|
425
|
+
{#if !series.hidden}
|
|
426
|
+
<path
|
|
427
|
+
class="st-comboChart__line st-comboChart__line--{series.tone}"
|
|
428
|
+
d={series.path}
|
|
429
|
+
fill="none"
|
|
430
|
+
stroke-width="2"
|
|
431
|
+
stroke-linecap="round"
|
|
432
|
+
stroke-linejoin="round"
|
|
424
433
|
/>
|
|
425
|
-
|
|
434
|
+
{#each series.points as p, pi (pi)}
|
|
435
|
+
<circle
|
|
436
|
+
class="st-comboChart__dot st-comboChart__dot--{series.tone}"
|
|
437
|
+
cx={p.x}
|
|
438
|
+
cy={p.y}
|
|
439
|
+
r="4"
|
|
440
|
+
data-chart-kind="line"
|
|
441
|
+
data-chart-a={li}
|
|
442
|
+
data-chart-b={pi}
|
|
443
|
+
/>
|
|
444
|
+
{/each}
|
|
445
|
+
{/if}
|
|
426
446
|
{/each}
|
|
427
447
|
</svg>
|
|
428
448
|
</div>
|
|
@@ -430,13 +450,28 @@
|
|
|
430
450
|
<ChartDataList {label} items={dataValueItems} />
|
|
431
451
|
|
|
432
452
|
{#if legend && legendItems.length > 0}
|
|
433
|
-
<ul class="st-comboChart__legend" aria-hidden="true">
|
|
453
|
+
<ul class="st-comboChart__legend" aria-hidden={legendInteractive ? undefined : "true"}>
|
|
434
454
|
{#each legendItems as item (item.key)}
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
455
|
+
{@const off = hiddenSet.has(item.label)}
|
|
456
|
+
<li class="st-comboChart__legendItem" class:st-comboChart__legendItem--off={legendInteractive && off}>
|
|
457
|
+
{#if legendInteractive}
|
|
458
|
+
<button
|
|
459
|
+
type="button"
|
|
460
|
+
class="st-comboChart__legendButton"
|
|
461
|
+
aria-pressed={off}
|
|
462
|
+
onclick={() => onToggleSeries?.(item.label)}
|
|
463
|
+
>
|
|
464
|
+
<span
|
|
465
|
+
class="st-comboChart__legendSwatch st-comboChart__legendSwatch--{item.kind} st-comboChart__legendSwatch--{item.tone}"
|
|
466
|
+
></span>
|
|
467
|
+
{item.label}
|
|
468
|
+
</button>
|
|
469
|
+
{:else}
|
|
470
|
+
<span
|
|
471
|
+
class="st-comboChart__legendSwatch st-comboChart__legendSwatch--{item.kind} st-comboChart__legendSwatch--{item.tone}"
|
|
472
|
+
></span>
|
|
473
|
+
{item.label}
|
|
474
|
+
{/if}
|
|
440
475
|
</li>
|
|
441
476
|
{/each}
|
|
442
477
|
</ul>
|
|
@@ -567,6 +602,28 @@
|
|
|
567
602
|
gap: var(--st-spacing-1, 0.25rem);
|
|
568
603
|
}
|
|
569
604
|
|
|
605
|
+
.st-comboChart__legendItem--off {
|
|
606
|
+
opacity: 0.45;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
.st-comboChart__legendButton {
|
|
610
|
+
align-items: center;
|
|
611
|
+
background: none;
|
|
612
|
+
border: 0;
|
|
613
|
+
border-radius: var(--st-radius-sm, 0.25rem);
|
|
614
|
+
color: inherit;
|
|
615
|
+
cursor: pointer;
|
|
616
|
+
display: inline-flex;
|
|
617
|
+
font: inherit;
|
|
618
|
+
gap: var(--st-spacing-1, 0.25rem);
|
|
619
|
+
padding: 0.125rem 0.25rem;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
.st-comboChart__legendButton:focus-visible {
|
|
623
|
+
outline: 2px solid var(--st-semantic-border-interactive);
|
|
624
|
+
outline-offset: 2px;
|
|
625
|
+
}
|
|
626
|
+
|
|
570
627
|
.st-comboChart__legendSwatch {
|
|
571
628
|
display: inline-block;
|
|
572
629
|
flex: none;
|
|
@@ -17,6 +17,15 @@ type ComboChartProps = {
|
|
|
17
17
|
leftAxisLabel?: string;
|
|
18
18
|
rightAxisLabel?: string;
|
|
19
19
|
legend?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Interactive legend (FR-4). Ids/labels of bar/line series hidden from the
|
|
22
|
+
* render (controlled by the parent; default = all visible). Hidden series
|
|
23
|
+
* are omitted and their legend item is shown "off" (`aria-pressed`).
|
|
24
|
+
* Undefined → legacy non-interactive legend, unless `onToggleSeries` is set.
|
|
25
|
+
*/
|
|
26
|
+
hiddenSeries?: string[];
|
|
27
|
+
/** Emitted on click / Enter / Space on a legend item. */
|
|
28
|
+
onToggleSeries?: (seriesId: string) => void;
|
|
20
29
|
width?: number;
|
|
21
30
|
height?: number;
|
|
22
31
|
label: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/ComboChart.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAMF,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"ComboChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/ComboChart.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAMF,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,yDAAyD;IACzD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA6WJ,QAAA,MAAM,UAAU,qDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -33,6 +33,16 @@
|
|
|
33
33
|
* values already live in the accessible ChartDataList.
|
|
34
34
|
*/
|
|
35
35
|
dataLabels?: DataLabelsProp;
|
|
36
|
+
/**
|
|
37
|
+
* Interactive legend (FR-4). Ids/labels of series hidden from the render
|
|
38
|
+
* (controlled by the parent; default = all visible). Each segment whose
|
|
39
|
+
* `label` ∈ `hiddenSeries` is omitted and its legend item is shown "off"
|
|
40
|
+
* (`aria-pressed`). Undefined → legacy non-interactive legend, unless
|
|
41
|
+
* `onToggleSeries` is provided.
|
|
42
|
+
*/
|
|
43
|
+
hiddenSeries?: string[];
|
|
44
|
+
/** Emitted on click / Enter / Space on a legend item. */
|
|
45
|
+
onToggleSeries?: (seriesId: string) => void;
|
|
36
46
|
class?: string;
|
|
37
47
|
};
|
|
38
48
|
|
|
@@ -43,9 +53,15 @@
|
|
|
43
53
|
label,
|
|
44
54
|
showLegend = true,
|
|
45
55
|
dataLabels,
|
|
56
|
+
hiddenSeries,
|
|
57
|
+
onToggleSeries,
|
|
46
58
|
class: className
|
|
47
59
|
}: StackedBarChartProps = $props();
|
|
48
60
|
|
|
61
|
+
// Interactive legend is active as soon as the parent wires either prop.
|
|
62
|
+
const legendInteractive = $derived(onToggleSeries !== undefined || hiddenSeries !== undefined);
|
|
63
|
+
const hiddenSet = $derived(new Set(hiddenSeries ?? []));
|
|
64
|
+
|
|
49
65
|
const MARGIN = { top: 14, right: 16, bottom: 34, left: 44 };
|
|
50
66
|
const TONES = ["category1","category2","category3","category4","category5","category6","category7","category8"] as const;
|
|
51
67
|
|
|
@@ -81,7 +97,9 @@
|
|
|
81
97
|
let hovered: { bar: number; seg: number } | null = $state(null);
|
|
82
98
|
|
|
83
99
|
const scales = $derived.by(() => {
|
|
84
|
-
const totals = data.map((b) =>
|
|
100
|
+
const totals = data.map((b) =>
|
|
101
|
+
b.segments.reduce((s, x) => (hiddenSet.has(x.label) ? s : s + Math.max(x.value, 0)), 0)
|
|
102
|
+
);
|
|
85
103
|
const ticks = niceTicks(0, Math.max(0, ...totals));
|
|
86
104
|
return {
|
|
87
105
|
ticks, domainMax: ticks[ticks.length - 1],
|
|
@@ -98,23 +116,32 @@
|
|
|
98
116
|
return data.map((bar, bi) => {
|
|
99
117
|
const x = MARGIN.left + band * bi + (band - barWidth) / 2;
|
|
100
118
|
let acc = 0;
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
119
|
+
// Tone is bound to the original segment index so it stays stable when a
|
|
120
|
+
// series is toggled off; hidden segments are dropped before stacking.
|
|
121
|
+
const segs = bar.segments
|
|
122
|
+
.map((seg, si) => ({ seg, tone: seg.tone ?? TONES[si % TONES.length] }))
|
|
123
|
+
.filter(({ seg }) => !hiddenSet.has(seg.label))
|
|
124
|
+
.map(({ seg, tone }) => {
|
|
125
|
+
const v = Math.max(seg.value, 0);
|
|
126
|
+
const yTop = MARGIN.top + scaleLinear(acc + v, 0, domainMax, plotH, 0);
|
|
127
|
+
const yBottom = MARGIN.top + scaleLinear(acc, 0, domainMax, plotH, 0);
|
|
128
|
+
acc += v;
|
|
129
|
+
return {
|
|
130
|
+
x, y: yTop, width: barWidth, height: Math.max(yBottom - yTop, 0),
|
|
131
|
+
seg, tone,
|
|
132
|
+
cx: x + barWidth / 2, cy: yTop + (yBottom - yTop) / 2
|
|
133
|
+
};
|
|
134
|
+
});
|
|
112
135
|
return { x, band, label: bar.label, segs, cxLabel: MARGIN.left + band * (bi + 0.5) };
|
|
113
136
|
});
|
|
114
137
|
});
|
|
115
138
|
|
|
116
139
|
const dataValueItems = $derived(
|
|
117
|
-
data.flatMap((bar) =>
|
|
140
|
+
data.flatMap((bar) =>
|
|
141
|
+
bar.segments
|
|
142
|
+
.filter((seg) => !hiddenSet.has(seg.label))
|
|
143
|
+
.map((seg) => `${bar.label}, ${seg.label}: ${seg.value}`)
|
|
144
|
+
)
|
|
118
145
|
);
|
|
119
146
|
|
|
120
147
|
// --- Data labels ----------------------------------------------------------
|
|
@@ -206,9 +233,22 @@
|
|
|
206
233
|
{#if showLegend && legend.length > 0}
|
|
207
234
|
<ul class="st-stackedBar__legend">
|
|
208
235
|
{#each legend as item (item.seriesLabel)}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
{
|
|
236
|
+
{@const off = hiddenSet.has(item.seriesLabel)}
|
|
237
|
+
<li class="st-stackedBar__legendItem" class:st-stackedBar__legendItem--off={legendInteractive && off}>
|
|
238
|
+
{#if legendInteractive}
|
|
239
|
+
<button
|
|
240
|
+
type="button"
|
|
241
|
+
class="st-stackedBar__legendButton"
|
|
242
|
+
aria-pressed={off}
|
|
243
|
+
onclick={() => onToggleSeries?.(item.seriesLabel)}
|
|
244
|
+
>
|
|
245
|
+
<span class="st-stackedBar__legendSwatch st-stackedBar__legendSwatch--{item.tone}" aria-hidden="true"></span>
|
|
246
|
+
{item.seriesLabel}
|
|
247
|
+
</button>
|
|
248
|
+
{:else}
|
|
249
|
+
<span class="st-stackedBar__legendSwatch st-stackedBar__legendSwatch--{item.tone}" aria-hidden="true"></span>
|
|
250
|
+
{item.seriesLabel}
|
|
251
|
+
{/if}
|
|
212
252
|
</li>
|
|
213
253
|
{/each}
|
|
214
254
|
</ul>
|
|
@@ -243,6 +283,12 @@
|
|
|
243
283
|
.st-stackedBar__tooltipValue { opacity: 0.85; }
|
|
244
284
|
.st-stackedBar__legend { display: flex; flex-wrap: wrap; gap: 0.75rem; list-style: none; margin: 0.5rem 0 0; padding: 0; }
|
|
245
285
|
.st-stackedBar__legendItem { align-items: center; color: var(--st-semantic-text-secondary); display: inline-flex; font-size: 0.75rem; gap: 0.35rem; }
|
|
286
|
+
.st-stackedBar__legendItem--off { opacity: 0.45; }
|
|
287
|
+
.st-stackedBar__legendButton {
|
|
288
|
+
align-items: center; background: none; border: 0; border-radius: var(--st-radius-sm, 0.25rem);
|
|
289
|
+
color: inherit; cursor: pointer; display: inline-flex; font: inherit; gap: 0.35rem; padding: 0.125rem 0.25rem;
|
|
290
|
+
}
|
|
291
|
+
.st-stackedBar__legendButton:focus-visible { outline: 2px solid var(--st-semantic-border-interactive); outline-offset: 2px; }
|
|
246
292
|
.st-stackedBar__legendSwatch { border-radius: 2px; height: 0.7rem; width: 0.7rem; }
|
|
247
293
|
.st-stackedBar__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
|
|
248
294
|
.st-stackedBar__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
|
|
@@ -23,6 +23,16 @@ type StackedBarChartProps = {
|
|
|
23
23
|
* values already live in the accessible ChartDataList.
|
|
24
24
|
*/
|
|
25
25
|
dataLabels?: DataLabelsProp;
|
|
26
|
+
/**
|
|
27
|
+
* Interactive legend (FR-4). Ids/labels of series hidden from the render
|
|
28
|
+
* (controlled by the parent; default = all visible). Each segment whose
|
|
29
|
+
* `label` ∈ `hiddenSeries` is omitted and its legend item is shown "off"
|
|
30
|
+
* (`aria-pressed`). Undefined → legacy non-interactive legend, unless
|
|
31
|
+
* `onToggleSeries` is provided.
|
|
32
|
+
*/
|
|
33
|
+
hiddenSeries?: string[];
|
|
34
|
+
/** Emitted on click / Enter / Space on a legend item. */
|
|
35
|
+
onToggleSeries?: (seriesId: string) => void;
|
|
26
36
|
class?: string;
|
|
27
37
|
};
|
|
28
38
|
declare const StackedBarChart: import("svelte").Component<StackedBarChartProps, {}, "">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackedBarChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/StackedBarChart.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,MAAM,cAAc,GACtB,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GACrD,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B,CAAC;AAIJ,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG/F,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"StackedBarChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/StackedBarChart.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,MAAM,cAAc,GACtB,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GACrD,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B,CAAC;AAIJ,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG/F,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,yDAAyD;IACzD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA4MJ,QAAA,MAAM,eAAe,0DAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
|