From e034e831984e8c3a5c8ad98827e05d3413788a38 Mon Sep 17 00:00:00 2001 From: Matt Date: Wed, 19 Feb 2025 10:47:23 -0500 Subject: [PATCH] Shadcn conversion, lots of styling --- .../src/components/ModalCloseButton.tsx | 60 ------------ .../src/components/ModalWrapper.tsx | 95 +++++++++++++++---- .../components/ColumnGrid.tsx | 4 +- .../components/TemplateColumn.tsx | 4 +- .../components/UserTableColumn.tsx | 1 - .../SelectHeaderStep/SelectHeaderStep.tsx | 52 +++++----- .../steps/SelectSheetStep/SelectSheetStep.tsx | 4 +- .../src/steps/Steps.tsx | 16 +--- .../src/steps/UploadFlow.tsx | 16 ++-- .../src/steps/UploadStep/UploadStep.tsx | 29 +++--- .../UploadStep/components/ExampleTable.tsx | 11 ++- .../UploadStep/components/FadingOverlay.tsx | 12 +-- .../steps/UploadStep/components/columns.tsx | 36 ++++--- 13 files changed, 165 insertions(+), 175 deletions(-) delete mode 100644 inventory/src/lib/react-spreadsheet-import/src/components/ModalCloseButton.tsx diff --git a/inventory/src/lib/react-spreadsheet-import/src/components/ModalCloseButton.tsx b/inventory/src/lib/react-spreadsheet-import/src/components/ModalCloseButton.tsx deleted file mode 100644 index 59c735e..0000000 --- a/inventory/src/lib/react-spreadsheet-import/src/components/ModalCloseButton.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import { Button } from "@/components/ui/button" -import { X } from "lucide-react" -import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, - AlertDialogPortal, - AlertDialogOverlay, -} from "@/components/ui/alert-dialog" -import { useRsi } from "../hooks/useRsi" - -type ModalCloseButtonProps = { - onClose: () => void -} - -export const ModalCloseButton = ({ onClose }: ModalCloseButtonProps) => { - const { translations } = useRsi() - - return ( - - - - - - - - - - {translations.alerts.confirmClose.headerTitle} - - - {translations.alerts.confirmClose.bodyText} - - - - - {translations.alerts.confirmClose.cancelButtonTitle} - - - {translations.alerts.confirmClose.exitButtonTitle} - - - - - - ) -} diff --git a/inventory/src/lib/react-spreadsheet-import/src/components/ModalWrapper.tsx b/inventory/src/lib/react-spreadsheet-import/src/components/ModalWrapper.tsx index d89841a..4201c16 100644 --- a/inventory/src/lib/react-spreadsheet-import/src/components/ModalWrapper.tsx +++ b/inventory/src/lib/react-spreadsheet-import/src/components/ModalWrapper.tsx @@ -1,7 +1,26 @@ import type React from "react" -import { Modal, ModalContent, ModalOverlay } from "@chakra-ui/react" -import { ModalCloseButton } from "./ModalCloseButton" +import { + Dialog, + DialogContent, + DialogOverlay, + DialogPortal, + DialogClose, +} from "@/components/ui/dialog" +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, + AlertDialogPortal, + AlertDialogOverlay, +} from "@/components/ui/alert-dialog" import { useRsi } from "../hooks/useRsi" +import { useState } from "react" type Props = { children: React.ReactNode @@ -10,24 +29,60 @@ type Props = { } export const ModalWrapper = ({ children, isOpen, onClose }: Props) => { - const { rtl } = useRsi() + const { rtl, translations } = useRsi() + const [showCloseAlert, setShowCloseAlert] = useState(false) + return ( - - - -
- - {children} -
-
-
+ <> + setShowCloseAlert(true)} modal> + + + { + e.preventDefault() + setShowCloseAlert(true) + }} + onPointerDownOutside={(e) => e.preventDefault()} + className="fixed left-[50%] top-[50%] translate-x-[-50%] translate-y-[-50%] w-[calc(100%-2rem)] h-[calc(100%-2rem)] max-w-[100vw] max-h-[100vh] flex flex-col overflow-hidden rounded-lg border bg-background p-0 shadow-lg sm:w-[calc(100%-3rem)] sm:h-[calc(100%-3rem)] md:w-[calc(100%-4rem)] md:h-[calc(100%-4rem)]" + > + + + { + e.preventDefault() + setShowCloseAlert(true) + }} /> + + +
+ {children} +
+
+
+
+ + + + + + + + {translations.alerts.confirmClose.headerTitle} + + + {translations.alerts.confirmClose.bodyText} + + + + setShowCloseAlert(false)}> + {translations.alerts.confirmClose.cancelButtonTitle} + + + {translations.alerts.confirmClose.exitButtonTitle} + + + + + + ) } diff --git a/inventory/src/lib/react-spreadsheet-import/src/steps/MatchColumnsStep/components/ColumnGrid.tsx b/inventory/src/lib/react-spreadsheet-import/src/steps/MatchColumnsStep/components/ColumnGrid.tsx index ac87cfa..b390dbf 100644 --- a/inventory/src/lib/react-spreadsheet-import/src/steps/MatchColumnsStep/components/ColumnGrid.tsx +++ b/inventory/src/lib/react-spreadsheet-import/src/steps/MatchColumnsStep/components/ColumnGrid.tsx @@ -35,7 +35,7 @@ export const ColumnGrid = ({ ) return ( -
+
@@ -94,7 +94,7 @@ export const ColumnGrid = ({
-
+
{onBack && ( - )} - -
+ )} +
) diff --git a/inventory/src/lib/react-spreadsheet-import/src/steps/SelectSheetStep/SelectSheetStep.tsx b/inventory/src/lib/react-spreadsheet-import/src/steps/SelectSheetStep/SelectSheetStep.tsx index b1723c8..1e43ad5 100644 --- a/inventory/src/lib/react-spreadsheet-import/src/steps/SelectSheetStep/SelectSheetStep.tsx +++ b/inventory/src/lib/react-spreadsheet-import/src/steps/SelectSheetStep/SelectSheetStep.tsx @@ -26,7 +26,7 @@ export const SelectSheetStep = ({ sheetNames, onContinue, onBack }: SelectSheetP ) return ( -
+
@@ -53,7 +53,7 @@ export const SelectSheetStep = ({ sheetNames, onContinue, onBack }: SelectSheetP
-
+
{onBack && ( -
) })} diff --git a/inventory/src/lib/react-spreadsheet-import/src/steps/UploadFlow.tsx b/inventory/src/lib/react-spreadsheet-import/src/steps/UploadFlow.tsx index b70fc5d..00e67fd 100644 --- a/inventory/src/lib/react-spreadsheet-import/src/steps/UploadFlow.tsx +++ b/inventory/src/lib/react-spreadsheet-import/src/steps/UploadFlow.tsx @@ -1,6 +1,5 @@ import { useCallback, useState } from "react" -import { Progress, useToast } from "@chakra-ui/react" -import type XLSX from "xlsx-ugnis" +import type XLSX from "xlsx" import { UploadStep } from "./UploadStep/UploadStep" import { SelectHeaderStep } from "./SelectHeaderStep/SelectHeaderStep" import { SelectSheetStep } from "./SelectSheetStep/SelectSheetStep" @@ -11,6 +10,8 @@ import { MatchColumnsStep } from "./MatchColumnsStep/MatchColumnsStep" import { exceedsMaxRecords } from "../utils/exceedsMaxRecords" import { useRsi } from "../hooks/useRsi" import type { RawData } from "../types" +import { Progress } from "@/components/ui/progress" +import { useToast } from "@/hooks/use-toast" export enum StepType { upload = "upload", @@ -59,16 +60,13 @@ export const UploadFlow = ({ state, onNext, onBack }: Props) => { tableHook, } = useRsi() const [uploadedFile, setUploadedFile] = useState(null) - const toast = useToast() + const { toast } = useToast() const errorToast = useCallback( (description: string) => { toast({ - status: "error", - variant: "left-accent", - position: "bottom-left", - title: `${translations.alerts.toast.error}`, + variant: "destructive", + title: translations.alerts.toast.error, description, - isClosable: true, }) }, [toast, translations], @@ -165,6 +163,6 @@ export const UploadFlow = ({ state, onNext, onBack }: Props) => { case StepType.validateData: return default: - return + return } } diff --git a/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/UploadStep.tsx b/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/UploadStep.tsx index f9fd8a6..d0a7e7d 100644 --- a/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/UploadStep.tsx +++ b/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/UploadStep.tsx @@ -1,11 +1,9 @@ import type XLSX from "xlsx-ugnis" -import { Box, Heading, ModalBody, Text, useStyleConfig } from "@chakra-ui/react" -import { DropZone } from "./components/DropZone" -import { useRsi } from "../../hooks/useRsi" -import { ExampleTable } from "./components/ExampleTable" import { useCallback, useState } from "react" +import { useRsi } from "../../hooks/useRsi" +import { DropZone } from "./components/DropZone" +import { ExampleTable } from "./components/ExampleTable" import { FadingOverlay } from "./components/FadingOverlay" -import type { themeOverrides } from "../../theme" type UploadProps = { onContinue: (data: XLSX.WorkBook, file: File) => Promise @@ -13,8 +11,8 @@ type UploadProps = { export const UploadStep = ({ onContinue }: UploadProps) => { const [isLoading, setIsLoading] = useState(false) - const styles = useStyleConfig("UploadStep") as (typeof themeOverrides)["components"]["UploadStep"]["baseStyle"] const { translations, fields } = useRsi() + const handleOnContinue = useCallback( async (data: XLSX.WorkBook, file: File) => { setIsLoading(true) @@ -23,16 +21,19 @@ export const UploadStep = ({ onContinue }: UploadProps) => { }, [onContinue], ) + return ( - - {translations.uploadStep.title} - {translations.uploadStep.manifestTitle} - {translations.uploadStep.manifestDescription} - - +
+

{translations.uploadStep.title}

+

{translations.uploadStep.manifestTitle}

+

{translations.uploadStep.manifestDescription}

+
+
+ +
- +
- +
) } diff --git a/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/ExampleTable.tsx b/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/ExampleTable.tsx index f17fa65..2b432fe 100644 --- a/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/ExampleTable.tsx +++ b/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/ExampleTable.tsx @@ -12,5 +12,14 @@ export const ExampleTable = ({ fields }: Props) => { const data = useMemo(() => generateExampleRow(fields), [fields]) const columns = useMemo(() => generateColumns(fields), [fields]) - return + return ( +
+
+ + ) } diff --git a/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/FadingOverlay.tsx b/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/FadingOverlay.tsx index 2db60dd..4548c69 100644 --- a/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/FadingOverlay.tsx +++ b/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/FadingOverlay.tsx @@ -1,13 +1,5 @@ -import { Box } from "@chakra-ui/react" - export const FadingOverlay = () => ( - ) diff --git a/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/columns.tsx b/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/columns.tsx index 0a4f8bf..e31333a 100644 --- a/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/columns.tsx +++ b/inventory/src/lib/react-spreadsheet-import/src/steps/UploadStep/components/columns.tsx @@ -1,7 +1,12 @@ import type { Column } from "react-data-grid" -import { Box, Tooltip } from "@chakra-ui/react" import type { Fields } from "../../../types" import { CgInfo } from "react-icons/cg" +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip" export const generateColumns = (fields: Fields) => fields.map( @@ -10,23 +15,30 @@ export const generateColumns = (fields: Fields) => name: column.label, minWidth: 150, headerRenderer: () => ( - - +
+
{column.label} - +
{column.description && ( - - - - - + + + +
+ +
+
+ + {column.description} + +
+
)} - +
), formatter: ({ row }) => ( - +
{row[column.key]} - +
), }), )