Select-all across pages must name the real set
Aliases: select this page · select all results · select all matching
What it is
Once a list is paged, “select all” names two different sets: the page in view, and every not-yet-rendered row that still matches the filter. Cross-page select-all has to say which set was actually taken—“20 on this page” versus “3,412 matching”—and say it again before a destructive act. This is not whether bulk mode changes the page, and not whether a count stays pinned. It is the referent of the select-all act. Tagging and drag-reorder do not use this meaning.
Why it happens
People hear “all” as the pile they can see. Paging hides the rest behind page numbers; filters hide the rest behind a query. Both stretch the extension of “all” past the eyes. If the checkbox ticks only this page while the label says Select all, or the opposite—thousands selected while only this page shows ticks—name and set diverge. Later delete, export, or grant runs on the real set; people accept liability for the visible set. The accident is the difference. Indeterminate checks add another layer: people think Select all will fill the remainder; the system may clear the careful picks and start over.
Studying it
Run delete or export on a multi-page result (few per page, large corpus). Compare three select-all designs: this page only and labeled; all matches and labeled; all matches but only the current page looks ticked.
Independent variables: the true set, whether copy includes an absolute count, whether execute restates the range. Dependent variables: gap between items actually affected and the spoken expectation, after-the-fact “I thought it was this page.”
Tens of items in a lab will not hurt enough. The corpus must be too large to memorize. Changing a filter and then hitting select-all is the moment “all” most clearly reveals which slice it means. Speed of finding the control is the wrong metric.
Where it stops holding
A short, fully rendered list makes select-all equal the visible set; the scope sentence can drop everything but the number. If the server cannot enumerate “all” before a timeout, do not offer a fake cross-page select; say “the n already loaded” or demand a tighter filter. Items the person cannot act on must be excluded from the stated set up front, or they will think a grant covered them. Mailboxes and search results drift while you look; lock a snapshot at confirm time and write “n as of this confirmation.”
Applying it
- Split select-all into two named acts, or one act with two-step confirm: “this page, n items” versus “all N that match the current filter.” Never ship an unquantified Select all.
- After a cross-page select, tick every box on the current page and write that unrendered items are already in the count; keep that selected look as the person pages.
- Repeat absolute count and filter in delete, export, and permission confirms: “This will delete 3,412 items in the current filter, not only this page.”
- Verify: on page 1, use select-all, then ask how many will be affected. Run a second task that should delete only this page, and watch for accidental cross-page use. Spoken expectation and server-side count must match.
Related
- Within the group: H8.02.1 Entering bulk mode must change the whole surface · H8.02.2 Selection count and scope must stay in view
- Adjacent: E4.05 Inline and Bulk Actions · H3.13 Handling Partial Failure · H8.10 Marks, Tags, and Classification
- Search terms:
select all·cross-page selection·bulk scope