Update - Lions User Manager - Client (Quarkus PrimeFaces Freya)

This commit is contained in:
dahoud
2025-12-06 22:07:05 +00:00
parent 53ea02ccad
commit 51d087e5be
189 changed files with 38558 additions and 1 deletions

View File

@@ -0,0 +1,399 @@
# 📦 Composants Réutilisables - Lions User Manager
**Version**: 1.0.0
**Date**: 2025-01-29
**Pattern**: WOU/DRY (Write Once Use / Don't Repeat Yourself)
---
## 🎯 Vue d'Ensemble
Ce répertoire contient tous les composants UI réutilisables pour le module **lions-user-manager**. Ces composants suivent les patterns établis dans **unionflow** et peuvent être utilisés dans n'importe quel projet de l'écosystème **lionsdev**.
---
## 📂 Structure des Composants
```
templates/components/
├── user-management/ # Composants spécifiques utilisateurs
│ ├── user-card.xhtml
│ ├── user-form.xhtml
│ ├── user-search-bar.xhtml
│ ├── user-actions.xhtml
│ └── user-role-badge.xhtml
├── role-management/ # Composants spécifiques rôles
│ ├── role-card.xhtml
│ ├── role-form.xhtml
│ └── role-assignment.xhtml
├── audit/ # Composants audit
│ ├── audit-log-row.xhtml
│ └── audit-stats-card.xhtml
└── shared/ # Composants génériques réutilisables
├── buttons/
│ └── button-user-action.xhtml
├── cards/
│ └── user-stat-card.xhtml
├── forms/
│ └── user-form-field.xhtml
└── tables/
└── user-data-table.xhtml
```
---
## 📋 Liste Complète des Composants
### 👤 User Management (5 composants)
#### 1. `user-card.xhtml`
**Description**: Carte utilisateur avec informations principales et actions
**Paramètres principaux**:
- `user`: UserDTO (requis)
- `showActions`: Boolean (défaut: true)
- `showRoles`: Boolean (défaut: true)
- `clickable`: Boolean (défaut: true)
- `outcome`: String (optionnel)
**Exemple**:
```xhtml
<ui:include src="/templates/components/user-management/user-card.xhtml">
<ui:param name="user" value="#{userBean.selectedUser}" />
<ui:param name="showActions" value="true" />
</ui:include>
```
#### 2. `user-form.xhtml`
**Description**: Formulaire complet pour créer/modifier un utilisateur
**Paramètres principaux**:
- `user`: UserDTO (requis)
- `mode`: String (défaut: "create") - "create" ou "edit"
- `showRealmSelector`: Boolean (défaut: false)
- `showPasswordFields`: Boolean (défaut: true)
- `readonly`: Boolean (défaut: false)
**Exemple**:
```xhtml
<ui:include src="/templates/components/user-management/user-form.xhtml">
<ui:param name="user" value="#{userBean.newUser}" />
<ui:param name="mode" value="create" />
<ui:param name="submitAction" value="#{userBean.createUser}" />
</ui:include>
```
#### 3. `user-search-bar.xhtml`
**Description**: Barre de recherche avancée pour utilisateurs
**Paramètres principaux**:
- `searchCriteria`: UserSearchCriteriaDTO (requis)
- `searchAction`: String (requis)
- `showAdvanced`: Boolean (défaut: false)
- `showRealmFilter`: Boolean (défaut: true)
- `showStatusFilter`: Boolean (défaut: true)
**Exemple**:
```xhtml
<ui:include src="/templates/components/user-management/user-search-bar.xhtml">
<ui:param name="searchCriteria" value="#{userBean.searchCriteria}" />
<ui:param name="searchAction" value="#{userBean.search}" />
<ui:param name="update" value="userTable" />
</ui:include>
```
#### 4. `user-actions.xhtml`
**Description**: Boutons d'action pour un utilisateur
**Paramètres principaux**:
- `user`: UserDTO (requis)
- `showView`: Boolean (défaut: true)
- `showEdit`: Boolean (défaut: true)
- `showDelete`: Boolean (défaut: true)
- `showActivate`: Boolean (défaut: true)
- `layout`: String (défaut: "horizontal") - "horizontal", "vertical" ou "dropdown"
**Exemple**:
```xhtml
<ui:include src="/templates/components/user-management/user-actions.xhtml">
<ui:param name="user" value="#{user}" />
<ui:param name="layout" value="dropdown" />
<ui:param name="update" value="userTable" />
</ui:include>
```
#### 5. `user-role-badge.xhtml`
**Description**: Badge pour un rôle utilisateur
**Paramètres principaux**:
- `roleName`: String (requis)
- `roleType`: String (optionnel) - "REALM_ROLE", "CLIENT_ROLE", "COMPOSITE_ROLE"
- `severity`: String (optionnel) - "success", "info", "warning", "danger"
- `clickable`: Boolean (défaut: false)
**Exemple**:
```xhtml
<ui:include src="/templates/components/user-management/user-role-badge.xhtml">
<ui:param name="roleName" value="ADMIN" />
<ui:param name="roleType" value="REALM_ROLE" />
</ui:include>
```
---
### 🛡️ Role Management (3 composants)
#### 6. `role-card.xhtml`
**Description**: Carte rôle avec informations principales
**Paramètres principaux**:
- `role`: RoleDTO (requis)
- `showActions`: Boolean (défaut: true)
- `showDescription`: Boolean (défaut: true)
- `showCompositeInfo`: Boolean (défaut: true)
**Exemple**:
```xhtml
<ui:include src="/templates/components/role-management/role-card.xhtml">
<ui:param name="role" value="#{roleBean.selectedRole}" />
</ui:include>
```
#### 7. `role-form.xhtml`
**Description**: Formulaire pour créer/modifier un rôle
**Paramètres principaux**:
- `role`: RoleDTO (requis)
- `mode`: String (défaut: "create")
- `showRealmSelector`: Boolean (défaut: true)
- `showClientSelector`: Boolean (défaut: false)
- `showCompositeOptions`: Boolean (défaut: true)
**Exemple**:
```xhtml
<ui:include src="/templates/components/role-management/role-form.xhtml">
<ui:param name="role" value="#{roleBean.newRole}" />
<ui:param name="mode" value="create" />
<ui:param name="submitAction" value="#{roleBean.createRole}" />
</ui:include>
```
#### 8. `role-assignment.xhtml`
**Description**: Interface pour attribuer/révoquer des rôles
**Paramètres principaux**:
- `user`: UserDTO (requis)
- `availableRoles`: List<RoleDTO> (requis)
- `userRoles`: List<RoleDTO> (requis)
- `assignAction`: String (requis)
- `revokeAction`: String (requis)
**Exemple**:
```xhtml
<ui:include src="/templates/components/role-management/role-assignment.xhtml">
<ui:param name="user" value="#{userBean.selectedUser}" />
<ui:param name="availableRoles" value="#{roleBean.availableRoles}" />
<ui:param name="userRoles" value="#{userBean.userRoles}" />
<ui:param name="assignAction" value="#{roleBean.assignRole}" />
<ui:param name="revokeAction" value="#{roleBean.revokeRole}" />
</ui:include>
```
---
### 📊 Audit (2 composants)
#### 9. `audit-log-row.xhtml`
**Description**: Ligne de log d'audit avec informations détaillées
**Paramètres principaux**:
- `auditLog`: AuditLogDTO (requis)
- `showDetails`: Boolean (défaut: false)
- `showActions`: Boolean (défaut: false)
- `compact`: Boolean (défaut: false)
**Exemple**:
```xhtml
<ui:include src="/templates/components/audit/audit-log-row.xhtml">
<ui:param name="auditLog" value="#{log}" />
<ui:param name="showDetails" value="true" />
</ui:include>
```
#### 10. `audit-stats-card.xhtml`
**Description**: Carte statistiques d'audit
**Paramètres principaux**:
- `title`: String (requis)
- `value`: Number (requis)
- `icon`: String (requis)
- `iconColor`: String (requis)
- `trend`: Number (optionnel)
- `trendLabel`: String (optionnel)
**Exemple**:
```xhtml
<ui:include src="/templates/components/audit/audit-stats-card.xhtml">
<ui:param name="title" value="Total Actions" />
<ui:param name="value" value="#{auditBean.totalActions}" />
<ui:param name="icon" value="pi-history" />
<ui:param name="iconColor" value="blue-600" />
</ui:include>
```
---
### 🔧 Shared Components (4 composants)
#### 11. `button-user-action.xhtml`
**Description**: Bouton générique pour actions utilisateur
**Paramètres principaux**:
- `value`: String (requis)
- `icon`: String (optionnel)
- `action`: String (optionnel)
- `outcome`: String (optionnel)
- `severity`: String (défaut: "primary")
- `size`: String (défaut: "normal")
**Exemple**:
```xhtml
<ui:include src="/templates/components/shared/buttons/button-user-action.xhtml">
<ui:param name="value" value="Créer Utilisateur" />
<ui:param name="icon" value="pi-user-plus" />
<ui:param name="action" value="#{userBean.createUser}" />
</ui:include>
```
#### 12. `user-stat-card.xhtml`
**Description**: Carte statistique utilisateur
**Paramètres principaux**:
- `title`: String (requis)
- `value`: String/Number (requis)
- `icon`: String (requis)
- `iconColor`: String (requis)
- `trend`: Number (optionnel)
- `clickable`: Boolean (défaut: false)
**Exemple**:
```xhtml
<ui:include src="/templates/components/shared/cards/user-stat-card.xhtml">
<ui:param name="title" value="Total Utilisateurs" />
<ui:param name="value" value="#{userBean.totalUsers}" />
<ui:param name="icon" value="pi-users" />
<ui:param name="iconColor" value="blue-600" />
</ui:include>
```
#### 13. `user-form-field.xhtml`
**Description**: Champ de formulaire générique
**Paramètres principaux**:
- `id`: String (requis)
- `label`: String (requis)
- `value`: Object (requis)
- `type`: String (défaut: "text") - "text", "email", "password", "number", "textarea", "select", "checkbox", "calendar"
- `required`: Boolean (défaut: false)
- `readonly`: Boolean (défaut: false)
**Exemple**:
```xhtml
<ui:include src="/templates/components/shared/forms/user-form-field.xhtml">
<ui:param name="id" value="username" />
<ui:param name="label" value="Nom d'utilisateur" />
<ui:param name="value" value="#{user.username}" />
<ui:param name="required" value="true" />
</ui:include>
```
#### 14. `user-data-table.xhtml`
**Description**: Tableau de données pour utilisateurs
**Paramètres principaux**:
- `users`: List<UserDTO> (requis)
- `var`: String (défaut: "user")
- `paginator`: Boolean (défaut: true)
- `rows`: Number (défaut: 20)
- `showActions`: Boolean (défaut: true)
- `showRoles`: Boolean (défaut: true)
- `showSelection`: Boolean (défaut: false)
**Exemple**:
```xhtml
<ui:include src="/templates/components/shared/tables/user-data-table.xhtml">
<ui:param name="users" value="#{userBean.users}" />
<ui:param name="update" value="userTable" />
</ui:include>
```
---
## 🎨 Patterns et Conventions
### Documentation Inline
Chaque composant contient une documentation complète en commentaire avec:
- Description du composant
- Liste des paramètres avec types et valeurs par défaut
- Exemples d'utilisation
### Paramètres Optionnels
Tous les paramètres optionnels ont des valeurs par défaut définies avec `<c:set>`.
### Pattern WOU/DRY
- **Write Once Use**: Chaque composant est écrit une fois et réutilisé partout
- **Don't Repeat Yourself**: Pas de duplication de code
### Naming Convention
- Noms de fichiers en `kebab-case`
- Paramètres en `camelCase`
- IDs de composants avec préfixe cohérent
---
## 🚀 Utilisation dans d'Autres Projets
Ces composants peuvent être utilisés dans n'importe quel projet de l'écosystème **lionsdev** en ajoutant la dépendance Maven:
```xml
<dependency>
<groupId>dev.lions.user.manager</groupId>
<artifactId>lions-user-manager-client-quarkus-primefaces-freya</artifactId>
<version>1.0.0</version>
</dependency>
```
Puis inclure les composants dans vos pages XHTML:
```xhtml
<ui:include src="/templates/components/user-management/user-card.xhtml">
<ui:param name="user" value="#{userBean.selectedUser}" />
</ui:include>
```
---
## 📝 Notes Importantes
1. **Dépendances**: Tous les composants nécessitent PrimeFaces 14.0.5+ et Quarkus PrimeFaces 3.13.3+
2. **Thème**: Les composants utilisent le thème Freya (compatible avec unionflow)
3. **Validation**: Les composants de formulaire incluent la validation JSF
4. **Accessibilité**: Les composants suivent les bonnes pratiques d'accessibilité
---
## 🔄 Maintenance
Pour ajouter un nouveau composant:
1. Créer le fichier dans le répertoire approprié
2. Suivre le pattern de documentation inline
3. Ajouter des exemples d'utilisation
4. Mettre à jour ce README
---
**Dernière mise à jour**: 2025-01-29
**Version**: 1.0.0
**Auteur**: Lions User Manager Team