feat(client): Ajout de Composite Component action-button-view et correction bouton voir profil

- Creation de action-button-view.xhtml comme Composite Component
- Attributs: id, detailPage, styleClass, iconOnly
- Support mode icone seule (iconOnly=true) ou avec texte (iconOnly=false)
- Application dans liste.xhtml des membres pour le bouton Voir profil

Le bouton Voir profil fonctionne maintenant correctement avec navigation vers profil.xhtml

Composite Components = Solution DRY/WOU qui fonctionne en JSF!
This commit is contained in:
dahoud
2025-11-29 22:32:47 +00:00
parent 7e9b1c0bdb
commit 12f0b95587
2 changed files with 27 additions and 6 deletions

View File

@@ -4,6 +4,7 @@
xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui" xmlns:p="http://primefaces.org/ui"
xmlns:uf="http://xmlns.jcp.org/jsf/composite/components"
template="/templates/main-template.xhtml"> template="/templates/main-template.xhtml">
<ui:define name="title">Liste des Membres - UnionFlow</ui:define> <ui:define name="title">Liste des Membres - UnionFlow</ui:define>
@@ -190,12 +191,10 @@
<p:column headerText="Actions" style="width:200px"> <p:column headerText="Actions" style="width:200px">
<div class="flex gap-1"> <div class="flex gap-1">
<ui:include src="/templates/components/buttons/button-icon.xhtml"> <!-- DRY/WOU: Composite Component action-button-view -->
<ui:param name="icon" value="pi pi-eye" /> <uf:action-button-view id="#{membre.id}"
<ui:param name="action" value="#{membreListeBean.voirProfil(membre)}" /> detailPage="/pages/secure/membre/profil.xhtml"
<ui:param name="title" value="Voir profil" /> iconOnly="true"/>
<ui:param name="severity" value="info" />
</ui:include>
<ui:include src="/templates/components/buttons/button-icon.xhtml"> <ui:include src="/templates/components/buttons/button-icon.xhtml">
<ui:param name="icon" value="pi pi-pencil" /> <ui:param name="icon" value="pi pi-pencil" />
<ui:param name="action" value="#{membreListeBean.modifierMembre(membre)}" /> <ui:param name="action" value="#{membreListeBean.modifierMembre(membre)}" />

View File

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:composite="http://xmlns.jcp.org/jsf/composite"
xmlns:p="http://primefaces.org/ui">
<composite:interface>
<composite:attribute name="id" type="java.lang.String" required="true"/>
<composite:attribute name="detailPage" type="java.lang.String" required="true"/>
<composite:attribute name="styleClass" type="java.lang.String" required="false" default=""/>
<composite:attribute name="iconOnly" type="java.lang.Boolean" required="false" default="false"/>
</composite:interface>
<composite:implementation>
<p:commandButton value="#{cc.attrs.iconOnly ? null : 'Consulter'}"
icon="pi pi-search"
title="Consulter"
styleClass="ui-button-rounded #{cc.attrs.iconOnly ? '' : 'ui-button-text'} ui-button-info #{cc.attrs.styleClass}"
onclick="window.location='#{request.contextPath}#{cc.attrs.detailPage}?id=#{cc.attrs.id}';return false;"/>
</composite:implementation>
</html>