UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

144 lines (140 loc) 4.95 kB
import { Skeleton } from "./chunk-NKVUUWCA.mjs"; import { Modal_default } from "./chunk-TNLGS7SB.mjs"; import { Button_default } from "./chunk-LAYB7IKW.mjs"; import { Text_default } from "./chunk-IMCIR6TJ.mjs"; // src/components/DownloadModal/DownloadModal.tsx import { useState, useCallback, useEffect, useRef } from "react"; import { FilePdfIcon, FileXlsIcon, DownloadSimpleIcon } from "@phosphor-icons/react"; // src/enums/DownloadFormat.ts var DOWNLOAD_FORMAT = /* @__PURE__ */ ((DOWNLOAD_FORMAT2) => { DOWNLOAD_FORMAT2["PDF"] = "pdf"; DOWNLOAD_FORMAT2["EXCEL"] = "excel"; return DOWNLOAD_FORMAT2; })(DOWNLOAD_FORMAT || {}); // src/components/DownloadModal/DownloadModal.tsx import { jsx, jsxs } from "react/jsx-runtime"; var DownloadModal = ({ isOpen, onClose, isDownloading, error, onDownloadPdf, onDownloadExcel }) => { const [selectedFormat, setSelectedFormat] = useState( null ); const handleClose = useCallback(() => { setSelectedFormat(null); onClose(); }, [onClose]); const wasDownloadingRef = useRef(false); useEffect(() => { if (!isOpen) { wasDownloadingRef.current = isDownloading; return; } if (wasDownloadingRef.current && !isDownloading && !error) { handleClose(); } wasDownloadingRef.current = isDownloading; }, [isOpen, isDownloading, error, handleClose]); const handleDownload = useCallback(() => { if (selectedFormat === "pdf" /* PDF */) { onDownloadPdf(); handleClose(); } else if (selectedFormat === "excel" /* EXCEL */) { onDownloadExcel(); } }, [selectedFormat, onDownloadPdf, onDownloadExcel, handleClose]); const cardBase = "flex flex-1 items-center justify-center h-20 rounded-xl border bg-background shadow-soft-shadow-1 cursor-pointer transition-colors"; const cardDefault = "border-border-100 hover:border-primary-300"; const cardSelected = "border-primary-300 bg-primary-50"; return /* @__PURE__ */ jsx( Modal_default, { isOpen, onClose: handleClose, title: "Como deseja baixar o relat\xF3rio?", size: "lg", footer: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [ /* @__PURE__ */ jsx( Button_default, { variant: "outline", action: "primary", size: "small", onClick: handleClose, "data-testid": "download-cancel-btn", children: "Cancelar" } ), /* @__PURE__ */ jsx( Button_default, { variant: "solid", action: "primary", size: "small", disabled: !selectedFormat || isDownloading, iconLeft: /* @__PURE__ */ jsx(DownloadSimpleIcon, { size: 16 }), onClick: handleDownload, "data-testid": "download-confirm-btn", children: "Baixar" } ) ] }), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [ error && /* @__PURE__ */ jsx(Text_default, { size: "sm", className: "text-indicator-error", children: error }), isDownloading ? /* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-4", "data-testid": "download-skeleton", children: [ /* @__PURE__ */ jsx(Skeleton, { variant: "rounded", width: "100%", height: 80 }), /* @__PURE__ */ jsx(Skeleton, { variant: "rounded", width: "100%", height: 80 }) ] }) : /* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-4", children: [ /* @__PURE__ */ jsx( Button_default, { "data-testid": "download-pdf-option", "aria-label": "PDF", "aria-pressed": selectedFormat === "pdf" /* PDF */, variant: "outline", action: "secondary", className: `${cardBase} ${selectedFormat === "pdf" /* PDF */ ? cardSelected : cardDefault}`, onClick: () => setSelectedFormat("pdf" /* PDF */), children: /* @__PURE__ */ jsx(FilePdfIcon, { size: 24, className: "text-text-700" }) } ), /* @__PURE__ */ jsx( Button_default, { "data-testid": "download-excel-option", "aria-label": "Excel", "aria-pressed": selectedFormat === "excel" /* EXCEL */, variant: "outline", action: "secondary", className: `${cardBase} ${selectedFormat === "excel" /* EXCEL */ ? cardSelected : cardDefault}`, onClick: () => setSelectedFormat("excel" /* EXCEL */), children: /* @__PURE__ */ jsx(FileXlsIcon, { size: 24, className: "text-text-700" }) } ) ] }) ] }) } ); }; var DownloadModal_default = DownloadModal; export { DOWNLOAD_FORMAT, DownloadModal_default }; //# sourceMappingURL=chunk-A5SJ6CNT.mjs.map