Skip to content

Add drawer group member/entry management#583

Merged
jxjj merged 23 commits into
developfrom
feat/drawer-group-entry-manager-ui
Jul 14, 2026
Merged

Add drawer group member/entry management#583
jxjj merged 23 commits into
developfrom
feat/drawer-group-entry-manager-ui

Conversation

@jxjj

@jxjj jxjj commented Jul 14, 2026

Copy link
Copy Markdown
Contributor
CleanShot 2026-07-13 at 20 14 00@2x

Adds drawer group member and entry management akin to the Admin Permissions tab. There's a lot of copy/paste from AdminPermissions components. We could probably extract common components at some point, but there's a enough difference that I think keeping things separate makes sense for now.

Note: At some point, we may want a way to see all drawers a given group is assigned to, so that a user knows how drawer changes impact others?

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds “Admin Permissions”-style group member and group entry management to the Drawer Management area, including lazy-loaded expandable group rows and new drawer-permissions-backed API/query plumbing.

Changes:

  • Added expandable group rows in Drawer Management to manage group members (User groups) and group entries (auth-helper groups).
  • Introduced drawer-manager-scoped user autocomplete + drawer group members/entries queries and mutations.
  • Updated shared table header styling to apply per-column width classes, and removed the Drawer Management “Drawers” tab.

Reviewed changes

Copilot reviewed 16 out of 16 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/queries/useUserAutocompleteQuery.ts Adds a drawer-manager variant of the user autocomplete query hook.
src/queries/queryKeys.ts Introduces a new query key for drawer user autocomplete caching.
src/pages/DrawerManagementPage/GroupsTableColumns.tsx Adds an expander column and adjusts column widths for the Drawer groups table.
src/pages/DrawerManagementPage/GroupsTabContent.vue Implements expandable rows and mounts member/entry managers in the expanded panel; updates table header classes.
src/pages/DrawerManagementPage/GroupMemberManager.vue New component to list/add/remove members for a drawer group.
src/pages/DrawerManagementPage/GroupEntryValueInput.vue New autocomplete input for entry values based on group type hints + existing entries.
src/pages/DrawerManagementPage/GroupEntriesTableRow.vue New editable/removable row for a single group entry.
src/pages/DrawerManagementPage/GroupEntriesTable.vue New table wrapper for group entries (mirrors admin implementation).
src/pages/DrawerManagementPage/GroupEntriesManager.vue New component to list/add/remove/edit entries for a drawer group.
src/pages/DrawerManagementPage/DrawerManagementPage.vue Removes the “Drawers” tab and updates valid tab handling.
src/pages/DrawerManagementPage/drawerGroupQueries.ts Adds members/entries queries and add/remove/update mutations with cache invalidation.
src/pages/DrawerManagementPage/AddGroupMemberRow.vue New add-member form row using drawer-manager autocomplete + add-member mutation.
src/pages/DrawerManagementPage/AddGroupEntryRow.vue New add-entry form row using add-entry mutation.
src/pages/AdminPermissionsPage/RulesTabContent.vue Applies per-column width classes in table header cells.
src/pages/AdminPermissionsPage/GroupsTabContent.vue Applies per-column width classes in table header cells.
src/api/fetchers.ts Adds drawerPermissions endpoints for user autocomplete, group members, and group entries CRUD.
Comments suppressed due to low confidence (1)

src/pages/DrawerManagementPage/GroupsTableColumns.tsx:107

  • The actions column no longer hides edit/delete for the personal group, even though the personal group is marked read-only elsewhere (and DrawerGroupRow still carries isPersonal). This allows opening edit/delete flows on a group the API refuses to modify.
    enableSorting: false,
    meta: { widthClass: "w-20" },
    cell: ({ row }: { row: { original: DrawerGroupRow } }) => {
      return (
        <div class="flex justify-end">
          <IconButton
            onClick={() => onEdit(row.original.group)}
            title="Edit Group"
            data-group-edit={row.original.group.id}
            showTooltip={false}>
            <PencilIcon class="size-4" />
          </IconButton>
          <IconButton
            onClick={() => onDelete(row.original.group)}
            title="Delete Group"
            showTooltip={false}
            class="enabled:text-error enabled:hover:bg-error-container enabled:hover:text-on-error-container">
            <TrashIcon class="size-4" />
          </IconButton>
        </div>

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/pages/DrawerManagementPage/GroupsTabContent.vue Outdated
@jxjj
jxjj marked this pull request as ready for review July 14, 2026 03:30
@jxjj
jxjj requested a review from cmcfadden July 14, 2026 03:30
@jxjj jxjj self-assigned this Jul 14, 2026
@jxjj
jxjj merged commit 28a5f92 into develop Jul 14, 2026
2 checks passed
@jxjj
jxjj deleted the feat/drawer-group-entry-manager-ui branch July 14, 2026 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants