@boomerang-io/carbon-addons-boomerang-react
Version:
Carbon Addons for Boomerang apps
64 lines (61 loc) • 4.99 kB
JavaScript
import React from 'react';
import { useQuery } from 'react-query';
import { ComposedModal, ModalHeader, ModalBody, Loading } from '@carbon/react';
import { Information } from '@carbon/react/icons';
import HeaderMenuItem from '../Header/HeaderMenuItem.js';
import Error from '../ErrorMessage/ErrorMessage.js';
import TooltipHover from '../TooltipHover/TooltipHover.js';
import { resolver, serviceUrl } from '../../config/servicesConfig.js';
import { prefix } from '../../internal/settings.js';
/*
IBM Confidential
694970X, 69497O0
© Copyright IBM Corp. 2022, 2025
*/
function AboutPlatform({ baseServicesUrl, closeModal, isOpen = false, name }) {
const platformVersioUrl = serviceUrl.getPlatformVersion({ baseServicesUrl });
const { data: platformVersionData, isLoading: isPlatformVersionLoading, isError: isPlatformVersionError, } = useQuery({
queryKey: platformVersioUrl,
queryFn: resolver.query(platformVersioUrl, null),
enabled: isOpen,
});
return (React.createElement(ComposedModal, { open: isOpen, className: `${prefix}--bmrg-aboutPlatform-container ${prefix}--bmrg-header-modal ${prefix}--bmrg-aboutPlatform-modalheader`, onClose: closeModal },
React.createElement(ModalHeader, { className: `${prefix}--bmrg-aboutPlatform-modaltitle`, title: `About ${name}`, closeModal: closeModal }),
isPlatformVersionLoading ? (React.createElement(ModalBody, { style: { display: "flex", alignItems: "center", justifyContent: "center" } },
React.createElement(Loading, { withOverlay: false }))) : isPlatformVersionError ? (React.createElement(ModalBody, { style: { display: "flex", alignItems: "center", justifyContent: "center" } },
React.createElement(Error, null))) : platformVersionData ? (React.createElement(ModalBody, null,
React.createElement("div", null,
React.createElement("div", { className: `${prefix}--bmrg-aboutPlatform-platform-version` },
React.createElement("p", { className: `${prefix}--bmrg-aboutPlatform-platform-version-text` }, `Version ${platformVersionData.platformVersion}`),
platformVersionData.platformVersionError ? (React.createElement(TooltipHover, { direction: "right", tooltipText: `Failed to retrieve the versioning of one or more components. Displaying only the ${name} platform version.` },
React.createElement(Information, { size: 16, fill: "currentColor" }))) : null),
React.createElement("h5", { className: `${prefix}--bmrg-aboutPlatform-component-header` }, "Components"),
React.createElement("ul", null,
React.createElement("li", { className: `${prefix}--bmrg-aboutPlatform-li-between` },
React.createElement("span", { className: `${prefix}--bmrg-aboutPlatform-li` }, "Advantage Core"),
React.createElement("span", { className: `${prefix}--bmrg-aboutPlatform-li-version` }, platformVersionData.version)),
React.createElement("li", { className: `${prefix}--bmrg-aboutPlatform-li-between` },
React.createElement("span", { className: `${prefix}--bmrg-aboutPlatform-li` }, "Assistants "),
React.createElement("span", { className: `${prefix}--bmrg-aboutPlatform-li-version` }, platformVersionData.assistantVersion)),
React.createElement("li", { className: `${prefix}--bmrg-aboutPlatform-li-between` },
React.createElement("span", { className: `${prefix}--bmrg-aboutPlatform-li` }, "Agents"),
React.createElement("span", { className: `${prefix}--bmrg-aboutPlatform-li-version` }, platformVersionData.agentsVersion)),
React.createElement("li", { className: `${prefix}--bmrg-aboutPlatform-li-between-last` },
React.createElement("span", { className: `${prefix}--bmrg-aboutPlatform-li` }, "Scribeflow"),
React.createElement("span", { className: `${prefix}--bmrg-aboutPlatform-li-version` }, platformVersionData.scribeFlowVersion))),
React.createElement("h1", { className: `${prefix}--bmrg-aboutPlatform-footer__header` }, "Copyright IBM Corp. 2022, 2025")))) : null));
}
function AboutPlatformMenuItem(props) {
const menuItemRef = React.useRef(null);
const [isOpen, setIsOpen] = React.useState(false);
const handleClose = () => {
setIsOpen(false);
setTimeout(() => {
menuItemRef.current?.focus();
}, 0);
};
return (React.createElement(React.Fragment, null,
React.createElement(HeaderMenuItem, { icon: React.createElement(Information, null), onClick: () => setIsOpen(!isOpen), ref: menuItemRef, text: `About ${props.name}`, type: "button" }),
React.createElement(AboutPlatform, { isOpen: isOpen, closeModal: handleClose, ...props })));
}
export { AboutPlatformMenuItem, AboutPlatform as default };