diff options
| author | MohamedBassem <me@mbassem.com> | 2024-09-27 09:17:51 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-09-27 09:17:51 +0000 |
| commit | badf697d0b83ef4d093e781f04ed73d3901e6a9f (patch) | |
| tree | c9dc70fe8c751695df3c50bc82ccf142bf237a6b /apps/web/lib/bulkActions.ts | |
| parent | ee0aad531b0106d25fa91a044d00cb95f79e3b5b (diff) | |
| download | karakeep-badf697d0b83ef4d093e781f04ed73d3901e6a9f.tar.zst | |
feature(web): Add a select all button to bulk actions
Diffstat (limited to '')
| -rw-r--r-- | apps/web/lib/bulkActions.ts | 23 |
1 files changed, 23 insertions, 0 deletions
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<BookmarkState>((set, get) => ({ selectedBookmarks: [], + visibleBookmarks: [], isBulkEditEnabled: false, toggleBookmark: (bookmark: ZBookmark) => { @@ -30,10 +36,27 @@ const useBulkActionsStore = create<BookmarkState>((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; |
