133 lines
5.6 KiB
HTML
133 lines
5.6 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: Bouton Action Utilisateur (WOU/DRY Pattern)
|
|
|
|
Auteur: Lions User Manager
|
|
Version: 1.0.0
|
|
Description: Bouton générique pour actions utilisateur
|
|
|
|
Paramètres:
|
|
- value: String (requis) - Texte du bouton
|
|
- icon: String (optionnel) - Classe d'icône PrimeIcons
|
|
- hasAction: Boolean (défaut: false) - Indique si une action est fournie
|
|
- action: MethodExpression (optionnel) - Action à exécuter (requis si hasAction=true)
|
|
- hasOutcome: Boolean (défaut: false) - Indique si un outcome est fourni
|
|
- outcome: String (optionnel) - Page de redirection (requis si hasOutcome=true)
|
|
- onclick: String (optionnel) - Code JavaScript à exécuter au clic
|
|
- severity: String (défaut: "primary") - Severity: "primary", "success", "warning", "danger", "info", "secondary"
|
|
- size: String (défaut: "normal") - Taille: "small", "normal", "large"
|
|
- disabled: Boolean (défaut: false) - Désactiver le bouton
|
|
- update: String (optionnel) - Composants à mettre à jour
|
|
- process: String (défaut: "@this") - Composants à traiter
|
|
- styleClass: String (optionnel) - Classes CSS supplémentaires
|
|
|
|
Exemples d'utilisation:
|
|
|
|
1. Bouton simple:
|
|
<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>
|
|
|
|
2. Bouton avec redirection:
|
|
<ui:include src="/templates/components/shared/buttons/button-user-action.xhtml">
|
|
<ui:param name="value" value="Voir Profil" />
|
|
<ui:param name="icon" value="pi-eye" />
|
|
<ui:param name="outcome" value="/pages/user-manager/users/profile" />
|
|
</ui:include>
|
|
-->
|
|
|
|
<c:set var="severity" value="#{empty severity ? 'primary' : severity}" />
|
|
<c:set var="size" value="#{empty size ? 'normal' : size}" />
|
|
<c:set var="disabled" value="#{empty disabled ? false : disabled}" />
|
|
<c:set var="process" value="#{empty process ? '@this' : process}" />
|
|
<c:set var="hasAction" value="#{empty hasAction ? false : hasAction}" />
|
|
<c:set var="hasOutcome" value="#{empty hasOutcome ? false : hasOutcome}" />
|
|
|
|
<!-- Déterminer la classe selon la severity -->
|
|
<c:choose>
|
|
<c:when test="#{severity == 'primary'}">
|
|
<c:set var="buttonClass" value="p-button-primary" />
|
|
</c:when>
|
|
<c:when test="#{severity == 'success'}">
|
|
<c:set var="buttonClass" value="p-button-success" />
|
|
</c:when>
|
|
<c:when test="#{severity == 'warning'}">
|
|
<c:set var="buttonClass" value="p-button-warning" />
|
|
</c:when>
|
|
<c:when test="#{severity == 'danger'}">
|
|
<c:set var="buttonClass" value="p-button-danger" />
|
|
</c:when>
|
|
<c:when test="#{severity == 'info'}">
|
|
<c:set var="buttonClass" value="p-button-info" />
|
|
</c:when>
|
|
<c:otherwise>
|
|
<c:set var="buttonClass" value="p-button-secondary" />
|
|
</c:otherwise>
|
|
</c:choose>
|
|
|
|
<!-- Ajouter la taille -->
|
|
<c:if test="#{size == 'small'}">
|
|
<c:set var="buttonClass" value="#{buttonClass} p-button-sm" />
|
|
</c:if>
|
|
<c:if test="#{size == 'large'}">
|
|
<c:set var="buttonClass" value="#{buttonClass} p-button-lg" />
|
|
</c:if>
|
|
|
|
<!-- Ajouter les classes personnalisées -->
|
|
<c:if test="#{not empty styleClass}">
|
|
<c:set var="buttonClass" value="#{buttonClass} #{styleClass}" />
|
|
</c:if>
|
|
|
|
<c:choose>
|
|
<c:when test="#{hasAction}">
|
|
<p:commandButton
|
|
value="#{value}"
|
|
icon="#{not empty icon ? icon : ''}"
|
|
styleClass="#{buttonClass}"
|
|
disabled="#{disabled}"
|
|
action="#{action}"
|
|
update="#{not empty update ? update : '@form'}"
|
|
process="#{process}"
|
|
onclick="#{not empty onclick ? onclick : ''}" />
|
|
</c:when>
|
|
<c:when test="#{hasOutcome}">
|
|
<p:commandButton
|
|
value="#{value}"
|
|
icon="#{not empty icon ? icon : ''}"
|
|
styleClass="#{buttonClass}"
|
|
disabled="#{disabled}"
|
|
outcome="#{outcome}"
|
|
update="#{not empty update ? update : '@form'}"
|
|
process="#{process}"
|
|
onclick="#{not empty onclick ? onclick : ''}" />
|
|
</c:when>
|
|
<c:when test="#{not empty onclick}">
|
|
<p:commandButton
|
|
value="#{value}"
|
|
icon="#{not empty icon ? icon : ''}"
|
|
styleClass="#{buttonClass}"
|
|
disabled="#{disabled}"
|
|
type="button"
|
|
onclick="#{onclick}" />
|
|
</c:when>
|
|
<c:otherwise>
|
|
<p:commandButton
|
|
value="#{value}"
|
|
icon="#{not empty icon ? icon : ''}"
|
|
styleClass="#{buttonClass}"
|
|
disabled="true"
|
|
title="Aucune action définie" />
|
|
</c:otherwise>
|
|
</c:choose>
|
|
|
|
</ui:composition>
|
|
|