Skip to content

Add multi-select mode for bulk bookmark operations#24

Merged
pheuberger merged 2 commits into
mainfrom
claude/multi-select-bookmarks-mdEcw
Feb 5, 2026
Merged

Add multi-select mode for bulk bookmark operations#24
pheuberger merged 2 commits into
mainfrom
claude/multi-select-bookmarks-mdEcw

Conversation

@pheuberger
Copy link
Copy Markdown
Owner

Summary

Implement a selection mode that allows users to select multiple bookmarks and perform bulk operations (currently delete). This adds a new interaction pattern alongside the existing single-item navigation and editing.

Key Changes

BookmarkItem Component

  • Added selection UI with checkbox icons (Square/CheckSquare) that appears in selection mode
  • Added isChecked and selectionMode props to control visual state
  • Added onToggleSelect callback for selection changes
  • Implemented click handlers that respect selection mode (Shift+click to initiate selection)
  • Hide edit/delete action buttons when in selection mode
  • Prevent navigation and tag clicks when in selection mode

BookmarkList Component

  • Added selection state management (selectionMode, selectedIds)
  • Implemented keyboard shortcuts for selection:
    • Space - toggle current item selection
    • Shift+J/K - move and select in direction
    • Cmd+A - select all filtered bookmarks
    • Escape - exit selection mode
    • D - bulk delete when in selection mode
  • Added bulkDeleteBookmarks service function for atomic deletion of multiple items
  • Auto-exit selection mode when changing views/filters
  • Integrated SelectionActionBar component for bulk actions

FilterBar Component

  • Added "Select" button to toggle selection mode
  • Button shows "Done" when in selection mode with primary styling
  • Imports ListChecks icon for visual consistency

New SelectionActionBar Component

  • Fixed position action bar showing selected count
  • Delete and Cancel buttons for bulk operations
  • Smooth animations (fade-in, slide-up)
  • Only visible when items are selected

Services

  • Added bulkDeleteBookmarks() function that deletes multiple bookmarks in a single transaction for proper undo support

Implementation Details

  • Selection state uses a Set for O(1) lookup performance
  • Shift+click initiates selection mode automatically
  • All selection changes are undoable via existing undo/redo system
  • Selection mode is context-aware and exits when navigating between views
  • Keyboard navigation (J/K) works seamlessly with selection via Shift modifier

https://claude.ai/code/session_01PeJz4DGdKgajWJbGVXPSME

- Add bulkDeleteBookmarks() service function for batch deletion in single Yjs transaction
- Create SelectionActionBar component with delete/cancel actions
- Update BookmarkItem with checkbox support and shift+click selection
- Add Select button to FilterBar to toggle selection mode
- Implement selection state management in BookmarkList
- Add keyboard shortcuts: Space (toggle), Ctrl+A (select all), Escape (exit), D (delete selected)

https://claude.ai/code/session_01PeJz4DGdKgajWJbGVXPSME
Hold Shift while pressing J or K to enter selection mode and
select items as you navigate through the list.

https://claude.ai/code/session_01PeJz4DGdKgajWJbGVXPSME
@netlify
Copy link
Copy Markdown

netlify Bot commented Feb 5, 2026

Deploy Preview for hypermarkk ready!

Name Link
🔨 Latest commit 9319052
🔍 Latest deploy log https://app.netlify.com/projects/hypermarkk/deploys/6984703779c5c8000883dde9
😎 Deploy Preview https://deploy-preview-24--hypermarkk.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@pheuberger pheuberger merged commit 29d9fe9 into main Feb 5, 2026
7 checks passed
@pheuberger pheuberger deleted the claude/multi-select-bookmarks-mdEcw branch February 5, 2026 10:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants