UNPKG

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

Version:
77 lines (74 loc) 4.52 kB
import React from 'react'; import { ComposedModal, ModalHeader, ModalBody, Checkbox, ModalFooter, Button } from '@carbon/react'; import { HelpDesk } from '@carbon/react/icons'; import HeaderMenuItem from '../Header/HeaderMenuItem.js'; import { useQueryClient, useMutation } from 'react-query'; import { resolver, serviceUrl } from '../../config/servicesConfig.js'; import { prefix } from '../../internal/settings.js'; /* IBM Confidential 694970X, 69497O0 © Copyright IBM Corp. 2022, 2024 */ function SupportCenter({ closeModal, isOpen, supportRedirect, baseServicesUrl, enablePartner, partnerEmailId }) { const [doNotAskAgain, setDoNotAskAgain] = React.useState(false); const queryClient = useQueryClient(); const profileUrl = serviceUrl.resourceUserProfile({ baseServicesUrl }); const handleCheckboxChange = (event) => { const shouldNotAskAgain = event.target.checked; setDoNotAskAgain(shouldNotAskAgain); handleSubmit(!shouldNotAskAgain); }; const { mutateAsync: mutateUserProfile, } = useMutation(resolver.patchUserProfile, { onSuccess: () => { queryClient.invalidateQueries(profileUrl); }, }); async function handleSubmit(showSupport) { const body = { showSupport }; try { await mutateUserProfile({ baseServicesUrl, body }); } catch (e) { // noop } } return (React.createElement(ComposedModal, { "aria-label": "SupportCenter", open: isOpen, className: `${prefix}--support-description-modal`, onClose: closeModal, onKeyDown: (e) => e.stopPropagation(), "data-testid": "composed-modal-supportcenter" }, React.createElement(ModalHeader, { "data-testid": "supportcenter-modal-header", title: "Having an issue?", closeModal: closeModal }), React.createElement(ModalBody, null, enablePartner ? React.createElement("div", { className: `${prefix}--bmrg-feedback` }, React.createElement("p", null, "Please email any issues with a description and images to", " " /* We need to force a space before the link tag */, React.createElement("a", { href: "mailto:ica-support@ibm.com" }, partnerEmailId), ".")) : React.createElement("div", { className: `${prefix}--bmrg-feedback` }, React.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.createElement(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.createElement(ModalFooter, null, enablePartner ? "" : React.createElement(Button, { kind: "secondary", "data-testid": "supportcenter-modal-cancel-button", onClick: closeModal }, "Cancel"), enablePartner ? React.createElement(Button, { "data-modal-primary-focus": true, kind: "primary", "data-testid": "supportcenter-modal-close-button", onClick: closeModal }, "Close") : React.createElement(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.useRef(null); const [isOpen, setIsOpen] = React.useState(false); const handleClose = () => { setIsOpen(false); setTimeout(() => { menuItemRef.current?.focus(); }, 0); }; const supportHandle = () => { window.open(props?.supportLink, '_blank', 'noopener,noreferrer'); handleClose(); }; return (React.createElement(React.Fragment, null, React.createElement(HeaderMenuItem, { icon: React.createElement(HelpDesk, null), onClick: () => setIsOpen(!isOpen), ref: menuItemRef, text: "Support Center", "data-testid": "supportcenter-modal-headermenuitem", type: "button" }), React.createElement(SupportCenter, { isOpen: isOpen, closeModal: handleClose, supportRedirect: supportHandle, ...props }))); } export { SupportCenterMenuItem, SupportCenter as default };