@sentropic/design-system-vue 0.36.23 → 0.36.25

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.
@@ -1,3 +1,5 @@
1
+ import { type ChartAnnotation } from "./chartAnnotations.js";
2
+ import { type DataLabelsProp } from "./chartDataLabels.js";
1
3
  export type AreaChartTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
2
4
  export type AreaChartDatum = {
3
5
  x: number | string;
@@ -10,6 +12,20 @@ export type AreaChartProps = {
10
12
  tone?: AreaChartTone;
11
13
  smooth?: boolean;
12
14
  label: string;
15
+ /**
16
+ * Annotation overlay in DATA space (points, labels, axis lines, regions,
17
+ * polygons), resolved to pixels via the chart scales. Regions render behind
18
+ * the area, every other kind above it. Additive: absent ⇒ unchanged.
19
+ */
20
+ annotations?: ChartAnnotation[];
21
+ /**
22
+ * Per-point value labels. `false`/absent (default) → none. `true` → each
23
+ * point's value with the chart's numeric formatter. Object → `format(value)`
24
+ * and/or a `position` override. Default position is `top` (above the point).
25
+ * Labels are `aria-hidden` — the values already live in the accessible
26
+ * ChartDataList.
27
+ */
28
+ dataLabels?: DataLabelsProp;
13
29
  class?: string;
14
30
  };
15
31
  export declare const AreaChart: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
@@ -37,6 +53,14 @@ export declare const AreaChart: import("vue").DefineComponent<import("vue").Extr
37
53
  type: StringConstructor;
38
54
  required: true;
39
55
  };
56
+ annotations: {
57
+ type: () => ChartAnnotation[];
58
+ default: undefined;
59
+ };
60
+ dataLabels: {
61
+ type: () => DataLabelsProp;
62
+ default: undefined;
63
+ };
40
64
  class: {
41
65
  type: StringConstructor;
42
66
  default: undefined;
@@ -68,6 +92,14 @@ export declare const AreaChart: import("vue").DefineComponent<import("vue").Extr
68
92
  type: StringConstructor;
69
93
  required: true;
70
94
  };
95
+ annotations: {
96
+ type: () => ChartAnnotation[];
97
+ default: undefined;
98
+ };
99
+ dataLabels: {
100
+ type: () => DataLabelsProp;
101
+ default: undefined;
102
+ };
71
103
  class: {
72
104
  type: StringConstructor;
73
105
  default: undefined;
@@ -79,5 +111,7 @@ export declare const AreaChart: import("vue").DefineComponent<import("vue").Extr
79
111
  width: number;
80
112
  tone: AreaChartTone;
81
113
  smooth: boolean;
114
+ annotations: ChartAnnotation[];
115
+ dataLabels: DataLabelsProp;
82
116
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
83
117
  //# sourceMappingURL=AreaChart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AreaChart.d.ts","sourceRoot":"","sources":["../src/AreaChart.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF,eAAO,MAAM,SAAS;;cAGK,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE;;;;;;;;;;;;cAGhC,MAAM,aAAa;;;;;;;;;;;;;;;;;;;cAHpB,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE;;;;;;;;;;;;cAGhC,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;4EA0M7C,CAAC"}
1
+ {"version":3,"file":"AreaChart.d.ts","sourceRoot":"","sources":["../src/AreaChart.ts"],"names":[],"mappings":"AAYA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjG,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF,eAAO,MAAM,SAAS;;cAGK,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE;;;;;;;;;;;;cAGhC,MAAM,aAAa;;;;;;;;;;;;cAGb,MAAM,eAAe,EAAE;;;;cACD,MAAM,cAAc;;;;;;;;;;;cAPjD,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE;;;;;;;;;;;;cAGhC,MAAM,aAAa;;;;;;;;;;;;cAGb,MAAM,eAAe,EAAE;;;;cACD,MAAM,cAAc;;;;;;;;;;;;;;;;4EAiW1E,CAAC"}
package/dist/AreaChart.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { defineComponent, h, ref } from "vue";
2
2
  import { classNames } from "./classNames.js";
3
3
  import { buildLinearPath, buildSmoothPath, CHART_MARGIN, chartDataList, formatTick, isNumeric, niceTicks, scaleLinear, } from "./chartScale.js";
4
+ import { annotationDataListItems, polygonPoints, resolveAnnotations, } from "./chartAnnotations.js";
5
+ import { formatDataLabel, normalizeDataLabels } from "./chartDataLabels.js";
4
6
  const MARGIN = CHART_MARGIN;
5
7
  let gradientCounter = 0;
6
8
  export const AreaChart = defineComponent({
@@ -12,6 +14,8 @@ export const AreaChart = defineComponent({
12
14
  tone: { type: String, default: "category1" },
13
15
  smooth: { type: Boolean, default: false },
14
16
  label: { type: String, required: true },
17
+ annotations: { type: Array, default: undefined },
18
+ dataLabels: { type: [Boolean, Object], default: undefined },
15
19
  class: { type: String, default: undefined },
16
20
  },
17
21
  setup(props, { attrs }) {
@@ -38,7 +42,10 @@ export const AreaChart = defineComponent({
38
42
  const plotWidth = Math.max(width - MARGIN.left - MARGIN.right, 1);
39
43
  const plotHeight = Math.max(height - MARGIN.top - MARGIN.bottom, 1);
40
44
  const normalizedData = (props.data ?? []).map((d, i) => typeof d === "number" ? { x: i, y: d } : d);
41
- const dataValueItems = normalizedData.map((d) => `${d.x}: ${d.y}`);
45
+ const dataValueItems = [
46
+ ...normalizedData.map((d) => `${d.x}: ${d.y}`),
47
+ ...annotationDataListItems(props.annotations),
48
+ ];
42
49
  let xDomain;
43
50
  if (normalizedData.length === 0) {
44
51
  xDomain = { kind: "ordinal", values: [] };
@@ -78,6 +85,55 @@ export const AreaChart = defineComponent({
78
85
  return { x: MARGIN.left + x, y: MARGIN.top + y, datum: d, index: i };
79
86
  });
80
87
  }
88
+ // --- Annotation overlay -------------------------------------------------
89
+ // `xScale` honours the ordinal/numeric x domain; `yScale` mirrors the
90
+ // point y mapping. Out-of-domain coordinates yield `null` → the resolver
91
+ // drops them.
92
+ const ordinalIndex = (v) => {
93
+ if (xDomain.kind !== "ordinal")
94
+ return null;
95
+ const i = normalizedData.findIndex((d) => d.x === v);
96
+ if (i < 0)
97
+ return null;
98
+ const denom = Math.max(normalizedData.length - 1, 1);
99
+ return normalizedData.length === 1 ? plotWidth / 2 : (i / denom) * plotWidth;
100
+ };
101
+ const annotationXScale = (v) => {
102
+ if (xDomain.kind === "numeric") {
103
+ if (typeof v !== "number" || !Number.isFinite(v))
104
+ return null;
105
+ if (v < xDomain.min || v > xDomain.max)
106
+ return null;
107
+ return scaleLinear(v, xDomain.min, xDomain.max, 0, plotWidth);
108
+ }
109
+ return ordinalIndex(v);
110
+ };
111
+ const annotationYScale = (v) => {
112
+ if (!Number.isFinite(v) || v < yDomain.min || v > yDomain.max)
113
+ return null;
114
+ return scaleLinear(v, yDomain.min, yDomain.max, plotHeight, 0);
115
+ };
116
+ const resolvedAnnotations = resolveAnnotations(props.annotations, {
117
+ xScale: annotationXScale,
118
+ yScale: annotationYScale,
119
+ plotLeft: MARGIN.left,
120
+ plotTop: MARGIN.top,
121
+ plotWidth,
122
+ plotHeight,
123
+ });
124
+ const annotationRegions = resolvedAnnotations.filter((a) => a.kind === "region");
125
+ const annotationAbove = resolvedAnnotations.filter((a) => a.kind !== "region");
126
+ // --- Data labels ------------------------------------------------------
127
+ // One value label per point. Default `top`: just above the dot. `center`
128
+ // sits on the dot. aria-hidden (values are in the ChartDataList already).
129
+ const dataLabelOpts = normalizeDataLabels(props.dataLabels);
130
+ const dataLabelItems = dataLabelOpts.enabled
131
+ ? points.map((p) => {
132
+ const text = formatDataLabel(p.datum.y, dataLabelOpts, formatTick);
133
+ const center = dataLabelOpts.position === "center" || dataLabelOpts.position === "inside";
134
+ return { key: p.index, x: p.x, y: center ? p.y : p.y - 8, text, baseline: center ? "middle" : "auto" };
135
+ })
136
+ : [];
81
137
  const linePath = points.length === 0 ? "" : smooth ? buildSmoothPath(points) : buildLinearPath(points);
82
138
  let areaPath = "";
83
139
  if (points.length !== 0) {
@@ -113,6 +169,65 @@ export const AreaChart = defineComponent({
113
169
  }
114
170
  const xLabels = xTickEntries.map((tick, i) => h("text", { key: `x${i}`, class: "st-areaChart__tickLabel", x: tick.x, y: height - MARGIN.bottom + 16, "text-anchor": "middle" }, tick.label));
115
171
  const dots = points.map((p) => h("circle", { key: p.index, class: "st-areaChart__dot", cx: p.x, cy: p.y, r: "4", "data-chart-index": p.index }));
172
+ // Annotation regions sit BEHIND the area.
173
+ const annotationRegionGroup = annotationRegions.length > 0
174
+ ? h("g", { class: "st-areaChart__annotations st-areaChart__annotations--behind" }, annotationRegions.flatMap((a) => {
175
+ if (a.kind !== "region")
176
+ return [];
177
+ const nodes = [
178
+ h("rect", { key: `ann-region-${a.key}`, class: "st-areaChart__annotationRegion", x: a.x, y: a.y, width: a.width, height: a.height }),
179
+ ];
180
+ if (a.label) {
181
+ nodes.push(h("text", { key: `ann-region-label-${a.key}`, class: "st-areaChart__annotationLabel", x: a.x + 4, y: a.y + 11 }, a.label));
182
+ }
183
+ return nodes;
184
+ }))
185
+ : null;
186
+ // Annotations ABOVE the area: lines, shapes, points, labels.
187
+ const annotationAboveGroup = annotationAbove.length > 0
188
+ ? h("g", { class: "st-areaChart__annotations st-areaChart__annotations--above" }, annotationAbove.flatMap((a) => {
189
+ if (a.kind === "line") {
190
+ const nodes = [
191
+ h("line", { key: `ann-line-${a.key}`, class: "st-areaChart__annotationLine", x1: a.x1, y1: a.y1, x2: a.x2, y2: a.y2 }),
192
+ ];
193
+ if (a.label) {
194
+ nodes.push(h("text", {
195
+ key: `ann-line-label-${a.key}`,
196
+ class: "st-areaChart__annotationLabel",
197
+ x: a.axis === "x" ? a.x1 + 4 : MARGIN.left + plotWidth - 4,
198
+ y: a.axis === "x" ? MARGIN.top + 11 : a.y1 - 4,
199
+ "text-anchor": a.axis === "x" ? "start" : "end",
200
+ }, a.label));
201
+ }
202
+ return nodes;
203
+ }
204
+ if (a.kind === "shape") {
205
+ const nodes = [
206
+ h("polygon", { key: `ann-shape-${a.key}`, class: "st-areaChart__annotationShape", points: polygonPoints(a.points) }),
207
+ ];
208
+ if (a.label) {
209
+ nodes.push(h("text", { key: `ann-shape-label-${a.key}`, class: "st-areaChart__annotationLabel", x: a.labelX, y: a.labelY, "text-anchor": "middle" }, a.label));
210
+ }
211
+ return nodes;
212
+ }
213
+ if (a.kind === "point") {
214
+ const nodes = [
215
+ h("circle", { key: `ann-point-${a.key}`, class: "st-areaChart__annotationPoint", cx: a.x, cy: a.y, r: "4.5" }),
216
+ ];
217
+ if (a.label) {
218
+ nodes.push(h("text", { key: `ann-point-label-${a.key}`, class: "st-areaChart__annotationLabel", x: a.x, y: a.y - 8, "text-anchor": "middle" }, a.label));
219
+ }
220
+ return nodes;
221
+ }
222
+ return [
223
+ h("text", { key: `ann-label-${a.key}`, class: "st-areaChart__annotationText", x: a.x, y: a.y, "text-anchor": a.anchor }, a.text),
224
+ ];
225
+ }))
226
+ : null;
227
+ // Data labels — one value per point, drawn on top. aria-hidden.
228
+ const dataLabelGroup = dataLabelItems.length > 0
229
+ ? h("g", { class: "st-areaChart__dataLabels", "aria-hidden": "true" }, dataLabelItems.map((d) => h("text", { key: `dl-${d.key}`, class: "st-areaChart__dataLabel", x: d.x, y: d.y, "text-anchor": "middle", "dominant-baseline": d.baseline }, d.text)))
230
+ : null;
116
231
  const svgChildren = [
117
232
  h("defs", {}, [
118
233
  h("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1" }, [
@@ -125,6 +240,9 @@ export const AreaChart = defineComponent({
125
240
  h("line", { class: "st-areaChart__axis", x1: MARGIN.left, x2: width - MARGIN.right, y1: height - MARGIN.bottom, y2: height - MARGIN.bottom }),
126
241
  ...xLabels,
127
242
  ];
243
+ if (annotationRegionGroup) {
244
+ svgChildren.push(annotationRegionGroup);
245
+ }
128
246
  if (areaPath) {
129
247
  svgChildren.push(h("path", { class: "st-areaChart__area", d: areaPath, fill: `url(#${gradientId})` }));
130
248
  }
@@ -132,6 +250,12 @@ export const AreaChart = defineComponent({
132
250
  svgChildren.push(h("path", { class: "st-areaChart__line", d: linePath, fill: "none", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }));
133
251
  }
134
252
  svgChildren.push(...dots);
253
+ if (annotationAboveGroup) {
254
+ svgChildren.push(annotationAboveGroup);
255
+ }
256
+ if (dataLabelGroup) {
257
+ svgChildren.push(dataLabelGroup);
258
+ }
135
259
  const hoveredPoint = hoveredIndex.value !== null ? points[hoveredIndex.value] : undefined;
136
260
  return h("div", { ...attrs, class: classNames("st-areaChart", `st-areaChart--${tone}`, props.class) }, [
137
261
  h("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"AreaChart.js","sourceRoot":"","sources":["../src/AreaChart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AreaChart.js","sourceRoot":"","sources":["../src/AreaChart.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { type ChartBand, type ChartGoalLine, type ChartReferenceLine, type ChartScale } from "./chartScale.js";
2
+ import { type ChartAnnotation } from "./chartAnnotations.js";
3
+ import { type DataLabelsProp } from "./chartDataLabels.js";
2
4
  export type BarChartTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
3
5
  export type BarChartDatum = {
4
6
  label: string;
@@ -44,6 +46,22 @@ export type BarChartProps = {
44
46
  bands?: ChartBand[];
45
47
  /** A single goal line, emphasised above the bars. */
46
48
  goalLine?: ChartGoalLine;
49
+ /**
50
+ * Annotation overlay in DATA space. The x coordinate is CATEGORICAL — it
51
+ * matches a bar by its `label` (centre of band) and is ignored otherwise; the
52
+ * y coordinate (and `value`/`from`/`to`) are value-axis numbers. Regions
53
+ * render behind the bars, every other kind above. Additive: absent ⇒
54
+ * unchanged.
55
+ */
56
+ annotations?: ChartAnnotation[];
57
+ /**
58
+ * Per-bar value labels. `false`/absent (default) → none. `true` → each bar's
59
+ * value with the chart's numeric formatter. Object → `format(value)` and/or a
60
+ * `position` override. Default position is `outside` (above the bar in
61
+ * vertical mode, past the bar end in horizontal mode). Labels are
62
+ * `aria-hidden` — the values already live in the accessible ChartDataList.
63
+ */
64
+ dataLabels?: DataLabelsProp;
47
65
  /**
48
66
  * Value-axis scale. `"linear"` (default) is unchanged. `"log"` switches the
49
67
  * value axis to base-10 logarithmic — values `<= 0` are ignored for
@@ -105,6 +123,14 @@ export declare const BarChart: import("vue").DefineComponent<import("vue").Extra
105
123
  type: () => ChartGoalLine;
106
124
  default: undefined;
107
125
  };
126
+ annotations: {
127
+ type: () => ChartAnnotation[];
128
+ default: undefined;
129
+ };
130
+ dataLabels: {
131
+ type: () => DataLabelsProp;
132
+ default: undefined;
133
+ };
108
134
  scale: {
109
135
  type: () => ChartScale;
110
136
  default: string;
@@ -168,6 +194,14 @@ export declare const BarChart: import("vue").DefineComponent<import("vue").Extra
168
194
  type: () => ChartGoalLine;
169
195
  default: undefined;
170
196
  };
197
+ annotations: {
198
+ type: () => ChartAnnotation[];
199
+ default: undefined;
200
+ };
201
+ dataLabels: {
202
+ type: () => DataLabelsProp;
203
+ default: undefined;
204
+ };
171
205
  scale: {
172
206
  type: () => ChartScale;
173
207
  default: string;
@@ -191,6 +225,8 @@ export declare const BarChart: import("vue").DefineComponent<import("vue").Extra
191
225
  width: number;
192
226
  orientation: "horizontal" | "vertical";
193
227
  scale: ChartScale;
228
+ annotations: ChartAnnotation[];
229
+ dataLabels: DataLabelsProp;
194
230
  domain: [number, number];
195
231
  selectedKeys: string[];
196
232
  referenceLines: ChartReferenceLine[];
@@ -1 +1 @@
1
- {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../src/BarChart.ts"],"names":[],"mappings":"AAEA,OAAO,EAeL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACtC,oDAAoD;IACpD,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,eAAO,MAAM,QAAQ;;cAGM,MAAM,aAAa,EAAE;;;;;;;;;;;;cAGb,MAAM,UAAU,GAAG,YAAY;;;;;;;;cAE1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;cAC3B,MAAM,MAAM,EAAE;;;;cACJ,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;;;;cACnC,MAAM,kBAAkB,EAAE;;;;cACnC,MAAM,SAAS,EAAE;;;;cACb,MAAM,aAAa;;;;cACtB,MAAM,UAAU;;;;;;;;;;;;;;;;;;;cAXlB,MAAM,aAAa,EAAE;;;;;;;;;;;;cAGb,MAAM,UAAU,GAAG,YAAY;;;;;;;;cAE1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;cAC3B,MAAM,MAAM,EAAE;;;;cACJ,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;;;;cACnC,MAAM,kBAAkB,EAAE;;;;cACnC,MAAM,SAAS,EAAE;;;;cACb,MAAM,aAAa;;;;cACtB,MAAM,UAAU;;;;;;;;;;;;;;;;;oBAJY,MAAM,KAAK,IAAI;;;;;;;;;;;;4EAmdtE,CAAC"}
1
+ {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../src/BarChart.ts"],"names":[],"mappings":"AAEA,OAAO,EAeL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjG,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACtC,oDAAoD;IACpD,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,eAAO,MAAM,QAAQ;;cAGM,MAAM,aAAa,EAAE;;;;;;;;;;;;cAGb,MAAM,UAAU,GAAG,YAAY;;;;;;;;cAE1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;cAC3B,MAAM,MAAM,EAAE;;;;cACJ,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;;;;cACnC,MAAM,kBAAkB,EAAE;;;;cACnC,MAAM,SAAS,EAAE;;;;cACb,MAAM,aAAa;;;;cACjB,MAAM,eAAe,EAAE;;;;cACD,MAAM,cAAc;;;;cAC/C,MAAM,UAAU;;;;;;;;;;;;;;;;;;;cAblB,MAAM,aAAa,EAAE;;;;;;;;;;;;cAGb,MAAM,UAAU,GAAG,YAAY;;;;;;;;cAE1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;cAC3B,MAAM,MAAM,EAAE;;;;cACJ,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;;;;cACnC,MAAM,kBAAkB,EAAE;;;;cACnC,MAAM,SAAS,EAAE;;;;cACb,MAAM,aAAa;;;;cACjB,MAAM,eAAe,EAAE;;;;cACD,MAAM,cAAc;;;;cAC/C,MAAM,UAAU;;;;;;;;;;;;;;;;;oBANY,MAAM,KAAK,IAAI;;;;;;;;;;;;;;4EAioBtE,CAAC"}
package/dist/BarChart.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { defineComponent, h, ref } from "vue";
2
2
  import { classNames } from "./classNames.js";
3
3
  import { CHART_MARGIN, chartDataList, clampFraction, extendValueDomain, fixedLogTicks, fixedTicks, formatTick, logTicks, niceTicks, overlayDataListItems, overlayToneClass, smallestPositive, validLinearDomain, validLogDomain, } from "./chartScale.js";
4
+ import { annotationDataListItems, polygonPoints, resolveAnnotations, } from "./chartAnnotations.js";
5
+ import { formatDataLabel, normalizeDataLabels } from "./chartDataLabels.js";
4
6
  const MARGIN = CHART_MARGIN;
5
7
  export const BarChart = defineComponent({
6
8
  name: "BarChart",
@@ -16,6 +18,8 @@ export const BarChart = defineComponent({
16
18
  referenceLines: { type: Array, default: undefined },
17
19
  bands: { type: Array, default: undefined },
18
20
  goalLine: { type: Object, default: undefined },
21
+ annotations: { type: Array, default: undefined },
22
+ dataLabels: { type: [Boolean, Object], default: undefined },
19
23
  scale: { type: String, default: "linear" },
20
24
  invertAxis: { type: Boolean, default: false },
21
25
  showLegend: { type: Boolean, default: undefined },
@@ -219,9 +223,83 @@ export const BarChart = defineComponent({
219
223
  });
220
224
  }
221
225
  }
226
+ // --- Annotation overlay -------------------------------------------------
227
+ // The x coordinate is CATEGORICAL (a bar `label` → centre of band); the y
228
+ // coordinate is a value-axis number. For a HORIZONTAL chart the value axis
229
+ // is x and the category axis is y, so the data-space (x=category, y=value)
230
+ // convention is transposed onto the pixel axes: the resolver's `xScale`
231
+ // maps the value, `yScale` the category, and each annotation's
232
+ // `axis`/coords are swapped so a value reference (`axis: "y"`) still spans
233
+ // the full plot.
234
+ const categoryPixel = (v) => {
235
+ const bar = bars.find((b) => b.datum.label === String(v));
236
+ if (!bar)
237
+ return null;
238
+ return isVertical ? bar.cx - MARGIN.left : bar.cy - MARGIN.top;
239
+ };
240
+ const valuePixelRel = (v) => {
241
+ if (!Number.isFinite(v))
242
+ return null;
243
+ return valuePos(v) - (isVertical ? MARGIN.top : MARGIN.left);
244
+ };
245
+ const transposeAnnotations = (list) => {
246
+ if (!list || isVertical)
247
+ return list;
248
+ // Horizontal: swap the data-space x/y (and the region/line axis) so the
249
+ // generic resolver — which always emits xScale→x-pixel, yScale→y-pixel —
250
+ // lands the value on the x axis and the category on the y axis.
251
+ return list.map((a) => {
252
+ switch (a.kind) {
253
+ case "line":
254
+ return { ...a, axis: a.axis === "x" ? "y" : "x" };
255
+ case "region":
256
+ return { ...a, axis: a.axis === "x" ? "y" : "x" };
257
+ case "point":
258
+ return { ...a, x: a.y, y: typeof a.x === "number" ? a.x : NaN };
259
+ case "label":
260
+ return { ...a, x: a.y, y: typeof a.x === "number" ? a.x : NaN };
261
+ case "shape":
262
+ return { ...a, points: a.points.map((p) => ({ x: p.y, y: typeof p.x === "number" ? p.x : NaN })) };
263
+ }
264
+ });
265
+ };
266
+ const annXScale = (v) => isVertical ? categoryPixel(v) : typeof v === "number" ? valuePixelRel(v) : null;
267
+ const annYScale = (v) => (isVertical ? valuePixelRel(v) : categoryPixel(v));
268
+ const resolvedAnnotations = resolveAnnotations(transposeAnnotations(props.annotations), {
269
+ xScale: annXScale,
270
+ yScale: annYScale,
271
+ plotLeft: MARGIN.left,
272
+ plotTop: MARGIN.top,
273
+ plotWidth,
274
+ plotHeight,
275
+ });
276
+ const annotationRegions = resolvedAnnotations.filter((a) => a.kind === "region");
277
+ const annotationAbove = resolvedAnnotations.filter((a) => a.kind !== "region");
278
+ // --- Data labels ------------------------------------------------------
279
+ // One value label per bar, placed at the bar's value end. Default
280
+ // `outside`: above the bar (vertical) / past the bar end (horizontal).
281
+ // `inside`/`center` sit at the bar's mid-length. aria-hidden (values are
282
+ // in the ChartDataList already).
283
+ const dataLabelOpts = normalizeDataLabels(props.dataLabels);
284
+ const dataLabelItems = dataLabelOpts.enabled
285
+ ? bars.map((bar) => {
286
+ const text = formatDataLabel(bar.datum.value, dataLabelOpts, formatTick);
287
+ const pos = dataLabelOpts.position ?? "outside";
288
+ const inside = pos === "inside" || pos === "center";
289
+ if (isVertical) {
290
+ const x = bar.cx;
291
+ const y = inside ? bar.y + bar.height / 2 : bar.cy - 6;
292
+ return { key: bar.datum.label, x, y, text, anchor: "middle", baseline: inside ? "middle" : "auto" };
293
+ }
294
+ const y = bar.cy;
295
+ const x = inside ? bar.x + bar.width / 2 : bar.cx + 4;
296
+ return { key: bar.datum.label, x, y, text, anchor: inside ? "middle" : "start", baseline: "middle" };
297
+ })
298
+ : [];
222
299
  const dataValueItems = [
223
300
  ...data.map((d) => `${d.label}: ${d.value}`),
224
301
  ...overlayDataListItems({ referenceLines, bands, goalLine: goal, trend: null }),
302
+ ...annotationDataListItems(props.annotations),
225
303
  ];
226
304
  const gridChildren = [];
227
305
  if (orientation === "vertical") {
@@ -308,6 +386,65 @@ export const BarChart = defineComponent({
308
386
  "text-anchor": isVertical ? "end" : "start",
309
387
  }, goalGeom.label ?? `Objectif ${goalGeom.value}`));
310
388
  }
389
+ // Annotation regions sit BEHIND the bars (filled bands).
390
+ const annotationRegionGroup = annotationRegions.length > 0
391
+ ? h("g", { class: "st-barChart__annotations st-barChart__annotations--behind" }, annotationRegions.flatMap((a) => {
392
+ if (a.kind !== "region")
393
+ return [];
394
+ const nodes = [
395
+ h("rect", { key: `ann-region-${a.key}`, class: "st-barChart__annotationRegion", x: a.x, y: a.y, width: a.width, height: a.height }),
396
+ ];
397
+ if (a.label) {
398
+ nodes.push(h("text", { key: `ann-region-label-${a.key}`, class: "st-barChart__annotationLabel", x: a.x + 4, y: a.y + 11 }, a.label));
399
+ }
400
+ return nodes;
401
+ }))
402
+ : null;
403
+ // Annotations ABOVE the bars: lines, shapes, points, labels.
404
+ const annotationAboveGroup = annotationAbove.length > 0
405
+ ? h("g", { class: "st-barChart__annotations st-barChart__annotations--above" }, annotationAbove.flatMap((a) => {
406
+ if (a.kind === "line") {
407
+ const nodes = [
408
+ h("line", { key: `ann-line-${a.key}`, class: "st-barChart__annotationLine", x1: a.x1, y1: a.y1, x2: a.x2, y2: a.y2 }),
409
+ ];
410
+ if (a.label) {
411
+ nodes.push(h("text", {
412
+ key: `ann-line-label-${a.key}`,
413
+ class: "st-barChart__annotationLabel",
414
+ x: a.axis === "x" ? a.x1 + 4 : MARGIN.left + plotWidth - 4,
415
+ y: a.axis === "x" ? MARGIN.top + 11 : a.y1 - 4,
416
+ "text-anchor": a.axis === "x" ? "start" : "end",
417
+ }, a.label));
418
+ }
419
+ return nodes;
420
+ }
421
+ if (a.kind === "shape") {
422
+ const nodes = [
423
+ h("polygon", { key: `ann-shape-${a.key}`, class: "st-barChart__annotationShape", points: polygonPoints(a.points) }),
424
+ ];
425
+ if (a.label) {
426
+ nodes.push(h("text", { key: `ann-shape-label-${a.key}`, class: "st-barChart__annotationLabel", x: a.labelX, y: a.labelY, "text-anchor": "middle" }, a.label));
427
+ }
428
+ return nodes;
429
+ }
430
+ if (a.kind === "point") {
431
+ const nodes = [
432
+ h("circle", { key: `ann-point-${a.key}`, class: "st-barChart__annotationPoint", cx: a.x, cy: a.y, r: "4.5" }),
433
+ ];
434
+ if (a.label) {
435
+ nodes.push(h("text", { key: `ann-point-label-${a.key}`, class: "st-barChart__annotationLabel", x: a.x, y: a.y - 8, "text-anchor": "middle" }, a.label));
436
+ }
437
+ return nodes;
438
+ }
439
+ return [
440
+ h("text", { key: `ann-label-${a.key}`, class: "st-barChart__annotationText", x: a.x, y: a.y, "text-anchor": a.anchor }, a.text),
441
+ ];
442
+ }))
443
+ : null;
444
+ // Data labels — one value per bar, drawn on top. aria-hidden.
445
+ const dataLabelGroup = dataLabelItems.length > 0
446
+ ? h("g", { class: "st-barChart__dataLabels", "aria-hidden": "true" }, dataLabelItems.map((d) => h("text", { key: `dl-${d.key}`, class: "st-barChart__dataLabel", x: d.x, y: d.y, "text-anchor": d.anchor, "dominant-baseline": d.baseline }, d.text)))
447
+ : null;
311
448
  // Accessible selection surface — real <button>s OUTSIDE the aria-hidden
312
449
  // SVG. This is the keyboard + screen-reader path for filtering.
313
450
  const filterGroup = interactive
@@ -347,9 +484,12 @@ export const BarChart = defineComponent({
347
484
  h("line", { class: "st-barChart__axis", x1: MARGIN.left, x2: width - MARGIN.right, y1: height - MARGIN.bottom, y2: height - MARGIN.bottom }),
348
485
  ...categoryLabels,
349
486
  ...belowOverlays,
487
+ ...(annotationRegionGroup ? [annotationRegionGroup] : []),
350
488
  ...barRects,
351
489
  ...errorBarNodes,
352
490
  ...goalOverlays,
491
+ ...(annotationAboveGroup ? [annotationAboveGroup] : []),
492
+ ...(dataLabelGroup ? [dataLabelGroup] : []),
353
493
  ]),
354
494
  ]),
355
495
  filterGroup,