Convert Groups Overview tabs to Vue

Problem to solve

As part of https://gitlab.com/gitlab-org/gitlab-ce/issues/44005, we introduced multiple tabs to be able to view varying scopes of subgroups and projects of a given group.

However, we're using a GroupsTree Vue component, while having to do a bit of "dirty" DOM manipulation to manage multiple instances of said Vue component, while switching tabs and manipulating the page layout (showing search bar in the top area of the page, depending on which tab is selected).

There's also a tiny bit of technical debt being added on the backend side to support the current implementation, e.g., the multiple routes to determine which tab to load. It would be ideal to handle this completely on the frontend.

Proposal

Convert group overview tabs to be a single Vue application.

  1. Introduce feature flag so we can manage risk
  2. Perhaps use vue-router or at least use location hashes to denote the different sections,.
  3. Rework any references to "action" (as that is now a vuex convention) to be "active_tab".

Links / references

https://gitlab.com/gitlab-org/gitlab-ce/issues/49687 https://gitlab.com/gitlab-org/gitlab-ce/issues/44005

Availability and Testing

  • Adding unit and integration test coverage should suffice, no E2E tests needed at this time.
  • Since a feature flag will be implemented with this change, please be sure to review the package-and-qa-ff-disabled and package-and-qa-ff-enabled jobs that are triggered automatically on the MR.
    • Feel free to ping @vburton if you have any questions on QA failures.
Edited Aug 08, 2022 by Valerie Burton
Assignee Loading
Time tracking Loading