@boomerang-io/carbon-addons-boomerang-react
Version:
Carbon Addons for Boomerang apps
62 lines (55 loc) • 3.3 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var react = require('@carbon/react');
var cx = require('classnames');
var Modal = require('../Modal/Modal.js');
var settings = require('../../internal/settings.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
var cx__default = /*#__PURE__*/_interopDefault(cx);
/*
IBM Confidential
694970X, 69497O0
© Copyright IBM Corp. 2022, 2024
*/
function ConfirmModal(props) {
const { affirmativeAction, affirmativeButtonProps, affirmativeText = "Yes", appElement, children, containerClassName, isExternallyControlled, label, modalHeaderProps = {}, modalProps, modalTrigger = () => void 0, negativeAction, negativeButtonProps, negativeText = "No", onCloseModal, selectorPrimaryFocus = `button[id="${settings.prefix}--bmrg-confirm-modal-primary-button"]`, title = "Are you sure?", } = props;
const [isOpen, setIsOpen] = React.useState(props.isOpen);
React.useEffect(() => {
setIsOpen(props.isOpen);
}, [props.isOpen]);
function closeModal() {
if (typeof onCloseModal === "function") {
onCloseModal();
}
setIsOpen(false);
}
function handleAffirmativeAction() {
if (typeof affirmativeAction === "function") {
affirmativeAction();
}
if (!isExternallyControlled)
closeModal();
}
function handleNegativeAction() {
if (typeof negativeAction === "function") {
negativeAction();
}
if (!isExternallyControlled)
closeModal();
}
return (React__default.default.createElement(React__default.default.Fragment, null,
modalTrigger({ openModal: () => setIsOpen(true) }),
React__default.default.createElement(Modal.Modal, { appElement: appElement, containerClassName: cx__default.default(`${settings.prefix}--bmrg-confirm-modal-container`, containerClassName), closeTimeoutMS: 240,
//@ts-ignore
isOpen: isOpen, onRequestClose: closeModal, shouldCloseOnOverlayClick: true, selectorPrimaryFocus: selectorPrimaryFocus, ...modalProps },
React__default.default.createElement(react.ModalHeader, { closeModal: closeModal, iconDescription: "Close", label: label, title: title, ...modalHeaderProps }),
React__default.default.createElement("div", { id: "confirm-modal-container" },
React__default.default.createElement(react.ModalBody, null,
React__default.default.createElement("div", { className: `${settings.prefix}--modal-content__text` }, children))),
React__default.default.createElement(react.ModalFooter, null,
React__default.default.createElement(react.Button, { id: `${settings.prefix}--bmrg-confirm-modal-secondary-button`, kind: "secondary", onClick: handleNegativeAction, ...negativeButtonProps }, negativeText),
React__default.default.createElement(react.Button, { id: `${settings.prefix}--bmrg-confirm-modal-primary-button`, onClick: handleAffirmativeAction, ...affirmativeButtonProps }, affirmativeText)))));
}
exports.default = ConfirmModal;