@mui/x-charts
Version:
The community edition of MUI X Charts components.
120 lines (119 loc) • 5.22 kB
JavaScript
;
'use client';
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ChartsAxisTooltipContent = ChartsAxisTooltipContent;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
var _clsx = _interopRequireDefault(require("clsx"));
var _chartsTooltipClasses = require("./chartsTooltipClasses");
var _ChartsTooltipTable = require("./ChartsTooltipTable");
var _useAxesTooltip = require("./useAxesTooltip");
var _ChartsLabelMark = require("../ChartsLabel/ChartsLabelMark");
var _useStore = require("../internals/store/useStore");
var _useChartSeries = require("../internals/plugins/corePlugins/useChartSeries");
var _jsxRuntime = require("react/jsx-runtime");
function ChartsAxisTooltipContent(props) {
const {
sort
} = props;
const classes = (0, _chartsTooltipClasses.useUtilityClasses)(props.classes);
const store = (0, _useStore.useStore)();
const getSeriesConfig = store.use(_useChartSeries.selectorChartSeriesConfigGetter);
const tooltipData = (0, _useAxesTooltip.useAxesTooltip)();
if (tooltipData === null) {
return null;
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipTable.ChartsTooltipPaper, {
sx: props.sx,
className: classes.paper,
children: tooltipData.map(({
axisId,
mainAxis,
axisValue,
axisFormattedValue,
seriesItems
}) => {
const sortedItems = sort && sort !== 'none' ? [...seriesItems].sort((a, b) => {
const aValue = a.value?.valueOf();
const bValue = b.value?.valueOf();
if (typeof aValue !== 'number') {
return 1;
}
if (typeof bValue !== 'number') {
return -1;
}
return sort === 'asc' ? aValue - bValue : bValue - aValue;
}) : seriesItems;
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ChartsTooltipTable.ChartsTooltipTable, {
className: classes.table,
children: [axisValue != null && !mainAxis.hideTooltip && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
component: "caption",
children: axisFormattedValue
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("tbody", {
children: sortedItems.map(item => {
const seriesConfig = getSeriesConfig(item.seriesId);
const Content = seriesConfig && 'AxisTooltipContent' in seriesConfig ? seriesConfig.AxisTooltipContent ?? DefaultContent : DefaultContent;
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Content, {
classes: props.classes,
item:
/* TypeScript can't guarantee that the item's series type is the same as the Content's series type,
* so we need to cast */
item
}, item.seriesId);
})
})]
}, axisId);
})
});
}
function DefaultContent(props) {
const classes = (0, _chartsTooltipClasses.useUtilityClasses)(props.classes);
const {
item
} = props;
if (item.formattedValue == null || typeof item.formattedValue !== 'string') {
return null;
}
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ChartsTooltipTable.ChartsTooltipRow, {
className: classes.row,
"data-series": item.seriesId,
"data-index": 'dataIndex' in item ? item.dataIndex : undefined,
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_ChartsTooltipTable.ChartsTooltipCell, {
className: (0, _clsx.default)(classes.labelCell, classes.cell),
component: "th",
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: classes.markContainer,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsLabelMark.ChartsLabelMark, {
type: item.markType,
markShape: item.markShape,
color: item.color,
className: classes.mark
})
}), item.formattedLabel || null]
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipTable.ChartsTooltipCell, {
className: (0, _clsx.default)(classes.valueCell, classes.cell),
component: "td",
children: item.formattedValue
})]
});
}
process.env.NODE_ENV !== "production" ? ChartsAxisTooltipContent.propTypes = {
// ----------------------------- Warning --------------------------------
// | These PropTypes are generated from the TypeScript type definitions |
// | To update them edit the TypeScript types and run "pnpm proptypes" |
// ----------------------------------------------------------------------
/**
* Override or extend the styles applied to the component.
*/
classes: _propTypes.default.object,
sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
/**
* The sort in which series items are displayed in the tooltip.
* When set to `none`, series are sorted as they are provided in the series property. Otherwise they are sorted by their value.
* @default 'none'
*/
sort: _propTypes.default.oneOf(['none', 'asc', 'desc'])
} : void 0;