[go: up one dir, main page]

Skip to content

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 Screenshot_2025-07-02_at_17.48.03 Group_102
Unarchive project Screenshot_2025-07-02_at_17.52.11 Group_103
Unarchive project disabled Screenshot_2025-07-02_at_16.44.22_1 Group_111

Design file

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

  1. Create a new HAML partial in app/views/groups/settings called _archive.html.haml
  2. Create new Vue application and mount into this HAML partial
  3. Pass if group is archived or not via data attributes
  4. Use GlCard to render UI based on if group is archived or not
  5. When Archive/Unarchive button is clicked open confirmation modal using GlModal
  6. When confirmed make a request to our REST API
    • POST /groups/:id/archive
    • POST /groups/:id/unarchive
  7. The confirmation modal and API call should be generic enough that it can also be used in &18490
  8. Redirect with alert to group front page using visitUrlWithAlerts
Edited by Jason Hung