/*
* 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"
>
}
href={convertToExtlinkIfNeeded("https://github.com/rhinstaller/anaconda", !isBootIso)}
target={isBootIso ? "_blank" : ""}
component="a">
{_("Anaconda project page")}
);
};
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 &&
}
>
);
};