@talend/react-components
Version:
Set of react components.
118 lines (116 loc) • 3.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactBootstrap = require("@talend/react-bootstrap");
var _classnames = _interopRequireDefault(require("classnames"));
var _Action = _interopRequireDefault(require("./Action"));
var _OverlayTrigger = _interopRequireDefault(require("../OverlayTrigger"));
var _Inject = _interopRequireDefault(require("../Inject"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function getButtonGroupProps(props) {
const buttonGroupProps = {};
Object.keys(_reactBootstrap.ButtonGroup.propTypes).forEach(id => {
if (props[id] !== undefined) {
buttonGroupProps[id] = props[id];
}
});
return buttonGroupProps;
}
/**
* @param {object} props react props
* @example
const actions: [
{
label: 'edit',
icon: 'fa fa-edit',
onClick: action('onEdit'),
},
{
label: 'delete',
icon: 'fa fa-trash-o',
onClick: action('onDelete'),
},
{
displayMode: 'dropdown',
label: 'related items',
icon: 'fa fa-file-excel-o',
items: [
{
label: 'document 1',
onClick: action('document 1 click'),
},
{
label: 'document 2',
onClick: action('document 2 click'),
},
],
},
{
id: 'split-dropdown-id',
displayMode: 'splitDropdown',
label: 'add file',
onClick: action('onClick'),
items: [
{
label: 'file 1',
onClick: action('file 1 click'),
},
{
label: 'file 2',
onClick: action('file 2 click'),
},
],
},
];
<Actions actions={actions} tooltipPlacement="right" hideLabel link />
*/
function Actions({
getComponent,
hideLabel,
link,
tooltipPlacement,
...props
}) {
const buttonGroupProps = getButtonGroupProps(props);
const Renderers = _Inject.default.getAll(getComponent, {
Action: _Action.default
});
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ButtonGroup, {
className: (0, _classnames.default)('tc-actions', props.className),
...buttonGroupProps,
children: props.actions.map((action, index) => {
const extraParams = {};
if (hideLabel) {
extraParams.hideLabel = hideLabel;
}
if (link) {
extraParams.link = link;
}
if (tooltipPlacement) {
extraParams.tooltipPlacement = tooltipPlacement;
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Renderers.Action, {
...action,
...extraParams
}, index);
})
});
}
Actions.displayName = 'Actions';
Actions.propTypes = {
actions: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.shape(_Action.default.propTypes)])),
className: _propTypes.default.string,
hideLabel: _propTypes.default.bool,
tooltipPlacement: _OverlayTrigger.default.propTypes.placement,
link: _propTypes.default.bool,
..._reactBootstrap.ButtonGroup.propTypes
};
Actions.defaultProps = {
actions: []
};
var _default = exports.default = Actions;
//# sourceMappingURL=Actions.component.js.map