Support group archiving and unarchiving in settings
Problem
To deliver a functional group archiving flow, we need the ability for users to archive and unarchive a group.
Proposal
In groups/projects settings > general> advanced add/modify the archive setting as follows:
-
Add setting to archive group -
Add setting to unarchive group -
Modify setting to unarchive groups that are children of archived groups
See #481741[Archive_and_Unarchive.png] for the designs and copy.
Before | After | |
---|---|---|
Archive project | ![]() |
![]() |
Unarchive project | ![]() |
![]() |
Unarchive project disabled | ![]() |
![]() |
Design rationale:
-
Progressive disclosure:
- Show essential information first, with detailed specifications available through contextual help links
- Reduce cognitive load by presenting only the most relevant information upfront
-
Contextual help best practices:
- GitLab's contextual help guidelines recommend phrasing help links as specific questions rather than using generic "Learn more" text
- This approach provides clearer expectations about what users will find when they click
-
Consistent call-to-action patterns:
- Use concise button labels like "Archive" instead of "Archive project" to match how actions appear in dropdown menus throughout GitLab (such as the three-dot menu in group/project list views)
- Maintain consistency across the interface for better user experience
-
Button hierarchy considerations:
- When multiple call-to-action buttons exist on a page, only one should use the primary blue styling
- Since we don't know users' specific intentions when visiting settings pages, secondary button styling is recommended for these actions
- Card disabled state is defined separately in this issue.
Implementation guide
- Create a new HAML partial in
app/views/groups/settings
called_archive.html.haml
- Create new Vue application and mount into this HAML partial
- Pass if group is archived or not via data attributes
- Use
GlCard
to render UI based on if group is archived or not - When
Archive
/Unarchive
button is clicked open confirmation modal usingGlModal
- When confirmed make a request to our REST API
POST /groups/:id/archive
POST /groups/:id/unarchive
- The confirmation modal and API call should be generic enough that it can also be used in &18490
- Redirect with alert to group front page using
visitUrlWithAlerts
Edited by Jason Hung