@talend/react-components
Version:
Set of react components.
91 lines (86 loc) • 3.1 kB
JavaScript
"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