/* * Copyright (C) 2023 Red Hat, Inc. * SPDX-License-Identifier: LGPL-2.1-or-later */ import cockpit from "cockpit"; import React, { useContext, useState } from "react"; import { AboutModal } from "@patternfly/react-core/dist/esm/components/AboutModal/index.js"; import { Button } from "@patternfly/react-core/dist/esm/components/Button/index.js"; import { DescriptionList, DescriptionListDescription, DescriptionListTerm } from "@patternfly/react-core/dist/esm/components/DescriptionList/index.js"; import { Dropdown, DropdownItem, DropdownList } from "@patternfly/react-core/dist/esm/components/Dropdown/index.js"; import { MenuToggle } from "@patternfly/react-core/dist/esm/components/MenuToggle/index.js"; import { Flex } from "@patternfly/react-core/dist/esm/layouts/Flex/index.js"; import { Stack, StackItem } from "@patternfly/react-core/dist/esm/layouts/Stack/index.js"; import { EllipsisVIcon } from "@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon"; import { ExternalLinkAltIcon } from "@patternfly/react-icons/dist/esm/icons/external-link-alt-icon"; import { convertToExtlinkIfNeeded } from "../helpers/extlink.js"; import { AppVersionContext, OsReleaseContext, SystemTypeContext } from "../contexts/Common.jsx"; import { UserIssue } from "./Error.jsx"; import { CockpitStorageIntegration } from "./storage/cockpit-storage-integration/CockpitStorageIntegration.jsx"; import "./HeaderKebab.scss"; const _ = cockpit.gettext; const AboutModalVersions = () => { const version = useContext(AppVersionContext); return ( Anaconda {version.backend} Anaconda WebUI {version.webui} ); }; const ProductName = () => { const osRelease = useContext(OsReleaseContext); return ( {cockpit.format(_("$0 installer"), osRelease.PRETTY_NAME)} {_("Powered by Anaconda")} ); }; const AnacondaAboutModal = ({ isModalOpen, setIsAboutModalOpen }) => { const isBootIso = useContext(SystemTypeContext).systemType === "BOOT_ISO"; const toggleModal = () => { setIsAboutModalOpen(!isModalOpen); }; return ( } variant="small" > ); }; export const HeaderKebab = ({ dispatch, isConnected, onCritFail, reportLinkURL, setShowStorage, showStorage }) => { const [isOpen, setIsOpen] = useState(false); const [isAboutModalOpen, setIsAboutModalOpen] = useState(false); const [isReportIssueOpen, setIsReportIssueOpen] = useState(false); const onToggle = () => { setIsOpen(!isOpen); }; const onSelect = () => { setIsOpen(false); }; const handleAboutModal = () => { setIsAboutModalOpen(true); }; const handleReportIssue = () => { setIsReportIssueOpen(true); }; const dropdownItems = [ {_("About")} , {_("Report Issue")} , ]; return ( <> } id="toggle-kebab" isExpanded={isOpen} onClick={onToggle} ref={toggleRef} variant="plain" />} shouldFocusToggleOnSelect> {dropdownItems} {isAboutModalOpen && } {isReportIssueOpen && } {showStorage && } ); };