UNPKG

@talend/react-components

Version:
91 lines (86 loc) 3.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _propTypes = _interopRequireDefault(require("prop-types")); var _ActionButton = _interopRequireDefault(require("../ActionButton")); var _ActionFile = _interopRequireDefault(require("../ActionFile")); var _ActionSplitDropdown = _interopRequireDefault(require("../ActionSplitDropdown")); var _ActionDropdown = _interopRequireDefault(require("../ActionDropdown")); var _ActionIconToggle = _interopRequireDefault(require("../ActionIconToggle")); var _Inject = _interopRequireDefault(require("../../Inject")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const DISPLAY_MODE_FILE = 'file'; const DISPLAY_MODE_DROPDOWN = 'dropdown'; const DISPLAY_MODE_SPLIT_DROPDOWN = 'splitDropdown'; const DISPLAY_MODE_ICON_TOGGLE = 'iconToggle'; /** * @typedef {(Object|Function)} Component */ /** * Internal: should not be used outside * This function decide which component should be used to display the action * based on a displayMode. * Component can be override by the renderers * @param {ActionProps} - props should contains displayMode and renderers * @return {Component} the component to be used */ function getActionComponent({ displayMode, getComponent }) { const Renderers = _Inject.default.getAll(getComponent, { ActionFile: _ActionFile.default, ActionDropdown: _ActionDropdown.default, ActionSplitDropdown: _ActionSplitDropdown.default, ActionIconToggle: _ActionIconToggle.default, ActionButton: _ActionButton.default }); /* eslint-disable no-use-before-define */ switch (displayMode) { case DISPLAY_MODE_FILE: return Renderers.ActionFile; case DISPLAY_MODE_DROPDOWN: return Renderers.ActionDropdown; case DISPLAY_MODE_SPLIT_DROPDOWN: return Renderers.ActionSplitDropdown; case DISPLAY_MODE_ICON_TOGGLE: return Renderers.ActionIconToggle; default: return _Inject.default.get(getComponent, displayMode, Renderers.ActionButton); } /* eslint-enable no-use-before-define */ } /** * This component is a component selector which to discover which kind of * action you want to display to the user. * The choice is fully based on the props displayMode * You can override the component using props renderer * @param {ActionProps} */ function Action({ displayMode, getComponent, ...props }) { const ActionComponent = getActionComponent({ displayMode, getComponent }); return /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionComponent, { ...props }); } Action.DISPLAY_MODE_FILE = DISPLAY_MODE_FILE; Action.DISPLAY_MODE_DROPDOWN = DISPLAY_MODE_DROPDOWN; Action.DISPLAY_MODE_SPLIT_DROPDOWN = DISPLAY_MODE_SPLIT_DROPDOWN; Action.DISPLAY_MODE_ICON_TOGGLE = DISPLAY_MODE_ICON_TOGGLE; Action.displayName = 'Action'; Action.propTypes = { displayMode: _propTypes.default.string, getComponent: _propTypes.default.func }; var _default = exports.default = Action; //# sourceMappingURL=Action.component.js.map