Files
lions-user-manager-client-q…/target/classes/META-INF/resources/templates/components/user-management/user-role-badge.xhtml

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>