# Guide d'Utilisation - Freya avec PrimeFaces **Version** : Freya 5.0.0 + PrimeFaces 14.0.0 **Date** : 2025-12-25 **Sources** : Documentation officielle Freya et exemples --- ## 🎯 Introduction Ce guide montre comment utiliser les composants **PrimeFaces standards** avec le thème **Freya** dans vos applications Quarkus, basé sur les exemples officiels de Freya 5.0.0. **Important** : Freya est un **thème CSS** pour PrimeFaces, pas une bibliothèque de composants. Vous utilisez les composants PrimeFaces standards (`p:inputText`, `p:dataTable`, etc.) avec les classes CSS de Freya. --- ## 📦 Installation ### 1. Dépendances Maven ```xml dev.lions primefaces-freya-extension 1.0.0-SNAPSHOT ``` Cette extension fournit : - ✅ Thème Freya - ✅ Templates de layout - ✅ Composant `FreyaMenu` - ✅ Bean `GuestPreferences` ### 2. Configuration **application.properties** : ```properties primefaces.THEME=freya primefaces.FONT_AWESOME=true primefaces.CLIENT_SIDE_VALIDATION=true primefaces.MOVE_SCRIPTS_TO_BOTTOM=true ``` --- ## 🎨 Classes CSS Freya ### Layout Classes (PrimeFlex) Freya utilise **PrimeFlex** pour le layout : ```xml
``` **Classes principales** : - `grid` - Conteneur grille - `col-{n}` - Colonnes (1-12) - `md:col-{n}`, `lg:col-{n}` - Breakpoints responsive - `card` - Carte Freya avec ombre et border-radius - `ui-fluid` - Inputs 100% width ### Form Classes **Pattern Field** (recommandé) : ```xml
``` **Grid Formgrid** : ```xml
``` **Float Label** : ```xml ``` ### Icons in Inputs ```xml ``` --- ## 📝 Composants de Formulaire ### InputText **Basique** : ```xml ``` **Avec field pattern** : ```xml
``` **Disabled / Erreur** : ```xml ``` ### InputTextarea ```xml
``` ### SelectOneMenu (Dropdown) ```xml
``` **Avec filtre** : ```xml ``` ### Calendar (DatePicker) ```xml
``` ### SelectManyCheckbox ```xml
``` ### SelectOneRadio ```xml
``` --- ## 📊 Composants de Données ### DataTable **Basique** : ```xml ``` **Complet (Pattern Freya CRUD)** : ```xml
Gestion des Données
``` --- ## 🗂️ Composants Panel ### Dialog **Basique** : ```xml ``` **Avec formulaire et footer** : ```xml
``` ### Panel ```xml

Contenu du panel...

``` ### AccordionPanel ```xml

Contenu de la section 1...

Contenu de la section 2...

``` --- ## 🔘 Composants Button ### CommandButton **Basique** : ```xml ``` **Avec icône** : ```xml ``` **Avec styles Freya** : ```xml ``` **Groupe de boutons** : ```xml ``` --- ## 💬 Composants Message ### Message (pour un champ) ```xml
``` ### Messages (tous les messages) ```xml ``` ### Growl (notifications toast) ```xml ``` **Dans le bean** : ```java public void save() { // Logic... FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Succès", "Données sauvegardées avec succès")); } ``` --- ## 📐 Patterns de Layout ### Page Complète avec Card ```xml Ma Page
Titre

Contenu...

``` ### Deux Colonnes ```xml
Colonne Gauche
Colonne Droite
``` ### Formulaire Complet ```xml
Nouvel Utilisateur
``` --- ## 🎨 Composant FreyaMenu **Usage** : ```xml ``` **Bean** : ```java @Named @SessionScoped public class MenuBean implements Serializable { private MenuModel model; @PostConstruct public void init() { model = new DefaultMenuModel(); DefaultMenuItem item1 = DefaultMenuItem.builder() .value("Dashboard") .icon("pi pi-home") .outcome("/dashboard.xhtml") .build(); model.getElements().add(item1); DefaultSubMenu subMenu = DefaultSubMenu.builder() .label("Gestion") .icon("pi pi-cog") .build(); DefaultMenuItem subItem = DefaultMenuItem.builder() .value("Utilisateurs") .outcome("/users/list.xhtml") .build(); subMenu.getElements().add(subItem); model.getElements().add(subMenu); } public MenuModel getModel() { return model; } } ``` --- ## 📚 Ressources ### Documentation Officielle - **PrimeFaces** : https://primefaces.github.io/primefaces/14_0_0/ - **PrimeFlex** : https://www.primefaces.org/primeflex/ - **PrimeIcons** : https://www.primefaces.org/primeicons/ ### Exemples Sources Freya - **Localisation** : `C:/Users/dadyo/PersonalProjects/lions-workspace/freya/tag/src/main/webapp/` - Fichiers : `input.xhtml`, `crud.xhtml`, `formlayout.xhtml`, `button.xhtml`, etc. --- ## ✅ Bonnes Pratiques 1. **Utiliser les classes Freya** : `grid`, `card`, `field`, `formgrid` 2. **Pattern field cohérent** : Label + Input + Message 3. **ui-fluid pour formulaires** : Inputs 100% width 4. **Responsive design** : Utiliser `col-12 lg:col-6` etc. 5. **Icônes PrimeIcons** : `pi pi-*` 6. **Styles de boutons** : `ui-button-success`, `ui-button-danger`, etc. 7. **Messages appropriés** : `p:message` pour champs, `p:growl` pour notifications 8. **Dialog modal** : Toujours avec `modal="true"` et `responsive="true"` --- **Version** : 1.0.0 **Dernière mise à jour** : 2025-12-25