From 46e7c22b380dbc4a7314eeba9c1f2013d703953a Mon Sep 17 00:00:00 2001 From: Norman Niati Date: Thu, 4 Jun 2026 15:40:35 +0200 Subject: [PATCH] feat(ui-2026): redistribute the 2026 Identity views into plugin-id The 2026 redesign of the Identity surface (Users, Groups, Companies, Delegates, Container Scopes) was first integrated as part of the host app-ui in #106. Following review feedback, the views and panels are now moved to plugin-id, under the existing file names (UserListView, GroupListView, CompanyListView, DelegateListView, ContainerScopeView, UserEditDialog, DelegateEditDialog) and the four edit panels. Generic 2026 building blocks (VibrantDataTable, VibrantConfirmDialog, AuditDialog, LigojIcon) stay in the host and are imported via @/... The 11 new 2026 i18n keys are added to plugin-id's own bundle (the 60 others were already present, identical); the host bundle keeps them for now (host cleanup deferred to a later lot so #106 stays green). Companion to ligoj#106. --- ui/src/components/CompanyEditPanel.vue | 58 +++- ui/src/components/GroupEditPanel.vue | 62 +++- ui/src/components/GroupMembersDialog.vue | 32 +- ui/src/components/GroupMembersPanel.vue | 168 ++++----- ui/src/i18n/en.js | 13 + ui/src/i18n/fr.js | 13 + ui/src/views/CompanyListView.vue | 365 +++++++++---------- ui/src/views/ContainerScopeView.vue | 273 +++++++++------ ui/src/views/DelegateEditDialog.vue | 78 ++++- ui/src/views/DelegateListView.vue | 305 +++++++--------- ui/src/views/GroupListView.vue | 399 +++++++++------------ ui/src/views/UserEditDialog.vue | 111 ++++-- ui/src/views/UserListView.vue | 423 ++++++++++++----------- 13 files changed, 1198 insertions(+), 1102 deletions(-) diff --git a/ui/src/components/CompanyEditPanel.vue b/ui/src/components/CompanyEditPanel.vue index 0b2e21a..19d3a59 100644 --- a/ui/src/components/CompanyEditPanel.vue +++ b/ui/src/components/CompanyEditPanel.vue @@ -11,7 +11,7 @@ UI; the dialog is informational. The lock status + member count are surfaced as a read-only chip / line item so the view actually shows MORE than the form does, not less. --> - + {{ t('company.demoEdit') }} @@ -79,22 +79,16 @@ - - - mdi-delete {{ t('common.delete') }} - - - - - {{ isEdit ? t('common.close') : t('common.cancel') }} - - - mdi-content-save {{ t('common.save') }} - - +
+ + + + +
import { ref, computed, onMounted, onBeforeUnmount } from 'vue' -import { useApi, useErrorStore, useI18nStore, LigojConfirmDialog } from '@ligoj/host' +import { useApi, useErrorStore, useI18nStore } from '@ligoj/host' import { TYPE_ICONS } from '../composables/delegateTypes.js' +import LigojConfirmDialog from '@/components/VibrantConfirmDialog.vue' const props = defineProps({ /** @@ -309,3 +304,30 @@ async function remove() { opacity: 0.7; } + + diff --git a/ui/src/components/GroupEditPanel.vue b/ui/src/components/GroupEditPanel.vue index 1e827c8..9d970fd 100644 --- a/ui/src/components/GroupEditPanel.vue +++ b/ui/src/components/GroupEditPanel.vue @@ -8,7 +8,7 @@ emits events so the parent can react (close the dialog, refresh the table, …). No router awareness — receives the editing target through the `groupId` prop (null = new). --> - + {{ t('group.demoEdit') }} @@ -55,22 +55,16 @@ - - - mdi-delete {{ t('common.delete') }} - - - - - {{ isEdit ? t('common.close') : t('common.cancel') }} - - - mdi-content-save {{ t('common.save') }} - - +
+ + + + +
import { ref, computed, onMounted } from 'vue' -import { useApi, useErrorStore, useI18nStore, LigojConfirmDialog } from '@ligoj/host' +import { useApi, useErrorStore, useI18nStore } from '@ligoj/host' import { TYPE_ICONS } from '../composables/delegateTypes.js' +import LigojConfirmDialog from '@/components/VibrantConfirmDialog.vue' const props = defineProps({ /** @@ -288,3 +283,34 @@ async function remove() { } } + + diff --git a/ui/src/components/GroupMembersDialog.vue b/ui/src/components/GroupMembersDialog.vue index f1e8d27..077221b 100644 --- a/ui/src/components/GroupMembersDialog.vue +++ b/ui/src/components/GroupMembersDialog.vue @@ -9,20 +9,13 @@ — GroupListView's row action and the host's subscription-row buttons (returned by `service.renderFeatures`) both call it. --> - - - mdi-account-group - - {{ t('id.group.manageTitle') }} - {{ groupName }} - - - mdi-close - - - + +
+ mdi-account-multiple +

{{ t('id.group.manageTitle') }} {{ groupName }}

+ +
+ -
- - - - - - {{ t('id.group.add') }} - - - - - - - +
+ +
+ + +
+ + + + {{ dt.error.value === 'internal' ? t('user.noProviderMsg') : dt.error.value }} - - - - -