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