Skip to content

feat(user): polish list + edit dialog + harmonized confirmations (D1+D2+D4)#39

Merged
fdaugan merged 1 commit into
feature/vuejsfrom
norman/feat-polish-user
May 27, 2026
Merged

feat(user): polish list + edit dialog + harmonized confirmations (D1+D2+D4)#39
fdaugan merged 1 commit into
feature/vuejsfrom
norman/feat-polish-user

Conversation

@Terracosmos
Copy link
Copy Markdown
Collaborator

Contexte

Trois améliorations sur l'écran Utilisateurs :

  • D1 — aligner les engrenages d'action dans UserListView
  • D2 — nom (ou nombre) en gras+rouge dans toutes les confirmations sensibles
  • D4 — emails traités comme une liste (corrige aussi un bug latent)

Détail des changements

D1 — Alignement des engrenages

  • UserListView.vue : colonne actions en align: 'end' et bouton de ligne en size="x-small" pour matcher exactement le bouton de menu de la table (qui sert d'engrenage de configuration). Le décalage venait du fait que le menu de table utilise size="x-small" alors que les boutons de ligne étaient en size="small".
  • Colonne locked (Statut) en align: 'center' pour centrer le header au-dessus des cadenas.

D2 — Confirmations en gras+rouge via le slot rich content de LigojConfirmDialog

Endroit Pattern initial Après
UserListView deleteDialog inline <v-dialog> avec strong text-error LigojConfirmDialog + slot
UserListView actionDialog (lock/isolate/reset) inline <v-dialog>, monolithic user.<action>Confirm + {id} LigojConfirmDialog + slot, fragments Before/After
UserListView bulkDelete inline <v-dialog> + monolithic message LigojConfirmDialog + slot, count en gras+rouge
UserEditDialog confirmDelete déjà au pattern, no-op
UserEditDialog actionDialog :message= monolithique LigojConfirmDialog + slot, fragments Before/After
GroupMembersView removeDialog :message= monolithique LigojConfirmDialog + slot
CompanyEditView, GroupEditView déjà au pattern, no-op

D4 — Emails comme liste

  • UserListView slot #item.mails : v-chip pour chaque mail, limité à 2 + indicateur +N si l'utilisateur en a plus.
  • UserEditDialog : form.mail: ''form.mails: []. Champ texte remplacé par v-combobox + multiple + chips + closable-chips. Hint i18n Press Enter or Tab to confirm each email. Fallback string→array au load pour tolérer un payload legacy.
  • Bug corrigé : avant, le payload envoyait mail: form.value.mail (singulier) — seul le 1er email était sauvegardé, les autres perdus.

i18n (plugin-id, FR + EN)

  • 5 paires de fragments pour les actions sensibles utilisateur : user.{lock,unlock,isolate,restore,resetPassword}ConfirmBefore/After
  • 1 paire pour le retrait de membre : id.group.removeConfirmBefore/After (et suppression de la clé monolithique id.group.removeConfirm)
  • 1 paire pour le bulk delete (surcharge locale, le host garde common.bulkDeleteConfirm intact) : common.bulkDeleteConfirmBefore/After
  • 1 nouvelle clé user.emailHint pour le combobox

Out of scope

Test plan

  • npm run build → 28 modules, 115 kB JS
  • vitest run → 14/14
  • mvn install -DskipTests → BUILD SUCCESS
  • Smoke test UI :
    • D1 : engrenages alignés à droite et Statut centré au-dessus des cadenas
    • D2 : nom en gras+rouge sur lock/unlock/isolate/restore/reset déclenchés depuis la liste et depuis la popup d'édition, sur delete simple, et nombre en gras+rouge sur bulk delete
    • D4 : chips mail dans la liste, combobox multi-email dans la popup, mails préchargés correctement en édition

- D1: align action gears (UserListView column actions -> align: end,
  row gear sized x-small to match the table tools gear in the header).
  Status column header centered above the lock icons.
- D2: bold+red name in all sensitive confirmations
  (lock/unlock/isolate/restore/resetPassword + delete) across
  UserListView, UserEditDialog (in-popup action menu) and
  GroupMembersView, using the LigojConfirmDialog default slot.
  Bulk-delete count also rendered bold+red via two plugin-local
  fragments. CompanyEditView and GroupEditView already follow the
  pattern, no-op there.
- D4: emails as a list (v-chip in UserListView + v-combobox multiple
  in UserEditDialog). Fixes a latent bug where editing a user with
  multiple emails would drop all but the first at save time.

Note: the equivalent upgrade on DelegateEditDialog (introduced by
PR #35) is intentionally deferred to a follow-up mini-commit once
#35 has merged, to keep the two PRs independent.
@sonarqubecloud
Copy link
Copy Markdown

@sonarqubecloud
Copy link
Copy Markdown

@Terracosmos Terracosmos requested a review from fdaugan May 27, 2026 14:23
Terracosmos added a commit that referenced this pull request May 27, 2026
Both delete dialogs of the Delegate screen now render the receiver
name in <strong class="text-error"> via the LigojConfirmDialog
default slot, matching the pattern of PR #39 for User / Company /
Group / GroupMembers:

- DelegateListView: the trash-icon dialog from each row (inline
  <v-dialog> converted to LigojConfirmDialog + slot)
- DelegateEditDialog: the "Delete" button inside the edit popup
  (existing LigojConfirmDialog with :message= switched to the slot)

The host's monolithic delegate.deleteConfirm key stays intact; two
plugin-local fragments (delegate.deleteConfirmBefore/After) are
added in FR + EN to wrap the name.

Mini-commit deliberately split from PR #39 because the Delegate
dialog files did not exist on feature/vuejs until PR #35 was merged.

Closes #37
@fdaugan fdaugan merged commit 1f5457c into feature/vuejs May 27, 2026
4 of 5 checks passed
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.

2 participants