UNPKG

victory-legend

Version:
101 lines (98 loc) 4.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VictoryLegend = void 0; var _react = _interopRequireDefault(require("react")); var _helperMethods = require("./helper-methods"); var _victoryCore = require("victory-core"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const fallbackProps = { orientation: "vertical", titleOrientation: "top", width: 450, height: 300, x: 0, y: 0 }; const defaultLegendData = [{ name: "Series 1" }, { name: "Series 2" }]; // eslint-disable-next-line @typescript-eslint/no-empty-object-type class VictoryLegendBase extends _react.default.Component { static displayName = "VictoryLegend"; static role = "legend"; static defaultProps = { borderComponent: /*#__PURE__*/_react.default.createElement(_victoryCore.Border, null), data: defaultLegendData, containerComponent: /*#__PURE__*/_react.default.createElement(_victoryCore.VictoryContainer, null), dataComponent: /*#__PURE__*/_react.default.createElement(_victoryCore.Point, null), groupComponent: /*#__PURE__*/_react.default.createElement("g", null), labelComponent: /*#__PURE__*/_react.default.createElement(_victoryCore.VictoryLabel, null), standalone: true, theme: _victoryCore.VictoryTheme.grayscale, titleComponent: /*#__PURE__*/_react.default.createElement(_victoryCore.VictoryLabel, null) }; static getBaseProps(props) { return (0, _helperMethods.getBaseProps)(props, fallbackProps); } static getDimensions(props) { return (0, _helperMethods.getDimensions)(props, fallbackProps); } static expectedComponents = ["borderComponent", "containerComponent", "dataComponent", "groupComponent", "labelComponent", "titleComponent"]; renderChildren(props) { const { dataComponent, labelComponent, title } = props; const children = []; if (props.borderComponent) { const borderProps = this.getComponentProps(props.borderComponent, "border", "all"); const borderComponent = /*#__PURE__*/_react.default.cloneElement(props.borderComponent, borderProps); children.push(borderComponent); } if (dataComponent) { const dataComponents = this.dataKeys.map((_dataKey, index) => { if (_dataKey === "all") { return undefined; } const dataProps = this.getComponentProps(dataComponent, "data", index); return /*#__PURE__*/_react.default.cloneElement(dataComponent, dataProps); }).filter(comp => comp !== undefined); children.push(...dataComponents); } if (title && props.titleComponent) { const titleProps = this.getComponentProps(title, "title", "all"); const titleComponent = /*#__PURE__*/_react.default.cloneElement(props.titleComponent, titleProps); children.push(titleComponent); } if (labelComponent) { const labelComponents = this.dataKeys.map((_dataKey, index) => { if (_dataKey === "all") { return undefined; } const labelProps = this.getComponentProps(labelComponent, "labels", index); if (labelProps.text !== undefined && labelProps.text !== null) { return /*#__PURE__*/_react.default.cloneElement(labelComponent, labelProps); } return undefined; }).filter(comp => comp !== undefined); children.push(...labelComponents); } return children; } render() { // @ts-expect-error Property 'role' does not exist on type 'Function'. // Ref: https://github.com/microsoft/TypeScript/issues/32452 const { role } = this.constructor; const props = _victoryCore.Helpers.modifyProps(this.props, fallbackProps, role); const children = this.renderChildren(props); return props.standalone ? this.renderContainer(props.containerComponent, children) : /*#__PURE__*/_react.default.cloneElement(props.groupComponent, {}, children); } } const VictoryLegend = exports.VictoryLegend = (0, _victoryCore.addEvents)(VictoryLegendBase);