From 008ba924cd9b016bd0099ed621ade5943ff23411 Mon Sep 17 00:00:00 2001 From: Pontus Abrahamsson Date: Wed, 29 Nov 2023 13:23:55 +0100 Subject: [PATCH] Vault --- .../(root)/vault/[[...folders]]/page.tsx | 21 +- apps/dashboard/src/components/breadcrumbs.tsx | 32 ++- apps/dashboard/src/components/file-icon.tsx | 8 +- .../tables/vault/data-table-row.tsx | 94 +++++++-- .../components/tables/vault/data-table.tsx | 4 +- .../components/tables/vault/empty-table.tsx | 32 +++ .../src/components/tables/vault/index.tsx | 4 +- apps/dashboard/src/locales/en.ts | 6 + apps/dashboard/src/locales/sv.ts | 6 + bun.lockb | Bin 430760 -> 426592 bytes packages/supabase/src/queries/index.ts | 24 ++- packages/ui/package.json | 2 + packages/ui/src/components/context-menu.tsx | 199 ++++++++++++++++++ packages/ui/src/components/icons.tsx | 14 +- 14 files changed, 412 insertions(+), 34 deletions(-) create mode 100644 apps/dashboard/src/components/tables/vault/empty-table.tsx create mode 100644 packages/ui/src/components/context-menu.tsx diff --git a/apps/dashboard/src/app/[locale]/@dashboard/(root)/vault/[[...folders]]/page.tsx b/apps/dashboard/src/app/[locale]/@dashboard/(root)/vault/[[...folders]]/page.tsx index baadf33d90..c2364a452f 100644 --- a/apps/dashboard/src/app/[locale]/@dashboard/(root)/vault/[[...folders]]/page.tsx +++ b/apps/dashboard/src/app/[locale]/@dashboard/(root)/vault/[[...folders]]/page.tsx @@ -1,5 +1,7 @@ import { Breadcrumbs } from "@/components/breadcrumbs"; import { Table } from "@/components/tables/vault"; +import { Button } from "@midday/ui/button"; +import { Icons } from "@midday/ui/icons"; import { Metadata } from "next"; export const metadata: Metadata = { @@ -7,9 +9,26 @@ export const metadata: Metadata = { }; export default function Vault({ params }) { + const disableActions = ["transactions", "inbox", "exports"].includes( + params.folders?.slice(-1)?.at(0) + ); + return (
- +
+ + + {!disableActions && ( +
+ + +
+ )} +
); diff --git a/apps/dashboard/src/components/breadcrumbs.tsx b/apps/dashboard/src/components/breadcrumbs.tsx index f98d792af1..1d88e886d5 100644 --- a/apps/dashboard/src/components/breadcrumbs.tsx +++ b/apps/dashboard/src/components/breadcrumbs.tsx @@ -1,3 +1,31 @@ -export function Breadcrumbs({ folders }) { - return folders?.map((folder) => {folder}); +"use client"; + +import { useI18n } from "@/locales/client"; +import { Icons } from "@midday/ui/icons"; +import Link from "next/link"; +import { translatedFolderName } from "./tables/vault/data-table-row"; + +export function Breadcrumbs({ folders = [] }) { + const t = useI18n(); + + const allFolders = ["all", ...folders]; + + const links = allFolders?.map((folder, index) => { + const isLast = folders.length === index; + const href = folder === "all" ? "/vault" : `/vault/${folder}`; + + return ( +
+ + {translatedFolderName(t, folder)} + + + {folders.length > 0 && !isLast && ( + + )} +
+ ); + }); + + return
{links}
; } diff --git a/apps/dashboard/src/components/file-icon.tsx b/apps/dashboard/src/components/file-icon.tsx index 8cca63392c..6252d66692 100644 --- a/apps/dashboard/src/components/file-icon.tsx +++ b/apps/dashboard/src/components/file-icon.tsx @@ -1,12 +1,12 @@ import { Icons } from "@midday/ui/icons"; -export function FileIcon({ mimetype, name }) { +export function FileIcon({ mimetype, name, isFolder }) { if (name === "exports") { return ; } if (name === "inbox") { - return ; + return ; } if (name === "transactions") { @@ -17,6 +17,10 @@ export function FileIcon({ mimetype, name }) { return ; } + if (isFolder) { + return ; + } + switch (mimetype) { case "application/pdf": return ; diff --git a/apps/dashboard/src/components/tables/vault/data-table-row.tsx b/apps/dashboard/src/components/tables/vault/data-table-row.tsx index 72a4e33e34..c01625f28c 100644 --- a/apps/dashboard/src/components/tables/vault/data-table-row.tsx +++ b/apps/dashboard/src/components/tables/vault/data-table-row.tsx @@ -1,37 +1,89 @@ "use client"; import { FileIcon } from "@/components/file-icon"; +import { useI18n } from "@/locales/client"; import { formatSize } from "@/utils/format"; -import { Icons } from "@midday/ui/icons"; +import { + ContextMenu, + ContextMenuContent, + ContextMenuItem, + ContextMenuSub, + ContextMenuSubContent, + ContextMenuSubTrigger, + ContextMenuTrigger, +} from "@midday/ui/context-menu"; import { TableCell, TableRow } from "@midday/ui/table"; import { format } from "date-fns"; import { usePathname, useRouter } from "next/navigation"; +export const translatedFolderName = (t: any, folder: string) => { + switch (folder) { + case "all": + return t("folders.all"); + case "inbox": + return t("folders.inbox"); + case "transactions": + return t("folders.transactions"); + case "exports": + return t("folders.exports"); + + default: + return folder; + } +}; + export function DataTableRow({ data }) { + const t = useI18n(); const router = useRouter(); const pathname = usePathname(); - const handleNavigate = () => router.push(`${pathname}/${data.name}`); + const handleNavigate = () => { + if (data.isFolder) { + router.push(`${pathname}/${data.name}`); + } + }; return ( - - -
- - {data.name} - {data?.metadata?.size && ( - - {formatSize(data.metadata.size)} - - )} -
-
- - {data?.created_at && format(new Date(data.created_at), "MMM d, yyyy")} - - - - -
+ + + + +
+ + {translatedFolderName(t, data.name)} + {data?.metadata?.size && ( + + {formatSize(data.metadata.size)} + + )} +
+
+ + {data?.created_at ? format(new Date(data.created_at), "Pp") : "-"} + + + {data?.updated_at ? format(new Date(data.updated_at), "Pp") : "-"} + +
+
+ + + + Get URL + + Expire in 1 week + Expire in 1 month + Expire in 1 year + + + Rename + Download + Delete + +
); } diff --git a/apps/dashboard/src/components/tables/vault/data-table.tsx b/apps/dashboard/src/components/tables/vault/data-table.tsx index f67f0f6589..aaf7a2aefc 100644 --- a/apps/dashboard/src/components/tables/vault/data-table.tsx +++ b/apps/dashboard/src/components/tables/vault/data-table.tsx @@ -13,8 +13,8 @@ export function DataTable({ data }) { Name - Uploaded - Actions + Created at + Last modified at diff --git a/apps/dashboard/src/components/tables/vault/empty-table.tsx b/apps/dashboard/src/components/tables/vault/empty-table.tsx new file mode 100644 index 0000000000..cbde73fb02 --- /dev/null +++ b/apps/dashboard/src/components/tables/vault/empty-table.tsx @@ -0,0 +1,32 @@ +type Props = { + type: string; +}; + +export function EmptyTable({ type }: Props) { + switch (type) { + case "inbox": + return ( +
+
+

This is your inbox

+

+ Everything that will be sent to your
+ Midday email will end up here. +

+
+
+ ); + + default: + return ( +
+
+

Drop your files here

+

+ Or upload them via the
"Upload file" button above +

+
+
+ ); + } +} diff --git a/apps/dashboard/src/components/tables/vault/index.tsx b/apps/dashboard/src/components/tables/vault/index.tsx index a271b431dc..9f79ace63f 100644 --- a/apps/dashboard/src/components/tables/vault/index.tsx +++ b/apps/dashboard/src/components/tables/vault/index.tsx @@ -1,12 +1,14 @@ import { getVault } from "@midday/supabase/cached-queries"; import { DataTable } from "./data-table"; +import { EmptyTable } from "./empty-table"; export async function Table({ path }) { const { data } = await getVault({ path }); return ( -
+
+ {data.length === 0 && }
); } diff --git a/apps/dashboard/src/locales/en.ts b/apps/dashboard/src/locales/en.ts index 3b56168d9c..bc0231101f 100644 --- a/apps/dashboard/src/locales/en.ts +++ b/apps/dashboard/src/locales/en.ts @@ -46,4 +46,10 @@ export default { profit_loss: "Profit/Loss", income: "Income", }, + folders: { + all: "All", + exports: "Exports", + inbox: "Inbox", + transactions: "Transactions", + }, } as const; diff --git a/apps/dashboard/src/locales/sv.ts b/apps/dashboard/src/locales/sv.ts index 43004db72f..4cc6d87596 100644 --- a/apps/dashboard/src/locales/sv.ts +++ b/apps/dashboard/src/locales/sv.ts @@ -46,4 +46,10 @@ export default { profit_loss: "Vinst/Förlust", income: "Inkomst", }, + folders: { + all: "Alla", + exports: "Exporteringar", + inbox: "Inbox", + transactions: "Transaktioner", + }, } as const; diff --git a/bun.lockb b/bun.lockb index 47e126a92d9f27e26273b31592b6a1d579e1e37c..fa35c93f6b1e7287c9640cbd5b0a5521681d7a56 100755 GIT binary patch delta 78501 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 J2D)Ul{XdOPq5%K^ diff --git a/packages/supabase/src/queries/index.ts b/packages/supabase/src/queries/index.ts index 3bb0916a9a..f14db6f6d2 100644 --- a/packages/supabase/src/queries/index.ts +++ b/packages/supabase/src/queries/index.ts @@ -475,10 +475,17 @@ type GetVaultParams = { path?: string; }; -const defaultFolders = [{ id: "inbox" }, { id: "exports" }]; - export async function getVaultQuery(supabase: Client, params: GetVaultParams) { const { teamId, path } = params; + + const defaultFolders = path + ? [] + : [ + { name: "inbox", isFolder: true }, + { name: "exports", isFolder: true }, + { name: "transactions", isFolder: true }, + ]; + let basePath = teamId; if (path) { @@ -487,7 +494,18 @@ export async function getVaultQuery(supabase: Client, params: GetVaultParams) { const { data } = await supabase.storage.from("vault").list(basePath); + const filteredData = + data + ?.filter((file) => file.name !== ".emptyFolderPlaceholder") + .map((item) => ({ ...item, isFolder: !item.id })) ?? []; + + const mergedMap = new Map( + [...defaultFolders, ...filteredData].map((obj) => [obj.name, obj]) + ); + + const mergedArray = Array.from(mergedMap.values()); + return { - data: data?.filter((file) => file.name !== ".emptyFolderPlaceholder"), + data: mergedArray, }; } diff --git a/packages/ui/package.json b/packages/ui/package.json index 74abea7187..9383874848 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -22,6 +22,7 @@ "exports": { "./calendar": "./src/components/calendar.tsx", "./card": "./src/components/card.tsx", + "./context-menu": "./src/components/context-menu.tsx", "./alert": "./src/components/alert.tsx", "./alert-dialog": "./src/components/alert-dialog.tsx", "./avatar": "./src/components/avatar.tsx", @@ -61,6 +62,7 @@ "@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-avatar": "^1.0.4", "@radix-ui/react-checkbox": "^1.0.4", + "@radix-ui/react-context-menu": "^2.1.5", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dropdown-menu": "^2.0.6", "@radix-ui/react-icons": "^1.3.0", diff --git a/packages/ui/src/components/context-menu.tsx b/packages/ui/src/components/context-menu.tsx new file mode 100644 index 0000000000..cde5d435e2 --- /dev/null +++ b/packages/ui/src/components/context-menu.tsx @@ -0,0 +1,199 @@ +"use client"; + +import * as ContextMenuPrimitive from "@radix-ui/react-context-menu"; +import { Check, ChevronRight, Circle } from "lucide-react"; +import * as React from "react"; +import { cn } from "../utils"; + +const ContextMenu = ContextMenuPrimitive.Root; + +const ContextMenuTrigger = ContextMenuPrimitive.Trigger; + +const ContextMenuGroup = ContextMenuPrimitive.Group; + +const ContextMenuPortal = ContextMenuPrimitive.Portal; + +const ContextMenuSub = ContextMenuPrimitive.Sub; + +const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup; + +const ContextMenuSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)); +ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName; + +const ContextMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName; + +const ContextMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)); +ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName; + +const ContextMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, ...props }, ref) => ( + +)); +ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName; + +const ContextMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)); +ContextMenuCheckboxItem.displayName = + ContextMenuPrimitive.CheckboxItem.displayName; + +const ContextMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)); +ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName; + +const ContextMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, ...props }, ref) => ( + +)); +ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName; + +const ContextMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName; + +const ContextMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ); +}; +ContextMenuShortcut.displayName = "ContextMenuShortcut"; + +export { + ContextMenu, + ContextMenuTrigger, + ContextMenuContent, + ContextMenuItem, + ContextMenuCheckboxItem, + ContextMenuRadioItem, + ContextMenuLabel, + ContextMenuSeparator, + ContextMenuShortcut, + ContextMenuGroup, + ContextMenuPortal, + ContextMenuSub, + ContextMenuSubContent, + ContextMenuSubTrigger, + ContextMenuRadioGroup, +}; diff --git a/packages/ui/src/components/icons.tsx b/packages/ui/src/components/icons.tsx index 1d21a018ef..9ae61cfb95 100644 --- a/packages/ui/src/components/icons.tsx +++ b/packages/ui/src/components/icons.tsx @@ -2,9 +2,11 @@ import { ArchiveIcon } from "@radix-ui/react-icons"; import { Settings } from "lucide-react"; import { MdApartment, + MdArrowRight, MdBarChart, MdBrokenImage, MdCelebration, + MdCreateNewFolder, MdDescription, MdDesk, MdDevices, @@ -13,8 +15,10 @@ import { MdExpandMore, MdFastfood, MdFence, + MdFileUpload, MdFlightTakeoff, - MdFolderOpen, + MdFolder, + MdFolderSpecial, MdFolderZip, MdHomeWork, MdInventory2, @@ -34,6 +38,7 @@ import { MdPictureAsPdf, MdRefresh, MdSave, + MdSearch, MdSensors, MdTopic, MdTrendingDown, @@ -327,9 +332,14 @@ export const Icons = { MoreHoriz: MdMoreHoriz, Pdf: MdPictureAsPdf, DriveFileMove: MdDriveFileMove, - FolderOpen: MdFolderOpen, + FolderSpecial: MdFolderSpecial, Topic: MdTopic, BrokenImage: MdBrokenImage, Description: MdDescription, FolderZip: MdFolderZip, + ArrowRight: MdArrowRight, + Folder: MdFolder, + FileUpload: MdFileUpload, + Search: MdSearch, + CreateNewFolder: MdCreateNewFolder, };