@sentropic/design-system-vue 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/ComboChart.d.ts +119 -0
  2. package/dist/ComboChart.d.ts.map +1 -0
  3. package/dist/ComboChart.js +280 -0
  4. package/dist/ComboChart.js.map +1 -0
  5. package/dist/ForceGraph.d.ts +104 -0
  6. package/dist/ForceGraph.d.ts.map +1 -1
  7. package/dist/ForceGraph.js +193 -4
  8. package/dist/ForceGraph.js.map +1 -1
  9. package/dist/FunnelChart.d.ts +103 -0
  10. package/dist/FunnelChart.d.ts.map +1 -0
  11. package/dist/FunnelChart.js +191 -0
  12. package/dist/FunnelChart.js.map +1 -0
  13. package/dist/GaugeChart.d.ts +134 -0
  14. package/dist/GaugeChart.d.ts.map +1 -0
  15. package/dist/GaugeChart.js +152 -0
  16. package/dist/GaugeChart.js.map +1 -0
  17. package/dist/KpiCard.d.ts +151 -0
  18. package/dist/KpiCard.d.ts.map +1 -0
  19. package/dist/KpiCard.js +155 -0
  20. package/dist/KpiCard.js.map +1 -0
  21. package/dist/SelectableList.d.ts +98 -0
  22. package/dist/SelectableList.d.ts.map +1 -0
  23. package/dist/SelectableList.js +174 -0
  24. package/dist/SelectableList.js.map +1 -0
  25. package/dist/SelectableRow.d.ts +140 -0
  26. package/dist/SelectableRow.d.ts.map +1 -0
  27. package/dist/SelectableRow.js +130 -0
  28. package/dist/SelectableRow.js.map +1 -0
  29. package/dist/TimePicker.d.ts +1 -1
  30. package/dist/TreemapChart.d.ts +95 -0
  31. package/dist/TreemapChart.d.ts.map +1 -0
  32. package/dist/TreemapChart.js +255 -0
  33. package/dist/TreemapChart.js.map +1 -0
  34. package/dist/WaterfallChart.d.ts +84 -0
  35. package/dist/WaterfallChart.d.ts.map +1 -0
  36. package/dist/WaterfallChart.js +186 -0
  37. package/dist/WaterfallChart.js.map +1 -0
  38. package/dist/chartScale.d.ts +4 -0
  39. package/dist/chartScale.d.ts.map +1 -1
  40. package/dist/chartScale.js +44 -0
  41. package/dist/chartScale.js.map +1 -1
  42. package/dist/index.d.ts +16 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +8 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/styles.css +851 -2
  47. package/package.json +1 -1
@@ -0,0 +1,130 @@
1
+ import { defineComponent, h, inject, onBeforeUnmount, onMounted, ref, watch, } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ export const SELECTABLE_LIST_KEY = Symbol("st-selectable-list");
4
+ /**
5
+ * Compact, full-width selectable list/rail row. By DEFAULT the selected state
6
+ * is two calm signals — a tinted surface + accented text — deliberately NOT the
7
+ * off-theme "boudin box" it replaces, and NOT a reflow-causing font-weight
8
+ * bump. The fine left accent bar is OPT-IN via the `accentBar` prop. Focus is an
9
+ * EXTERNAL offset outline. role="option" + aria-selected, keyboard-activatable
10
+ * (Enter / Space), inert when disabled. Inside a {@link SelectableList} the list
11
+ * (via provide/inject) owns selection and the roving tabindex.
12
+ * Slots: default (content), leading (icon / avatar), trailing (meta / icon).
13
+ */
14
+ export const SelectableRow = defineComponent({
15
+ name: "SelectableRow",
16
+ props: {
17
+ selected: { type: Boolean, default: false },
18
+ onSelect: {
19
+ type: Function,
20
+ default: undefined,
21
+ },
22
+ disabled: { type: Boolean, default: false },
23
+ value: { type: String, default: undefined },
24
+ role: { type: String, default: "option" },
25
+ accentBar: { type: Boolean, default: false },
26
+ class: { type: String, default: undefined },
27
+ },
28
+ emits: {
29
+ select: (_selected) => true,
30
+ },
31
+ setup(props, { slots, attrs, emit }) {
32
+ // When rendered inside a SelectableList, the list (via inject) owns
33
+ // selection and the roving tabindex. Standalone rows manage their own state.
34
+ const list = inject(SELECTABLE_LIST_KEY, undefined);
35
+ const el = ref(null);
36
+ // Register with the parent list (if any) so it can order rows for arrow nav
37
+ // and compute the roving tab stop. Registered on mount (when `el` is set) and
38
+ // re-registered when value / disabled change.
39
+ let unregister = null;
40
+ function doRegister() {
41
+ unregister?.();
42
+ unregister = null;
43
+ if (list && el.value && !props.disabled) {
44
+ unregister = list.register(el.value, props.value);
45
+ }
46
+ }
47
+ onMounted(() => doRegister());
48
+ watch(() => [props.value, props.disabled], () => doRegister());
49
+ onBeforeUnmount(() => {
50
+ unregister?.();
51
+ unregister = null;
52
+ });
53
+ function activate() {
54
+ if (props.disabled)
55
+ return;
56
+ if (list && el.value) {
57
+ list.activate(el.value);
58
+ return;
59
+ }
60
+ const next = !props.selected;
61
+ // `emit("select")` invokes the `onSelect` prop/listener exactly once.
62
+ emit("select", next);
63
+ }
64
+ function handleKeydown(e) {
65
+ if (props.disabled)
66
+ return;
67
+ if (e.key === "Enter" || e.key === " ") {
68
+ e.preventDefault();
69
+ activate();
70
+ return;
71
+ }
72
+ // Roving navigation is owned by the list; forward the relevant keys.
73
+ if (list &&
74
+ el.value &&
75
+ (e.key === "ArrowDown" ||
76
+ e.key === "ArrowUp" ||
77
+ e.key === "ArrowLeft" ||
78
+ e.key === "ArrowRight" ||
79
+ e.key === "Home" ||
80
+ e.key === "End")) {
81
+ e.preventDefault();
82
+ list.navigate(el.value, e.key);
83
+ }
84
+ }
85
+ function handleFocus() {
86
+ if (props.disabled)
87
+ return;
88
+ if (list && el.value)
89
+ list.focusRow(el.value);
90
+ }
91
+ return () => {
92
+ // Read the list's reactive version so this row re-renders when the list's
93
+ // selection / focus / registry changes (managed rows).
94
+ if (list)
95
+ void list.version.value;
96
+ const node = el.value;
97
+ const isSelected = list && node ? list.isSelected(node) : props.selected;
98
+ const effectiveRole = list ? list.itemRole : props.role;
99
+ const tabindex = props.disabled
100
+ ? -1
101
+ : list && node
102
+ ? list.isTabStop(node)
103
+ ? 0
104
+ : -1
105
+ : 0;
106
+ const children = [];
107
+ if (slots.leading) {
108
+ children.push(h("span", { class: "st-selectableRow__leading" }, slots.leading()));
109
+ }
110
+ children.push(h("span", { class: "st-selectableRow__content" }, slots.default?.()));
111
+ if (slots.trailing) {
112
+ children.push(h("span", { class: "st-selectableRow__trailing" }, slots.trailing()));
113
+ }
114
+ return h("div", {
115
+ ...attrs,
116
+ ref: el,
117
+ class: classNames("st-selectableRow", isSelected && "st-selectableRow--selected", props.disabled && "st-selectableRow--disabled", props.accentBar && "st-selectableRow--accentBar", props.class),
118
+ role: effectiveRole,
119
+ "aria-selected": effectiveRole === "option" ? (isSelected ? "true" : "false") : undefined,
120
+ "aria-disabled": props.disabled ? "true" : undefined,
121
+ "data-value": props.value,
122
+ tabindex,
123
+ onClick: activate,
124
+ onKeydown: handleKeydown,
125
+ onFocus: handleFocus,
126
+ }, children);
127
+ };
128
+ },
129
+ });
130
+ //# sourceMappingURL=SelectableRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectableRow.js","sourceRoot":"","sources":["../src/SelectableRow.ts"],"names":[],"mappings":"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"}
@@ -124,7 +124,7 @@ export declare const TimePicker: import("vue").DefineComponent<import("vue").Ext
124
124
  max: string;
125
125
  size: TimePickerSize;
126
126
  value: string;
127
- step: number;
128
127
  format: TimePickerFormat;
128
+ step: number;
129
129
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
130
130
  //# sourceMappingURL=TimePicker.d.ts.map
@@ -0,0 +1,95 @@
1
+ export type TreemapChartTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
2
+ export type TreemapChartDatum = {
3
+ label: string;
4
+ value: number;
5
+ tone?: TreemapChartTone;
6
+ children?: TreemapChartDatum[];
7
+ };
8
+ export type TreemapTiling = "squarified";
9
+ export type TreemapChartProps = {
10
+ data: TreemapChartDatum[];
11
+ tiling?: TreemapTiling;
12
+ showLabels?: boolean;
13
+ legend?: boolean;
14
+ width?: number;
15
+ height?: number;
16
+ label: string;
17
+ class?: string;
18
+ };
19
+ export declare const TreemapChart: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
20
+ data: {
21
+ type: () => TreemapChartDatum[];
22
+ required: true;
23
+ };
24
+ tiling: {
25
+ type: () => TreemapTiling;
26
+ default: string;
27
+ };
28
+ showLabels: {
29
+ type: BooleanConstructor;
30
+ default: boolean;
31
+ };
32
+ legend: {
33
+ type: BooleanConstructor;
34
+ default: boolean;
35
+ };
36
+ width: {
37
+ type: NumberConstructor;
38
+ default: number;
39
+ };
40
+ height: {
41
+ type: NumberConstructor;
42
+ default: number;
43
+ };
44
+ label: {
45
+ type: StringConstructor;
46
+ required: true;
47
+ };
48
+ class: {
49
+ type: StringConstructor;
50
+ default: undefined;
51
+ };
52
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
53
+ [key: string]: any;
54
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
55
+ data: {
56
+ type: () => TreemapChartDatum[];
57
+ required: true;
58
+ };
59
+ tiling: {
60
+ type: () => TreemapTiling;
61
+ default: string;
62
+ };
63
+ showLabels: {
64
+ type: BooleanConstructor;
65
+ default: boolean;
66
+ };
67
+ legend: {
68
+ type: BooleanConstructor;
69
+ default: boolean;
70
+ };
71
+ width: {
72
+ type: NumberConstructor;
73
+ default: number;
74
+ };
75
+ height: {
76
+ type: NumberConstructor;
77
+ default: number;
78
+ };
79
+ label: {
80
+ type: StringConstructor;
81
+ required: true;
82
+ };
83
+ class: {
84
+ type: StringConstructor;
85
+ default: undefined;
86
+ };
87
+ }>> & Readonly<{}>, {
88
+ class: string;
89
+ legend: boolean;
90
+ width: number;
91
+ height: number;
92
+ showLabels: boolean;
93
+ tiling: "squarified";
94
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
95
+ //# sourceMappingURL=TreemapChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreemapChart.d.ts","sourceRoot":"","sources":["../src/TreemapChart.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC;AAEzC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,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;AA+GF,eAAO,MAAM,YAAY;;cAGE,MAAM,iBAAiB,EAAE;;;;cACtB,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cADtB,MAAM,iBAAiB,EAAE;;;;cACtB,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAgO/C,CAAC"}
@@ -0,0 +1,255 @@
1
+ import { defineComponent, h, ref } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ import { chartDataList, labelColorForTone } from "./chartScale.js";
4
+ const TONES = [
5
+ "category1",
6
+ "category2",
7
+ "category3",
8
+ "category4",
9
+ "category5",
10
+ "category6",
11
+ "category7",
12
+ "category8",
13
+ ];
14
+ const PADDING = 2;
15
+ const sumValue = (d) => {
16
+ if (d.children && d.children.length > 0) {
17
+ return d.children.reduce((s, c) => s + sumValue(c), 0);
18
+ }
19
+ return Math.max(d.value, 0);
20
+ };
21
+ function squarify(nodes, rect) {
22
+ const out = [];
23
+ const total = nodes.reduce((s, n) => s + n.value, 0);
24
+ if (total <= 0 || nodes.length === 0)
25
+ return out;
26
+ const area = rect.w * rect.h;
27
+ const scale = area / total;
28
+ const items = nodes.map((n) => ({ datum: n.datum, value: n.value, area: n.value * scale }));
29
+ let free = { ...rect };
30
+ let row = [];
31
+ const worst = (r, side) => {
32
+ if (r.length === 0 || side <= 0)
33
+ return Infinity;
34
+ const s = r.reduce((acc, it) => acc + it.area, 0);
35
+ let max = -Infinity;
36
+ let min = Infinity;
37
+ for (const it of r) {
38
+ if (it.area > max)
39
+ max = it.area;
40
+ if (it.area < min)
41
+ min = it.area;
42
+ }
43
+ const s2 = s * s;
44
+ const side2 = side * side;
45
+ return Math.max((side2 * max) / s2, s2 / (side2 * min));
46
+ };
47
+ const layoutRow = (r, side, area2) => {
48
+ const s = r.reduce((acc, it) => acc + it.area, 0);
49
+ if (side <= 0)
50
+ return area2;
51
+ const thickness = s / side;
52
+ if (area2.w >= area2.h) {
53
+ let oy = area2.y;
54
+ for (const it of r) {
55
+ const hh = it.area / thickness;
56
+ out.push({ datum: it.datum, value: it.value, rect: { x: area2.x, y: oy, w: thickness, h: hh } });
57
+ oy += hh;
58
+ }
59
+ return { x: area2.x + thickness, y: area2.y, w: area2.w - thickness, h: area2.h };
60
+ }
61
+ else {
62
+ let ox = area2.x;
63
+ for (const it of r) {
64
+ const w = it.area / thickness;
65
+ out.push({ datum: it.datum, value: it.value, rect: { x: ox, y: area2.y, w, h: thickness } });
66
+ ox += w;
67
+ }
68
+ return { x: area2.x, y: area2.y + thickness, w: area2.w, h: area2.h - thickness };
69
+ }
70
+ };
71
+ for (const it of items) {
72
+ const side = Math.min(free.w, free.h);
73
+ const next = [...row, it];
74
+ if (row.length === 0 || worst(next, side) <= worst(row, side)) {
75
+ row = next;
76
+ }
77
+ else {
78
+ free = layoutRow(row, side, free);
79
+ row = [it];
80
+ }
81
+ }
82
+ if (row.length > 0) {
83
+ free = layoutRow(row, Math.min(free.w, free.h), free);
84
+ }
85
+ return out;
86
+ }
87
+ function inset(r, pad) {
88
+ const w = Math.max(r.w - pad * 2, 0);
89
+ const h = Math.max(r.h - pad * 2, 0);
90
+ return { x: r.x + pad, y: r.y + pad, w, h };
91
+ }
92
+ const LABEL_MIN_W = 44;
93
+ const LABEL_MIN_H = 22;
94
+ const VALUE_MIN_H = 38;
95
+ export const TreemapChart = defineComponent({
96
+ name: "TreemapChart",
97
+ props: {
98
+ data: { type: Array, required: true },
99
+ tiling: { type: String, default: "squarified" },
100
+ showLabels: { type: Boolean, default: true },
101
+ legend: { type: Boolean, default: false },
102
+ width: { type: Number, default: 480 },
103
+ height: { type: Number, default: 300 },
104
+ label: { type: String, required: true },
105
+ class: { type: String, default: undefined },
106
+ },
107
+ setup(props, { attrs }) {
108
+ const hoveredIndex = ref(null);
109
+ function handleLeave() {
110
+ hoveredIndex.value = null;
111
+ }
112
+ function handleVisualPointerMove(event) {
113
+ const target = event.target;
114
+ if (!(target instanceof Element)) {
115
+ hoveredIndex.value = null;
116
+ return;
117
+ }
118
+ const index = Number(target.getAttribute("data-chart-index"));
119
+ hoveredIndex.value = Number.isInteger(index) ? index : null;
120
+ }
121
+ return () => {
122
+ const data = props.data;
123
+ const showLabels = props.showLabels ?? true;
124
+ const legend = props.legend ?? false;
125
+ const width = props.width ?? 480;
126
+ const height = props.height ?? 300;
127
+ const label = props.label;
128
+ let cells = [];
129
+ if (data && data.length !== 0) {
130
+ // Squarify produit de meilleurs ratios d'aspect quand l'entrée est triée
131
+ // par valeur décroissante (voir Bruls, Huizing, van Wijk 2000).
132
+ const roots = data
133
+ .map((d, i) => ({ datum: d, value: sumValue(d), tone: d.tone ?? TONES[i % TONES.length] }))
134
+ .filter((n) => n.value > 0)
135
+ .sort((a, b) => b.value - a.value);
136
+ if (roots.length !== 0) {
137
+ const topRects = squarify(roots.map((r) => ({ datum: r.datum, value: r.value })), { x: 0, y: 0, w: width, h: height });
138
+ const result = [];
139
+ topRects.forEach((tr) => {
140
+ const root = roots.find((r) => r.datum === tr.datum);
141
+ const children = (tr.datum.children ?? [])
142
+ .filter((c) => Math.max(c.value, 0) > 0)
143
+ .sort((a, b) => Math.max(b.value, 0) - Math.max(a.value, 0));
144
+ if (children.length > 0) {
145
+ const innerRect = inset(tr.rect, PADDING);
146
+ const childRects = squarify(children.map((c) => ({ datum: c, value: Math.max(c.value, 0) })), innerRect);
147
+ childRects.forEach((cr, ci) => {
148
+ const tone = cr.datum.tone ?? root.tone ?? TONES[ci % TONES.length];
149
+ result.push({
150
+ datum: cr.datum,
151
+ value: cr.value,
152
+ tone,
153
+ textColor: labelColorForTone(tone),
154
+ rect: inset(cr.rect, PADDING / 2),
155
+ parentLabel: tr.datum.label,
156
+ depth: 1,
157
+ });
158
+ });
159
+ }
160
+ else {
161
+ result.push({
162
+ datum: tr.datum,
163
+ value: tr.value,
164
+ tone: root.tone,
165
+ textColor: labelColorForTone(root.tone),
166
+ rect: inset(tr.rect, PADDING / 2),
167
+ depth: 0,
168
+ });
169
+ }
170
+ });
171
+ cells = result;
172
+ }
173
+ }
174
+ const legendItems = !data
175
+ ? []
176
+ : data
177
+ .map((d, i) => ({ label: d.label, tone: d.tone ?? TONES[i % TONES.length] }))
178
+ .filter((_, i) => sumValue(data[i]) > 0);
179
+ const dataValueItems = cells.map((c) => c.parentLabel ? `${c.parentLabel}, ${c.datum.label}: ${c.value}` : `${c.datum.label}: ${c.value}`);
180
+ const hoveredIdx = hoveredIndex.value;
181
+ // Préfixe d'id unique pour les clip-paths (évite les collisions entre instances).
182
+ const clipPrefix = `st-treemap-clip-${Math.random().toString(36).slice(2, 9)}`;
183
+ // <defs> contenant un clipPath par cellule.
184
+ const defsChildren = cells.map((cell, i) => h("clipPath", { key: `clip${i}`, id: `${clipPrefix}-${i}` }, [
185
+ h("rect", { x: cell.rect.x, y: cell.rect.y, width: cell.rect.w, height: cell.rect.h, rx: "2" }),
186
+ ]));
187
+ const cellNodes = [h("defs", {}, defsChildren)];
188
+ cells.forEach((cell, i) => {
189
+ const groupChildren = [
190
+ h("rect", {
191
+ class: classNames("st-treemapChart__rect", `st-treemapChart__rect--${cell.tone}`, hoveredIdx !== null && hoveredIdx !== i && "st-treemapChart__rect--dim"),
192
+ x: cell.rect.x,
193
+ y: cell.rect.y,
194
+ width: cell.rect.w,
195
+ height: cell.rect.h,
196
+ rx: "2",
197
+ "data-chart-index": i,
198
+ }),
199
+ ];
200
+ if (showLabels && cell.rect.w >= LABEL_MIN_W && cell.rect.h >= LABEL_MIN_H) {
201
+ const textGroup = [
202
+ h("text", { class: "st-treemapChart__label", x: cell.rect.x + 6, y: cell.rect.y + 15, "data-chart-index": i, style: `fill: ${cell.textColor}` }, cell.datum.label),
203
+ ];
204
+ if (cell.rect.h >= VALUE_MIN_H) {
205
+ textGroup.push(h("text", { class: "st-treemapChart__value", x: cell.rect.x + 6, y: cell.rect.y + 30, "data-chart-index": i, style: `fill: ${cell.textColor}` }, String(cell.value)));
206
+ }
207
+ groupChildren.push(h("g", { "clip-path": `url(#${clipPrefix}-${i})` }, textGroup));
208
+ }
209
+ cellNodes.push(h("g", {
210
+ key: cell.parentLabel ? `${cell.parentLabel}/${cell.datum.label}` : cell.datum.label,
211
+ class: "st-treemapChart__cell",
212
+ "data-chart-index": i,
213
+ }, groupChildren));
214
+ });
215
+ const children = [
216
+ h("div", {
217
+ class: "st-treemapChart__visual",
218
+ role: "img",
219
+ "aria-label": label,
220
+ onPointermove: handleVisualPointerMove,
221
+ onPointerleave: handleLeave,
222
+ }, [
223
+ h("svg", {
224
+ viewBox: `0 0 ${width} ${height}`,
225
+ preserveAspectRatio: "xMidYMid meet",
226
+ width: "100%",
227
+ height: "100%",
228
+ focusable: "false",
229
+ "aria-hidden": "true",
230
+ }, cellNodes),
231
+ ]),
232
+ chartDataList(label, dataValueItems),
233
+ ];
234
+ if (hoveredIdx !== null && cells[hoveredIdx]) {
235
+ const cell = cells[hoveredIdx];
236
+ children.push(h("div", {
237
+ class: "st-treemapChart__tooltip",
238
+ role: "presentation",
239
+ style: `left: ${((cell.rect.x + cell.rect.w / 2) / width) * 100}%; top: ${(cell.rect.y / height) * 100}%`,
240
+ }, [
241
+ h("span", { class: "st-treemapChart__tooltipLabel" }, cell.parentLabel ? `${cell.parentLabel} · ${cell.datum.label}` : cell.datum.label),
242
+ h("span", { class: "st-treemapChart__tooltipValue" }, String(cell.value)),
243
+ ]));
244
+ }
245
+ if (legend && legendItems.length > 0) {
246
+ children.push(h("ul", { class: "st-treemapChart__legend", "aria-hidden": "true" }, legendItems.map((item) => h("li", { key: item.label, class: "st-treemapChart__legendItem" }, [
247
+ h("span", { class: `st-treemapChart__legendSwatch st-treemapChart__legendSwatch--${item.tone}`, "aria-hidden": "true" }),
248
+ ` ${item.label}`,
249
+ ]))));
250
+ }
251
+ return h("div", { ...attrs, class: classNames("st-treemapChart", props.class) }, children);
252
+ };
253
+ },
254
+ });
255
+ //# sourceMappingURL=TreemapChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreemapChart.js","sourceRoot":"","sources":["../src/TreemapChart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ export type WaterfallType = "increase" | "decrease" | "total";
2
+ export type WaterfallChartDatum = {
3
+ label: string;
4
+ value: number;
5
+ type?: WaterfallType;
6
+ };
7
+ export type WaterfallChartProps = {
8
+ data: WaterfallChartDatum[];
9
+ width?: number;
10
+ height?: number;
11
+ connectors?: boolean;
12
+ format?: (value: number) => string;
13
+ label: string;
14
+ class?: string;
15
+ };
16
+ export declare const WaterfallChart: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
17
+ data: {
18
+ type: () => WaterfallChartDatum[];
19
+ default: () => never[];
20
+ };
21
+ width: {
22
+ type: NumberConstructor;
23
+ default: number;
24
+ };
25
+ height: {
26
+ type: NumberConstructor;
27
+ default: number;
28
+ };
29
+ connectors: {
30
+ type: BooleanConstructor;
31
+ default: boolean;
32
+ };
33
+ format: {
34
+ type: () => (value: number) => string;
35
+ default: undefined;
36
+ };
37
+ label: {
38
+ type: StringConstructor;
39
+ required: true;
40
+ };
41
+ class: {
42
+ type: StringConstructor;
43
+ default: undefined;
44
+ };
45
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
46
+ [key: string]: any;
47
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
48
+ data: {
49
+ type: () => WaterfallChartDatum[];
50
+ default: () => never[];
51
+ };
52
+ width: {
53
+ type: NumberConstructor;
54
+ default: number;
55
+ };
56
+ height: {
57
+ type: NumberConstructor;
58
+ default: number;
59
+ };
60
+ connectors: {
61
+ type: BooleanConstructor;
62
+ default: boolean;
63
+ };
64
+ format: {
65
+ type: () => (value: number) => string;
66
+ default: undefined;
67
+ };
68
+ label: {
69
+ type: StringConstructor;
70
+ required: true;
71
+ };
72
+ class: {
73
+ type: StringConstructor;
74
+ default: undefined;
75
+ };
76
+ }>> & Readonly<{}>, {
77
+ class: string;
78
+ data: WaterfallChartDatum[];
79
+ width: number;
80
+ height: number;
81
+ format: (value: number) => string;
82
+ connectors: boolean;
83
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
84
+ //# sourceMappingURL=WaterfallChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaterfallChart.d.ts","sourceRoot":"","sources":["../src/WaterfallChart.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,eAAO,MAAM,cAAc;;cAGA,MAAM,mBAAmB,EAAE;;;;;;;;;;;;;;;;cAIX,MAAM,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;cAJ/C,MAAM,mBAAmB,EAAE;;;;;;;;;;;;;;;;cAIX,MAAM,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;oBAAjB,MAAM,KAAK,MAAM;;4EAgQxE,CAAC"}