@boomerang-io/carbon-addons-boomerang-react
Version:
Carbon Addons for Boomerang apps
86 lines (79 loc) • 5.24 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var react = require('@carbon/react');
var icons = require('@carbon/react/icons');
var HeaderMenuItem = require('../Header/HeaderMenuItem.js');
var reactQuery = require('react-query');
var servicesConfig = require('../../config/servicesConfig.js');
var settings = require('../../internal/settings.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
/*
IBM Confidential
694970X, 69497O0
© Copyright IBM Corp. 2022, 2024
*/
function SupportCenter({ closeModal, isOpen, supportRedirect, baseServicesUrl, enablePartner, partnerEmailId }) {
const [doNotAskAgain, setDoNotAskAgain] = React__default.default.useState(false);
const queryClient = reactQuery.useQueryClient();
const profileUrl = servicesConfig.serviceUrl.resourceUserProfile({ baseServicesUrl });
const handleCheckboxChange = (event) => {
const shouldNotAskAgain = event.target.checked;
setDoNotAskAgain(shouldNotAskAgain);
handleSubmit(!shouldNotAskAgain);
};
const { mutateAsync: mutateUserProfile, } = reactQuery.useMutation(servicesConfig.resolver.patchUserProfile, {
onSuccess: () => {
queryClient.invalidateQueries(profileUrl);
},
});
async function handleSubmit(showSupport) {
const body = {
showSupport
};
try {
await mutateUserProfile({ baseServicesUrl, body });
}
catch (e) {
// noop
}
}
return (React__default.default.createElement(react.ComposedModal, { "aria-label": "SupportCenter", open: isOpen, className: `${settings.prefix}--support-description-modal`, onClose: closeModal, onKeyDown: (e) => e.stopPropagation(), "data-testid": "composed-modal-supportcenter" },
React__default.default.createElement(react.ModalHeader, { "data-testid": "supportcenter-modal-header", title: "Having an issue?", closeModal: closeModal }),
React__default.default.createElement(react.ModalBody, null, enablePartner ?
React__default.default.createElement("div", { className: `${settings.prefix}--bmrg-feedback` },
React__default.default.createElement("p", null,
"Please email any issues with a description and images to",
" " /* We need to force a space before the link tag */,
React__default.default.createElement("a", { href: "mailto:ica-support@ibm.com" }, partnerEmailId),
"."))
:
React__default.default.createElement("div", { className: `${settings.prefix}--bmrg-feedback` },
React__default.default.createElement("p", null, "Review your open cases or open a new case at IBM Support Center. For support tickets related to IBM Consulting Advantage, use Product \"Consulting Advantage\"."),
"\u00A0",
React__default.default.createElement(react.Checkbox, { id: "supportCheckboxId", "data-testid": "supportcenter-modal-checkbox", labelText: "Don't show again. Always proceed to IBM Support Center.", invalidText: "Error message goes here", onChange: handleCheckboxChange, checked: doNotAskAgain, warnText: "Warning message goes here" }))),
React__default.default.createElement(react.ModalFooter, null,
enablePartner ? "" : React__default.default.createElement(react.Button, { kind: "secondary", "data-testid": "supportcenter-modal-cancel-button", onClick: closeModal }, "Cancel"),
enablePartner ? React__default.default.createElement(react.Button, { "data-modal-primary-focus": true, kind: "primary", "data-testid": "supportcenter-modal-close-button", onClick: closeModal }, "Close") :
React__default.default.createElement(react.Button, { "data-modal-primary-focus": true, kind: "primary", "data-testid": "supportcenter-modal-continue-button", onClick: supportRedirect }, "Continue to IBM Support Center"))));
}
function SupportCenterMenuItem(props) {
const menuItemRef = React__default.default.useRef(null);
const [isOpen, setIsOpen] = React__default.default.useState(false);
const handleClose = () => {
setIsOpen(false);
setTimeout(() => {
menuItemRef.current?.focus();
}, 0);
};
const supportHandle = () => {
window.open(props?.supportLink, '_blank', 'noopener,noreferrer');
handleClose();
};
return (React__default.default.createElement(React__default.default.Fragment, null,
React__default.default.createElement(HeaderMenuItem.default, { icon: React__default.default.createElement(icons.HelpDesk, null), onClick: () => setIsOpen(!isOpen), ref: menuItemRef, text: "Support Center", "data-testid": "supportcenter-modal-headermenuitem", type: "button" }),
React__default.default.createElement(SupportCenter, { isOpen: isOpen, closeModal: handleClose, supportRedirect: supportHandle, ...props })));
}
exports.SupportCenterMenuItem = SupportCenterMenuItem;
exports.default = SupportCenter;