106 lines
4.2 KiB
HTML
106 lines
4.2 KiB
HTML
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
|
xmlns:f="http://xmlns.jcp.org/jsf/core"
|
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
|
|
xmlns:p="http://primefaces.org/ui"
|
|
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
|
|
|
|
<!--
|
|
Composant réutilisable: Badge de Rôle Utilisateur (WOU/DRY Pattern)
|
|
|
|
Auteur: Lions User Manager
|
|
Version: 1.0.0
|
|
Description: Affiche un badge pour un rôle utilisateur avec icône et couleur
|
|
|
|
Paramètres:
|
|
- roleName: String (requis) - Nom du rôle
|
|
- roleType: String (optionnel) - Type de rôle: "REALM_ROLE", "CLIENT_ROLE", "COMPOSITE_ROLE"
|
|
- severity: String (optionnel) - Severity PrimeFaces: "success", "info", "warning", "danger" (défaut: "info")
|
|
- showIcon: Boolean (défaut: true) - Afficher l'icône
|
|
- icon: String (optionnel) - Classe d'icône PrimeIcons (défaut: "pi-shield")
|
|
- size: String (optionnel) - Taille: "small", "normal", "large" (défaut: "normal")
|
|
- clickable: Boolean (défaut: false) - Rendre le badge cliquable
|
|
- clickAction: String (optionnel) - Action au clic
|
|
- styleClass: String (optionnel) - Classes CSS supplémentaires
|
|
|
|
Exemples d'utilisation:
|
|
|
|
1. Badge simple:
|
|
<ui:include src="/templates/components/user-management/user-role-badge.xhtml">
|
|
<ui:param name="roleName" value="ADMIN" />
|
|
</ui:include>
|
|
|
|
2. Badge avec type:
|
|
<ui:include src="/templates/components/user-management/user-role-badge.xhtml">
|
|
<ui:param name="roleName" value="USER" />
|
|
<ui:param name="roleType" value="REALM_ROLE" />
|
|
<ui:param name="severity" value="success" />
|
|
</ui:include>
|
|
|
|
3. Badge cliquable:
|
|
<ui:include src="/templates/components/user-management/user-role-badge.xhtml">
|
|
<ui:param name="roleName" value="MODERATOR" />
|
|
<ui:param name="clickable" value="true" />
|
|
<ui:param name="clickAction" value="#{roleBean.viewRole(roleName)}" />
|
|
</ui:include>
|
|
-->
|
|
|
|
<c:set var="showIcon" value="#{empty showIcon ? true : showIcon}" />
|
|
<c:set var="size" value="#{empty size ? 'normal' : size}" />
|
|
<c:set var="clickable" value="#{empty clickable ? false : clickable}" />
|
|
<c:set var="severity" value="#{empty severity ? 'info' : severity}" />
|
|
<c:set var="icon" value="#{empty icon ? 'pi-shield' : icon}" />
|
|
|
|
<!-- Déterminer la severity selon le type de rôle -->
|
|
<c:choose>
|
|
<c:when test="#{roleType == 'REALM_ROLE'}">
|
|
<c:set var="severity" value="success" />
|
|
</c:when>
|
|
<c:when test="#{roleType == 'CLIENT_ROLE'}">
|
|
<c:set var="severity" value="info" />
|
|
</c:when>
|
|
<c:when test="#{roleType == 'COMPOSITE_ROLE'}">
|
|
<c:set var="severity" value="warning" />
|
|
</c:when>
|
|
</c:choose>
|
|
|
|
<!-- Déterminer la taille -->
|
|
<c:choose>
|
|
<c:when test="#{size == 'small'}">
|
|
<c:set var="tagStyleClass" value="text-xs" />
|
|
</c:when>
|
|
<c:when test="#{size == 'large'}">
|
|
<c:set var="tagStyleClass" value="text-base" />
|
|
</c:when>
|
|
<c:otherwise>
|
|
<c:set var="tagStyleClass" value="text-sm" />
|
|
</c:otherwise>
|
|
</c:choose>
|
|
|
|
<c:choose>
|
|
<!-- Badge cliquable -->
|
|
<c:when test="#{clickable and not empty clickAction}">
|
|
<p:commandLink
|
|
styleClass="role-badge-link"
|
|
action="#{clickAction}">
|
|
<p:tag
|
|
value="#{roleName}"
|
|
severity="#{severity}"
|
|
icon="#{showIcon ? icon : ''}"
|
|
styleClass="#{tagStyleClass} #{styleClass}" />
|
|
</p:commandLink>
|
|
</c:when>
|
|
|
|
<!-- Badge simple -->
|
|
<c:otherwise>
|
|
<p:tag
|
|
value="#{roleName}"
|
|
severity="#{severity}"
|
|
icon="#{showIcon ? icon : ''}"
|
|
styleClass="#{tagStyleClass} #{styleClass}" />
|
|
</c:otherwise>
|
|
</c:choose>
|
|
|
|
</ui:composition>
|
|
|