Add multi-select for slides with bulk actions and improved drag-drop #5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Slide management currently only supports single-slide operations, making it tedious to manage large decks. Additionally, moving a slide to the end requires precise placement on the last slide edge rather than dropping onto empty space.
Goals
Implementation Spec for Issue #5
Objective
Add multi-select capability to the slide grid in the HeroSlides dashboard, enabling users to select multiple slides and perform bulk actions (move, delete, duplicate), drag-and-drop multiple selected slides simultaneously, and drop slides onto empty space after the last card to move them to the end of the deck.
Requirements
Files to Modify
crates/hero_slides_ui/static/js/dashboard.jscrates/hero_slides_ui/static/css/dashboard.csscrates/hero_slides_ui/templates/index.htmlcrates/hero_slides_server/src/rpc.rscrates/hero_slides_lib/src/slide_ops.rscrates/hero_slides_lib/src/deck.rscrates/hero_slides_lib/src/lib.rsImplementation Plan
Step 1: Add bulk slide operations to hero_slides_lib
Files:
slide_ops.rs,deck.rs,lib.rsduplicate_slide(dir, slide_name)functionbulk_delete_slides(dir, slide_names)function (deletes highest-numbered first)bulk_move_slides(dir, slide_names, to_position)function (atomic multi-slide move)Dependencies: none
Step 2: Add server RPC handlers for bulk operations
Files:
rpc.rsslide.duplicate,slide.bulkDelete,slide.bulkMoveRPC handlersDependencies: Step 1
Step 3: Add selection state and UI logic to dashboard.js
Files:
dashboard.jsDependencies: none
Step 4: Modify drag-and-drop for multi-slide support and empty-space drop zone
Files:
dashboard.jsDependencies: Step 2, Step 3
Step 5: Add CSS styles for selection and drop zone
Files:
dashboard.cssDependencies: none
Step 6: Add selection toolbar to the slides tab HTML template
Files:
index.htmlDependencies: none
Acceptance Criteria
Notes
Test Results
All tests passed.
Pull request opened: #13
This PR implements the changes described in the spec above.