Composants sociaux
Les composants sociaux ajoutent de l'engagement aux pages : commentaires en fil de discussion (authentifiés et publics/invités), comptes de commentaires, un panneau de chat avec agent IA et des contrôles de partage. Les composants de commentaires s'intègrent au système de commentaires de table et respectent la permission comment de la table. Tous acceptent l'ensemble partagé props ainsi que les modules visibility et responsive.
components:
- type: comments
props: { placeholder: 'Add a comment…', limit: 20, sort: newest, paginationStyle: loadMore }
- type: commentCount
props: { format: '{count} comments', emptyText: 'No comments yet' }
comments
Un fil de commentaires complet pour un enregistrement. Sur une page de collection, il résout automatiquement $record.id et collection.table pour les appels API. Affiche le nom de l'auteur, l'avatar, le contenu et l'horodatage relatif ; respecte la permission comment de la table (masqué lorsque l'utilisateur ne la possède pas).
| Propriété | Description |
|---|---|
props.placeholder |
Texte indicatif pour la zone de texte du formulaire de commentaire. |
props.limit |
Commentaires chargés par page (défaut : 20). |
props.sort |
Ordre : newest (décroissant, défaut) ou oldest (croissant). |
props.paginationStyle |
loadMore (défaut, un bouton Charger plus) ou numbered (numéros de page). |
props.showCount |
Afficher un badge de nombre de commentaires (défaut : true). |
props.emptyText |
Message personnalisé lorsqu'aucun commentaire n'existe (défaut : « No comments yet »). |
Le formulaire de commentaire est affiché aux utilisateurs authentifiés ayant la permission comment et masqué aux visiteurs non authentifiés (qui voient à la place une invite « Connectez-vous pour commenter » lorsque comment: authenticated). Les auteurs peuvent modifier/supprimer leurs propres commentaires ; les administrateurs peuvent supprimer n'importe lequel. Le contenu est limité à 10 000 caractères (correspondant à l'API).
Commentaires publics / d'invités
Lorsque la config de commentaires de la table active guestComments, le formulaire accepte aussi le nom et l'e-mail de l'invité, et prend en charge la modération, les fils de discussion et la protection anti-spam :
| Préoccupation | Comportement |
|---|---|
| Champs d'invité | Nom requis (1–100 caractères) ; e-mail requis lorsque guestEmailRequired (défaut), validé comme e-mail. Stocké avec userId: null. |
| Fils de discussion | threading: true affiche une Réponse à un seul niveau sur les commentaires de premier niveau ; les réponses stockent un parentId. threading: false (défaut) est plat. |
| Modération | moderation: true crée les nouveaux commentaires comme pending ; les administrateurs approuvent/rejettent. autoApprove.authenticated / autoApprove.previouslyApproved contournent la modération. |
| Protection anti-spam | Champ pot de miel, limitation de débit par IP (rateLimitPerIp, défaut 5/min → 429), seuil de liens (maxLinksBeforeModeration) et rejet automatique de mots bloqués — tous appliqués côté serveur. |
commentCount
Un affichage compact du nombre de commentaires. Sur les pages de collection, il résout automatiquement $record.id et collection.table ; sur les parents liés à un dataSource, il se résout par $record.id pour chaque enregistrement d'une liste.
| Propriété | Description |
|---|---|
props.format |
Modèle de comptage avec un espace réservé {count} (défaut : '{count} comments'). |
props.emptyText |
Affichage lorsque le compte est 0 (défaut : '0 comments'). |
Le compte est lu depuis les métadonnées de pagination de l'API de commentaires et n'inclut que les commentaires approved lorsque la modération est activée.
ai-chat
Un panneau de chat intégré soutenu par un agent IA configuré. Voir Agents pour la configuration des agents.
| Propriété | Description |
|---|---|
agent |
Nom d'agent depuis app.agents[]. |
placeholder |
Texte indicatif pour le champ de chat. |
height |
Hauteur du conteneur de chat en pixels. |
showHistory |
Afficher l'historique des conversations précédentes au chargement. |
allowAttachments |
Autoriser les pièces jointes dans le chat. |
- type: ai-chat
agent: support-assistant
height: 480
placeholder: 'Ask a question…'
allowAttachments: true
sharing
Contrôles de partage pour la page ou l'enregistrement courant (liens sociaux, copier le lien). Les surfaces de partage sont composées de composants link/button avec des interactions navigate ; pour le comportement de copie vers le presse-papiers, voir Interactivité et scripts.
| Propriété | Description |
|---|---|
props |
Attributs HTML et options de cible de partage (p. ex. className, URL/texte de partage). |
children |
Boutons/liens de partage personnalisés. |
Pages connexes
- Présentation des pages — pages de collection et résolution
$record.*. - Agents — configurer les agents IA qui alimentent
ai-chat. - Permissions de table — la permission
commentqui protège les commentaires. - Interactivité et scripts — actions de presse-papiers et de navigation pour le partage.
- Notifications — déclencheurs d'automatisation de commentaires.