@mui/x-charts 7.22.0 → 7.22.2
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/BarChart/BarChart.js +2 -0
- package/CHANGELOG.md +126 -0
- package/ChartContainer/ChartContainer.js +2 -0
- package/ChartContainer/useChartContainerProps.d.ts +8 -0
- package/ChartContainer/useDefaultizeAxis.d.ts +4 -0
- package/LineChart/LineChart.js +2 -0
- package/PieChart/PieChart.js +2 -0
- package/ResponsiveChartContainer/ResponsiveChartContainer.js +2 -0
- package/ScatterChart/ScatterChart.js +2 -0
- package/SparkLineChart/SparkLineChart.js +2 -0
- package/context/CartesianProvider/defaultizeAxis.d.ts +4 -0
- package/index.js +1 -1
- package/internals/computeAxisValue.js +13 -5
- package/models/axis.d.ts +10 -0
- package/models/seriesType/common.d.ts +2 -2
- package/modern/BarChart/BarChart.js +2 -0
- package/modern/ChartContainer/ChartContainer.js +2 -0
- package/modern/LineChart/LineChart.js +2 -0
- package/modern/PieChart/PieChart.js +2 -0
- package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +2 -0
- package/modern/ScatterChart/ScatterChart.js +2 -0
- package/modern/SparkLineChart/SparkLineChart.js +2 -0
- package/modern/index.js +1 -1
- package/modern/internals/computeAxisValue.js +13 -5
- package/node/BarChart/BarChart.js +2 -0
- package/node/ChartContainer/ChartContainer.js +2 -0
- package/node/LineChart/LineChart.js +2 -0
- package/node/PieChart/PieChart.js +2 -0
- package/node/ResponsiveChartContainer/ResponsiveChartContainer.js +2 -0
- package/node/ScatterChart/ScatterChart.js +2 -0
- package/node/SparkLineChart/SparkLineChart.js +2 -0
- package/node/index.js +1 -1
- package/node/internals/computeAxisValue.js +13 -5
- package/package.json +1 -1
package/BarChart/BarChart.js
CHANGED
|
@@ -288,6 +288,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
288
288
|
dataKey: PropTypes.string,
|
|
289
289
|
disableLine: PropTypes.bool,
|
|
290
290
|
disableTicks: PropTypes.bool,
|
|
291
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
291
292
|
fill: PropTypes.string,
|
|
292
293
|
hideTooltip: PropTypes.bool,
|
|
293
294
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -341,6 +342,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
341
342
|
dataKey: PropTypes.string,
|
|
342
343
|
disableLine: PropTypes.bool,
|
|
343
344
|
disableTicks: PropTypes.bool,
|
|
345
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
344
346
|
fill: PropTypes.string,
|
|
345
347
|
hideTooltip: PropTypes.bool,
|
|
346
348
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,132 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 7.22.2
|
|
7
|
+
|
|
8
|
+
_Nov 8, 2024_
|
|
9
|
+
|
|
10
|
+
We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights ✨:
|
|
11
|
+
|
|
12
|
+
- 👨🏽💻 API enhancements
|
|
13
|
+
- 🐞 Bugfixes
|
|
14
|
+
|
|
15
|
+
Special thanks go out to the community contributors who have helped make this release possible:
|
|
16
|
+
@clins1994, @GuillaumeMeheut, @k-rajat19.
|
|
17
|
+
Following are all team members who have contributed to this release:
|
|
18
|
+
@LukasTy, @MBilalShafi, @KenanYusuf, @arminmeh.
|
|
19
|
+
|
|
20
|
+
### Upcoming alpha
|
|
21
|
+
|
|
22
|
+
Keep an eye out for the MUI⠀X `v8.0.0-aplha.0` release soon. It will follow a weekly release schedule as always until it is stable.
|
|
23
|
+
|
|
24
|
+
<!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
|
|
25
|
+
|
|
26
|
+
### Data Grid
|
|
27
|
+
|
|
28
|
+
#### `@mui/x-data-grid@7.22.2`
|
|
29
|
+
|
|
30
|
+
- [DataGrid] Fix `null` reference error in `GridVirtualScrollbar` (#15289) @MBilalShafi
|
|
31
|
+
- [DataGrid] Fix filtering with `boolean` column type (#15257) @k-rajat19
|
|
32
|
+
- [DataGrid] Improve row selection propagation trigger (#15274) @MBilalShafi
|
|
33
|
+
- [DataGrid] Preprocess edit cell props on backspace/delete (#15223) @KenanYusuf
|
|
34
|
+
- [DataGrid] Add a recipe to persist column width and order (#15309) @MBilalShafi
|
|
35
|
+
|
|
36
|
+
#### `@mui/x-data-grid-pro@7.22.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
37
|
+
|
|
38
|
+
Same changes as in `@mui/x-data-grid@7.22.2`, plus:
|
|
39
|
+
|
|
40
|
+
- [DataGridPro] Apply default properties if they are not passed in a reorder column (#15320) @k-rajat19
|
|
41
|
+
- [DataGridPro] Toggle row expansion with `Enter` key in Tree data (#15313) @k-rajat19
|
|
42
|
+
|
|
43
|
+
#### `@mui/x-data-grid-premium@7.22.2` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
44
|
+
|
|
45
|
+
Same changes as in `@mui/x-data-grid-pro@7.22.2`, plus:
|
|
46
|
+
|
|
47
|
+
- [DataGridPremium] Fix incorrect rows selection count when selection propagation is enabled with row grouping (#15222) @arminmeh
|
|
48
|
+
|
|
49
|
+
### Date and Time Pickers
|
|
50
|
+
|
|
51
|
+
#### `@mui/x-date-pickers@7.22.2`
|
|
52
|
+
|
|
53
|
+
- [pickers] Add support for `moment-hijri@3.0.0` (#15248) @LukasTy
|
|
54
|
+
|
|
55
|
+
#### `@mui/x-date-pickers-pro@7.22.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
56
|
+
|
|
57
|
+
Same changes as in `@mui/x-date-pickers@7.22.2`.
|
|
58
|
+
|
|
59
|
+
### Charts
|
|
60
|
+
|
|
61
|
+
#### `@mui/x-charts@7.22.2`
|
|
62
|
+
|
|
63
|
+
- [charts] Allow `SeriesValueFormatter` to return `null` value (#15295) @clins1994
|
|
64
|
+
- [charts] Allow configuring the `domainLimit` for each axis. (#15325) @GuillaumeMeheut
|
|
65
|
+
|
|
66
|
+
#### `@mui/x-charts-pro@7.0.0-beta.7` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
67
|
+
|
|
68
|
+
Same changes as in `@mui/x-charts@7.22.2`.
|
|
69
|
+
|
|
70
|
+
## 7.22.1
|
|
71
|
+
|
|
72
|
+
_Nov 1, 2024_
|
|
73
|
+
|
|
74
|
+
We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights ✨:
|
|
75
|
+
|
|
76
|
+
- 🐞 Bugfixes
|
|
77
|
+
- 📚 Documentation improvements
|
|
78
|
+
- 🌍 Improve Polish (pl-PL) locale on the Date Pickers
|
|
79
|
+
|
|
80
|
+
Special thanks go out to the community contributors who have helped make this release possible:
|
|
81
|
+
@wojtkolos, @dpak-maurya, @k-rajat19.
|
|
82
|
+
Following are all team members who have contributed to this release:
|
|
83
|
+
@LukasTy, @arminmeh, @MBilalShafi, @KenanYusuf, @flaviendelangle.
|
|
84
|
+
|
|
85
|
+
<!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
|
|
86
|
+
|
|
87
|
+
### Data Grid
|
|
88
|
+
|
|
89
|
+
#### `@mui/x-data-grid@7.22.1`
|
|
90
|
+
|
|
91
|
+
- [DataGrid] Fix right column group header border (#15152) @KenanYusuf
|
|
92
|
+
- [DataGrid] Fix scroll jump when holding down arrow keys (#15167) @arminmeh
|
|
93
|
+
- [DataGrid] Move `rowGroupingModelChange` handler to respective hook (#15127) @MBilalShafi
|
|
94
|
+
- [DataGrid] Prevent error when deleting the last row (#15153) @dpak-maurya
|
|
95
|
+
- [DataGrid] Fix overlay height in autoHeight mode (#15205) @cherniavskii
|
|
96
|
+
|
|
97
|
+
#### `@mui/x-data-grid-pro@7.22.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
98
|
+
|
|
99
|
+
Same changes as in `@mui/x-data-grid@7.22.1`, plus:
|
|
100
|
+
|
|
101
|
+
- [DataGridPro] Add list view tests (#15166) @KenanYusuf
|
|
102
|
+
|
|
103
|
+
#### `@mui/x-data-grid-premium@7.22.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
104
|
+
|
|
105
|
+
- [DataGridPremium] Keep focus on the grouping cell on space bar press #15155 @k-rajat19
|
|
106
|
+
|
|
107
|
+
### Date and Time Pickers
|
|
108
|
+
|
|
109
|
+
#### `@mui/x-date-pickers@7.22.1`
|
|
110
|
+
|
|
111
|
+
- [l10n] Improve Polish (pl-PL) locale (#15177) @wojtkolos
|
|
112
|
+
|
|
113
|
+
#### `@mui/x-date-pickers-pro@7.22.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
114
|
+
|
|
115
|
+
Same changes as in `@mui/x-date-pickers@7.22.1`.
|
|
116
|
+
|
|
117
|
+
### Tree View
|
|
118
|
+
|
|
119
|
+
#### `@mui/x-tree-view@7.22.1`
|
|
120
|
+
|
|
121
|
+
- [TreeView] Export `TreeItem2DragAndDropOverlay` and `TreeItem2LabelInput` from the root of each package (#15208) @flaviendelangle
|
|
122
|
+
- [TreeView] Fix drag and drop color usage (#15149) @LukasTy
|
|
123
|
+
|
|
124
|
+
#### `@mui/x-tree-view-pro@7.22.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
125
|
+
|
|
126
|
+
Same changes as in `@mui/x-tree-view@7.22.1`.
|
|
127
|
+
|
|
128
|
+
### Docs
|
|
129
|
+
|
|
130
|
+
- [docs] Add section explaining how to keep the selection while filtering in Data grid docs (#15199) @arminmeh
|
|
131
|
+
|
|
6
132
|
## 7.22.0
|
|
7
133
|
|
|
8
134
|
_Oct 25, 2024_
|
|
@@ -152,6 +152,7 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
|
|
|
152
152
|
dataKey: PropTypes.string,
|
|
153
153
|
disableLine: PropTypes.bool,
|
|
154
154
|
disableTicks: PropTypes.bool,
|
|
155
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
155
156
|
fill: PropTypes.string,
|
|
156
157
|
hideTooltip: PropTypes.bool,
|
|
157
158
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -205,6 +206,7 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
|
|
|
205
206
|
dataKey: PropTypes.string,
|
|
206
207
|
disableLine: PropTypes.bool,
|
|
207
208
|
disableTicks: PropTypes.bool,
|
|
209
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
208
210
|
fill: PropTypes.string,
|
|
209
211
|
hideTooltip: PropTypes.bool,
|
|
210
212
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -51,6 +51,10 @@ export declare const useChartContainerProps: (props: ChartContainerProps, ref: R
|
|
|
51
51
|
scaleType?: "linear" | "time" | "log" | "band" | "point" | "pow" | "sqrt" | "utc" | undefined;
|
|
52
52
|
colorMap?: import("../models/colorMapping").ContinuousColorConfig<number | Date> | import("../models/colorMapping").PiecewiseColorConfig<number | Date> | import("../models/colorMapping").OrdinalColorConfig<string | number | Date> | undefined;
|
|
53
53
|
hideTooltip?: boolean | undefined;
|
|
54
|
+
domainLimit?: ("nice" | "strict" | ((min: number, max: number) => {
|
|
55
|
+
min: number;
|
|
56
|
+
max: number;
|
|
57
|
+
})) | undefined;
|
|
54
58
|
id: import("../internals").AxisId;
|
|
55
59
|
}[];
|
|
56
60
|
yAxis: {
|
|
@@ -84,6 +88,10 @@ export declare const useChartContainerProps: (props: ChartContainerProps, ref: R
|
|
|
84
88
|
scaleType?: "linear" | "time" | "log" | "band" | "point" | "pow" | "sqrt" | "utc" | undefined;
|
|
85
89
|
colorMap?: import("../models/colorMapping").ContinuousColorConfig<number | Date> | import("../models/colorMapping").PiecewiseColorConfig<number | Date> | import("../models/colorMapping").OrdinalColorConfig<string | number | Date> | undefined;
|
|
86
90
|
hideTooltip?: boolean | undefined;
|
|
91
|
+
domainLimit?: ("nice" | "strict" | ((min: number, max: number) => {
|
|
92
|
+
min: number;
|
|
93
|
+
max: number;
|
|
94
|
+
})) | undefined;
|
|
87
95
|
id: import("../internals").AxisId;
|
|
88
96
|
}[];
|
|
89
97
|
};
|
|
@@ -33,5 +33,9 @@ export declare const useDefaultizeAxis: (inXAxis: MakeOptional<AxisConfig<ScaleN
|
|
|
33
33
|
scaleType?: "linear" | "time" | "log" | "band" | "point" | "pow" | "sqrt" | "utc" | undefined;
|
|
34
34
|
colorMap?: import("../models/colorMapping").ContinuousColorConfig<number | Date> | import("../models/colorMapping").PiecewiseColorConfig<number | Date> | import("../models/colorMapping").OrdinalColorConfig<string | number | Date> | undefined;
|
|
35
35
|
hideTooltip?: boolean | undefined;
|
|
36
|
+
domainLimit?: ("nice" | "strict" | ((min: number, max: number) => {
|
|
37
|
+
min: number;
|
|
38
|
+
max: number;
|
|
39
|
+
})) | undefined;
|
|
36
40
|
id: import("../internals").AxisId;
|
|
37
41
|
}[][];
|
package/LineChart/LineChart.js
CHANGED
|
@@ -293,6 +293,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
293
293
|
dataKey: PropTypes.string,
|
|
294
294
|
disableLine: PropTypes.bool,
|
|
295
295
|
disableTicks: PropTypes.bool,
|
|
296
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
296
297
|
fill: PropTypes.string,
|
|
297
298
|
hideTooltip: PropTypes.bool,
|
|
298
299
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -346,6 +347,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
346
347
|
dataKey: PropTypes.string,
|
|
347
348
|
disableLine: PropTypes.bool,
|
|
348
349
|
disableTicks: PropTypes.bool,
|
|
350
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
349
351
|
fill: PropTypes.string,
|
|
350
352
|
hideTooltip: PropTypes.bool,
|
|
351
353
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
package/PieChart/PieChart.js
CHANGED
|
@@ -333,6 +333,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
333
333
|
dataKey: PropTypes.string,
|
|
334
334
|
disableLine: PropTypes.bool,
|
|
335
335
|
disableTicks: PropTypes.bool,
|
|
336
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
336
337
|
fill: PropTypes.string,
|
|
337
338
|
hideTooltip: PropTypes.bool,
|
|
338
339
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -386,6 +387,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
386
387
|
dataKey: PropTypes.string,
|
|
387
388
|
disableLine: PropTypes.bool,
|
|
388
389
|
disableTicks: PropTypes.bool,
|
|
390
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
389
391
|
fill: PropTypes.string,
|
|
390
392
|
hideTooltip: PropTypes.bool,
|
|
391
393
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -133,6 +133,7 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
133
133
|
dataKey: PropTypes.string,
|
|
134
134
|
disableLine: PropTypes.bool,
|
|
135
135
|
disableTicks: PropTypes.bool,
|
|
136
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
136
137
|
fill: PropTypes.string,
|
|
137
138
|
hideTooltip: PropTypes.bool,
|
|
138
139
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -186,6 +187,7 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
186
187
|
dataKey: PropTypes.string,
|
|
187
188
|
disableLine: PropTypes.bool,
|
|
188
189
|
disableTicks: PropTypes.bool,
|
|
190
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
189
191
|
fill: PropTypes.string,
|
|
190
192
|
hideTooltip: PropTypes.bool,
|
|
191
193
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -275,6 +275,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
275
275
|
dataKey: PropTypes.string,
|
|
276
276
|
disableLine: PropTypes.bool,
|
|
277
277
|
disableTicks: PropTypes.bool,
|
|
278
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
278
279
|
fill: PropTypes.string,
|
|
279
280
|
hideTooltip: PropTypes.bool,
|
|
280
281
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -328,6 +329,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
328
329
|
dataKey: PropTypes.string,
|
|
329
330
|
disableLine: PropTypes.bool,
|
|
330
331
|
disableTicks: PropTypes.bool,
|
|
332
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
331
333
|
fill: PropTypes.string,
|
|
332
334
|
hideTooltip: PropTypes.bool,
|
|
333
335
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -282,6 +282,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
282
282
|
dataKey: PropTypes.string,
|
|
283
283
|
disableLine: PropTypes.bool,
|
|
284
284
|
disableTicks: PropTypes.bool,
|
|
285
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
285
286
|
fill: PropTypes.string,
|
|
286
287
|
hideTooltip: PropTypes.bool,
|
|
287
288
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -334,6 +335,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
334
335
|
dataKey: PropTypes.string,
|
|
335
336
|
disableLine: PropTypes.bool,
|
|
336
337
|
disableTicks: PropTypes.bool,
|
|
338
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
337
339
|
fill: PropTypes.string,
|
|
338
340
|
hideTooltip: PropTypes.bool,
|
|
339
341
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -32,5 +32,9 @@ export declare const defaultizeAxis: (inAxis: MakeOptional<AxisConfig<ScaleName,
|
|
|
32
32
|
scaleType?: "linear" | "time" | "log" | "band" | "point" | "pow" | "sqrt" | "utc" | undefined;
|
|
33
33
|
colorMap?: import("../../models/colorMapping").ContinuousColorConfig<number | Date> | import("../../models/colorMapping").PiecewiseColorConfig<number | Date> | import("../../models/colorMapping").OrdinalColorConfig<string | number | Date> | undefined;
|
|
34
34
|
hideTooltip?: boolean | undefined;
|
|
35
|
+
domainLimit?: ("nice" | "strict" | ((min: number, max: number) => {
|
|
36
|
+
min: number;
|
|
37
|
+
max: number;
|
|
38
|
+
})) | undefined;
|
|
35
39
|
id: import("../../internals").AxisId;
|
|
36
40
|
}[];
|
package/index.js
CHANGED
|
@@ -98,22 +98,30 @@ export function computeAxisValue({
|
|
|
98
98
|
return;
|
|
99
99
|
}
|
|
100
100
|
const scaleType = axis.scaleType ?? 'linear';
|
|
101
|
+
const domainLimit = axis.domainLimit ?? 'nice';
|
|
101
102
|
const axisExtremums = [axis.min ?? minData, axis.max ?? maxData];
|
|
103
|
+
if (typeof domainLimit === 'function') {
|
|
104
|
+
const {
|
|
105
|
+
min,
|
|
106
|
+
max
|
|
107
|
+
} = domainLimit(minData, maxData);
|
|
108
|
+
axisExtremums[0] = min;
|
|
109
|
+
axisExtremums[1] = max;
|
|
110
|
+
}
|
|
102
111
|
const rawTickNumber = getTickNumber(_extends({}, axis, {
|
|
103
112
|
range,
|
|
104
113
|
domain: axisExtremums
|
|
105
114
|
}));
|
|
106
115
|
const tickNumber = rawTickNumber / ((zoomRange[1] - zoomRange[0]) / 100);
|
|
107
116
|
const zoomedRange = zoomScaleRange(range, zoomRange);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
const [minDomain, maxDomain] = scale.domain();
|
|
117
|
+
const scale = getScale(scaleType, axisExtremums, zoomedRange);
|
|
118
|
+
const finalScale = domainLimit === 'nice' ? scale.nice(rawTickNumber) : scale;
|
|
119
|
+
const [minDomain, maxDomain] = finalScale.domain();
|
|
112
120
|
const domain = [axis.min ?? minDomain, axis.max ?? maxDomain];
|
|
113
121
|
completeAxis[axis.id] = _extends({}, axis, {
|
|
114
122
|
data,
|
|
115
123
|
scaleType: scaleType,
|
|
116
|
-
scale:
|
|
124
|
+
scale: finalScale.domain(domain),
|
|
117
125
|
tickNumber,
|
|
118
126
|
colorScale: axis.colorMap && getColorScale(axis.colorMap)
|
|
119
127
|
});
|
package/models/axis.d.ts
CHANGED
|
@@ -280,6 +280,16 @@ export type AxisConfig<S extends ScaleName = ScaleName, V = any, AxisProps = Cha
|
|
|
280
280
|
* If `true`, Reverse the axis scaleBand.
|
|
281
281
|
*/
|
|
282
282
|
reverse?: boolean;
|
|
283
|
+
/**
|
|
284
|
+
* Defines the axis scale domain based on the min/max values of series linked to it.
|
|
285
|
+
* - 'nice': Rounds the domain at human friendly values.
|
|
286
|
+
* - 'strict': Set the domain to the min/max value provided. No extras space is added.
|
|
287
|
+
* - function: Receives the calculated extremums as parameters, and should return the axis domain.
|
|
288
|
+
*/
|
|
289
|
+
domainLimit?: 'nice' | 'strict' | ((min: number, max: number) => {
|
|
290
|
+
min: number;
|
|
291
|
+
max: number;
|
|
292
|
+
});
|
|
283
293
|
} & Omit<Partial<AxisProps>, 'axisId'> & Partial<Omit<AxisScaleConfig[S], 'scale'>> & TickParams & AxisConfigExtension;
|
|
284
294
|
export interface AxisConfigExtension {
|
|
285
295
|
}
|
|
@@ -7,7 +7,7 @@ export type SeriesValueFormatterContext = {
|
|
|
7
7
|
*/
|
|
8
8
|
dataIndex: number;
|
|
9
9
|
};
|
|
10
|
-
export type SeriesValueFormatter<TValue> = (value: TValue, context: SeriesValueFormatterContext) => string;
|
|
10
|
+
export type SeriesValueFormatter<TValue> = (value: TValue, context: SeriesValueFormatterContext) => string | null;
|
|
11
11
|
export type CommonSeriesType<TValue> = {
|
|
12
12
|
id?: SeriesId;
|
|
13
13
|
color?: string;
|
|
@@ -15,7 +15,7 @@ export type CommonSeriesType<TValue> = {
|
|
|
15
15
|
* Formatter used to render values in tooltip or other data display.
|
|
16
16
|
* @param {TValue} value The series' value to render.
|
|
17
17
|
* @param {SeriesValueFormatterContext} context The rendering context of the value.
|
|
18
|
-
* @returns {string} The string to display.
|
|
18
|
+
* @returns {string | null} The string to display or null if the value should not be shown.
|
|
19
19
|
*/
|
|
20
20
|
valueFormatter?: SeriesValueFormatter<TValue>;
|
|
21
21
|
/**
|
|
@@ -288,6 +288,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
288
288
|
dataKey: PropTypes.string,
|
|
289
289
|
disableLine: PropTypes.bool,
|
|
290
290
|
disableTicks: PropTypes.bool,
|
|
291
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
291
292
|
fill: PropTypes.string,
|
|
292
293
|
hideTooltip: PropTypes.bool,
|
|
293
294
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -341,6 +342,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
341
342
|
dataKey: PropTypes.string,
|
|
342
343
|
disableLine: PropTypes.bool,
|
|
343
344
|
disableTicks: PropTypes.bool,
|
|
345
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
344
346
|
fill: PropTypes.string,
|
|
345
347
|
hideTooltip: PropTypes.bool,
|
|
346
348
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -152,6 +152,7 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
|
|
|
152
152
|
dataKey: PropTypes.string,
|
|
153
153
|
disableLine: PropTypes.bool,
|
|
154
154
|
disableTicks: PropTypes.bool,
|
|
155
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
155
156
|
fill: PropTypes.string,
|
|
156
157
|
hideTooltip: PropTypes.bool,
|
|
157
158
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -205,6 +206,7 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
|
|
|
205
206
|
dataKey: PropTypes.string,
|
|
206
207
|
disableLine: PropTypes.bool,
|
|
207
208
|
disableTicks: PropTypes.bool,
|
|
209
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
208
210
|
fill: PropTypes.string,
|
|
209
211
|
hideTooltip: PropTypes.bool,
|
|
210
212
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -293,6 +293,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
293
293
|
dataKey: PropTypes.string,
|
|
294
294
|
disableLine: PropTypes.bool,
|
|
295
295
|
disableTicks: PropTypes.bool,
|
|
296
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
296
297
|
fill: PropTypes.string,
|
|
297
298
|
hideTooltip: PropTypes.bool,
|
|
298
299
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -346,6 +347,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
346
347
|
dataKey: PropTypes.string,
|
|
347
348
|
disableLine: PropTypes.bool,
|
|
348
349
|
disableTicks: PropTypes.bool,
|
|
350
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
349
351
|
fill: PropTypes.string,
|
|
350
352
|
hideTooltip: PropTypes.bool,
|
|
351
353
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -333,6 +333,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
333
333
|
dataKey: PropTypes.string,
|
|
334
334
|
disableLine: PropTypes.bool,
|
|
335
335
|
disableTicks: PropTypes.bool,
|
|
336
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
336
337
|
fill: PropTypes.string,
|
|
337
338
|
hideTooltip: PropTypes.bool,
|
|
338
339
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -386,6 +387,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
386
387
|
dataKey: PropTypes.string,
|
|
387
388
|
disableLine: PropTypes.bool,
|
|
388
389
|
disableTicks: PropTypes.bool,
|
|
390
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
389
391
|
fill: PropTypes.string,
|
|
390
392
|
hideTooltip: PropTypes.bool,
|
|
391
393
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -133,6 +133,7 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
133
133
|
dataKey: PropTypes.string,
|
|
134
134
|
disableLine: PropTypes.bool,
|
|
135
135
|
disableTicks: PropTypes.bool,
|
|
136
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
136
137
|
fill: PropTypes.string,
|
|
137
138
|
hideTooltip: PropTypes.bool,
|
|
138
139
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -186,6 +187,7 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
186
187
|
dataKey: PropTypes.string,
|
|
187
188
|
disableLine: PropTypes.bool,
|
|
188
189
|
disableTicks: PropTypes.bool,
|
|
190
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
189
191
|
fill: PropTypes.string,
|
|
190
192
|
hideTooltip: PropTypes.bool,
|
|
191
193
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -275,6 +275,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
275
275
|
dataKey: PropTypes.string,
|
|
276
276
|
disableLine: PropTypes.bool,
|
|
277
277
|
disableTicks: PropTypes.bool,
|
|
278
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
278
279
|
fill: PropTypes.string,
|
|
279
280
|
hideTooltip: PropTypes.bool,
|
|
280
281
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -328,6 +329,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
328
329
|
dataKey: PropTypes.string,
|
|
329
330
|
disableLine: PropTypes.bool,
|
|
330
331
|
disableTicks: PropTypes.bool,
|
|
332
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
331
333
|
fill: PropTypes.string,
|
|
332
334
|
hideTooltip: PropTypes.bool,
|
|
333
335
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -282,6 +282,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
282
282
|
dataKey: PropTypes.string,
|
|
283
283
|
disableLine: PropTypes.bool,
|
|
284
284
|
disableTicks: PropTypes.bool,
|
|
285
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
285
286
|
fill: PropTypes.string,
|
|
286
287
|
hideTooltip: PropTypes.bool,
|
|
287
288
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -334,6 +335,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
334
335
|
dataKey: PropTypes.string,
|
|
335
336
|
disableLine: PropTypes.bool,
|
|
336
337
|
disableTicks: PropTypes.bool,
|
|
338
|
+
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
337
339
|
fill: PropTypes.string,
|
|
338
340
|
hideTooltip: PropTypes.bool,
|
|
339
341
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
package/modern/index.js
CHANGED
|
@@ -98,22 +98,30 @@ export function computeAxisValue({
|
|
|
98
98
|
return;
|
|
99
99
|
}
|
|
100
100
|
const scaleType = axis.scaleType ?? 'linear';
|
|
101
|
+
const domainLimit = axis.domainLimit ?? 'nice';
|
|
101
102
|
const axisExtremums = [axis.min ?? minData, axis.max ?? maxData];
|
|
103
|
+
if (typeof domainLimit === 'function') {
|
|
104
|
+
const {
|
|
105
|
+
min,
|
|
106
|
+
max
|
|
107
|
+
} = domainLimit(minData, maxData);
|
|
108
|
+
axisExtremums[0] = min;
|
|
109
|
+
axisExtremums[1] = max;
|
|
110
|
+
}
|
|
102
111
|
const rawTickNumber = getTickNumber(_extends({}, axis, {
|
|
103
112
|
range,
|
|
104
113
|
domain: axisExtremums
|
|
105
114
|
}));
|
|
106
115
|
const tickNumber = rawTickNumber / ((zoomRange[1] - zoomRange[0]) / 100);
|
|
107
116
|
const zoomedRange = zoomScaleRange(range, zoomRange);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
const [minDomain, maxDomain] = scale.domain();
|
|
117
|
+
const scale = getScale(scaleType, axisExtremums, zoomedRange);
|
|
118
|
+
const finalScale = domainLimit === 'nice' ? scale.nice(rawTickNumber) : scale;
|
|
119
|
+
const [minDomain, maxDomain] = finalScale.domain();
|
|
112
120
|
const domain = [axis.min ?? minDomain, axis.max ?? maxDomain];
|
|
113
121
|
completeAxis[axis.id] = _extends({}, axis, {
|
|
114
122
|
data,
|
|
115
123
|
scaleType: scaleType,
|
|
116
|
-
scale:
|
|
124
|
+
scale: finalScale.domain(domain),
|
|
117
125
|
tickNumber,
|
|
118
126
|
colorScale: axis.colorMap && getColorScale(axis.colorMap)
|
|
119
127
|
});
|
|
@@ -295,6 +295,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
295
295
|
dataKey: _propTypes.default.string,
|
|
296
296
|
disableLine: _propTypes.default.bool,
|
|
297
297
|
disableTicks: _propTypes.default.bool,
|
|
298
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
298
299
|
fill: _propTypes.default.string,
|
|
299
300
|
hideTooltip: _propTypes.default.bool,
|
|
300
301
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -348,6 +349,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
348
349
|
dataKey: _propTypes.default.string,
|
|
349
350
|
disableLine: _propTypes.default.bool,
|
|
350
351
|
disableTicks: _propTypes.default.bool,
|
|
352
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
351
353
|
fill: _propTypes.default.string,
|
|
352
354
|
hideTooltip: _propTypes.default.bool,
|
|
353
355
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -159,6 +159,7 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
|
|
|
159
159
|
dataKey: _propTypes.default.string,
|
|
160
160
|
disableLine: _propTypes.default.bool,
|
|
161
161
|
disableTicks: _propTypes.default.bool,
|
|
162
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
162
163
|
fill: _propTypes.default.string,
|
|
163
164
|
hideTooltip: _propTypes.default.bool,
|
|
164
165
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -212,6 +213,7 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
|
|
|
212
213
|
dataKey: _propTypes.default.string,
|
|
213
214
|
disableLine: _propTypes.default.bool,
|
|
214
215
|
disableTicks: _propTypes.default.bool,
|
|
216
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
215
217
|
fill: _propTypes.default.string,
|
|
216
218
|
hideTooltip: _propTypes.default.bool,
|
|
217
219
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -300,6 +300,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
300
300
|
dataKey: _propTypes.default.string,
|
|
301
301
|
disableLine: _propTypes.default.bool,
|
|
302
302
|
disableTicks: _propTypes.default.bool,
|
|
303
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
303
304
|
fill: _propTypes.default.string,
|
|
304
305
|
hideTooltip: _propTypes.default.bool,
|
|
305
306
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -353,6 +354,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
353
354
|
dataKey: _propTypes.default.string,
|
|
354
355
|
disableLine: _propTypes.default.bool,
|
|
355
356
|
disableTicks: _propTypes.default.bool,
|
|
357
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
356
358
|
fill: _propTypes.default.string,
|
|
357
359
|
hideTooltip: _propTypes.default.bool,
|
|
358
360
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -340,6 +340,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
340
340
|
dataKey: _propTypes.default.string,
|
|
341
341
|
disableLine: _propTypes.default.bool,
|
|
342
342
|
disableTicks: _propTypes.default.bool,
|
|
343
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
343
344
|
fill: _propTypes.default.string,
|
|
344
345
|
hideTooltip: _propTypes.default.bool,
|
|
345
346
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -393,6 +394,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
393
394
|
dataKey: _propTypes.default.string,
|
|
394
395
|
disableLine: _propTypes.default.bool,
|
|
395
396
|
disableTicks: _propTypes.default.bool,
|
|
397
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
396
398
|
fill: _propTypes.default.string,
|
|
397
399
|
hideTooltip: _propTypes.default.bool,
|
|
398
400
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -140,6 +140,7 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
140
140
|
dataKey: _propTypes.default.string,
|
|
141
141
|
disableLine: _propTypes.default.bool,
|
|
142
142
|
disableTicks: _propTypes.default.bool,
|
|
143
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
143
144
|
fill: _propTypes.default.string,
|
|
144
145
|
hideTooltip: _propTypes.default.bool,
|
|
145
146
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -193,6 +194,7 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
193
194
|
dataKey: _propTypes.default.string,
|
|
194
195
|
disableLine: _propTypes.default.bool,
|
|
195
196
|
disableTicks: _propTypes.default.bool,
|
|
197
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
196
198
|
fill: _propTypes.default.string,
|
|
197
199
|
hideTooltip: _propTypes.default.bool,
|
|
198
200
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -282,6 +282,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
282
282
|
dataKey: _propTypes.default.string,
|
|
283
283
|
disableLine: _propTypes.default.bool,
|
|
284
284
|
disableTicks: _propTypes.default.bool,
|
|
285
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
285
286
|
fill: _propTypes.default.string,
|
|
286
287
|
hideTooltip: _propTypes.default.bool,
|
|
287
288
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -335,6 +336,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
335
336
|
dataKey: _propTypes.default.string,
|
|
336
337
|
disableLine: _propTypes.default.bool,
|
|
337
338
|
disableTicks: _propTypes.default.bool,
|
|
339
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
338
340
|
fill: _propTypes.default.string,
|
|
339
341
|
hideTooltip: _propTypes.default.bool,
|
|
340
342
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -289,6 +289,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
289
289
|
dataKey: _propTypes.default.string,
|
|
290
290
|
disableLine: _propTypes.default.bool,
|
|
291
291
|
disableTicks: _propTypes.default.bool,
|
|
292
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
292
293
|
fill: _propTypes.default.string,
|
|
293
294
|
hideTooltip: _propTypes.default.bool,
|
|
294
295
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
@@ -341,6 +342,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
341
342
|
dataKey: _propTypes.default.string,
|
|
342
343
|
disableLine: _propTypes.default.bool,
|
|
343
344
|
disableTicks: _propTypes.default.bool,
|
|
345
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
344
346
|
fill: _propTypes.default.string,
|
|
345
347
|
hideTooltip: _propTypes.default.bool,
|
|
346
348
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
package/node/index.js
CHANGED
|
@@ -105,22 +105,30 @@ function computeAxisValue({
|
|
|
105
105
|
return;
|
|
106
106
|
}
|
|
107
107
|
const scaleType = axis.scaleType ?? 'linear';
|
|
108
|
+
const domainLimit = axis.domainLimit ?? 'nice';
|
|
108
109
|
const axisExtremums = [axis.min ?? minData, axis.max ?? maxData];
|
|
110
|
+
if (typeof domainLimit === 'function') {
|
|
111
|
+
const {
|
|
112
|
+
min,
|
|
113
|
+
max
|
|
114
|
+
} = domainLimit(minData, maxData);
|
|
115
|
+
axisExtremums[0] = min;
|
|
116
|
+
axisExtremums[1] = max;
|
|
117
|
+
}
|
|
109
118
|
const rawTickNumber = (0, _useTicks.getTickNumber)((0, _extends2.default)({}, axis, {
|
|
110
119
|
range,
|
|
111
120
|
domain: axisExtremums
|
|
112
121
|
}));
|
|
113
122
|
const tickNumber = rawTickNumber / ((zoomRange[1] - zoomRange[0]) / 100);
|
|
114
123
|
const zoomedRange = (0, _zoom.zoomScaleRange)(range, zoomRange);
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
const [minDomain, maxDomain] = scale.domain();
|
|
124
|
+
const scale = (0, _getScale.getScale)(scaleType, axisExtremums, zoomedRange);
|
|
125
|
+
const finalScale = domainLimit === 'nice' ? scale.nice(rawTickNumber) : scale;
|
|
126
|
+
const [minDomain, maxDomain] = finalScale.domain();
|
|
119
127
|
const domain = [axis.min ?? minDomain, axis.max ?? maxDomain];
|
|
120
128
|
completeAxis[axis.id] = (0, _extends2.default)({}, axis, {
|
|
121
129
|
data,
|
|
122
130
|
scaleType: scaleType,
|
|
123
|
-
scale:
|
|
131
|
+
scale: finalScale.domain(domain),
|
|
124
132
|
tickNumber,
|
|
125
133
|
colorScale: axis.colorMap && (0, _colorScale.getColorScale)(axis.colorMap)
|
|
126
134
|
});
|