feat: add select-all checkbox and lift selection state to parent#12900
Open
RobinAngele wants to merge 2 commits intonextcloud:mainfrom
Open
feat: add select-all checkbox and lift selection state to parent#12900RobinAngele wants to merge 2 commits intonextcloud:mainfrom
RobinAngele wants to merge 2 commits intonextcloud:mainfrom
Conversation
…ctions - Add missing ImportantIcon import and component registration in EnvelopeList so the 'Mark as important' icon renders during bulk selection - Fix favorite/unfavorite bulk action logic: rename methods to favoriteAll/unfavoriteAll and use explicit favFlag values (true/false) instead of inverted computed checks that failed when all selected messages shared the same state AI-assisted: Cline (Claude) Signed-off-by: RobinAngele <robin@robin4consulting.com>
Add a 'Select all X messages' checkbox above the envelope list using NcCheckboxRadioSwitch from @nextcloud/vue, allowing users to select all visible messages at once. Lift envelope selection state from individual EnvelopeList instances up to the Mailbox parent component. This enables: - Cross-group shift-click range selection via flat envelope indexing - Consistent selection state across grouped envelope lists - Global select-all / unselect-all from the parent level Also pass the selection array as a prop to EnvelopeList and add proper event handling for update:selection and select-range. Closes: nextcloud#4285 Refs: nextcloud#7880, nextcloud#6070, nextcloud#7276 AI-assisted: Cline (Claude) Signed-off-by: RobinAngele <robin@robin4consulting.com>
This was referenced May 7, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Depends on: #12899
Refs #4285
Refs #7880
Refs #6070
Refs #7276
Refs #11526
Follow-up: #12901 adds filter-based mass selection
Summary
Adds a "Select all X messages" checkbox above the envelope list and lifts
envelope selection state from individual
EnvelopeListinstances to theMailboxparent, enabling cross-group shift-click range selection andglobal select-all/unselect-all.
Together with #12901 this fully closes #4285 and #7880.
Changes by file
Mailbox.vueNcCheckboxRadioSwitchat the top of the listmargin-top: 8pxso it doesn't sit flush against the sticky search barselectionarray in data — single source of truth for selection stateselectAll(),unselectAll()methods for global controlflatEnvelopeList,selectMode,allSelectedcomputed propertiesonUpdateSelection(),onSelectRange(),getGroupFlatIndex()methodsselectionprop down toEnvelopeListchildrenupdate:selectionandselect-rangeevents from children.select-all-barCSSEnvelopeList.vueselectionprop (typeArray, replaces localdata().selection)flatIndexprop (typeNumber, for cross-group shift-click indexing)selectionprop withimmediate: trueto syncflags.selectedemitLocalSelection()method — emitsupdate:selectionto parentselect-rangewith global flat indicesselectionfromdata()andsetEnvelopeSelectedmutationsHow to test
Screenshots