Skip to content

Make staff tag & topic subscription filters multiselect - #2557

Draft
maebeale wants to merge 2 commits into
mainfrom
maebeale/multiselect-people-filters
Draft

maebeale wants to merge 2 commits into
mainfrom
maebeale/multiselect-people-filters

Conversation

@maebeale

Copy link
Copy Markdown
Collaborator

🤖 suggested review level: 3 Read 📖 contained filter-param change (scalar→array) across 4 filter locations, covered by request/service specs

Staff tag and topic subscription filters now let admins pick several values at once instead of one — pull everyone across any of the chosen tags/topics in a single search.

Where

  • People directory (/people) — staff tag and topic subscription
  • Subscriptions list (/topic_subscriptions) — topic
  • Cross-event attendees index — topic
  • Bulk email recipient picker — topic

How

  • New shared events/_filter_multiselect partial: a searchable TomSelect (the existing searchable-checkbox controller) multi-select, the counterpart of events/_filter_select.
  • Params go scalar → array (param[]); every consuming scope (Person.subscribed_to_topic, EventRegistration.registrant_topic_subscription, ReminderRecipientFilter) accepts one or many, so old single-value links still work.
  • hidden_filter_fields helper re-emits array filters as key[] so they survive GET round-trips (subscription form return params, email-addresses page).
  • TomSelect gains an optional placeholder from data-placeholder.

Notes

  • The staff taggings index was already multiselect; this brings the rest in line.
  • Request/service specs extended with multi-value cases; existing single-value tests still pass.

@maebeale
maebeale force-pushed the maebeale/multiselect-people-filters branch from eec0f34 to edea751 Compare September 25, 2026 20:49
maebeale and others added 2 commits September 30, 2026 14:35
Admins routinely want everyone across several tags or topics, not one at a
time. Convert both single-select filters to searchable TomSelect multiselects
everywhere they appear — People directory, Subscriptions list, attendees index,
and the bulk email recipient picker — via a shared events/_filter_multiselect
partial. Server scopes and the in-memory reminder filter now accept arrays; a
new hidden_filter_fields helper keeps array filters intact through GET round-trips.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The default TomSelect control renders a solid white box that clashes with the
tinted filter panels it sits on. Switch it to the existing `ts-flat` variant
(CSS already written for the searchable-checkbox multiselect), so the inner
control is transparent and the field reads like its native-select neighbors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@maebeale
maebeale force-pushed the maebeale/multiselect-people-filters branch from e198a67 to 344299d Compare September 30, 2026 18:36
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.

1 participant