@mui/x-charts-pro 8.5.3 → 8.6.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/CHANGELOG.md +107 -0
- package/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
- package/ChartsToolbarPro/ChartsToolbarImageExportTrigger.d.ts +27 -0
- package/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js +77 -0
- package/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.d.ts +33 -0
- package/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.js +75 -0
- package/ChartsToolbarPro/ChartsToolbarPro.d.ts +16 -3
- package/ChartsToolbarPro/ChartsToolbarPro.js +118 -8
- package/ChartsToolbarPro/index.d.ts +3 -1
- package/ChartsToolbarPro/index.js +22 -0
- package/ChartsToolbarPro/internals/ChartsMenu.d.ts +14 -0
- package/ChartsToolbarPro/internals/ChartsMenu.js +73 -0
- package/ChartsToolbarPro/internals/ChartsToolbarDivider.d.ts +5 -0
- package/ChartsToolbarPro/internals/ChartsToolbarDivider.js +47 -0
- package/esm/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
- package/esm/ChartsToolbarPro/ChartsToolbarImageExportTrigger.d.ts +27 -0
- package/esm/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js +70 -0
- package/esm/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.d.ts +33 -0
- package/esm/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.js +68 -0
- package/esm/ChartsToolbarPro/ChartsToolbarPro.d.ts +16 -3
- package/esm/ChartsToolbarPro/ChartsToolbarPro.js +120 -8
- package/esm/ChartsToolbarPro/index.d.ts +3 -1
- package/esm/ChartsToolbarPro/index.js +3 -1
- package/esm/ChartsToolbarPro/internals/ChartsMenu.d.ts +14 -0
- package/esm/ChartsToolbarPro/internals/ChartsMenu.js +67 -0
- package/esm/ChartsToolbarPro/internals/ChartsToolbarDivider.d.ts +5 -0
- package/esm/ChartsToolbarPro/internals/ChartsToolbarDivider.js +40 -0
- package/esm/index.d.ts +2 -1
- package/esm/index.js +1 -1
- package/esm/internals/material/components/BaseMenuItem.d.ts +3 -0
- package/esm/internals/material/components/BaseMenuItem.js +27 -0
- package/esm/internals/material/components/BasePopper.d.ts +3 -0
- package/esm/internals/material/components/BasePopper.js +122 -0
- package/esm/internals/material/icons.d.ts +2 -1
- package/esm/internals/material/icons.js +4 -1
- package/esm/internals/material/index.d.ts +1 -0
- package/esm/internals/material/index.js +12 -3
- package/esm/internals/plugins/useChartProExport/print.js +1 -1
- package/esm/internals/plugins/useChartProExport/useChartProExport.types.d.ts +7 -6
- package/esm/internals/slots/chartBaseSlotProps.d.ts +50 -3
- package/esm/internals/slots/chartsBaseSlots.d.ts +5 -1
- package/esm/internals/slots/chartsIconSlots.d.ts +5 -0
- package/index.d.ts +2 -1
- package/index.js +1 -1
- package/internals/material/components/BaseMenuItem.d.ts +3 -0
- package/internals/material/components/BaseMenuItem.js +35 -0
- package/internals/material/components/BasePopper.d.ts +3 -0
- package/internals/material/components/BasePopper.js +130 -0
- package/internals/material/icons.d.ts +2 -1
- package/internals/material/icons.js +5 -2
- package/internals/material/index.d.ts +1 -0
- package/internals/material/index.js +11 -2
- package/internals/plugins/useChartProExport/print.js +1 -1
- package/internals/plugins/useChartProExport/useChartProExport.types.d.ts +7 -6
- package/internals/slots/chartBaseSlotProps.d.ts +50 -3
- package/internals/slots/chartsBaseSlots.d.ts +5 -1
- package/internals/slots/chartsIconSlots.d.ts +5 -0
- package/package.json +4 -4
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ChartsToolbarDivider = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
+
var _system = require("@mui/system");
|
|
13
|
+
var _internals = require("@mui/x-charts/internals");
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
// This is workaround because api-docs-builder does not support the `NotRendered<ChartBaseDividerProps>` syntax.
|
|
16
|
+
const NotRenderedDivider = _internals.NotRendered;
|
|
17
|
+
const Divider = (0, _system.styled)(NotRenderedDivider, {
|
|
18
|
+
name: 'MuiChartsToolbar',
|
|
19
|
+
slot: 'Divider'
|
|
20
|
+
})(({
|
|
21
|
+
theme
|
|
22
|
+
}) => ({
|
|
23
|
+
margin: theme.spacing(0, 0.5),
|
|
24
|
+
height: '50%'
|
|
25
|
+
}));
|
|
26
|
+
const ChartsToolbarDivider = exports.ChartsToolbarDivider = /*#__PURE__*/React.forwardRef(function ChartsToolbarDivider(props, ref) {
|
|
27
|
+
const {
|
|
28
|
+
slots,
|
|
29
|
+
slotProps
|
|
30
|
+
} = (0, _internals.useChartsSlots)();
|
|
31
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Divider, (0, _extends2.default)({
|
|
32
|
+
as: slots.baseDivider,
|
|
33
|
+
orientation: "vertical"
|
|
34
|
+
}, slotProps.baseDivider, props, {
|
|
35
|
+
ref: ref
|
|
36
|
+
}));
|
|
37
|
+
});
|
|
38
|
+
if (process.env.NODE_ENV !== "production") ChartsToolbarDivider.displayName = "ChartsToolbarDivider";
|
|
39
|
+
process.env.NODE_ENV !== "production" ? ChartsToolbarDivider.propTypes = {
|
|
40
|
+
// ----------------------------- Warning --------------------------------
|
|
41
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
42
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
43
|
+
// ----------------------------------------------------------------------
|
|
44
|
+
className: _propTypes.default.string,
|
|
45
|
+
orientation: _propTypes.default.oneOf(['horizontal', 'vertical']),
|
|
46
|
+
style: _propTypes.default.object
|
|
47
|
+
} : void 0;
|
|
@@ -11,7 +11,7 @@ import { defaultSlotsMaterial } from "../internals/material/index.js";
|
|
|
11
11
|
import { DEFAULT_PLUGINS } from "../internals/plugins/allPlugins.js";
|
|
12
12
|
import { useChartDataProviderProProps } from "./useChartDataProviderProProps.js";
|
|
13
13
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
-
const releaseInfo = "
|
|
14
|
+
const releaseInfo = "MTc1MDk3NTIwMDAwMA==";
|
|
15
15
|
const packageIdentifier = 'x-charts-pro';
|
|
16
16
|
/**
|
|
17
17
|
* Orchestrates the data providers for the chart components and hooks.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { RenderProp } from '@mui/x-internals/useComponentRenderer';
|
|
3
|
+
import { ChartImageExportOptions } from "../internals/plugins/useChartProExport/index.js";
|
|
4
|
+
import { ChartsSlotPropsPro } from "../internals/material/index.js";
|
|
5
|
+
export interface ChartsToolbarImageExportOptions extends Omit<ChartImageExportOptions, 'type'>, Required<Pick<ChartImageExportOptions, 'type'>> {}
|
|
6
|
+
export type ChartsToolbarImageExportTriggerProps = ChartsSlotPropsPro['baseButton'] & {
|
|
7
|
+
/**
|
|
8
|
+
* A function to customize the rendering of the component.
|
|
9
|
+
*/
|
|
10
|
+
render?: RenderProp<ChartsSlotPropsPro['baseButton']>;
|
|
11
|
+
/**
|
|
12
|
+
* The options to apply on the image export.
|
|
13
|
+
* @demos
|
|
14
|
+
* - [Export as Image](https://mui.com/x/react-charts/export/#export-as-image)
|
|
15
|
+
*/
|
|
16
|
+
options?: ChartsToolbarImageExportOptions;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* A button that triggers an image export.
|
|
20
|
+
* It renders the `baseButton` slot.
|
|
21
|
+
*
|
|
22
|
+
* Demos:
|
|
23
|
+
*
|
|
24
|
+
* - [Export](https://mui.com/x/react-charts/export/)
|
|
25
|
+
*/
|
|
26
|
+
declare const ChartsToolbarImageExportTrigger: React.ForwardRefExoticComponent<ChartsToolbarImageExportTriggerProps> | React.ForwardRefExoticComponent<Omit<ChartsToolbarImageExportTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
27
|
+
export { ChartsToolbarImageExportTrigger };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["render", "options", "onClick"];
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import { forwardRef } from '@mui/x-internals/forwardRef';
|
|
7
|
+
import { useComponentRenderer } from '@mui/x-internals/useComponentRenderer';
|
|
8
|
+
import { useChartsSlots } from '@mui/x-charts/internals';
|
|
9
|
+
import { useChartApiContext } from "../context/index.js";
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
/**
|
|
12
|
+
* A button that triggers an image export.
|
|
13
|
+
* It renders the `baseButton` slot.
|
|
14
|
+
*
|
|
15
|
+
* Demos:
|
|
16
|
+
*
|
|
17
|
+
* - [Export](https://mui.com/x/react-charts/export/)
|
|
18
|
+
*/
|
|
19
|
+
const ChartsToolbarImageExportTrigger = forwardRef(function ChartsToolbarImageExportTrigger(props, ref) {
|
|
20
|
+
const {
|
|
21
|
+
render,
|
|
22
|
+
options,
|
|
23
|
+
onClick
|
|
24
|
+
} = props,
|
|
25
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
26
|
+
const {
|
|
27
|
+
slots,
|
|
28
|
+
slotProps
|
|
29
|
+
} = useChartsSlots();
|
|
30
|
+
const apiRef = useChartApiContext();
|
|
31
|
+
const handleClick = event => {
|
|
32
|
+
apiRef.current.exportAsImage(options);
|
|
33
|
+
onClick?.(event);
|
|
34
|
+
};
|
|
35
|
+
const element = useComponentRenderer(slots.baseButton, render, _extends({}, slotProps?.baseButton, {
|
|
36
|
+
onClick: handleClick
|
|
37
|
+
}, other, {
|
|
38
|
+
ref
|
|
39
|
+
}));
|
|
40
|
+
return /*#__PURE__*/_jsx(React.Fragment, {
|
|
41
|
+
children: element
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
if (process.env.NODE_ENV !== "production") ChartsToolbarImageExportTrigger.displayName = "ChartsToolbarImageExportTrigger";
|
|
45
|
+
process.env.NODE_ENV !== "production" ? ChartsToolbarImageExportTrigger.propTypes = {
|
|
46
|
+
// ----------------------------- Warning --------------------------------
|
|
47
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
48
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
49
|
+
// ----------------------------------------------------------------------
|
|
50
|
+
className: PropTypes.string,
|
|
51
|
+
disabled: PropTypes.bool,
|
|
52
|
+
id: PropTypes.string,
|
|
53
|
+
/**
|
|
54
|
+
* The options to apply on the image export.
|
|
55
|
+
* @demos
|
|
56
|
+
* - [Export as Image](https://mui.com/x/react-charts/export/#export-as-image)
|
|
57
|
+
*/
|
|
58
|
+
options: PropTypes.shape({
|
|
59
|
+
fileName: PropTypes.string,
|
|
60
|
+
quality: PropTypes.number,
|
|
61
|
+
type: PropTypes.string.isRequired
|
|
62
|
+
}),
|
|
63
|
+
/**
|
|
64
|
+
* A function to customize the rendering of the component.
|
|
65
|
+
*/
|
|
66
|
+
render: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
|
|
67
|
+
style: PropTypes.object,
|
|
68
|
+
tabIndex: PropTypes.number
|
|
69
|
+
} : void 0;
|
|
70
|
+
export { ChartsToolbarImageExportTrigger };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { RenderProp } from '@mui/x-internals/useComponentRenderer';
|
|
3
|
+
import { ChartPrintExportOptions } from "../internals/plugins/useChartProExport/index.js";
|
|
4
|
+
import { ChartsSlotPropsPro } from "../internals/material/index.js";
|
|
5
|
+
export interface ChartsToolbarPrintExportOptions extends ChartPrintExportOptions {
|
|
6
|
+
/**
|
|
7
|
+
* If `true`, this export option will be removed from the ChartsToolbarExport menu.
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
disableToolbarButton?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type ChartsToolbarPrintExportTriggerProps = ChartsSlotPropsPro['baseButton'] & {
|
|
13
|
+
/**
|
|
14
|
+
* A function to customize the rendering of the component.
|
|
15
|
+
*/
|
|
16
|
+
render?: RenderProp<ChartsSlotPropsPro['baseButton']>;
|
|
17
|
+
/**
|
|
18
|
+
* The options to apply on the Print export.
|
|
19
|
+
* @demos
|
|
20
|
+
* - [Print/Export as PDF](https://mui.com/x/react-charts/export/#print-export-as-pdf)
|
|
21
|
+
*/
|
|
22
|
+
options?: ChartPrintExportOptions;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* A button that triggers a print export.
|
|
26
|
+
* It renders the `baseButton` slot.
|
|
27
|
+
*
|
|
28
|
+
* Demos:
|
|
29
|
+
*
|
|
30
|
+
* - [Export](https://mui.com/x/react-charts/export/)
|
|
31
|
+
*/
|
|
32
|
+
declare const ChartsToolbarPrintExportTrigger: React.ForwardRefExoticComponent<ChartsToolbarPrintExportTriggerProps> | React.ForwardRefExoticComponent<Omit<ChartsToolbarPrintExportTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
33
|
+
export { ChartsToolbarPrintExportTrigger };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["render", "options", "onClick"];
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import { forwardRef } from '@mui/x-internals/forwardRef';
|
|
7
|
+
import { useComponentRenderer } from '@mui/x-internals/useComponentRenderer';
|
|
8
|
+
import { useChartsSlots } from '@mui/x-charts/internals';
|
|
9
|
+
import { useChartApiContext } from "../context/index.js";
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
/**
|
|
12
|
+
* A button that triggers a print export.
|
|
13
|
+
* It renders the `baseButton` slot.
|
|
14
|
+
*
|
|
15
|
+
* Demos:
|
|
16
|
+
*
|
|
17
|
+
* - [Export](https://mui.com/x/react-charts/export/)
|
|
18
|
+
*/
|
|
19
|
+
const ChartsToolbarPrintExportTrigger = forwardRef(function ChartsToolbarPrintExportTrigger(props, ref) {
|
|
20
|
+
const {
|
|
21
|
+
render,
|
|
22
|
+
options,
|
|
23
|
+
onClick
|
|
24
|
+
} = props,
|
|
25
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
26
|
+
const {
|
|
27
|
+
slots,
|
|
28
|
+
slotProps
|
|
29
|
+
} = useChartsSlots();
|
|
30
|
+
const apiRef = useChartApiContext();
|
|
31
|
+
const handleClick = event => {
|
|
32
|
+
apiRef.current.exportAsPrint(options);
|
|
33
|
+
onClick?.(event);
|
|
34
|
+
};
|
|
35
|
+
const element = useComponentRenderer(slots.baseButton, render, _extends({}, slotProps?.baseButton, {
|
|
36
|
+
onClick: handleClick
|
|
37
|
+
}, other, {
|
|
38
|
+
ref
|
|
39
|
+
}));
|
|
40
|
+
return /*#__PURE__*/_jsx(React.Fragment, {
|
|
41
|
+
children: element
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
if (process.env.NODE_ENV !== "production") ChartsToolbarPrintExportTrigger.displayName = "ChartsToolbarPrintExportTrigger";
|
|
45
|
+
process.env.NODE_ENV !== "production" ? ChartsToolbarPrintExportTrigger.propTypes = {
|
|
46
|
+
// ----------------------------- Warning --------------------------------
|
|
47
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
48
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
49
|
+
// ----------------------------------------------------------------------
|
|
50
|
+
className: PropTypes.string,
|
|
51
|
+
disabled: PropTypes.bool,
|
|
52
|
+
id: PropTypes.string,
|
|
53
|
+
/**
|
|
54
|
+
* The options to apply on the Print export.
|
|
55
|
+
* @demos
|
|
56
|
+
* - [Print/Export as PDF](https://mui.com/x/react-charts/export/#print-export-as-pdf)
|
|
57
|
+
*/
|
|
58
|
+
options: PropTypes.shape({
|
|
59
|
+
fileName: PropTypes.string
|
|
60
|
+
}),
|
|
61
|
+
/**
|
|
62
|
+
* A function to customize the rendering of the component.
|
|
63
|
+
*/
|
|
64
|
+
render: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
|
|
65
|
+
style: PropTypes.object,
|
|
66
|
+
tabIndex: PropTypes.number
|
|
67
|
+
} : void 0;
|
|
68
|
+
export { ChartsToolbarPrintExportTrigger };
|
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
import { ChartsToolbarProps } from '@mui/x-charts/Toolbar';
|
|
2
1
|
import * as React from 'react';
|
|
3
|
-
|
|
2
|
+
import { ChartsToolbarProps } from '@mui/x-charts/Toolbar';
|
|
3
|
+
import { ChartsToolbarPrintExportOptions } from "./ChartsToolbarPrintExportTrigger.js";
|
|
4
|
+
import { ChartsToolbarImageExportOptions } from "./ChartsToolbarImageExportTrigger.js";
|
|
5
|
+
export interface ChartsToolbarProProps extends ChartsToolbarProps {
|
|
6
|
+
printOptions?: ChartsToolbarPrintExportOptions;
|
|
7
|
+
imageExportOptions?: ChartsToolbarImageExportOptions[];
|
|
8
|
+
}
|
|
4
9
|
/**
|
|
5
10
|
* The chart toolbar component for the pro package.
|
|
6
11
|
*/
|
|
7
|
-
|
|
12
|
+
declare function ChartsToolbarPro({
|
|
13
|
+
printOptions,
|
|
14
|
+
imageExportOptions: rawImageExportOptions,
|
|
15
|
+
...other
|
|
16
|
+
}: ChartsToolbarProProps): React.JSX.Element | null;
|
|
17
|
+
declare namespace ChartsToolbarPro {
|
|
18
|
+
var propTypes: any;
|
|
19
|
+
}
|
|
20
|
+
export { ChartsToolbarPro };
|
|
@@ -1,16 +1,35 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import
|
|
4
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
+
const _excluded = ["printOptions", "imageExportOptions"];
|
|
3
6
|
import * as React from 'react';
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
import { Toolbar, ToolbarButton } from '@mui/x-charts/Toolbar';
|
|
4
9
|
import { useChartContext, useSelector, useChartsSlots } from '@mui/x-charts/internals';
|
|
5
10
|
import { useChartsLocalization } from '@mui/x-charts/hooks';
|
|
11
|
+
import useId from '@mui/utils/useId';
|
|
12
|
+
import { ChartsToolbarDivider } from "./internals/ChartsToolbarDivider.js";
|
|
13
|
+
import { ChartsMenu } from "./internals/ChartsMenu.js";
|
|
6
14
|
import { selectorChartZoomIsEnabled } from "../internals/plugins/useChartProZoom/index.js";
|
|
7
15
|
import { ChartsToolbarZoomInTrigger } from "./ChartsToolbarZoomInTrigger.js";
|
|
8
16
|
import { ChartsToolbarZoomOutTrigger } from "./ChartsToolbarZoomOutTrigger.js";
|
|
9
|
-
import {
|
|
17
|
+
import { ChartsToolbarPrintExportTrigger } from "./ChartsToolbarPrintExportTrigger.js";
|
|
18
|
+
import { ChartsToolbarImageExportTrigger } from "./ChartsToolbarImageExportTrigger.js";
|
|
19
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
20
|
+
const DEFAULT_IMAGE_EXPORT_OPTIONS = [{
|
|
21
|
+
type: 'image/png'
|
|
22
|
+
}];
|
|
23
|
+
|
|
10
24
|
/**
|
|
11
25
|
* The chart toolbar component for the pro package.
|
|
12
26
|
*/
|
|
13
|
-
|
|
27
|
+
function ChartsToolbarPro(_ref) {
|
|
28
|
+
let {
|
|
29
|
+
printOptions,
|
|
30
|
+
imageExportOptions: rawImageExportOptions
|
|
31
|
+
} = _ref,
|
|
32
|
+
other = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
14
33
|
const {
|
|
15
34
|
slots,
|
|
16
35
|
slotProps
|
|
@@ -21,7 +40,13 @@ export function ChartsToolbarPro(props) {
|
|
|
21
40
|
const {
|
|
22
41
|
localeText
|
|
23
42
|
} = useChartsLocalization();
|
|
43
|
+
const [exportMenuOpen, setExportMenuOpen] = React.useState(false);
|
|
44
|
+
const exportMenuTriggerRef = React.useRef(null);
|
|
45
|
+
const exportMenuId = useId();
|
|
46
|
+
const exportMenuTriggerId = useId();
|
|
24
47
|
const isZoomEnabled = useSelector(store, selectorChartZoomIsEnabled);
|
|
48
|
+
const imageExportOptionList = rawImageExportOptions ?? DEFAULT_IMAGE_EXPORT_OPTIONS;
|
|
49
|
+
const showExportMenu = !printOptions?.disableToolbarButton || imageExportOptionList.length > 0;
|
|
25
50
|
const children = [];
|
|
26
51
|
if (isZoomEnabled) {
|
|
27
52
|
const Tooltip = slots.baseTooltip;
|
|
@@ -30,22 +55,109 @@ export function ChartsToolbarPro(props) {
|
|
|
30
55
|
children.push(/*#__PURE__*/_jsx(Tooltip, _extends({}, slotProps.baseTooltip, {
|
|
31
56
|
title: localeText.zoomIn,
|
|
32
57
|
children: /*#__PURE__*/_jsx(ChartsToolbarZoomInTrigger, {
|
|
33
|
-
render: /*#__PURE__*/_jsx(ToolbarButton, {
|
|
34
|
-
|
|
58
|
+
render: /*#__PURE__*/_jsx(ToolbarButton, {
|
|
59
|
+
size: "small"
|
|
60
|
+
}),
|
|
61
|
+
children: /*#__PURE__*/_jsx(ZoomInIcon, _extends({
|
|
62
|
+
fontSize: "small"
|
|
63
|
+
}, slotProps.zoomInIcon))
|
|
35
64
|
})
|
|
36
65
|
}), "zoom-in"));
|
|
37
66
|
children.push(/*#__PURE__*/_jsx(Tooltip, _extends({}, slotProps.baseTooltip, {
|
|
38
67
|
title: localeText.zoomOut,
|
|
39
68
|
children: /*#__PURE__*/_jsx(ChartsToolbarZoomOutTrigger, {
|
|
40
|
-
render: /*#__PURE__*/_jsx(ToolbarButton, {
|
|
41
|
-
|
|
69
|
+
render: /*#__PURE__*/_jsx(ToolbarButton, {
|
|
70
|
+
size: "small"
|
|
71
|
+
}),
|
|
72
|
+
children: /*#__PURE__*/_jsx(ZoomOutIcon, _extends({
|
|
73
|
+
fontSize: "small"
|
|
74
|
+
}, slotProps.zoomOutIcon))
|
|
42
75
|
})
|
|
43
76
|
}), "zoom-out"));
|
|
44
77
|
}
|
|
78
|
+
if (showExportMenu) {
|
|
79
|
+
const Tooltip = slots.baseTooltip;
|
|
80
|
+
const MenuList = slots.baseMenuList;
|
|
81
|
+
const MenuItem = slots.baseMenuItem;
|
|
82
|
+
const ExportIcon = slots.exportIcon;
|
|
83
|
+
const closeExportMenu = () => setExportMenuOpen(false);
|
|
84
|
+
const handleListKeyDown = event => {
|
|
85
|
+
if (event.key === 'Tab') {
|
|
86
|
+
event.preventDefault();
|
|
87
|
+
}
|
|
88
|
+
if (isHideMenuKey(event.key)) {
|
|
89
|
+
closeExportMenu();
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
if (children.length > 0) {
|
|
93
|
+
children.push(/*#__PURE__*/_jsx(ChartsToolbarDivider, {}, "divider"));
|
|
94
|
+
}
|
|
95
|
+
children.push(/*#__PURE__*/_jsxs(React.Fragment, {
|
|
96
|
+
children: [/*#__PURE__*/_jsx(Tooltip, {
|
|
97
|
+
title: localeText.toolbarExport,
|
|
98
|
+
disableInteractive: exportMenuOpen,
|
|
99
|
+
children: /*#__PURE__*/_jsx(ToolbarButton, {
|
|
100
|
+
ref: exportMenuTriggerRef,
|
|
101
|
+
id: exportMenuTriggerId,
|
|
102
|
+
"aria-controls": exportMenuId,
|
|
103
|
+
"aria-haspopup": "true",
|
|
104
|
+
"aria-expanded": exportMenuOpen ? 'true' : undefined,
|
|
105
|
+
onClick: () => setExportMenuOpen(!exportMenuOpen),
|
|
106
|
+
size: "small",
|
|
107
|
+
children: /*#__PURE__*/_jsx(ExportIcon, {
|
|
108
|
+
fontSize: "small"
|
|
109
|
+
})
|
|
110
|
+
})
|
|
111
|
+
}), /*#__PURE__*/_jsx(ChartsMenu, {
|
|
112
|
+
target: exportMenuTriggerRef.current,
|
|
113
|
+
open: exportMenuOpen,
|
|
114
|
+
onClose: closeExportMenu,
|
|
115
|
+
position: "bottom-end",
|
|
116
|
+
children: /*#__PURE__*/_jsxs(MenuList, _extends({
|
|
117
|
+
id: exportMenuId,
|
|
118
|
+
"aria-labelledby": exportMenuTriggerId,
|
|
119
|
+
onKeyDown: handleListKeyDown,
|
|
120
|
+
autoFocusItem: true
|
|
121
|
+
}, slotProps?.baseMenuList, {
|
|
122
|
+
children: [!printOptions?.disableToolbarButton && /*#__PURE__*/_jsx(ChartsToolbarPrintExportTrigger, {
|
|
123
|
+
render: /*#__PURE__*/_jsx(MenuItem, _extends({
|
|
124
|
+
dense: true
|
|
125
|
+
}, slotProps?.baseMenuItem)),
|
|
126
|
+
options: printOptions,
|
|
127
|
+
onClick: closeExportMenu,
|
|
128
|
+
children: localeText.toolbarExportPrint
|
|
129
|
+
}), imageExportOptionList.map(imageExportOptions => /*#__PURE__*/_jsx(ChartsToolbarImageExportTrigger, {
|
|
130
|
+
render: /*#__PURE__*/_jsx(MenuItem, _extends({
|
|
131
|
+
dense: true
|
|
132
|
+
}, slotProps?.baseMenuItem)),
|
|
133
|
+
options: imageExportOptions,
|
|
134
|
+
onClick: closeExportMenu,
|
|
135
|
+
children: localeText.toolbarExportImage(imageExportOptions.type)
|
|
136
|
+
}, imageExportOptions.type))]
|
|
137
|
+
}))
|
|
138
|
+
})]
|
|
139
|
+
}, "export-menu"));
|
|
140
|
+
}
|
|
45
141
|
if (children.length === 0) {
|
|
46
142
|
return null;
|
|
47
143
|
}
|
|
48
|
-
return /*#__PURE__*/_jsx(Toolbar, _extends({},
|
|
144
|
+
return /*#__PURE__*/_jsx(Toolbar, _extends({}, other, {
|
|
49
145
|
children: children
|
|
50
146
|
}));
|
|
147
|
+
}
|
|
148
|
+
process.env.NODE_ENV !== "production" ? ChartsToolbarPro.propTypes = {
|
|
149
|
+
// ----------------------------- Warning --------------------------------
|
|
150
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
151
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
152
|
+
// ----------------------------------------------------------------------
|
|
153
|
+
imageExportOptions: PropTypes.arrayOf(PropTypes.shape({
|
|
154
|
+
fileName: PropTypes.string,
|
|
155
|
+
quality: PropTypes.number,
|
|
156
|
+
type: PropTypes.string.isRequired
|
|
157
|
+
})),
|
|
158
|
+
printOptions: PropTypes.object
|
|
159
|
+
} : void 0;
|
|
160
|
+
export { ChartsToolbarPro };
|
|
161
|
+
function isHideMenuKey(key) {
|
|
162
|
+
return key === 'Tab' || key === 'Escape';
|
|
51
163
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export * from "./ChartsToolbarPro.js";
|
|
2
2
|
export * from "./ChartsToolbarZoomInTrigger.js";
|
|
3
|
-
export * from "./ChartsToolbarZoomOutTrigger.js";
|
|
3
|
+
export * from "./ChartsToolbarZoomOutTrigger.js";
|
|
4
|
+
export * from "./ChartsToolbarPrintExportTrigger.js";
|
|
5
|
+
export * from "./ChartsToolbarImageExportTrigger.js";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export * from "./ChartsToolbarPro.js";
|
|
2
2
|
export * from "./ChartsToolbarZoomInTrigger.js";
|
|
3
|
-
export * from "./ChartsToolbarZoomOutTrigger.js";
|
|
3
|
+
export * from "./ChartsToolbarZoomOutTrigger.js";
|
|
4
|
+
export * from "./ChartsToolbarPrintExportTrigger.js";
|
|
5
|
+
export * from "./ChartsToolbarImageExportTrigger.js";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ChartBasePopperProps, Placement } from "../../internals/slots/chartBaseSlotProps.js";
|
|
3
|
+
export interface ChartsMenuProps extends Pick<ChartBasePopperProps, 'className' | 'onExited'> {
|
|
4
|
+
open: boolean;
|
|
5
|
+
target: HTMLElement | null;
|
|
6
|
+
onClose: (event?: Event) => void;
|
|
7
|
+
position?: Placement;
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
declare function ChartsMenu(props: ChartsMenuProps): React.JSX.Element;
|
|
11
|
+
declare namespace ChartsMenu {
|
|
12
|
+
var propTypes: any;
|
|
13
|
+
}
|
|
14
|
+
export { ChartsMenu };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
+
const _excluded = ["open", "target", "onClose", "children", "position", "className", "onExited"];
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
9
|
+
import HTMLElementType from '@mui/utils/HTMLElementType';
|
|
10
|
+
import { useChartsSlots } from '@mui/x-charts/internals';
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
function ChartsMenu(props) {
|
|
13
|
+
const {
|
|
14
|
+
open,
|
|
15
|
+
target,
|
|
16
|
+
onClose,
|
|
17
|
+
children,
|
|
18
|
+
position,
|
|
19
|
+
onExited
|
|
20
|
+
} = props,
|
|
21
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
22
|
+
const {
|
|
23
|
+
slots,
|
|
24
|
+
slotProps
|
|
25
|
+
} = useChartsSlots();
|
|
26
|
+
const Popper = slots.basePopper;
|
|
27
|
+
const savedFocusRef = React.useRef(null);
|
|
28
|
+
useEnhancedEffect(() => {
|
|
29
|
+
if (open) {
|
|
30
|
+
savedFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
31
|
+
} else {
|
|
32
|
+
savedFocusRef.current?.focus?.();
|
|
33
|
+
savedFocusRef.current = null;
|
|
34
|
+
}
|
|
35
|
+
}, [open]);
|
|
36
|
+
const handleClickAway = event => {
|
|
37
|
+
if (event.target && (target === event.target || target?.contains(event.target))) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
onClose(event);
|
|
41
|
+
};
|
|
42
|
+
return /*#__PURE__*/_jsx(Popper, _extends({
|
|
43
|
+
open: open,
|
|
44
|
+
target: target,
|
|
45
|
+
transition: true,
|
|
46
|
+
placement: position,
|
|
47
|
+
onClickAway: handleClickAway,
|
|
48
|
+
onExited: onExited,
|
|
49
|
+
clickAwayMouseEvent: "onMouseDown"
|
|
50
|
+
}, other, slotProps?.basePopper, {
|
|
51
|
+
children: children
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
process.env.NODE_ENV !== "production" ? ChartsMenu.propTypes = {
|
|
55
|
+
// ----------------------------- Warning --------------------------------
|
|
56
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
57
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
58
|
+
// ----------------------------------------------------------------------
|
|
59
|
+
children: PropTypes.node,
|
|
60
|
+
className: PropTypes.string,
|
|
61
|
+
onClose: PropTypes.func.isRequired,
|
|
62
|
+
onExited: PropTypes.func,
|
|
63
|
+
open: PropTypes.bool.isRequired,
|
|
64
|
+
position: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),
|
|
65
|
+
target: HTMLElementType
|
|
66
|
+
} : void 0;
|
|
67
|
+
export { ChartsMenu };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ChartBaseDividerProps } from "../../internals/slots/chartBaseSlotProps.js";
|
|
3
|
+
export interface ChartsToolbarDividerProps extends ChartBaseDividerProps {}
|
|
4
|
+
declare const ChartsToolbarDivider: React.ForwardRefExoticComponent<Omit<ChartsToolbarDividerProps, "ref"> & React.RefAttributes<HTMLHRElement>>;
|
|
5
|
+
export { ChartsToolbarDivider };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import { styled } from '@mui/system';
|
|
5
|
+
import { NotRendered, useChartsSlots } from '@mui/x-charts/internals';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
// This is workaround because api-docs-builder does not support the `NotRendered<ChartBaseDividerProps>` syntax.
|
|
8
|
+
const NotRenderedDivider = NotRendered;
|
|
9
|
+
const Divider = styled(NotRenderedDivider, {
|
|
10
|
+
name: 'MuiChartsToolbar',
|
|
11
|
+
slot: 'Divider'
|
|
12
|
+
})(({
|
|
13
|
+
theme
|
|
14
|
+
}) => ({
|
|
15
|
+
margin: theme.spacing(0, 0.5),
|
|
16
|
+
height: '50%'
|
|
17
|
+
}));
|
|
18
|
+
const ChartsToolbarDivider = /*#__PURE__*/React.forwardRef(function ChartsToolbarDivider(props, ref) {
|
|
19
|
+
const {
|
|
20
|
+
slots,
|
|
21
|
+
slotProps
|
|
22
|
+
} = useChartsSlots();
|
|
23
|
+
return /*#__PURE__*/_jsx(Divider, _extends({
|
|
24
|
+
as: slots.baseDivider,
|
|
25
|
+
orientation: "vertical"
|
|
26
|
+
}, slotProps.baseDivider, props, {
|
|
27
|
+
ref: ref
|
|
28
|
+
}));
|
|
29
|
+
});
|
|
30
|
+
if (process.env.NODE_ENV !== "production") ChartsToolbarDivider.displayName = "ChartsToolbarDivider";
|
|
31
|
+
process.env.NODE_ENV !== "production" ? ChartsToolbarDivider.propTypes = {
|
|
32
|
+
// ----------------------------- Warning --------------------------------
|
|
33
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
34
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
35
|
+
// ----------------------------------------------------------------------
|
|
36
|
+
className: PropTypes.string,
|
|
37
|
+
orientation: PropTypes.oneOf(['horizontal', 'vertical']),
|
|
38
|
+
style: PropTypes.object
|
|
39
|
+
} : void 0;
|
|
40
|
+
export { ChartsToolbarDivider };
|
package/esm/index.d.ts
CHANGED
|
@@ -37,4 +37,5 @@ export * from "./PieChartPro/index.js";
|
|
|
37
37
|
export * from "./FunnelChart/index.js";
|
|
38
38
|
export * from "./RadarChartPro/index.js";
|
|
39
39
|
export * from "./ChartZoomSlider/index.js";
|
|
40
|
-
export * from "./ChartsToolbarPro/index.js";
|
|
40
|
+
export * from "./ChartsToolbarPro/index.js";
|
|
41
|
+
export type { ChartImageExportOptions, ChartPrintExportOptions } from "./internals/plugins/useChartProExport/index.js";
|
package/esm/index.js
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["inert", "iconStart", "iconEnd", "children"];
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import MenuItem from '@mui/material/MenuItem';
|
|
6
|
+
import ListItemIcon from '@mui/material/ListItemIcon';
|
|
7
|
+
import ListItemText from '@mui/material/ListItemText';
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
export function BaseMenuItem(props) {
|
|
10
|
+
const {
|
|
11
|
+
inert,
|
|
12
|
+
iconStart,
|
|
13
|
+
iconEnd,
|
|
14
|
+
children
|
|
15
|
+
} = props,
|
|
16
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
17
|
+
return /*#__PURE__*/_jsxs(MenuItem, _extends({}, other, {
|
|
18
|
+
disableRipple: inert ? true : other.disableRipple,
|
|
19
|
+
children: [iconStart && /*#__PURE__*/_jsx(ListItemIcon, {
|
|
20
|
+
children: iconStart
|
|
21
|
+
}, "1"), /*#__PURE__*/_jsx(ListItemText, {
|
|
22
|
+
children: children
|
|
23
|
+
}, "2"), iconEnd && /*#__PURE__*/_jsx(ListItemIcon, {
|
|
24
|
+
children: iconEnd
|
|
25
|
+
}, "3")]
|
|
26
|
+
}));
|
|
27
|
+
}
|