6.8 KiB
6.8 KiB
Guide de Contribution
Merci de votre intérêt pour contribuer à PrimeFaces Freya Extension ! 🎉
📋 Table des matières
- Code de conduite
- Comment contribuer
- Structure du projet
- Développement
- Standards de code
- Processus de Pull Request
🤝 Code de conduite
Ce projet adhère à un code de conduite. En participant, vous vous engagez à respecter ce code.
- Soyez respectueux et inclusif
- Acceptez les critiques constructives
- Concentrez-vous sur ce qui est le mieux pour la communauté
🚀 Comment contribuer
Signaler un bug
- Vérifiez que le bug n'a pas déjà été signalé dans les Issues
- Créez une nouvelle issue avec le template "Bug Report"
- Incluez :
- Description claire du problème
- Étapes pour reproduire
- Comportement attendu vs comportement actuel
- Version de Java, Quarkus, PrimeFaces
- Extrait de code minimal
Proposer une fonctionnalité
- Créez une issue avec le template "Feature Request"
- Décrivez :
- Le problème que cela résout
- La solution proposée
- Des alternatives envisagées
- Des exemples d'utilisation
Ajouter un nouveau composant
- Créez une issue pour discuter du composant
- Suivez la structure des composants existants
- Ajoutez la documentation
- Ajoutez des exemples dans
components-demo.xhtml
📁 Structure du projet
primefaces-freya-extension/
├── runtime/ # Module principal
│ └── src/main/resources/
│ └── META-INF/
│ ├── freya.taglib.xml # Déclaration des composants
│ └── resources/
│ └── freya/ # Composants composites (.xhtml)
├── integration-tests/ # Tests et démonstration
│ └── src/main/
│ ├── java/
│ │ └── dev/lions/freya/demo/ # Beans de démonstration
│ └── resources/
│ └── META-INF/resources/ # Pages de démonstration
├── README.md # Documentation principale
├── CONTRIBUTING.md # Ce fichier
└── pom.xml # Configuration Maven parent
💻 Développement
Prérequis
- Java 17 ou supérieur
- Maven 3.8+
- Git
- IDE (IntelliJ IDEA, Eclipse, VS Code)
Configuration de l'environnement
-
Cloner le repository
git clone https://github.com/lions-dev/primefaces-freya-extension.git cd primefaces-freya-extension -
Compiler le projet
mvn clean install -
Lancer la démo en mode dev
cd integration-tests mvn quarkus:dev -
Accéder à la démo
- Ouvrir http://localhost:8080
- La page se recharge automatiquement lors des modifications
Créer un nouveau composant
-
Créer le fichier composite dans
runtime/src/main/resources/META-INF/resources/freya/Exemple :
fieldExample.xhtml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:composite="http://xmlns.jcp.org/jsf/composite" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p="http://primefaces.org/ui"> <composite:interface> <composite:attribute name="id" required="false" type="java.lang.String" /> <composite:attribute name="label" required="true" type="java.lang.String" /> <composite:attribute name="value" required="true" /> <composite:attribute name="required" required="false" type="java.lang.Boolean" default="false" /> <!-- Autres attributs spécifiques --> </composite:interface> <composite:implementation> <div class="field"> <p:outputLabel for="#{cc.clientId}:input" value="#{cc.attrs.label}"> <span class="p-error" rendered="#{cc.attrs.required}"> *</span> </p:outputLabel> <!-- Composant PrimeFaces --> <p:inputText id="input" value="#{cc.attrs.value}" required="#{cc.attrs.required}" /> <p:message for="#{cc.clientId}:input" /> </div> </composite:implementation> </html> -
Déclarer le composant dans
runtime/src/main/resources/META-INF/freya.taglib.xml<tag> <tag-name>fieldExample</tag-name> <source>freya/fieldExample.xhtml</source> </tag> -
Ajouter un exemple dans
integration-tests/src/main/resources/META-INF/resources/components-demo.xhtml -
Mettre à jour la documentation dans
README.md
📝 Standards de code
XHTML (Composants composites)
- Indentation : 4 espaces
- Toujours inclure
id,label,value,requiredcomme attributs de base - Utiliser
<div class="field">pour les champs de formulaire - Inclure
<p:message>pour les messages de validation - Ajouter l'astérisque requis :
<span class="p-error" rendered="#{cc.attrs.required}"> *</span>
Java (Beans)
- Suivre les conventions Java standard
- Utiliser
@Namedet@SessionScopedpour les beans CDI - Implémenter
Serializablepour les beans avec scope - Documenter les méthodes publiques avec Javadoc
Commits
- Messages en français ou anglais
- Format :
type(scope): descriptionfeat: Nouvelle fonctionnalitéfix: Correction de bugdocs: Documentationstyle: Formatagerefactor: Refactoringtest: Testschore: Maintenance
Exemples :
feat(fieldInput): ajout de l'attribut maxlength
fix(actionDialog): correction du binding widgetVar
docs(README): mise à jour de la liste des composants
🔄 Processus de Pull Request
- Fork le repository
- Créer une branche depuis
maingit checkout -b feat/mon-nouveau-composant - Faire vos modifications
- Tester localement
mvn clean install cd integration-tests mvn quarkus:dev - Commit vos changements
git commit -m "feat(fieldExample): ajout du nouveau composant" - Push vers votre fork
git push origin feat/mon-nouveau-composant - Créer une Pull Request sur GitHub
Checklist avant PR
- Le code compile sans erreur
- Les tests passent (si applicable)
- La documentation est à jour
- Un exemple est ajouté dans
components-demo.xhtml - Le composant est déclaré dans
freya.taglib.xml - Le commit suit les conventions
❓ Questions
Pour toute question :
- Ouvrir une Discussion
- Contacter l'équipe : contact@lions.dev
Merci de contribuer ! 🙏