Ensure archived groups cannot be transferred
Problem
Archived groups should not be transferable, as it can cause issues with keeping the archived state. We also don't expect this to be a common use case. As a workaround, to transfer an archived group, users should unarchive the group, transfer it, and archive it again.
Proposal
-
Indicate in the transfer UI that transfer is not possible when a group is archived. -
Ensure that all subgroups and projects of the archived cannot be transferred either. The transfer option should behave in the same way as above.
Design Audit Finding
- Inconsistent content levels across advanced function cards (transfer, archive, export)
- Export and transfer cards contain excessive content, increasing cognitive load
- Using disabled submit buttons to indicate form validation status doesn't align with Pajamas design system
Design Solutions
- Define a consistent pattern for setting page cards to improve consistency and reduce cognitive load. Implement this pattern on the transfer card first as a proof of concept
| New card pattern |
|---|
![]() |
| Before | After |
|---|---|
![]() |
![]() |
- Make the "Transfer" button active by default and only show inline validation for missing fields when users click the button, reducing clutter when multiple cards appear on the same page. Change the button style from "primary confirm" to "default primary" to reduce the number of primary actions on the settings page.
| Before | After |
|---|---|
![]() |
![]() |
- Visual treatments to indicate disabled cards in the archive state
| Archived state |
|---|
![]() |
| Pros: minimal distraction, works well when multiple features are disabled |
Other considered options can be found under the Design file.
Design Artefacts (Awaiting for UXW approval)
-
Group level
- New design for "Transfer group"
- New design for "Archive group"
- New design for "Unarchive group"
-
Project level
- New design for "Transfer project"
- New design for "Archive project"
- New design for "Unarchive project"
Next step
- Create a new design issue to explore how the updated card pattern can enhance settings functionality
Implementation guide
- Create a new
transfer_card.vuecomponent inapp/assets/javascripts/groups_projects/components - Use
GlFormFieldsto renderapp/assets/javascripts/groups_projects/components/transfer_locations.vueand show an error message if submitted without selecting a value. - Render
transfer_card.vueinapp/views/groups/settings/_transfer.html.hamlandapp/views/projects/_transfer.html.haml - Pass
is_archivedprop totransfer_card.vuevia data attributes. Checkgroup.self_or_ancestor_archived?orproject.archived? - Adjust copy based on
isArchivedprop - Hide submit button based on
isArchivedprop - Show icon with tooltip in card header based on
isArchivedprop
Edited by Jason Hung






