UNPKG

@boomerang-io/carbon-addons-boomerang-react

Version:
62 lines (55 loc) 3.3 kB
'use strict'; 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;