From badf697d0b83ef4d093e781f04ed73d3901e6a9f Mon Sep 17 00:00:00 2001 From: MohamedBassem Date: Fri, 27 Sep 2024 09:17:51 +0000 Subject: feature(web): Add a select all button to bulk actions --- apps/web/lib/bulkActions.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'apps/web/lib/bulkActions.ts') diff --git a/apps/web/lib/bulkActions.ts b/apps/web/lib/bulkActions.ts index 1e9dbbd7..a2ee6a29 100644 --- a/apps/web/lib/bulkActions.ts +++ b/apps/web/lib/bulkActions.ts @@ -5,13 +5,19 @@ import type { ZBookmark } from "@hoarder/shared/types/bookmarks"; interface BookmarkState { selectedBookmarks: ZBookmark[]; + visibleBookmarks: ZBookmark[]; isBulkEditEnabled: boolean; setIsBulkEditEnabled: (isEnabled: boolean) => void; toggleBookmark: (bookmark: ZBookmark) => void; + setVisibleBookmarks: (visibleBookmarks: ZBookmark[]) => void; + selectAll: () => void; + unSelectAll: () => void; + isEverythingSelected: () => boolean; } const useBulkActionsStore = create((set, get) => ({ selectedBookmarks: [], + visibleBookmarks: [], isBulkEditEnabled: false, toggleBookmark: (bookmark: ZBookmark) => { @@ -30,10 +36,27 @@ const useBulkActionsStore = create((set, get) => ({ } }, + selectAll: () => { + set({ selectedBookmarks: get().visibleBookmarks }); + }, + unSelectAll: () => { + set({ selectedBookmarks: [] }); + }, + + isEverythingSelected: () => { + return get().selectedBookmarks.length === get().visibleBookmarks.length; + }, + setIsBulkEditEnabled: (isEnabled) => { set({ isBulkEditEnabled: isEnabled }); set({ selectedBookmarks: [] }); }, + + setVisibleBookmarks: (visibleBookmarks: ZBookmark[]) => { + set({ + visibleBookmarks, + }); + }, })); export default useBulkActionsStore; -- cgit v1.2.3-70-g09d2