Add Vue merge request search list to the dashboard

What does this MR do and why?

This merge request renders the search tab as a Vue component inside the dashboard's existing Vue router, replacing the legacy droplab filtered search and Kaminari pagination. It supports state and assignee filters; the rest arrive in the next merge request.

The list reads the root-level GraphQL mergeRequests field. That field has no search or in argument, because neither has an index to drive it at instance scope, so the tab drops typed free text rather than sending a filter the backend ignores. The field treats state alone as a filter, but a state-only query would scan every merge request on the instance, so the page only queries once a narrowing filter is set and otherwise shows an empty state asking for one.

State moved out of the four tabs into a filter token that defaults to open, and the tab shows no counts. Unlike the dashboard's other tabs it is not kept alive, so results reload on each visit. Its queries use a second Apollo client, because the dashboard's own client concatenates pages and this list needs discrete ones.

References

Split from !252201 (closed)

Part of a stack:

  1. !252305 (merged) - feature flag and backend enablement
  2. !252306 (merged) - (this merge request) Vue search list
  3. !252307 (merged) - remaining filter tokens
  4. !252308 (merged) - row details
  5. !252309 (merged) - approval status

Screenshots or screen recordings

Before After

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Phil Hughes

Merge request reports

Loading
Loading