MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-337

6.2.3 Save + apply UI on /issues — Save/Save-as with dirty state, the filter dropdown (starred/mine/project/defaults), name chip, star toggle

Done
Description

Estimate: 35m · Depends on: 6.2.1, 6.2.2, 6.1.4

The /issues-side surfaces, per the 6.2.2 design, on the 6.2.1 API.

Build (extending the 6.1.4 builder area): the save dialog (name / description / visibility, duplicate-name + viewer-private-only states) wired to the current builder AST; the applied-filter name chip + dirty indicator — the chip tracks whether the URL AST still equals the saved envelope; Save (owner: overwrite) vs Save as (everyone) per the mirror rule; the filter dropdown — starred → My filters → Project filters → Defaults, server-backed search (debounced, bounded), per-row star toggle, "View all filters" footer; applying an entry loads the resolved AST into the builder + the ?filter=v1: URL (the saved filter IS the URL once applied — reload/share keeps working with no new state channel); rename/edit-details from the chip menu for those permitted. Strings via next-intl.

A11y: dialog focus-trapped; the dropdown groups labelled; star toggles announce state; the dirty indicator is not colour-only; extends the /issues strict sweep.

Acceptance criteria

  • Save / dirty / Save-as match the design and the ownership split (non-owner never sees overwrite-Save); duplicate names surface the designed error; a viewer gets no Project visibility option.
  • The dropdown renders the four groups in order, searches server-side, stars in-place, and applies entries into builder + URL (round-trip: applying then reloading restores identical state); defaults apply but expose no edit/delete.
  • The chip + dirty state track URL↔saved-envelope equality through builder edits, URL navigation, and apply actions.
  • Axe-clean; token tiers only; next-intl; integration tests over save / dirty / apply / star wiring; coverage ≥90%.

Context refs

  • design/work-items/saved-filters.mock.html + notes (6.2.2) — THE authority
  • 6.2.1 (API + permission matrix + defaults); 6.1.4 (the builder surface + URL state this extends); 6.1.1 (envelope equality for the dirty check)
  • The i18n threading pattern; the 2.5.x URL-param conventions
Status
Done
Type
Sub-task