# TODO - PrimeFaces Freya Extension
**Date** : 2025-12-25
**Statut** : đ§ EN COURS - Composants composites Ă crĂ©er
---
## đ Ătat Actuel du Projet
### â
Ce qui est FAIT
1. **Structure du projet**
- â
Architecture multi-modules (runtime, deployment, integration-tests)
- â
Configuration Maven complĂšte (pom.xml)
- â
Métadonnées Quarkus extension
2. **Templates et Layout**
- â
`template.xhtml` - Template principal
- â
`menu.xhtml` - Menu latéral
- â
`topbar.xhtml` - Barre supérieure
- â
`footer.xhtml` - Pied de page
- â
`config.xhtml` - Panneau de configuration
- â
`rightpanel.xhtml` - Panneau latéral droit
3. **Pages prédéfinies**
- â
`landing.xhtml` - Page d'accueil
- â
`login.xhtml` - Page de connexion
- â
`error.xhtml` - Page d'erreur
- â
`notfound.xhtml` - Page 404
- â
`access.xhtml` - AccÚs refusé
- â
`help.xhtml` - Aide
- â
`invoice.xhtml` - Facture
- â
`empty.xhtml` - Page vide
4. **Java**
- â
`GuestPreferences.java` - Bean de gestion des préférences
5. **Configuration**
- â
`freya.taglib.xml` - Déclaration de 25 composants composites
- â
`primefaces-freya.taglib.xml` - Composant menu personnalisé
6. **Documentation**
- â
`README.md` - Documentation utilisateur
- â
`ANALYSE_INTEGRALE.md` - Analyse technique
---
## â Ce qui MANQUE (CRITIQUE)
### 1. Composants Composites (25 fichiers .xhtml)
**Répertoire cible** : `runtime/src/main/resources/META-INF/resources/freya/`
Le fichier `freya.taglib.xml` déclare 25 composants mais les fichiers XHTML correspondants **n'existent pas encore** :
#### Composants de Layout (5)
- [ ] `freya/menu.xhtml` - Menu réutilisable
- [ ] `freya/card.xhtml` - Carte avec header/footer
- [ ] `freya/panel.xhtml` - Panneau pliable
- [ ] `freya/dialog.xhtml` - Dialogue modal
- [ ] `freya/formDialog.xhtml` - Dialogue avec formulaire
#### Composants de Formulaire (10)
- [ ] `freya/inputText.xhtml` - Champ texte avec validation
- [ ] `freya/inputTextarea.xhtml` - Zone de texte multiligne
- [ ] `freya/inputNumber.xhtml` - Champ numérique formaté
- [ ] `freya/inputPassword.xhtml` - Mot de passe avec feedback
- [ ] `freya/selectOneMenu.xhtml` - Menu déroulant avec filtre
- [ ] `freya/selectManyMenu.xhtml` - Sélection multiple
- [ ] `freya/calendar.xhtml` - Sélecteur de date
- [ ] `freya/checkbox.xhtml` - Case Ă cocher
- [ ] `freya/radioButton.xhtml` - Bouton radio
- [ ] `freya/fileUpload.xhtml` - Upload de fichier
#### Composants de Données (3)
- [ ] `freya/dataTable.xhtml` - Tableau avec pagination/tri
- [ ] `freya/dataView.xhtml` - Vue de données (list/grid)
- [ ] `freya/treeTable.xhtml` - Tableau arborescent
#### Composants de Navigation (2)
- [ ] `freya/breadcrumb.xhtml` - Fil d'Ariane
- [ ] `freya/steps.xhtml` - Ătapes (wizard)
#### Composants d'Action (3)
- [ ] `freya/button.xhtml` - Bouton simple
- [ ] `freya/commandButton.xhtml` - Bouton avec action serveur
- [ ] `freya/linkButton.xhtml` - Bouton lien
#### Composants de Feedback (2)
- [ ] `freya/message.xhtml` - Message pour un composant
- [ ] `freya/growl.xhtml` - Notifications toast
#### Composants Utilitaires (4)
- [ ] `freya/spacer.xhtml` - Espaceur
- [ ] `freya/divider.xhtml` - Séparateur
- [ ] `freya/badge.xhtml` - Badge
- [ ] `freya/avatar.xhtml` - Avatar
**Total : 25 composants à créer**
---
### 2. Documentation des Composants
- [ ] **COMPOSITE_COMPONENTS_DOCUMENTATION.md**
- Localisation : `runtime/src/main/resources/META-INF/resources/freya/`
- Contenu : Documentation complĂšte de chaque composant avec :
- Description
- Attributs
- Exemples d'utilisation
- Snippets de code
---
### 3. Tests d'Intégration
Le module `integration-tests/` contient seulement une page de vérification basique.
Ă ajouter :
- [ ] Page de démonstration complÚte des composants
- [ ] Tests automatisés (JUnit/Selenium)
- [ ] Tests de validation de formulaires
- [ ] Tests d'intégration avec Quarkus
---
### 4. Composant Menu Personnalisé (Optionnel)
Le fichier `primefaces-freya.taglib.xml` déclare un composant `menu` avec renderer personnalisé, mais :
- [ ] Classe Java `FreyaMenuRenderer` manquante
- [ ] Classe Java `FreyaMenu` (component-type) manquante
**Note** : Cela peut ĂȘtre optionnel si le composant composite `freya/menu.xhtml` suffit.
---
## đŻ PrioritĂ©s
### Priorité CRITIQUE (Bloquant)
**1. Créer les 25 composants composites**
- Sans ces composants, l'extension ne peut pas ĂȘtre utilisĂ©e
- Le README promet ces composants mais ils n'existent pas
- Localisation : `runtime/src/main/resources/META-INF/resources/freya/`
### Priorité HAUTE
**2. Documentation des composants**
- Fichier `COMPOSITE_COMPONENTS_DOCUMENTATION.md`
- Explique comment utiliser chaque composant
- Référencé dans le README mais manquant
### Priorité MOYENNE
**3. Page de démonstration**
- Créer `components-demo.xhtml` dans `integration-tests/`
- Montre tous les composants en action
- Permet de tester visuellement l'extension
### Priorité BASSE
**4. Tests automatisés**
- Tests JUnit pour validation
- Tests Selenium pour UI
- Tests d'intégration Quarkus
---
## đ Structure des Composants Composites
Chaque composant doit suivre la structure JSF Composite Component :
```xhtml
```
---
## đ ïž Plan d'Action RecommandĂ©
### Phase 1 : Composants Essentiels (Priorité 1)
**Temps estimé : 2-3 jours**
1. Créer le répertoire `runtime/src/main/resources/META-INF/resources/freya/`
2. Créer les composants de formulaire (les plus utilisés) :
- `inputText.xhtml`
- `inputTextarea.xhtml`
- `inputNumber.xhtml`
- `selectOneMenu.xhtml`
- `calendar.xhtml`
- `checkbox.xhtml`
3. Créer les composants de layout :
- `card.xhtml`
- `panel.xhtml`
- `dialog.xhtml`
4. Créer les composants d'action :
- `button.xhtml`
- `commandButton.xhtml`
### Phase 2 : Composants Avancés (Priorité 2)
**Temps estimé : 2 jours**
1. Créer les composants de données :
- `dataTable.xhtml`
- `dataView.xhtml`
2. Créer les composants utilitaires :
- `badge.xhtml`
- `avatar.xhtml`
- `divider.xhtml`
- `spacer.xhtml`
3. Créer les composants restants :
- `breadcrumb.xhtml`
- `steps.xhtml`
- `message.xhtml`
- `growl.xhtml`
### Phase 3 : Documentation et Tests (Priorité 3)
**Temps estimé : 1-2 jours**
1. Créer `COMPOSITE_COMPONENTS_DOCUMENTATION.md`
2. Créer `components-demo.xhtml` avec exemples de tous les composants
3. Tester chaque composant dans `integration-tests/`
4. Valider la compilation et l'utilisation de l'extension
---
## đ Ressources NĂ©cessaires
### Documentation Officielle
- [JSF Composite Components](https://docs.oracle.com/javaee/6/tutorial/doc/giqzr.html)
- [PrimeFaces Components](https://www.primefaces.org/showcase/)
- [Freya Theme Demo](https://www.primefaces.org/freya/)
### Exemples de Code
- Templates PrimeFaces existants dans `WEB-INF/`
- Bean `GuestPreferences.java` pour accÚs aux préférences
- Composant menu dans `WEB-INF/menu.xhtml` (référence)
---
## â ïž Points d'Attention
### 1. Binding Bidirectionnel
Les composants éditables (input, select, etc.) doivent utiliser `` pour permettre le binding bidirectionnel avec `value="#{bean.property}"`.
### 2. Validation JSF
Tous les composants de formulaire doivent supporter les validateurs JSF standard et afficher les messages d'erreur avec ``.
### 3. AJAX et Update
Les composants doivent supporter les attributs AJAX standards de PrimeFaces (`update`, `process`, `oncomplete`, etc.).
### 4. Accessibilité
Utiliser les attributs ARIA et labels appropriés pour l'accessibilité.
### 5. Responsive Design
Les composants doivent ĂȘtre responsive et utiliser PrimeFlex pour le layout (`w-full`, `p-field`, etc.).
---
## đŻ CritĂšres de SuccĂšs
L'extension sera **COMPLĂTE** quand :
1. â
Les 25 composants composites existent et fonctionnent
2. â
La documentation `COMPOSITE_COMPONENTS_DOCUMENTATION.md` est complĂšte
3. â
Une page de démonstration montre tous les composants
4. â
L'extension peut ĂȘtre ajoutĂ©e Ă un projet Quarkus et utilisĂ©e immĂ©diatement
5. â
Tous les composants suivent les conventions PrimeFaces et JSF
6. â
Le README est à jour et reflÚte l'état réel du projet
---
## đ Pour DĂ©marrer
### 1. Créer le répertoire des composants
```bash
mkdir -p primefaces-freya-extension/runtime/src/main/resources/META-INF/resources/freya
```
### 2. Créer le premier composant (exemple: inputText)
```bash
cat > primefaces-freya-extension/runtime/src/main/resources/META-INF/resources/freya/inputText.xhtml << 'EOF'
EOF
```
### 3. Tester le composant
```bash
cd primefaces-freya-extension/integration-tests
mvn quarkus:dev
```
Créer une page de test dans `integration-tests/src/main/resources/META-INF/resources/test.xhtml` :
```xhtml
```
---
**Conclusion** : Le projet a une **excellente base** (templates, layout, bean, configuration) mais il manque **l'essentiel** : les 25 composants composites promis dans le README. C'est la **priorité absolue** pour rendre l'extension utilisable.
**Temps total estimé** : 5-7 jours de développement pour compléter tous les composants + documentation.