@progress/kendo-react-charts 5.15.0-dev.202307061400 → 5.15.0-dev.202307112015

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 (61) hide show
  1. package/dist/cdn/js/kendo-react-charts.js +1 -1
  2. package/dist/es/BaseChart.d.ts +9 -1
  3. package/dist/es/BaseChart.js +58 -4
  4. package/dist/es/BaseChartProps.d.ts +13 -1
  5. package/dist/es/ChartBreadcrumb.d.ts +42 -0
  6. package/dist/es/ChartBreadcrumb.js +92 -0
  7. package/dist/es/ChartContext.d.ts +2 -0
  8. package/dist/es/DonutCenter.d.ts +1 -1
  9. package/dist/es/DonutCenter.js +4 -3
  10. package/dist/es/SparklineProps.d.ts +1 -1
  11. package/dist/es/StockChartProps.d.ts +1 -1
  12. package/dist/es/api-types/chart-drilldown-state.interface.d.ts +24 -0
  13. package/dist/es/api-types/chart-drilldown-state.interface.js +1 -0
  14. package/dist/es/argument-types/drilldown-series-factory-props.interface.d.ts +17 -0
  15. package/dist/es/argument-types/drilldown-series-factory-props.interface.js +2 -0
  16. package/dist/es/common/api-types.d.ts +1 -0
  17. package/dist/es/common/events.d.ts +2 -0
  18. package/dist/es/common/events.js +2 -0
  19. package/dist/es/common/property-types.d.ts +1 -0
  20. package/dist/es/components/SeriesItem.d.ts +8 -0
  21. package/dist/es/components/SeriesItem.js +12 -1
  22. package/dist/es/events/chart-event-builder.js +2 -0
  23. package/dist/es/events/drilldown-event.d.ts +38 -0
  24. package/dist/es/events/drilldown-event.js +38 -0
  25. package/dist/es/events/drilldown-state-change-event.d.ts +22 -0
  26. package/dist/es/events/drilldown-state-change-event.js +16 -0
  27. package/dist/es/main.d.ts +2 -1
  28. package/dist/es/main.js +2 -1
  29. package/dist/es/option-types/series-item.interface.d.ts +4 -0
  30. package/dist/es/package-metadata.js +1 -1
  31. package/dist/npm/BaseChart.d.ts +9 -1
  32. package/dist/npm/BaseChart.js +58 -4
  33. package/dist/npm/BaseChartProps.d.ts +13 -1
  34. package/dist/npm/ChartBreadcrumb.d.ts +42 -0
  35. package/dist/npm/ChartBreadcrumb.js +95 -0
  36. package/dist/npm/ChartContext.d.ts +2 -0
  37. package/dist/npm/DonutCenter.d.ts +1 -1
  38. package/dist/npm/DonutCenter.js +4 -3
  39. package/dist/npm/SparklineProps.d.ts +1 -1
  40. package/dist/npm/StockChartProps.d.ts +1 -1
  41. package/dist/npm/api-types/chart-drilldown-state.interface.d.ts +24 -0
  42. package/dist/npm/api-types/chart-drilldown-state.interface.js +2 -0
  43. package/dist/npm/argument-types/drilldown-series-factory-props.interface.d.ts +17 -0
  44. package/dist/npm/argument-types/drilldown-series-factory-props.interface.js +3 -0
  45. package/dist/npm/common/api-types.d.ts +1 -0
  46. package/dist/npm/common/events.d.ts +2 -0
  47. package/dist/npm/common/events.js +5 -1
  48. package/dist/npm/common/property-types.d.ts +1 -0
  49. package/dist/npm/components/SeriesItem.d.ts +8 -0
  50. package/dist/npm/components/SeriesItem.js +12 -1
  51. package/dist/npm/events/chart-event-builder.js +2 -0
  52. package/dist/npm/events/drilldown-event.d.ts +38 -0
  53. package/dist/npm/events/drilldown-event.js +41 -0
  54. package/dist/npm/events/drilldown-state-change-event.d.ts +22 -0
  55. package/dist/npm/events/drilldown-state-change-event.js +19 -0
  56. package/dist/npm/main.d.ts +2 -1
  57. package/dist/npm/main.js +3 -1
  58. package/dist/npm/option-types/series-item.interface.d.ts +4 -0
  59. package/dist/npm/package-metadata.js +1 -1
  60. package/dist/systemjs/kendo-react-charts.js +1 -1
  61. package/package.json +13 -7
@@ -43,9 +43,13 @@ export declare class BaseChart extends React.Component<BaseChartPrivateProps, {}
43
43
  protected observersStore: any;
44
44
  protected chartObserver: InstanceObserver;
45
45
  protected childrenObserver: InstanceObserver;
46
- protected contextValue: ChartContextType;
47
46
  protected suppressTransitions: boolean;
47
+ readonly state: ChartContextType;
48
48
  constructor(props: BaseChartPrivateProps);
49
+ /**
50
+ * @hidden
51
+ */
52
+ static getDerivedStateFromProps(props: any, state: any): any;
49
53
  /**
50
54
  * @hidden
51
55
  */
@@ -94,6 +98,10 @@ export declare class BaseChart extends React.Component<BaseChartPrivateProps, {}
94
98
  * @hidden
95
99
  */
96
100
  onRender: (e: any) => void;
101
+ /**
102
+ * @hidden
103
+ */
104
+ onDrilldown: (e: any) => boolean;
97
105
  /**
98
106
  * @hidden
99
107
  */
@@ -13,6 +13,17 @@ var __extends = (this && this.__extends) || (function () {
13
13
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
14
  };
15
15
  })();
16
+ var __assign = (this && this.__assign) || function () {
17
+ __assign = Object.assign || function(t) {
18
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
19
+ s = arguments[i];
20
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
21
+ t[p] = s[p];
22
+ }
23
+ return t;
24
+ };
25
+ return __assign.apply(this, arguments);
26
+ };
16
27
  var __rest = (this && this.__rest) || function (s, e) {
17
28
  var t = {};
18
29
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -24,6 +35,15 @@ var __rest = (this && this.__rest) || function (s, e) {
24
35
  }
25
36
  return t;
26
37
  };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
46
+ };
27
47
  import * as React from 'react';
28
48
  import * as PropTypes from 'prop-types';
29
49
  import { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';
@@ -43,6 +63,7 @@ import { CrosshairTooltipContainer } from './tooltip/CrosshairContainer';
43
63
  import { ChartContext } from './ChartContext';
44
64
  import { validatePackage } from '@progress/kendo-react-common';
45
65
  import { packageMetadata } from './package-metadata';
66
+ import { DrilldownEvent } from './main';
46
67
  /**
47
68
  * @hidden
48
69
  */
@@ -75,6 +96,28 @@ var BaseChart = /** @class */ (function (_super) {
75
96
  _this.trigger('render', e);
76
97
  }
77
98
  };
99
+ /**
100
+ * @hidden
101
+ */
102
+ _this.onDrilldown = function (e) {
103
+ var _a;
104
+ var allSeries = _this.optionsStore.getState().series;
105
+ var series = allSeries.find(function (s) { return s.name === e.series.name; });
106
+ if (!series.drilldownSeriesFactory) {
107
+ return true;
108
+ }
109
+ var handler = 'onDrilldown';
110
+ if (_this.props.hasOwnProperty(handler)) {
111
+ var step = { seriesName: series.name, drilldownValue: e.value };
112
+ var nextSteps = __spreadArray(__spreadArray([], (((_a = _this.props.drilldownState) === null || _a === void 0 ? void 0 : _a.steps) || []), true), [step], false);
113
+ var target = _this.props.getTarget();
114
+ var args = __assign(__assign({}, e), { currentState: _this.props.drilldownState, nextState: { steps: nextSteps } });
115
+ var eventObject = new DrilldownEvent(args, target);
116
+ _this.props[handler].call(undefined, eventObject);
117
+ }
118
+ // Prevent triggering onDrilldown again, it's already triggered above
119
+ return true;
120
+ };
78
121
  /**
79
122
  * @hidden
80
123
  */
@@ -146,13 +189,18 @@ var BaseChart = /** @class */ (function (_super) {
146
189
  _this.optionsStore = createStore(optionsReducer);
147
190
  _this.observersStore = createStore(observersReducer);
148
191
  _this.childrenObserver = new InstanceObserver(_this, { onMouseLeave: 'onChildMouseLeave' });
149
- _this.contextValue = {
192
+ _this.state = {
150
193
  optionsStore: _this.optionsStore,
151
194
  observersStore: _this.observersStore,
152
- childrenObserver: _this.childrenObserver
195
+ childrenObserver: _this.childrenObserver,
196
+ drilldownState: { steps: [] }
153
197
  };
154
198
  _this.themeStore = createStore(themeReducer);
155
- _this.chartObserver = new InstanceObserver(_this, { render: 'onRender', legendItemClick: 'onLegendItemClick' });
199
+ _this.chartObserver = new InstanceObserver(_this, {
200
+ render: 'onRender',
201
+ legendItemClick: 'onLegendItemClick',
202
+ drilldown: 'onDrilldown'
203
+ });
156
204
  return _this;
157
205
  }
158
206
  Object.defineProperty(BaseChart.prototype, "element", {
@@ -165,6 +213,12 @@ var BaseChart = /** @class */ (function (_super) {
165
213
  enumerable: false,
166
214
  configurable: true
167
215
  });
216
+ /**
217
+ * @hidden
218
+ */
219
+ BaseChart.getDerivedStateFromProps = function (props, state) {
220
+ return __assign(__assign({}, state), { drilldownState: props.drilldownState || [] });
221
+ };
168
222
  /**
169
223
  * @hidden
170
224
  */
@@ -230,7 +284,7 @@ var BaseChart = /** @class */ (function (_super) {
230
284
  style: chartStyles,
231
285
  key: 'chartElement'
232
286
  }, (React.createElement("div", { onMouseLeave: this.onChartMouseLeave, ref: function (el) { return _this._element = el; }, className: "k-chart-surface" }, children)));
233
- return (React.createElement(ChartContext.Provider, { value: this.contextValue },
287
+ return (React.createElement(ChartContext.Provider, { value: this.state },
234
288
  React.createElement(SeriesTooltip, { key: "seriesTooltip" }),
235
289
  React.createElement(CrosshairTooltipContainer, { key: "crosshairTooltips" }),
236
290
  content));
@@ -1,7 +1,8 @@
1
1
  /// <reference types="react" />
2
- import { AxisLabelClickEvent, DragEvent, DragStartEvent, DragEndEvent, LegendItemClickEvent, LegendItemHoverEvent, NoteClickEvent, NoteHoverEvent, PlotAreaClickEvent, PlotAreaHoverEvent, RenderEvent, SeriesClickEvent, SeriesHoverEvent, ZoomEvent, ZoomStartEvent, ZoomEndEvent, SelectEvent, SelectStartEvent, SelectEndEvent } from './common/events';
2
+ import { AxisLabelClickEvent, DragEvent, DragStartEvent, DragEndEvent, DrilldownEvent, LegendItemClickEvent, LegendItemHoverEvent, NoteClickEvent, NoteHoverEvent, PlotAreaClickEvent, PlotAreaHoverEvent, RenderEvent, SeriesClickEvent, SeriesHoverEvent, ZoomEvent, ZoomStartEvent, ZoomEndEvent, SelectEvent, SelectStartEvent, SelectEndEvent } from './common/events';
3
3
  import { AxisDefaults, DragAction, Pane, PaneDefaults, SeriesDefaults, Zoomable } from './common/property-types';
4
4
  import { Charts } from './common/charts';
5
+ import { ChartDrilldownState } from './common/api-types';
5
6
  /**
6
7
  * @hidden
7
8
  */
@@ -47,6 +48,13 @@ export interface BaseChartProps {
47
48
  * @hidden
48
49
  */
49
50
  children?: any;
51
+ /**
52
+ * Gets or sets the current drill-down state for [Drilldown Charts](slug:drilldown_charts).
53
+ *
54
+ * To return to a previous level, remove the items from the `steps` array following the desired level.
55
+ * To return to the root chart, set the `steps` array to `[]`.
56
+ */
57
+ drilldownState?: ChartDrilldownState;
50
58
  /**
51
59
  * Sets the preferred rendering engine ([see example]({% slug rendering_chart_charts %})). If not supported by the browser, the Chart switches to the first available mode.
52
60
  *
@@ -103,6 +111,10 @@ export interface BaseChartProps {
103
111
  * Fires when the user starts dragging the Chart.
104
112
  */
105
113
  onDragStart?: (event: DragStartEvent) => void;
114
+ /**
115
+ * Fires when the user when the user wants to drill down on a specific point.
116
+ */
117
+ onDrilldown?: (event: DrilldownEvent) => void;
106
118
  /**
107
119
  * Fires when the user hovers over a legend item.
108
120
  */
@@ -0,0 +1,42 @@
1
+ import * as React from 'react';
2
+ import { BreadcrumbProps, DataModel } from '@progress/kendo-react-layout';
3
+ import { ChartDrilldownState } from './api-types/chart-drilldown-state.interface';
4
+ import { DrilldownStateChangeEvent } from './events/drilldown-state-change-event';
5
+ /**
6
+ * Represents the properties of [Chart Breadcrumb](% slug api_charts_chartbreadcrumb %) component.
7
+ */
8
+ export interface ChartBreadcrumbProps extends Omit<BreadcrumbProps, 'data'> {
9
+ /**
10
+ * The definition of the breadcrumb root item.
11
+ *
12
+ * The default value is `{ text: 'Home', icon: <SvgIcon icon={homeIcon} /> }`.
13
+ * Where `homeIcon` is imported from `@progress/kendo-svg-icons`.
14
+ */
15
+ rootItem?: DataModel;
16
+ /**
17
+ * Fires when the user when the user has selected a different drilldown level.
18
+ */
19
+ onDrilldownStateChange?: (event: DrilldownStateChangeEvent) => void;
20
+ /**
21
+ * The current drilldown state of the Chart.
22
+ */
23
+ drilldownState?: ChartDrilldownState;
24
+ }
25
+ /**
26
+ * Represents the Object which is passed to the
27
+ * [`ref`](https://reactjs.org/docs/refs-and-the-dom.html) callback of the ChartBreadcrumb component.
28
+ */
29
+ export interface ChartBreadcrumbHandle {
30
+ /**
31
+ * The current element or `null` if there is none.
32
+ */
33
+ element: HTMLDivElement | null;
34
+ /**
35
+ * The props values of the ChartBreadcrumb.
36
+ */
37
+ props: ChartBreadcrumbProps;
38
+ }
39
+ /**
40
+ * Represents the Chart Breadcrumb component.
41
+ */
42
+ export declare const ChartBreadcrumb: React.ForwardRefExoticComponent<ChartBreadcrumbProps & React.RefAttributes<ChartBreadcrumbHandle | null>>;
@@ -0,0 +1,92 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import * as React from 'react';
22
+ import * as PropTypes from 'prop-types';
23
+ import { Breadcrumb } from '@progress/kendo-react-layout';
24
+ import { SvgIcon } from '@progress/kendo-react-common';
25
+ import { homeIcon } from '@progress/kendo-svg-icons';
26
+ import { DrilldownStateChangeEvent } from './events/drilldown-state-change-event';
27
+ /**
28
+ * Represents the Chart Breadcrumb component.
29
+ */
30
+ export var ChartBreadcrumb = React.forwardRef(function (props, ref) {
31
+ var target = React.useRef(null);
32
+ var breadcrumbRef = React.useRef(null);
33
+ React.useImperativeHandle(target, function () { return ({
34
+ element: breadcrumbRef.current,
35
+ props: props
36
+ }); });
37
+ React.useImperativeHandle(ref, function () { return target.current; });
38
+ var rootItem = __assign({ id: '0' }, (props.rootItem || {
39
+ text: 'Home',
40
+ icon: React.createElement(SvgIcon, { icon: homeIcon, style: { marginInlineEnd: '4px' } })
41
+ }));
42
+ var data = [rootItem];
43
+ if (props.drilldownState) {
44
+ data = __spreadArray(__spreadArray([], data, true), props.drilldownState.steps.map(function (step, index) { return ({ id: (index + 1).toString(), text: step.drilldownValue }); }), true);
45
+ }
46
+ var breadcrumbProps = __assign(__assign({}, props), { data: data });
47
+ var handleItemSelect = function (e) {
48
+ var _a;
49
+ var handler = 'onDrilldownStateChange';
50
+ if (props.hasOwnProperty(handler)) {
51
+ var level = data.findIndex(function (item) { return item.id === e.id; });
52
+ var nextState = { steps: (((_a = props.drilldownState) === null || _a === void 0 ? void 0 : _a.steps) || []).slice(0, level) };
53
+ var eventObject = new DrilldownStateChangeEvent({ currentState: props.drilldownState, nextState: nextState });
54
+ props[handler].call(undefined, eventObject);
55
+ }
56
+ };
57
+ return (React.createElement("div", null,
58
+ React.createElement(Breadcrumb, __assign({}, breadcrumbProps, { onItemSelect: handleItemSelect }))));
59
+ });
60
+ var propTypes = {
61
+ id: PropTypes.string,
62
+ style: PropTypes.object,
63
+ className: PropTypes.string,
64
+ breadcrumbOrderedList: PropTypes.elementType,
65
+ breadcrumbListItem: PropTypes.elementType,
66
+ breadcrumbDelimiter: PropTypes.elementType,
67
+ breadcrumbLink: PropTypes.elementType,
68
+ dir: PropTypes.oneOf(['ltr', 'rtl']),
69
+ disabled: PropTypes.bool,
70
+ valueField: PropTypes.string,
71
+ textField: PropTypes.string,
72
+ iconField: PropTypes.string,
73
+ iconClassField: PropTypes.string,
74
+ onItemSelect: PropTypes.func,
75
+ ariaLabel: PropTypes.string,
76
+ onDrilldownStateChange: PropTypes.func,
77
+ drilldownState: PropTypes.shape({
78
+ steps: PropTypes.array
79
+ }),
80
+ rootItem: PropTypes.object
81
+ };
82
+ var defaultProps = {
83
+ valueField: 'id',
84
+ textField: 'text',
85
+ iconField: 'icon',
86
+ iconClassField: 'iconClass',
87
+ data: []
88
+ };
89
+ ChartBreadcrumb.displayName = 'KendoReactChartBreadcrumb';
90
+ // TODO: delete casting when @types/react is updated!
91
+ ChartBreadcrumb.propTypes = propTypes;
92
+ ChartBreadcrumb.defaultProps = defaultProps;
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { Store } from './store/store';
3
3
  import { InstanceObserver } from '@progress/kendo-charts';
4
+ import { ChartDrilldownState } from './api-types/chart-drilldown-state.interface';
4
5
  /**
5
6
  * @hidden
6
7
  */
@@ -8,6 +9,7 @@ export interface ChartContextType {
8
9
  optionsStore: Store;
9
10
  observersStore: Store;
10
11
  childrenObserver: InstanceObserver;
12
+ drilldownState: ChartDrilldownState;
11
13
  }
12
14
  /**
13
15
  * @hidden
@@ -14,7 +14,7 @@ export interface DonutCenterStyle {
14
14
  * @hidden
15
15
  */
16
16
  export interface DonutCenterProps {
17
- render?: () => React.ReactNode;
17
+ render?: () => React.ReactElement<any, any>;
18
18
  }
19
19
  /**
20
20
  * @hidden
@@ -37,11 +37,12 @@ var DonutCenter = /** @class */ (function (_super) {
37
37
  return _this;
38
38
  }
39
39
  DonutCenter.prototype.render = function () {
40
- var render = this.props.render;
40
+ var RenderComp = this.props.render;
41
41
  var donutCenterStyles = this.state.donutCenterStyles;
42
42
  var renderer = null;
43
- if (render && donutCenterStyles) {
44
- renderer = (React.createElement("div", { className: "k-chart-donut-center", style: donutCenterStyles }, render()));
43
+ if (RenderComp && donutCenterStyles) {
44
+ renderer = (React.createElement("div", { className: "k-chart-donut-center", style: donutCenterStyles },
45
+ React.createElement(RenderComp, null)));
45
46
  }
46
47
  return renderer;
47
48
  };
@@ -2,7 +2,7 @@ import { BaseChartProps } from './BaseChartProps';
2
2
  /**
3
3
  * Represents the props of the KendoReact Sparkline component.
4
4
  */
5
- export interface SparklineProps extends BaseChartProps {
5
+ export interface SparklineProps extends Omit<BaseChartProps, 'drilldownState' | 'onDrilldown'> {
6
6
  /**
7
7
  * The data for the default Sparkline series. Discarded if series are supplied.
8
8
  */
@@ -3,7 +3,7 @@ import { NavigatorFilterEvent } from './common/events';
3
3
  /**
4
4
  * Represents the props of the KendoReact StockChart component.
5
5
  */
6
- export interface StockChartProps extends BaseChartProps {
6
+ export interface StockChartProps extends Omit<BaseChartProps, 'drilldownState' | 'onDrilldown'> {
7
7
  /**
8
8
  * Specifies whether the StockChart will perform full or partial redraw upon re-render. The partial redraw is required when the `onNavigatorFilter` event is handled and the data for the main panes is limited to a specific set. The default value is `false`.
9
9
  */
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Describes a single drilldown step.
3
+ */
4
+ export interface ChartDrilldownStep {
5
+ /**
6
+ * The parent series name.
7
+ */
8
+ seriesName: string;
9
+ /**
10
+ * The drilldown value of the selected series point.
11
+ */
12
+ drilldownValue: any;
13
+ }
14
+ /**
15
+ * The Chart drilldown state.
16
+ */
17
+ export interface ChartDrilldownState {
18
+ /**
19
+ * A stack of all drilldown steps performed in the Chart.
20
+ *
21
+ * If the `steps` are empty the Chart is the root level.
22
+ */
23
+ steps: ChartDrilldownStep[];
24
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Represents the props of a [Drilldown Series Factory](slug:api_charts_chartseriesitemprops#toc-drilldownseriesfactory) component.
3
+ */
4
+ export interface DrilldownSeriesFactoryProps {
5
+ /**
6
+ * The drilldown field value.
7
+ */
8
+ drilldownValue: any;
9
+ /**
10
+ * The series point to drill down to.
11
+ */
12
+ point: any;
13
+ /**
14
+ * The series to drill down to.
15
+ */
16
+ series: any;
17
+ }
@@ -5,3 +5,4 @@ export { SeriesPointType } from '../api-types/series-point.interface';
5
5
  export { ChartAxisType } from '../api-types/chart-axis.interface';
6
6
  export { ChartPaneType } from '../api-types/chart-pane.interface';
7
7
  export { ChartPlotAreaType } from '../api-types/chart-plotarea.interface';
8
+ export { ChartDrilldownStep, ChartDrilldownState } from '../api-types/chart-drilldown-state.interface';
@@ -2,6 +2,8 @@ export { AxisLabelClickEvent } from '../events/axis-label-click-event';
2
2
  export { DragEndEvent } from '../events/drag-end-event';
3
3
  export { DragEvent } from '../events/drag-event';
4
4
  export { DragStartEvent } from '../events/drag-start-event';
5
+ export { DrilldownEvent } from '../events/drilldown-event';
6
+ export { DrilldownStateChangeEvent } from '../events/drilldown-state-change-event';
5
7
  export { LegendItemClickEvent } from '../events/legend-item-click-event';
6
8
  export { LegendItemHoverEvent } from '../events/legend-item-hover-event';
7
9
  export { NavigatorFilterEvent } from '../events/navigator-filter-event';
@@ -3,6 +3,8 @@ export { AxisLabelClickEvent } from '../events/axis-label-click-event';
3
3
  export { DragEndEvent } from '../events/drag-end-event';
4
4
  export { DragEvent } from '../events/drag-event';
5
5
  export { DragStartEvent } from '../events/drag-start-event';
6
+ export { DrilldownEvent } from '../events/drilldown-event';
7
+ export { DrilldownStateChangeEvent } from '../events/drilldown-state-change-event';
6
8
  export { LegendItemClickEvent } from '../events/legend-item-click-event';
7
9
  export { LegendItemHoverEvent } from '../events/legend-item-hover-event';
8
10
  export { NavigatorFilterEvent } from '../events/navigator-filter-event';
@@ -50,6 +50,7 @@ export { SeriesNoteVisualArgs } from '../argument-types/series-note-visual-args.
50
50
  export { SeriesVisualArgs } from '../argument-types/series-visual-args.interface';
51
51
  export { TitleVisualArgs } from '../argument-types/title-visual-args.interface';
52
52
  export { PlotBandLabelVisualArgs } from '../argument-types/plot-band-label-visual-args.interface';
53
+ export { DrilldownSeriesFactoryProps } from '../argument-types/drilldown-series-factory-props.interface';
53
54
  export { AxisDefaultsCrosshair } from '../option-types/axis-defaults/crosshair.interface';
54
55
  export { AxisDefaultsCrosshairTooltip } from '../option-types/axis-defaults/crosshair.tooltip.interface';
55
56
  export { AxisDefaultsLabels } from '../option-types/axis-defaults/labels.interface';
@@ -8,6 +8,14 @@ export interface ChartSeriesItemProps extends Series {
8
8
  * @hidden
9
9
  */
10
10
  children?: React.ReactNode;
11
+ /**
12
+ * @hidden
13
+ */
14
+ _chartCollectionIdxKey?: string;
15
+ /**
16
+ * When set, the prop is used to render the Drilldown Series.
17
+ */
18
+ drilldownSeriesFactory?: (props: any) => React.ReactElement<any, any>;
11
19
  }
12
20
  declare const ChartSeriesItem: React.FunctionComponent<ChartSeriesItemProps>;
13
21
  export { ChartSeriesItem };
@@ -11,8 +11,19 @@ var __assign = (this && this.__assign) || function () {
11
11
  };
12
12
  import * as React from 'react';
13
13
  import { ConfigurationComponent } from './base/ConfigurationComponent';
14
+ import { ChartContext } from '../ChartContext';
14
15
  var ChartSeriesItem = function (props) {
15
- return (React.createElement(ConfigurationComponent, __assign({}, props)));
16
+ var DrilldownFactory = function (_) { return React.createElement(React.Fragment, null); };
17
+ if (props.drilldownSeriesFactory) {
18
+ DrilldownFactory = props.drilldownSeriesFactory;
19
+ }
20
+ var drilldownFrame = function (context) { var _a, _b; return context && ((_b = (_a = context.drilldownState) === null || _a === void 0 ? void 0 : _a.steps) === null || _b === void 0 ? void 0 : _b.find(function (_a) {
21
+ var seriesName = _a.seriesName;
22
+ return seriesName === props.name;
23
+ })); };
24
+ return (React.createElement(ChartContext.Consumer, null, function (context) { return drilldownFrame(context) ?
25
+ React.createElement(DrilldownFactory, { _chartCollectionIdxKey: props._chartCollectionIdxKey, drilldownValue: drilldownFrame(context).drilldownValue }) :
26
+ React.createElement(ConfigurationComponent, __assign({}, props)); }));
16
27
  };
17
28
  ChartSeriesItem.displayName = 'ChartSeriesItem';
18
29
  export { ChartSeriesItem };
@@ -2,6 +2,7 @@ import { AxisLabelClickEvent } from './axis-label-click-event';
2
2
  import { DragEvent } from './drag-event';
3
3
  import { DragEndEvent } from './drag-end-event';
4
4
  import { DragStartEvent } from './drag-start-event';
5
+ import { DrilldownEvent } from './drilldown-event';
5
6
  import { LegendItemHoverEvent } from './legend-item-hover-event';
6
7
  import { LegendItemClickEvent } from './legend-item-click-event';
7
8
  import { LegendItemLeaveEvent } from './legend-item-leave-event';
@@ -24,6 +25,7 @@ var EVENT_MAP = {
24
25
  drag: DragEvent,
25
26
  dragEnd: DragEndEvent,
26
27
  dragStart: DragStartEvent,
28
+ drilldownEvent: DrilldownEvent,
27
29
  legendItemHover: LegendItemHoverEvent,
28
30
  legendItemClick: LegendItemClickEvent,
29
31
  legendItemLeave: LegendItemLeaveEvent,
@@ -0,0 +1,38 @@
1
+ import { Charts } from '../common/charts';
2
+ import { BaseEvent } from './base-event';
3
+ import { EventSeriesOptions } from '../api-types/event-series-options.interface';
4
+ import { SeriesPointType } from '../api-types/series-point.interface';
5
+ import { ChartDrilldownState } from '../api-types/chart-drilldown-state.interface';
6
+ /**
7
+ * Arguments for the `drilldown` event.
8
+ *
9
+ * See [Drilldown Charts](slug:drilldown_charts).
10
+ */
11
+ export declare class DrilldownEvent extends BaseEvent {
12
+ /**
13
+ * The clicked series point.
14
+ */
15
+ point: SeriesPointType;
16
+ /**
17
+ * The clicked point series options.
18
+ */
19
+ series: EventSeriesOptions;
20
+ /**
21
+ * The data point value.
22
+ */
23
+ value: any;
24
+ /**
25
+ * The current Chart [drilldown state](slug:api_charts_chartprops#toc-drilldownstate).
26
+ */
27
+ currentState: ChartDrilldownState;
28
+ /**
29
+ * The Chart [drilldown state](slug:api_charts_chartprops#toc-drilldownstate) that will apply the current drilldown operation.
30
+ *
31
+ * See [Drilldown](slug:drilldown_charts) for an application example.
32
+ */
33
+ nextState: ChartDrilldownState;
34
+ /**
35
+ * @hidden
36
+ */
37
+ constructor(e: any, target: Charts);
38
+ }
@@ -0,0 +1,38 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ import { BaseEvent } from './base-event';
17
+ /**
18
+ * Arguments for the `drilldown` event.
19
+ *
20
+ * See [Drilldown Charts](slug:drilldown_charts).
21
+ */
22
+ var DrilldownEvent = /** @class */ (function (_super) {
23
+ __extends(DrilldownEvent, _super);
24
+ /**
25
+ * @hidden
26
+ */
27
+ function DrilldownEvent(e, target) {
28
+ var _this = _super.call(this, target) || this;
29
+ _this.value = e.value;
30
+ _this.point = e.point;
31
+ _this.series = e.series;
32
+ _this.currentState = e.currentState;
33
+ _this.nextState = e.nextState;
34
+ return _this;
35
+ }
36
+ return DrilldownEvent;
37
+ }(BaseEvent));
38
+ export { DrilldownEvent };
@@ -0,0 +1,22 @@
1
+ import { ChartDrilldownState } from '../api-types/chart-drilldown-state.interface';
2
+ /**
3
+ * Arguments for the `drilldownStateChange` event on the Chart Breadcrumb.
4
+ *
5
+ * See [Drilldown Charts](slug:drilldown_charts).
6
+ */
7
+ export declare class DrilldownStateChangeEvent {
8
+ /**
9
+ * The current Chart [drilldown state](slug:api_charts_chartprops#toc-drilldownstate).
10
+ */
11
+ currentState: ChartDrilldownState;
12
+ /**
13
+ * The Chart [drilldown state](slug:api_charts_chartprops#toc-drilldownstate) that will apply the current drilldown operation.
14
+ *
15
+ * See [Drilldown](slug:drilldown_charts) for an application example.
16
+ */
17
+ nextState: ChartDrilldownState;
18
+ /**
19
+ * @hidden
20
+ */
21
+ constructor(e: any);
22
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Arguments for the `drilldownStateChange` event on the Chart Breadcrumb.
3
+ *
4
+ * See [Drilldown Charts](slug:drilldown_charts).
5
+ */
6
+ var DrilldownStateChangeEvent = /** @class */ (function () {
7
+ /**
8
+ * @hidden
9
+ */
10
+ function DrilldownStateChangeEvent(e) {
11
+ this.currentState = e.currentState;
12
+ this.nextState = e.nextState;
13
+ }
14
+ return DrilldownStateChangeEvent;
15
+ }());
16
+ export { DrilldownStateChangeEvent };
package/dist/es/main.d.ts CHANGED
@@ -18,6 +18,7 @@ import { CrosshairTooltip, CrosshairTooltipProps } from './tooltip/Crosshair';
18
18
  import { TooltipPopup, TooltipPopupProps } from './tooltip/Popup';
19
19
  import { SharedTooltipContent } from './tooltip/SharedTooltipContent';
20
20
  import { CrosshairTooltipContainer } from './tooltip/CrosshairContainer';
21
+ import { ChartBreadcrumb, ChartBreadcrumbProps } from './ChartBreadcrumb';
21
22
  export * from './tooltip/main';
22
23
  export * from './components/main';
23
24
  export * from './common/api-types';
@@ -25,4 +26,4 @@ export * from './common/property-types';
25
26
  export * from './common/events';
26
27
  export * from './common/charts';
27
28
  export * from './methods/';
28
- export { Chart, ChartProps, Sparkline, SparklineProps, StockChart, StockChartProps, CategoryBaseUnit, BaseUnit, AxisLabelVisualArgs, LineStyle, ValueAxisTitle, SeriesLabels, CollectionConfigurationComponent, ConfigurationComponent, DonutCenter, TooltipPoint, SeriesTooltip, CrosshairTooltip, CrosshairTooltipProps, TooltipPopup, TooltipPopupProps, SharedTooltipContent, CrosshairTooltipContainer };
29
+ export { Chart, ChartProps, Sparkline, SparklineProps, StockChart, StockChartProps, CategoryBaseUnit, BaseUnit, AxisLabelVisualArgs, LineStyle, ValueAxisTitle, SeriesLabels, CollectionConfigurationComponent, ConfigurationComponent, DonutCenter, TooltipPoint, SeriesTooltip, CrosshairTooltip, CrosshairTooltipProps, TooltipPopup, TooltipPopupProps, SharedTooltipContent, CrosshairTooltipContainer, ChartBreadcrumb, ChartBreadcrumbProps };