From 4d03a50481d2ed37747cf32bc4713e1d0e41eea8 Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Sun, 3 Aug 2025 14:08:58 -0600 Subject: [PATCH] update bookmark group reorder modal --- src/assets/locales/en.json | 2 +- .../overlays/EditGroupOrderModal.tsx | 52 +++++++++++++++++++ src/pages/bookmarks/AllBookmarks.tsx | 45 ++++++---------- src/pages/parts/home/BookmarksCarousel.tsx | 45 +++++----------- src/pages/parts/home/BookmarksPart.tsx | 45 +++++----------- 5 files changed, 96 insertions(+), 93 deletions(-) create mode 100644 src/components/overlays/EditGroupOrderModal.tsx diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json index ff92b953..39e3d70b 100644 --- a/src/assets/locales/en.json +++ b/src/assets/locales/en.json @@ -255,7 +255,7 @@ "button": "Reorder", "done": "Done", "title": "Edit Group Order", - "description": "Drag and drop to reorder your bookmark groups.", + "description": "Drag and drop to reorder your bookmark groups", "cancel": "Cancel", "save": "Save" } diff --git a/src/components/overlays/EditGroupOrderModal.tsx b/src/components/overlays/EditGroupOrderModal.tsx new file mode 100644 index 00000000..85ced953 --- /dev/null +++ b/src/components/overlays/EditGroupOrderModal.tsx @@ -0,0 +1,52 @@ +import { useTranslation } from "react-i18next"; + +import { Button } from "@/components/buttons/Button"; +import { Item, SortableList } from "@/components/form/SortableList"; +import { Modal, ModalCard } from "@/components/overlays/Modal"; +import { Heading2, Paragraph } from "@/components/utils/Text"; + +interface EditGroupOrderModalProps { + id: string; + isShown: boolean; + items: Item[]; + onCancel: () => void; + onSave: () => void; + onItemsChange: (newItems: Item[]) => void; +} + +export function EditGroupOrderModal({ + id, + isShown, + items, + onCancel, + onSave, + onItemsChange, +}: EditGroupOrderModalProps) { + const { t } = useTranslation(); + + if (!isShown) return null; + + return ( + + + + {t("home.bookmarks.groups.reorder.title")} + + + {t("home.bookmarks.groups.reorder.description")} + +
+ +
+
+ + +
+
+
+ ); +} diff --git a/src/pages/bookmarks/AllBookmarks.tsx b/src/pages/bookmarks/AllBookmarks.tsx index 542805c0..8ab60a59 100644 --- a/src/pages/bookmarks/AllBookmarks.tsx +++ b/src/pages/bookmarks/AllBookmarks.tsx @@ -6,16 +6,17 @@ import { useNavigate } from "react-router-dom"; import { Button } from "@/components/buttons/Button"; import { EditButton } from "@/components/buttons/EditButton"; import { EditButtonWithText } from "@/components/buttons/EditButtonWithText"; -import { Item, SortableList } from "@/components/form/SortableList"; +import { Item } from "@/components/form/SortableList"; import { Icon, Icons } from "@/components/Icon"; import { SectionHeading } from "@/components/layout/SectionHeading"; import { WideContainer } from "@/components/layout/WideContainer"; import { MediaGrid } from "@/components/media/MediaGrid"; import { WatchedMediaCard } from "@/components/media/WatchedMediaCard"; import { DetailsModal } from "@/components/overlays/detailsModal/DetailsModal"; -import { Modal, ModalCard, useModal } from "@/components/overlays/Modal"; +import { EditGroupOrderModal } from "@/components/overlays/EditGroupOrderModal"; +import { useModal } from "@/components/overlays/Modal"; import { UserIcon, UserIcons } from "@/components/UserIcon"; -import { Heading1, Heading2, Paragraph } from "@/components/utils/Text"; +import { Heading1 } from "@/components/utils/Text"; import { useBackendUrl } from "@/hooks/auth/useBackendUrl"; import { useRandomTranslation } from "@/hooks/useRandomTranslation"; import { SubPageLayout } from "@/pages/layouts/SubPageLayout"; @@ -419,33 +420,17 @@ export function AllBookmarks({ onShowDetails }: AllBookmarksProps) { {/* Edit Order Modal */} - - - - {t("home.bookmarks.groups.reorder.title")} - - - {t("home.bookmarks.groups.reorder.description")} - -
- { - const newOrder = newItems.map((item) => item.id); - setTempGroupOrder(newOrder); - }} - /> -
-
- - -
-
-
+ { + const newOrder = newItems.map((item) => item.id); + setTempGroupOrder(newOrder); + }} + /> {detailsData && } diff --git a/src/pages/parts/home/BookmarksCarousel.tsx b/src/pages/parts/home/BookmarksCarousel.tsx index 7304531d..baa1912f 100644 --- a/src/pages/parts/home/BookmarksCarousel.tsx +++ b/src/pages/parts/home/BookmarksCarousel.tsx @@ -2,17 +2,16 @@ import React, { useEffect, useMemo, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; -import { Button } from "@/components/buttons/Button"; import { EditButton } from "@/components/buttons/EditButton"; import { EditButtonWithText } from "@/components/buttons/EditButtonWithText"; -import { Item, SortableList } from "@/components/form/SortableList"; +import { Item } from "@/components/form/SortableList"; import { Icon, Icons } from "@/components/Icon"; import { SectionHeading } from "@/components/layout/SectionHeading"; import { WatchedMediaCard } from "@/components/media/WatchedMediaCard"; -import { Modal, ModalCard, useModal } from "@/components/overlays/Modal"; +import { EditGroupOrderModal } from "@/components/overlays/EditGroupOrderModal"; +import { useModal } from "@/components/overlays/Modal"; import { UserIcon, UserIcons } from "@/components/UserIcon"; import { Flare } from "@/components/utils/Flare"; -import { Heading2, Paragraph } from "@/components/utils/Text"; import { useBackendUrl } from "@/hooks/auth/useBackendUrl"; import { useIsMobile } from "@/hooks/useIsMobile"; import { CarouselNavButtons } from "@/pages/discover/components/CarouselNavButtons"; @@ -595,33 +594,17 @@ export function BookmarksCarousel({ })} {/* Edit Order Modal */} - - - - {t("home.bookmarks.groups.reorder.title")} - - - {t("home.bookmarks.groups.reorder.description")} - -
- { - const newOrder = newItems.map((item) => item.id); - setTempGroupOrder(newOrder); - }} - /> -
-
- - -
-
-
+ { + const newOrder = newItems.map((item) => item.id); + setTempGroupOrder(newOrder); + }} + /> ); } diff --git a/src/pages/parts/home/BookmarksPart.tsx b/src/pages/parts/home/BookmarksPart.tsx index 1616ce59..bd4ab3fd 100644 --- a/src/pages/parts/home/BookmarksPart.tsx +++ b/src/pages/parts/home/BookmarksPart.tsx @@ -2,17 +2,16 @@ import { useAutoAnimate } from "@formkit/auto-animate/react"; import { useEffect, useMemo, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; -import { Button } from "@/components/buttons/Button"; import { EditButton } from "@/components/buttons/EditButton"; import { EditButtonWithText } from "@/components/buttons/EditButtonWithText"; -import { Item, SortableList } from "@/components/form/SortableList"; +import { Item } from "@/components/form/SortableList"; import { Icons } from "@/components/Icon"; import { SectionHeading } from "@/components/layout/SectionHeading"; import { MediaGrid } from "@/components/media/MediaGrid"; import { WatchedMediaCard } from "@/components/media/WatchedMediaCard"; -import { Modal, ModalCard, useModal } from "@/components/overlays/Modal"; +import { EditGroupOrderModal } from "@/components/overlays/EditGroupOrderModal"; +import { useModal } from "@/components/overlays/Modal"; import { UserIcon, UserIcons } from "@/components/UserIcon"; -import { Heading2, Paragraph } from "@/components/utils/Text"; import { useBackendUrl } from "@/hooks/auth/useBackendUrl"; import { useAuthStore } from "@/stores/auth"; import { useBookmarkStore } from "@/stores/bookmarks"; @@ -395,33 +394,17 @@ export function BookmarksPart({ })} {/* Edit Order Modal */} - - - - {t("home.bookmarks.groups.reorder.title")} - - - {t("home.bookmarks.groups.reorder.description")} - -
- { - const newOrder = newItems.map((item) => item.id); - setTempGroupOrder(newOrder); - }} - /> -
-
- - -
-
-
+ { + const newOrder = newItems.map((item) => item.id); + setTempGroupOrder(newOrder); + }} + /> ); }