import type { IInvoiceItem } from 'src/types/invoice'; import { useBoolean } from 'minimal-shared/hooks'; import Box from '@mui/material/Box'; import Button from '@mui/material/Button'; import Dialog from '@mui/material/Dialog'; import Tooltip from '@mui/material/Tooltip'; import MenuItem from '@mui/material/MenuItem'; import TextField from '@mui/material/TextField'; import IconButton from '@mui/material/IconButton'; import DialogActions from '@mui/material/DialogActions'; import { paths } from 'src/routes/paths'; import { RouterLink } from 'src/routes/components'; import { Iconify } from 'src/components/iconify'; import { InvoicePDFViewer, InvoicePDFDownload } from './invoice-pdf'; import { useTranslation } from 'react-i18next'; import { useState } from 'react'; import { set } from 'nprogress'; // ---------------------------------------------------------------------- type Props = { invoice?: IInvoiceItem; currentStatus: string; statusOptions: { value: string; label: string }[]; onChangeStatus: (event: React.ChangeEvent) => void; }; export function InvoiceToolbar({ invoice, currentStatus, statusOptions, onChangeStatus }: Props) { const { t } = useTranslation(); const { value: open, onFalse: onClose, onTrue: onOpen } = useBoolean(); const [disable, setDisable] = useState(false); const renderDownloadButton = () => invoice ? : null; const renderDetailsDialog = () => ( {invoice && } ); return ( <> {renderDownloadButton()} { setDisable(true); onChangeStatus(e); setDisable(false); }} sx={{ maxWidth: 160 }} slotProps={{ htmlInput: { id: 'status-select' }, inputLabel: { htmlFor: 'status-select' }, }} > {statusOptions.map((option) => ( {t(option.label)} ))} {renderDetailsDialog()} ); }