From 7c2e570fa0250775ac9492c5cd434c7c51be4567 Mon Sep 17 00:00:00 2001 From: tristan Date: Wed, 27 May 2026 16:53:06 +0200 Subject: [PATCH] feat(front) : maj @malio/layer-ui 1.7.1 et refonte des drawers - adaptation a l'API MalioDrawer 1.7 (titre via slot #header, footer frere du body scrollable) - footer fixe : boutons 150px, justify-between, bordures header/footer - permissions en accordeon Malio par module (RoleDrawer + UserRbacDrawer) - cases a cocher sur une seule colonne - suppression de PermissionGroup, devenu inutilise Ajustements restants (layers/titres) a suivre. --- .../core/components/PermissionGroup.vue | 66 ---------- .../modules/core/components/RoleDrawer.vue | 117 ++++++++++++------ .../core/components/UserRbacDrawer.vue | 98 +++++++++++---- .../modules/core/pages/admin/audit-log.vue | 6 +- .../modules/sites/components/SiteDrawer.vue | 61 +++++---- frontend/package-lock.json | 8 +- frontend/package.json | 2 +- 7 files changed, 198 insertions(+), 160 deletions(-) delete mode 100644 frontend/modules/core/components/PermissionGroup.vue diff --git a/frontend/modules/core/components/PermissionGroup.vue b/frontend/modules/core/components/PermissionGroup.vue deleted file mode 100644 index 8eb589f..0000000 --- a/frontend/modules/core/components/PermissionGroup.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - diff --git a/frontend/modules/core/components/RoleDrawer.vue b/frontend/modules/core/components/RoleDrawer.vue index cc76aaa..04f04c1 100644 --- a/frontend/modules/core/components/RoleDrawer.vue +++ b/frontend/modules/core/components/RoleDrawer.vue @@ -1,11 +1,17 @@ @@ -124,6 +156,19 @@ const form = ref({ const selectedPermissionIds = ref(new Set()) +// Modules ouverts dans l'accordeon des permissions (mode multiple) +const openModules = ref([]) + +// Nombre de permissions selectionnees pour un module donne +function selectedCountFor(group: PermissionModule): number { + return group.permissions.filter(p => selectedPermissionIds.value.has(p.id)).length +} + +// Vrai si toutes les permissions du module sont selectionnees +function allSelectedFor(group: PermissionModule): boolean { + return group.permissions.length > 0 && selectedCountFor(group) === group.permissions.length +} + const isEditMode = computed(() => props.role !== null) // Grouper les permissions par module diff --git a/frontend/modules/core/components/UserRbacDrawer.vue b/frontend/modules/core/components/UserRbacDrawer.vue index 54b194d..e0f5640 100644 --- a/frontend/modules/core/components/UserRbacDrawer.vue +++ b/frontend/modules/core/components/UserRbacDrawer.vue @@ -1,11 +1,17 @@ @@ -158,6 +189,19 @@ const selectedRoleIds = ref(new Set()) const selectedDirectPermissionIds = ref(new Set()) const selectedSiteIds = ref(new Set()) +// Modules ouverts dans l'accordeon des permissions directes (mode multiple) +const openDirectModules = ref([]) + +// Nombre de permissions directes selectionnees pour un module donne +function directSelectedCount(group: PermissionModule): number { + return group.permissions.filter(p => selectedDirectPermissionIds.value.has(p.id)).length +} + +// Vrai si toutes les permissions directes du module sont selectionnees +function directAllSelected(group: PermissionModule): boolean { + return group.permissions.length > 0 && directSelectedCount(group) === group.permissions.length +} + // Detecter l'auto-edition const isSelfEdit = computed(() => props.user?.id === auth.user?.id) diff --git a/frontend/modules/core/pages/admin/audit-log.vue b/frontend/modules/core/pages/admin/audit-log.vue index 3103816..d1ac784 100644 --- a/frontend/modules/core/pages/admin/audit-log.vue +++ b/frontend/modules/core/pages/admin/audit-log.vue @@ -126,9 +126,13 @@ +
diff --git a/frontend/modules/sites/components/SiteDrawer.vue b/frontend/modules/sites/components/SiteDrawer.vue index 86fd26e..87b2dea 100644 --- a/frontend/modules/sites/components/SiteDrawer.vue +++ b/frontend/modules/sites/components/SiteDrawer.vue @@ -1,11 +1,17 @@ diff --git a/frontend/package-lock.json b/frontend/package-lock.json index b00bb01..cf060ff 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -7,7 +7,7 @@ "name": "starseed-frontend", "hasInstallScript": true, "dependencies": { - "@malio/layer-ui": "^1.5.0", + "@malio/layer-ui": "^1.7.1", "@nuxt/icon": "^2.2.1", "@nuxtjs/i18n": "^10.2.3", "@nuxtjs/tailwindcss": "^6.14.0", @@ -1866,9 +1866,9 @@ "license": "MIT" }, "node_modules/@malio/layer-ui": { - "version": "1.5.0", - "resolved": "https://gitea.malio.fr/api/packages/MALIO-DEV/npm/%40malio%2Flayer-ui/-/1.5.0/layer-ui-1.5.0.tgz", - "integrity": "sha512-uVuG8kRakWgpWYQCMUf1LFD+gjx0iRFfNJn/jlqjxiZmZyGZMckcMW2qA9hGZBiheBsTJWw1pRR4ufuyAYPY0A==", + "version": "1.7.1", + "resolved": "https://gitea.malio.fr/api/packages/MALIO-DEV/npm/%40malio%2Flayer-ui/-/1.7.1/layer-ui-1.7.1.tgz", + "integrity": "sha512-RYMMappWt/fgjD+BM7//h2O6kxD6WH9Fui8hoC29xtKySRQsqD61XKTdR7BRRkpktbxKmV39q/hblyAFBqV5yw==", "dependencies": { "@nuxt/icon": "^2.2.1", "@nuxtjs/tailwindcss": "^6.14.0", diff --git a/frontend/package.json b/frontend/package.json index 38380ff..6cf10d8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -17,7 +17,7 @@ "test:e2e:ui": "playwright test --ui" }, "dependencies": { - "@malio/layer-ui": "^1.5.0", + "@malio/layer-ui": "^1.7.1", "@nuxt/icon": "^2.2.1", "@nuxtjs/i18n": "^10.2.3", "@nuxtjs/tailwindcss": "^6.14.0",