UNPKG

@talend/react-components

Version:
118 lines (116 loc) 3.12 kB
"use strict"; 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