UNPKG

@talend/react-components

Version:
129 lines (127 loc) 3.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _propTypes = _interopRequireDefault(require("prop-types")); var _react = require("react"); var _Icon = _interopRequireDefault(require("../../Icon")); var _theme = require("../../theme"); var _TooltipTrigger = _interopRequireDefault(require("../../TooltipTrigger")); var _CellIconTextModule = _interopRequireDefault(require("./CellIconText.module.scss")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const css = (0, _theme.getTheme)(_CellIconTextModule.default); const DEFAULT_TOOLTIP_PLACEMENT = 'top'; function getCellIcon({ cellData, rowData, columnData = {} }) { const { getIcon } = columnData; if (getIcon && typeof getIcon === 'function') { return getIcon(rowData); } return cellData.icon; } function getCellLabel({ cellData }) { if (typeof cellData === 'object') { return cellData.label; } return cellData; } function getCellLabelTooltip({ cellData, rowData, columnData = {} }) { const { getLabelTooltip } = columnData; let tooltip = ''; if (typeof getLabelTooltip === 'function') { tooltip = getLabelTooltip(rowData); } else if (typeof cellData === 'object') { tooltip = cellData.labelTooltip; } return tooltip; } function getCellIconTooltip({ cellData, rowData, columnData = {} }) { const { getIconTooltip } = columnData; let tooltip = ''; if (typeof getIconTooltip === 'function') { tooltip = getIconTooltip(rowData); } else if (typeof cellData === 'object') { tooltip = cellData.iconTooltip; } return tooltip; } /** * Cell renderer that displays a boolean */ class CellIconText extends _react.Component { shouldComponentUpdate(nextProps) { return this.props.cellData !== nextProps.cellData; } render() { const { columnData = {} } = this.props; const icon = getCellIcon(this.props); const label = getCellLabel(this.props); const labelTooltip = getCellLabelTooltip(this.props); const iconTooltip = getCellIconTooltip(this.props); return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: css('tc-icon-text'), children: [icon && (iconTooltip ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_TooltipTrigger.default, { label: iconTooltip, tooltipPlacement: columnData.tooltipPlacement || DEFAULT_TOOLTIP_PLACEMENT, children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, { name: icon }) }) }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, { name: icon })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TooltipTrigger.default, { label: labelTooltip || label, tooltipPlacement: columnData.tooltipPlacement || DEFAULT_TOOLTIP_PLACEMENT, children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", { className: _CellIconTextModule.default.label, children: label }) })] }); } } CellIconText.displayName = 'VirtualizedList(CellIconText)'; CellIconText.propTypes = { // The cell value : props.rowData[props.dataKey] cellData: _propTypes.default.oneOf([_propTypes.default.shape({ label: _propTypes.default.string, icon: _propTypes.default.string, iconTooltip: _propTypes.default.string, labelTooltip: _propTypes.default.string }), _propTypes.default.string]), columnData: _propTypes.default.shape({ getIcon: _propTypes.default.func, getLabelTooltip: _propTypes.default.func, getIconTooltip: _propTypes.default.func, tooltipPlacement: _propTypes.default.string }).isRequired }; CellIconText.defaultProps = { cellData: {} }; var _default = exports.default = CellIconText; //# sourceMappingURL=CellIconText.component.js.map