UNPKG

@talend/react-components

Version:
140 lines (139 loc) 4.75 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")); require("./Dialog.scss"); var _Action = _interopRequireDefault(require("../Actions/Action")); var _ActionBar = _interopRequireDefault(require("../ActionBar")); var _Inject = _interopRequireDefault(require("../Inject")); var _Progress = _interopRequireDefault(require("../Progress")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** * @param {object} props react props * @example <Dialog header="Hello world">content</Dialog> */function Dialog({ action, actionbar, backdrop, keyboard, autoFocus, enforceFocus, restoreFocus, children, className, closeButton, components, flex, footer, getComponent, header, subtitle, error, progress, size, type, ...props }) { const Renderers = _Inject.default.getAll(getComponent, { ActionBar: _ActionBar.default, Action: _Action.default }); const injected = _Inject.default.all(getComponent, components); const headerId = 'tc-dialog-header'; const subtext = error || subtitle; return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Modal, { backdrop: backdrop, keyboard: keyboard, autoFocus: autoFocus, enforceFocus: enforceFocus, restoreFocus: restoreFocus, bsSize: size, className: (0, _classnames.default)({ 'modal-flex': flex }, className), role: "dialog" // we disable jsx-a11y/aria-props because the version we use does not consider it valid (bug) // eslint-disable-next-line jsx-a11y/aria-props , "aria-modal": "true", "aria-labelledby": header ? headerId : null, ...props, children: [injected('before-modal-header'), header && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Modal.Header, { className: (0, _classnames.default)({ informative: type === Dialog.TYPES.INFORMATIVE }), closeButton: closeButton, children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Modal.Title, { id: headerId, componentClass: "h1", children: header }), subtext && subtext.length && /*#__PURE__*/(0, _jsxRuntime.jsx)("h3", { className: (0, _classnames.default)({ error: error && error.length }, 'modal-subtitle'), children: subtext })] }), injected('after-modal-header'), progress && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Progress.default, { contained: true, ...progress }), injected('before-modal-body'), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Modal.Body, { children: [injected('before-children'), children, injected('after-children')] }), injected('before-modal-body'), action && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Modal.Footer, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Renderers.Action, { ...action }) }), actionbar && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Modal.Footer, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Renderers.ActionBar, { ...actionbar }) }), footer && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Modal.Footer, { ...footer, children: injected('footer') })] }); } Dialog.TYPES = { DEFAULT: 'default', INFORMATIVE: 'informative' }; Dialog.displayName = 'Dialog'; Dialog.defaultProps = { autoFocus: true, backdrop: true, closeButton: true, enforceFocus: true, keyboard: true, restoreFocus: true, type: Dialog.TYPES.DEFAULT }; Dialog.propTypes = { header: _propTypes.default.string, backdrop: _propTypes.default.bool, subtitle: _propTypes.default.string, error: _propTypes.default.string, size: _propTypes.default.oneOf(['sm', 'small', 'lg', 'large']), children: _propTypes.default.element, show: _propTypes.default.bool, action: _propTypes.default.shape(_Action.default.propTypes), footer: _propTypes.default.object, actionbar: _propTypes.default.object, closeButton: _propTypes.default.bool, keyboard: _propTypes.default.bool, autoFocus: _propTypes.default.bool, enforceFocus: _propTypes.default.bool, restoreFocus: _propTypes.default.bool, getComponent: _propTypes.default.func, components: _propTypes.default.object, progress: _propTypes.default.object, flex: _propTypes.default.bool, className: _propTypes.default.string, type: _propTypes.default.oneOf(Object.values(Dialog.TYPES)) }; var _default = exports.default = Dialog; //# sourceMappingURL=Dialog.component.js.map