mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Use <Dropdown/> in Download All Logs dropdown
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
c4c2eaf6d3
commit
13c2e015d8
@ -7,7 +7,8 @@ import styles from "./download-logs-dropdown.module.scss";
|
||||
|
||||
import React, { useState } from "react";
|
||||
import { Icon } from "../../icon";
|
||||
import { Menu, MenuItem } from "../../menu";
|
||||
import { MenuItem } from "../../menu";
|
||||
import { Dropdown } from "../../dropdown/dropdown";
|
||||
|
||||
interface DownloadLogsDropdownProps {
|
||||
downloadVisibleLogs: () => void;
|
||||
@ -16,53 +17,37 @@ interface DownloadLogsDropdownProps {
|
||||
|
||||
export function DownloadLogsDropdown({ downloadAllLogs, downloadVisibleLogs }: DownloadLogsDropdownProps) {
|
||||
const [waiting, setWaiting] = useState(false);
|
||||
const [opened, setOpened] = useState(false);
|
||||
|
||||
const toggle = () => {
|
||||
setOpened(!opened);
|
||||
};
|
||||
|
||||
const downloadLogs = async (download: () => Promise<void>) => {
|
||||
const downloadAll = async () => {
|
||||
setWaiting(true);
|
||||
|
||||
try {
|
||||
await download();
|
||||
await downloadAllLogs();
|
||||
} finally {
|
||||
setWaiting(false);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<button
|
||||
data-testid="download-logs-dropdown"
|
||||
id="download-logs-dropdown"
|
||||
className={styles.dropdown}
|
||||
disabled={waiting}
|
||||
>
|
||||
Download
|
||||
<Icon material="arrow_drop_down" smallest/>
|
||||
</button>
|
||||
<Menu
|
||||
usePortal
|
||||
htmlFor="download-logs-dropdown"
|
||||
isOpen={opened}
|
||||
close={toggle}
|
||||
open={toggle}
|
||||
>
|
||||
<MenuItem
|
||||
onClick={downloadVisibleLogs}
|
||||
data-testid="download-visible-logs"
|
||||
<Dropdown
|
||||
id="download-logs-dropdown"
|
||||
contentForToggle={(
|
||||
<button
|
||||
data-testid="download-logs-dropdown"
|
||||
className={styles.dropdown}
|
||||
disabled={waiting}
|
||||
>
|
||||
Visible logs
|
||||
</MenuItem>
|
||||
<MenuItem
|
||||
onClick={() => downloadLogs(downloadAllLogs)}
|
||||
data-testid="download-all-logs"
|
||||
>
|
||||
All logs
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
</>
|
||||
Download
|
||||
<Icon material="arrow_drop_down" smallest/>
|
||||
</button>
|
||||
)}
|
||||
>
|
||||
<MenuItem onClick={downloadVisibleLogs} data-testid="download-visible-logs">
|
||||
Visible logs
|
||||
</MenuItem>
|
||||
<MenuItem onClick={downloadAll} data-testid="download-all-logs">
|
||||
All logs
|
||||
</MenuItem>
|
||||
</Dropdown>
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user