@talend/react-components
Version:
Set of react components.
129 lines (127 loc) • 3.9 kB
JavaScript
;
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