@skdx/angular-charts 0.32.0 → 0.34.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.
- package/README.md +96 -41
- package/fesm2022/skdx-angular-charts-area.mjs +27 -33
- package/fesm2022/skdx-angular-charts-area.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-bar.mjs +30 -51
- package/fesm2022/skdx-angular-charts-bar.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-boxplot.mjs +26 -14
- package/fesm2022/skdx-angular-charts-boxplot.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-candlestick.mjs +49 -16
- package/fesm2022/skdx-angular-charts-candlestick.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-chord.mjs +26 -14
- package/fesm2022/skdx-angular-charts-chord.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-funnel.mjs +37 -48
- package/fesm2022/skdx-angular-charts-funnel.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-gantt.mjs +31 -19
- package/fesm2022/skdx-angular-charts-gantt.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-heatmap.mjs +54 -81
- package/fesm2022/skdx-angular-charts-heatmap.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-internal.mjs +2746 -707
- package/fesm2022/skdx-angular-charts-internal.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-line.mjs +26 -16
- package/fesm2022/skdx-angular-charts-line.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-map.mjs +35 -14
- package/fesm2022/skdx-angular-charts-map.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-pie.mjs +47 -25
- package/fesm2022/skdx-angular-charts-pie.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-radar.mjs +45 -81
- package/fesm2022/skdx-angular-charts-radar.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-radial.mjs +108 -0
- package/fesm2022/skdx-angular-charts-radial.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-sankey.mjs +26 -14
- package/fesm2022/skdx-angular-charts-sankey.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-scatter.mjs +49 -19
- package/fesm2022/skdx-angular-charts-scatter.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-sparkline.mjs +50 -60
- package/fesm2022/skdx-angular-charts-sparkline.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-sunburst.mjs +26 -14
- package/fesm2022/skdx-angular-charts-sunburst.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-treemap.mjs +26 -14
- package/fesm2022/skdx-angular-charts-treemap.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-waterfall.mjs +26 -14
- package/fesm2022/skdx-angular-charts-waterfall.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts.mjs +2 -0
- package/fesm2022/skdx-angular-charts.mjs.map +1 -1
- package/package.json +7 -12
- package/types/skdx-angular-charts-area.d.ts +2 -2
- package/types/skdx-angular-charts-bar.d.ts +5 -13
- package/types/skdx-angular-charts-boxplot.d.ts +2 -2
- package/types/skdx-angular-charts-candlestick.d.ts +10 -4
- package/types/skdx-angular-charts-chord.d.ts +2 -2
- package/types/skdx-angular-charts-funnel.d.ts +5 -3
- package/types/skdx-angular-charts-gantt.d.ts +6 -6
- package/types/skdx-angular-charts-heatmap.d.ts +16 -15
- package/types/skdx-angular-charts-internal.d.ts +595 -232
- package/types/skdx-angular-charts-line.d.ts +2 -2
- package/types/skdx-angular-charts-map.d.ts +4 -3
- package/types/skdx-angular-charts-pie.d.ts +11 -3
- package/types/skdx-angular-charts-radar.d.ts +8 -10
- package/types/skdx-angular-charts-radial.d.ts +34 -0
- package/types/skdx-angular-charts-sankey.d.ts +2 -2
- package/types/skdx-angular-charts-scatter.d.ts +11 -4
- package/types/skdx-angular-charts-sparkline.d.ts +13 -5
- package/types/skdx-angular-charts-sunburst.d.ts +2 -2
- package/types/skdx-angular-charts-treemap.d.ts +4 -4
- package/types/skdx-angular-charts-waterfall.d.ts +2 -2
- package/types/skdx-angular-charts.d.ts +2 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @skdx/angular-charts
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Nineteen SVG charts for Angular. Plain SVG colored by `@skdx/tokens`; load `@skdx/tokens/css` once
|
|
4
|
+
so the colors resolve.
|
|
5
5
|
|
|
6
6
|
```sh
|
|
7
7
|
pnpm add @skdx/angular-charts @skdx/tokens
|
|
@@ -12,46 +12,101 @@ import { SkdxBarChartComponent } from '@skdx/angular-charts/bar';
|
|
|
12
12
|
|
|
13
13
|
@Component({
|
|
14
14
|
imports: [SkdxBarChartComponent],
|
|
15
|
-
template:
|
|
15
|
+
template: `
|
|
16
|
+
<skdx-bar-chart
|
|
17
|
+
[series]="series"
|
|
18
|
+
[categories]="['Jan', 'Feb', 'Mar']"
|
|
19
|
+
[format]="{ style: 'currency', currency: 'USD', digits: 0 }"
|
|
20
|
+
></skdx-bar-chart>
|
|
21
|
+
`,
|
|
16
22
|
})
|
|
17
|
-
export class
|
|
18
|
-
series = [{ name: '
|
|
23
|
+
export class Revenue {
|
|
24
|
+
series = [{ name: 'MRR', data: [118_000, 124_500, 131_200] }];
|
|
19
25
|
}
|
|
20
26
|
```
|
|
21
27
|
|
|
22
|
-
Every chart takes `width`, `height
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
`{ name, value?, children? }`.
|
|
33
|
-
|
|
34
|
-
`
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
|
57
|
-
|
|
|
28
|
+
Every chart takes `width`, `height`, `label` (the accessible name), `description`, `decorative`,
|
|
29
|
+
`legend`, `tooltip`, `format`, `palette`, `hiddenSeries`, `loading`, `error` and `emptyMessage`.
|
|
30
|
+
Bar, line and area take `series` (`{ name, data, type?, axis?, curve?, dash?, markers?, stack? }[]`,
|
|
31
|
+
or `{ type: 'range', name, low, high }`) and `categories` (strings, numbers or dates). Pie, funnel
|
|
32
|
+
and radial take `data` (`{ name, value, color? }[]`). Scatter takes `series` of `[x, y]` pairs or
|
|
33
|
+
`[x, y, size]` triples. Sparkline takes `data` (`(number | null)[]`). Heatmap takes `rows`, `columns`
|
|
34
|
+
and `data` (`(number | null)[][]`), or `calendar` (`{ date, value }[]`). Radar takes `series` and
|
|
35
|
+
`categories`.
|
|
36
|
+
|
|
37
|
+
Sankey takes `links` (`{ source, target, value }[]`). Treemap and sunburst take `data` as a tree of
|
|
38
|
+
`{ name, value?, children? }`. Candlestick takes `data` as `{ label, open, high, low, close, volume? }[]`.
|
|
39
|
+
Waterfall takes signed `data` deltas and an optional `total` label. Gantt takes `tasks`
|
|
40
|
+
(`{ name, start, end, group? }[]`). Boxplot takes `series` of raw samples. Chord takes `names` and a
|
|
41
|
+
flow `matrix`. Map takes `features` (`{ name, value, geometry }[]` with GeoJSON Polygon or
|
|
42
|
+
MultiPolygon geometry). `null` and `NaN` values are gaps; an empty chart renders "No data available".
|
|
43
|
+
|
|
44
|
+
Every chart also takes `animate` (fade in and transition on change; `true` is 300 ms, a number sets
|
|
45
|
+
the duration, off under `prefers-reduced-motion` and above 1500 shapes) and `responsive` (lay out
|
|
46
|
+
at the container's width so text keeps its size). Cartesian charts take `xAxis.type: 'time' |
|
|
47
|
+
'linear'` to place numeric or date categories proportionally.
|
|
48
|
+
|
|
49
|
+
Every mark carries a native `<title>` tooltip and a `data-skdx-part` attribute for styling. The
|
|
50
|
+
full option reference, the mixed-series (bar + line + range) cartesian model, references, zoom,
|
|
51
|
+
brush, crosshair, histogram, formatting and the accessibility contract are documented once in the
|
|
52
|
+
[repository README](../../README.md); the decisions behind them in [CHARTS.md](../../CHARTS.md).
|
|
53
|
+
|
|
54
|
+
## Interaction
|
|
55
|
+
|
|
56
|
+
Every chart is keyboard accessible: it takes focus, arrow keys step through the marks with a focus
|
|
57
|
+
ring and tooltip, Home/End jump, Escape clears and Enter/Space clicks. Clicking a legend entry hides
|
|
58
|
+
its series while colors stay stable. Bar, line, area and candlestick charts also zoom (wheel around
|
|
59
|
+
the pointer, drag to pan, double-click to reset), brush (a range strip under the plot) and snap a
|
|
60
|
+
shared tooltip to the nearest category (`crosshair`). Two fingers pinch-zoom on touch screens.
|
|
61
|
+
|
|
62
|
+
| Capability | Angular spelling |
|
|
63
|
+
| ------------------- | ------------------------------------------------------- |
|
|
64
|
+
| item click | `(itemClick)="onItem($event)"` |
|
|
65
|
+
| legend toggles | uncontrolled by default, or `[(hiddenSeries)]="hidden"` |
|
|
66
|
+
| zoom | `[zoomable]="true"`; `[(zoom)]="zoom"` for control |
|
|
67
|
+
| brush and crosshair | `[brush]="true"`, `[crosshair]="true"` |
|
|
68
|
+
| motion and sizing | `[animate]="true"`, `[responsive]="true"` |
|
|
69
|
+
|
|
70
|
+
## Example: an observability panel
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
import { Component, signal } from '@angular/core';
|
|
74
|
+
|
|
75
|
+
import type { ChartItem, Zoom } from '@skdx/angular-charts';
|
|
76
|
+
import { SkdxLineChartComponent } from '@skdx/angular-charts/line';
|
|
77
|
+
|
|
78
|
+
@Component({
|
|
79
|
+
imports: [SkdxLineChartComponent],
|
|
80
|
+
template: `
|
|
81
|
+
<skdx-line-chart
|
|
82
|
+
label="p95 latency, last 24 hours"
|
|
83
|
+
[categories]="timestamps"
|
|
84
|
+
[xAxis]="{ format: { style: 'time' } }"
|
|
85
|
+
[format]="{ style: 'integer', unit: ' ms' }"
|
|
86
|
+
[series]="series"
|
|
87
|
+
[rightAxis]="{ format: { style: 'percent' }, max: 0.05 }"
|
|
88
|
+
[references]="[{ y: 300, label: 'SLA', variant: 'warning' }]"
|
|
89
|
+
[crosshair]="true"
|
|
90
|
+
[zoomable]="true"
|
|
91
|
+
[brush]="true"
|
|
92
|
+
[legend]="true"
|
|
93
|
+
[(zoom)]="zoom"
|
|
94
|
+
[(hiddenSeries)]="hidden"
|
|
95
|
+
(itemClick)="onItem($event)"
|
|
96
|
+
></skdx-line-chart>
|
|
97
|
+
`,
|
|
98
|
+
})
|
|
99
|
+
export class LatencyPanel {
|
|
100
|
+
timestamps = timestamps;
|
|
101
|
+
series = [
|
|
102
|
+
{ name: 'p95', data: points.p95 },
|
|
103
|
+
{ name: 'p50', data: points.p50, dash: '4 3' },
|
|
104
|
+
{ name: 'Error rate', type: 'bar' as const, data: points.errors, axis: 'right' as const },
|
|
105
|
+
];
|
|
106
|
+
zoom = signal<Zoom | undefined>(undefined);
|
|
107
|
+
hidden = signal<string[] | undefined>(undefined);
|
|
108
|
+
onItem(item: ChartItem) {
|
|
109
|
+
console.log(item.series, item.category, item.value);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
-
import { SkdxChartBase, layoutAreaChart,
|
|
3
|
+
import { SkdxChartBase, layoutAreaChart, SkdxChartRootComponent } from '@skdx/angular-charts/internal';
|
|
4
4
|
|
|
5
5
|
/*
|
|
6
6
|
* Copyright (c) 2026 SkandaDX
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/**
|
|
10
|
+
/** Filled, optionally stacked, areas down to zero; series may also be bars, lines or ranges. */
|
|
11
11
|
class SkdxAreaChartComponent extends SkdxChartBase {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
@@ -15,19 +15,19 @@ class SkdxAreaChartComponent extends SkdxChartBase {
|
|
|
15
15
|
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
16
16
|
}
|
|
17
17
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxAreaChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
19
|
-
<skdx-chart-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
`, isInline: true, dependencies: [{ kind: "component", type:
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: SkdxAreaChartComponent, isStandalone: true, selector: "skdx-area-chart", usesInheritance: true, ngImport: i0, template: `
|
|
19
|
+
<skdx-chart-root
|
|
20
|
+
[layout]="layout()"
|
|
21
|
+
kind="area"
|
|
22
|
+
[label]="label() ?? 'Area chart'"
|
|
23
|
+
[zoomable]="zoomable()"
|
|
24
|
+
[responsive]="responsive()"
|
|
25
|
+
(itemClick)="itemClick.emit($event)"
|
|
26
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
27
|
+
(zoomChange)="zoom.set($event)"
|
|
28
|
+
(measured)="measuredWidth.set($event)"
|
|
29
|
+
></skdx-chart-root>
|
|
30
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31
31
|
}
|
|
32
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxAreaChartComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
@@ -35,29 +35,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
35
35
|
selector: 'skdx-area-chart',
|
|
36
36
|
standalone: true,
|
|
37
37
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
38
|
-
imports: [
|
|
38
|
+
imports: [SkdxChartRootComponent],
|
|
39
39
|
template: `
|
|
40
|
-
<skdx-chart-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
<skdx-chart-root
|
|
41
|
+
[layout]="layout()"
|
|
42
|
+
kind="area"
|
|
43
|
+
[label]="label() ?? 'Area chart'"
|
|
44
|
+
[zoomable]="zoomable()"
|
|
45
|
+
[responsive]="responsive()"
|
|
46
|
+
(itemClick)="itemClick.emit($event)"
|
|
47
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
48
|
+
(zoomChange)="zoom.set($event)"
|
|
49
|
+
(measured)="measuredWidth.set($event)"
|
|
50
|
+
></skdx-chart-root>
|
|
51
51
|
`,
|
|
52
52
|
}]
|
|
53
53
|
}] });
|
|
54
54
|
|
|
55
|
-
/*
|
|
56
|
-
* Copyright (c) 2026 SkandaDX
|
|
57
|
-
* This file is part of the SkandaDX organization.
|
|
58
|
-
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
59
|
-
*/
|
|
60
|
-
|
|
61
55
|
/**
|
|
62
56
|
* Generated bundle index. Do not edit.
|
|
63
57
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-area.mjs","sources":["../../src/area/
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-area.mjs","sources":["../../src/area/index.ts","../../src/area/skdx-angular-charts-area.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport {\n layoutAreaChart,\n SkdxChartBase,\n SkdxChartRootComponent,\n} from '@skdx/angular-charts/internal';\n\n/** Filled, optionally stacked, areas down to zero; series may also be bars, lines or ranges. */\n@Component({\n selector: 'skdx-area-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"area\"\n [label]=\"label() ?? 'Area chart'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxAreaChartComponent extends SkdxChartBase {\n protected readonly layout = computed(() => layoutAreaChart(this.input()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAUH;AAoBM,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAnBzD,IAAA,WAAA,GAAA;;AAoBqB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;mFAAC;AAC1E,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdvB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAerB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAnBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;ACjCD;;AAEG;;"}
|
|
@@ -1,45 +1,33 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { SkdxChartBase, layoutBarChart,
|
|
2
|
+
import { computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { SkdxChartBase, layoutBarChart, SkdxChartRootComponent } from '@skdx/angular-charts/internal';
|
|
4
4
|
|
|
5
5
|
/*
|
|
6
6
|
* Copyright (c) 2026 SkandaDX
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/**
|
|
11
|
-
* Grouped or stacked vertical bars, one per value.
|
|
12
|
-
*
|
|
13
|
-
* ```html
|
|
14
|
-
* <skdx-bar-chart [series]="[{ name: 'Sales', data: [3, 5, 2] }]" [categories]="['Q1', 'Q2', 'Q3']"></skdx-bar-chart>
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
10
|
+
/** Grouped, stacked, horizontal or histogram bars; series may also be lines, areas or ranges. */
|
|
17
11
|
class SkdxBarChartComponent extends SkdxChartBase {
|
|
18
12
|
constructor() {
|
|
19
13
|
super(...arguments);
|
|
20
|
-
|
|
21
|
-
this.stacked = input(false, /* @ts-ignore */
|
|
22
|
-
...(ngDevMode ? [{ debugName: "stacked" }] : /* istanbul ignore next */ []));
|
|
23
|
-
this.layout = computed(() => layoutBarChart({ ...this.input(), stacked: this.stacked() }), /* @ts-ignore */
|
|
14
|
+
this.layout = computed(() => layoutBarChart(this.input()), /* @ts-ignore */
|
|
24
15
|
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
25
16
|
}
|
|
26
17
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxBarChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
28
|
-
<skdx-chart-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
</skdx-chart-frame>
|
|
42
|
-
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartFrameComponent, selector: "skdx-chart-frame", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: SkdxBarChartComponent, isStandalone: true, selector: "skdx-bar-chart", usesInheritance: true, ngImport: i0, template: `
|
|
19
|
+
<skdx-chart-root
|
|
20
|
+
[layout]="layout()"
|
|
21
|
+
kind="bar"
|
|
22
|
+
[label]="label() ?? 'Bar chart'"
|
|
23
|
+
[zoomable]="zoomable()"
|
|
24
|
+
[responsive]="responsive()"
|
|
25
|
+
(itemClick)="itemClick.emit($event)"
|
|
26
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
27
|
+
(zoomChange)="zoom.set($event)"
|
|
28
|
+
(measured)="measuredWidth.set($event)"
|
|
29
|
+
></skdx-chart-root>
|
|
30
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
43
31
|
}
|
|
44
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxBarChartComponent, decorators: [{
|
|
45
33
|
type: Component,
|
|
@@ -47,31 +35,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
47
35
|
selector: 'skdx-bar-chart',
|
|
48
36
|
standalone: true,
|
|
49
37
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
50
|
-
imports: [
|
|
38
|
+
imports: [SkdxChartRootComponent],
|
|
51
39
|
template: `
|
|
52
|
-
<skdx-chart-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
</svg:rect>
|
|
64
|
-
}
|
|
65
|
-
</skdx-chart-frame>
|
|
40
|
+
<skdx-chart-root
|
|
41
|
+
[layout]="layout()"
|
|
42
|
+
kind="bar"
|
|
43
|
+
[label]="label() ?? 'Bar chart'"
|
|
44
|
+
[zoomable]="zoomable()"
|
|
45
|
+
[responsive]="responsive()"
|
|
46
|
+
(itemClick)="itemClick.emit($event)"
|
|
47
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
48
|
+
(zoomChange)="zoom.set($event)"
|
|
49
|
+
(measured)="measuredWidth.set($event)"
|
|
50
|
+
></skdx-chart-root>
|
|
66
51
|
`,
|
|
67
52
|
}]
|
|
68
|
-
}]
|
|
69
|
-
|
|
70
|
-
/*
|
|
71
|
-
* Copyright (c) 2026 SkandaDX
|
|
72
|
-
* This file is part of the SkandaDX organization.
|
|
73
|
-
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
74
|
-
*/
|
|
53
|
+
}] });
|
|
75
54
|
|
|
76
55
|
/**
|
|
77
56
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-bar.mjs","sources":["../../src/bar/
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-bar.mjs","sources":["../../src/bar/index.ts","../../src/bar/skdx-angular-charts-bar.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport {\n layoutBarChart,\n SkdxChartBase,\n SkdxChartRootComponent,\n} from '@skdx/angular-charts/internal';\n\n/** Grouped, stacked, horizontal or histogram bars; series may also be lines, areas or ranges. */\n@Component({\n selector: 'skdx-bar-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"bar\"\n [label]=\"label() ?? 'Bar chart'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxBarChartComponent extends SkdxChartBase {\n protected readonly layout = computed(() => layoutBarChart(this.input()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAUH;AAoBM,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAnBxD,IAAA,WAAA,GAAA;;AAoBqB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;mFAAC;AACzE,IAAA;8GAFY,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdtB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAerB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAnBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;ACjCD;;AAEG;;"}
|
|
@@ -7,20 +7,29 @@ import { SkdxSizedBase, layoutBoxplot, SkdxChartRootComponent } from '@skdx/angu
|
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/**
|
|
10
|
+
/** One Tukey box per series over its raw samples. */
|
|
11
11
|
class SkdxBoxplotComponent extends SkdxSizedBase {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
14
|
this.series = input.required(/* @ts-ignore */
|
|
15
15
|
...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
|
|
16
|
-
this.
|
|
17
|
-
...(ngDevMode ? [{ debugName: "
|
|
16
|
+
this.layout = computed(() => layoutBoxplot({ ...this.sized(), series: this.series() }), /* @ts-ignore */
|
|
17
|
+
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
18
18
|
}
|
|
19
19
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxBoxplotComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
20
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxBoxplotComponent, isStandalone: true, selector: "skdx-boxplot", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
21
|
-
<skdx-chart-root
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
<skdx-chart-root
|
|
22
|
+
[layout]="layout()"
|
|
23
|
+
kind="boxplot"
|
|
24
|
+
[label]="label() ?? 'Box plot'"
|
|
25
|
+
[zoomable]="zoomable()"
|
|
26
|
+
[responsive]="responsive()"
|
|
27
|
+
(itemClick)="itemClick.emit($event)"
|
|
28
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
29
|
+
(zoomChange)="zoom.set($event)"
|
|
30
|
+
(measured)="measuredWidth.set($event)"
|
|
31
|
+
></skdx-chart-root>
|
|
32
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
33
|
}
|
|
25
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxBoxplotComponent, decorators: [{
|
|
26
35
|
type: Component,
|
|
@@ -30,18 +39,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
30
39
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
31
40
|
imports: [SkdxChartRootComponent],
|
|
32
41
|
template: `
|
|
33
|
-
<skdx-chart-root
|
|
34
|
-
|
|
42
|
+
<skdx-chart-root
|
|
43
|
+
[layout]="layout()"
|
|
44
|
+
kind="boxplot"
|
|
45
|
+
[label]="label() ?? 'Box plot'"
|
|
46
|
+
[zoomable]="zoomable()"
|
|
47
|
+
[responsive]="responsive()"
|
|
48
|
+
(itemClick)="itemClick.emit($event)"
|
|
49
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
50
|
+
(zoomChange)="zoom.set($event)"
|
|
51
|
+
(measured)="measuredWidth.set($event)"
|
|
52
|
+
></skdx-chart-root>
|
|
35
53
|
`,
|
|
36
54
|
}]
|
|
37
55
|
}], propDecorators: { series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: true }] }] } });
|
|
38
56
|
|
|
39
|
-
/*
|
|
40
|
-
* Copyright (c) 2026 SkandaDX
|
|
41
|
-
* This file is part of the SkandaDX organization.
|
|
42
|
-
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
57
|
/**
|
|
46
58
|
* Generated bundle index. Do not edit.
|
|
47
59
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-boxplot.mjs","sources":["../../src/boxplot/
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-boxplot.mjs","sources":["../../src/boxplot/index.ts","../../src/boxplot/skdx-angular-charts-boxplot.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutBoxplot,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Series,\n} from '@skdx/angular-charts/internal';\n\n/** One Tukey box per series over its raw samples. */\n@Component({\n selector: 'skdx-boxplot',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"boxplot\"\n [label]=\"label() ?? 'Box plot'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxBoxplotComponent extends SkdxSizedBase {\n readonly series = input.required<Series[]>();\n\n protected readonly layout = computed(() =>\n layoutBoxplot({ ...this.sized(), series: this.series() }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAoBM,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AAnBvD,IAAA,WAAA,GAAA;;QAoBW,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ;mFAAY;QAEzB,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;mFAC1D;AACF,IAAA;8GANY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdrB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAerB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;AClCD;;AAEG;;"}
|
|
@@ -7,20 +7,50 @@ import { SkdxSizedBase, layoutCandlestick, SkdxChartRootComponent } from '@skdx/
|
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/**
|
|
10
|
+
/** Candles or OHLC bars on a time axis, with an optional volume pane, references, zoom and brush. */
|
|
11
11
|
class SkdxCandlestickChartComponent extends SkdxSizedBase {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
14
|
this.data = input.required(/* @ts-ignore */
|
|
15
15
|
...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
16
|
-
this.
|
|
17
|
-
...(ngDevMode ? [{ debugName: "
|
|
16
|
+
this.scale = input(/* @ts-ignore */
|
|
17
|
+
...(ngDevMode ? [undefined, { debugName: "scale" }] : /* istanbul ignore next */ []));
|
|
18
|
+
this.variant = input(/* @ts-ignore */
|
|
19
|
+
...(ngDevMode ? [undefined, { debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
20
|
+
this.xAxis = input(/* @ts-ignore */
|
|
21
|
+
...(ngDevMode ? [undefined, { debugName: "xAxis" }] : /* istanbul ignore next */ []));
|
|
22
|
+
this.references = input(/* @ts-ignore */
|
|
23
|
+
...(ngDevMode ? [undefined, { debugName: "references" }] : /* istanbul ignore next */ []));
|
|
24
|
+
this.brush = input(false, /* @ts-ignore */
|
|
25
|
+
...(ngDevMode ? [{ debugName: "brush" }] : /* istanbul ignore next */ []));
|
|
26
|
+
this.crosshair = input(false, /* @ts-ignore */
|
|
27
|
+
...(ngDevMode ? [{ debugName: "crosshair" }] : /* istanbul ignore next */ []));
|
|
28
|
+
this.layout = computed(() => layoutCandlestick({
|
|
29
|
+
...this.sized(),
|
|
30
|
+
data: this.data(),
|
|
31
|
+
scale: this.scale(),
|
|
32
|
+
variant: this.variant(),
|
|
33
|
+
xAxis: this.xAxis(),
|
|
34
|
+
references: this.references(),
|
|
35
|
+
brush: this.brush(),
|
|
36
|
+
crosshair: this.crosshair(),
|
|
37
|
+
}), /* @ts-ignore */
|
|
38
|
+
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
18
39
|
}
|
|
19
40
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxCandlestickChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxCandlestickChartComponent, isStandalone: true, selector: "skdx-candlestick-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
21
|
-
<skdx-chart-root
|
|
22
|
-
|
|
23
|
-
|
|
41
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxCandlestickChartComponent, isStandalone: true, selector: "skdx-candlestick-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, xAxis: { classPropertyName: "xAxis", publicName: "xAxis", isSignal: true, isRequired: false, transformFunction: null }, references: { classPropertyName: "references", publicName: "references", isSignal: true, isRequired: false, transformFunction: null }, brush: { classPropertyName: "brush", publicName: "brush", isSignal: true, isRequired: false, transformFunction: null }, crosshair: { classPropertyName: "crosshair", publicName: "crosshair", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
42
|
+
<skdx-chart-root
|
|
43
|
+
[layout]="layout()"
|
|
44
|
+
kind="candlestick"
|
|
45
|
+
[label]="label() ?? 'Candlestick chart'"
|
|
46
|
+
[zoomable]="zoomable()"
|
|
47
|
+
[responsive]="responsive()"
|
|
48
|
+
(itemClick)="itemClick.emit($event)"
|
|
49
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
50
|
+
(zoomChange)="zoom.set($event)"
|
|
51
|
+
(measured)="measuredWidth.set($event)"
|
|
52
|
+
></skdx-chart-root>
|
|
53
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
54
|
}
|
|
25
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxCandlestickChartComponent, decorators: [{
|
|
26
56
|
type: Component,
|
|
@@ -30,17 +60,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
30
60
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
31
61
|
imports: [SkdxChartRootComponent],
|
|
32
62
|
template: `
|
|
33
|
-
<skdx-chart-root
|
|
34
|
-
|
|
63
|
+
<skdx-chart-root
|
|
64
|
+
[layout]="layout()"
|
|
65
|
+
kind="candlestick"
|
|
66
|
+
[label]="label() ?? 'Candlestick chart'"
|
|
67
|
+
[zoomable]="zoomable()"
|
|
68
|
+
[responsive]="responsive()"
|
|
69
|
+
(itemClick)="itemClick.emit($event)"
|
|
70
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
71
|
+
(zoomChange)="zoom.set($event)"
|
|
72
|
+
(measured)="measuredWidth.set($event)"
|
|
73
|
+
></skdx-chart-root>
|
|
35
74
|
`,
|
|
36
75
|
}]
|
|
37
|
-
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }] } });
|
|
38
|
-
|
|
39
|
-
/*
|
|
40
|
-
* Copyright (c) 2026 SkandaDX
|
|
41
|
-
* This file is part of the SkandaDX organization.
|
|
42
|
-
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
43
|
-
*/
|
|
76
|
+
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], scale: [{ type: i0.Input, args: [{ isSignal: true, alias: "scale", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], xAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "xAxis", required: false }] }], references: [{ type: i0.Input, args: [{ isSignal: true, alias: "references", required: false }] }], brush: [{ type: i0.Input, args: [{ isSignal: true, alias: "brush", required: false }] }], crosshair: [{ type: i0.Input, args: [{ isSignal: true, alias: "crosshair", required: false }] }] } });
|
|
44
77
|
|
|
45
78
|
/**
|
|
46
79
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-candlestick.mjs","sources":["../../src/candlestick/
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-candlestick.mjs","sources":["../../src/candlestick/index.ts","../../src/candlestick/skdx-angular-charts-candlestick.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutCandlestick,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type AxisOptions,\n type Candle,\n type Reference,\n} from '@skdx/angular-charts/internal';\n\n/** Candles or OHLC bars on a time axis, with an optional volume pane, references, zoom and brush. */\n@Component({\n selector: 'skdx-candlestick-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"candlestick\"\n [label]=\"label() ?? 'Candlestick chart'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxCandlestickChartComponent extends SkdxSizedBase {\n readonly data = input.required<Candle[]>();\n readonly scale = input<'linear' | 'log'>();\n readonly variant = input<'candlestick' | 'ohlc'>();\n readonly xAxis = input<Pick<AxisOptions, 'format'>>();\n readonly references = input<Reference[]>();\n readonly brush = input(false);\n readonly crosshair = input(false);\n\n protected readonly layout = computed(() =>\n layoutCandlestick({\n ...this.sized(),\n data: this.data(),\n scale: this.scale(),\n variant: this.variant(),\n xAxis: this.xAxis(),\n references: this.references(),\n brush: this.brush(),\n crosshair: this.crosshair(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|