Skip to content

feat(ideas,authors): open filters as a balloon instead of an inline strip - #1325

Merged
jorgepb96 merged 1 commit into
mainfrom
fix/ideas-authors-filter-balloon
Oct 25, 2026
Merged

jorgepb96 merged 1 commit into
mainfrom
fix/ideas-authors-filter-balloon

Conversation

@jorgepb96

Copy link
Copy Markdown
Owner

Closes #1324.

Summary

The filter buttons in Ideas and Authors expanded an inline strip above the catalogue. Opening it pushed the table down by 56 px and read as if the section itself had expanded, instead of as a cut applied to the list.

Both sections now open a floating balloon anchored under the Filters button, using the same useDismissableLayer pattern and visual treatment as the Library filter panel:

  • Ideas (src/views/IdeasView.tsx): Type and Order in a 240 px balloon.
  • Authors (src/views/AuthorsView.tsx): Saved authors, Synthesis and Order in a 256 px balloon.
  • The balloon closes on a second click on the trigger, an outside click, or Escape. A dismissal is persisted in the section snapshot on the event itself, as the existing toggle already did.
  • The panel exposes role="dialog", aria-haspopup="dialog", aria-expanded and aria-controls; the existing data-testid hooks (ideas-type-filter, ideas-sort, authors-tab-saved) are unchanged.
  • Light and dark styles; the panel keeps max-w-[calc(100vw-3rem)] so it cannot overflow a narrow window.

No strings were added: every label already existed.

Related issue

Closes #1324

Type of change

  • Bug fix
  • New feature or improvement
  • Documentation or translation
  • Refactor or maintenance
  • Database, privacy, security, or infrastructure change

Validation

  • npx eslint src/views/IdeasView.tsx src/views/AuthorsView.tsx
  • npm run typecheck
  • node --test scripts/test-ideas-ui.mjs scripts/test-authors-ui.mjs — 12/12, with two new assertions pinning the balloon dialog and its dismissal group.
  • npx vite build — the build used for the Electron captures.
  • node scripts/e2e-saved-authors.mjs — passes against the built Electron app (opens Filters, enables saved authors, searches, reloads and keeps the state).
  • npm test and the full npm run build are left to CI; the focused checks above cover the changed views.
  • Manual verification in the built Electron app with the demo corpus: the catalogue's top stays at y=309 with the balloon closed and open in both sections (previously y=309 → 365). Outside click, Escape, the type filter and the saved-authors filter all behave, in dark and light themes.

Screenshots

Before/after captures were taken in dark and light from an isolated synthetic profile of the built app, and kept out of the repository:

  • before-ideas-filters.png, before-authors-filters.png: inline strip pushing the table down 56 px.
  • after-ideas-filters.png, after-authors-filters.png: balloon over the table, catalogue unmoved.
  • after-ideas-filtered.png, after-authors-saved-filter.png: filters applied with the balloon open.
  • after-light-ideas-filters.png, after-light-authors-filters.png: light theme.

Privacy and data review

  • No secrets, credentials, private vault content, personal data, student data, or confidential documents are included.
  • New network access is explicit, documented, and initiated by the user. (No new network access.)
  • The change does not send rosters, grades, student answers, or other protected data to AI providers.
  • The change does not use AI to grade, rank, profile, or evaluate students.
  • Database, backup, synchronization, and migration effects are documented and tested. (None.)

Contributor checklist

  • This pull request is written in English and references an existing issue.
  • I attached screenshots whenever possible (before-and-after for UI changes, reproduction evidence for bug fixes). The captures are described above and were taken from the built app; they are ready to attach manually if the thread needs them.
  • I have read CLA.md and accepted it through the CLA / signature check. Every author and coauthor must accept separately; this checkbox alone is not acceptance.
  • I added or updated focused tests.
  • I updated documentation where behavior changed. (No documentation describes this control; no new strings were introduced.)
  • I updated every language table for new static UI text. (No new text.)
  • I preserved local-first behavior and existing privacy boundaries.
  • I have read and followed CONTRIBUTING.md and CODE_OF_CONDUCT.md.

@github-actions

Copy link
Copy Markdown
Contributor

@jorgepb96, all required checks have passed for the latest revision of this PR. It is ready for maintainer review and merge consideration.

Latest revision: 0eac30c6d88a.

@jorgepb96
jorgepb96 merged commit 2566c7e into main Oct 25, 2026
24 checks passed
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.

[Feature] Open Ideas and Authors filters as a balloon instead of an inline strip

1 participant