Faire un bouton d'action personnalisé
Dans NocoBase, une action (Action) est un bouton à l'intérieur d'un bloc, qui déclenche une logique métier — par exemple « Nouveau », « Modifier », « Supprimer ». Cet exemple montre comment créer des boutons d'action personnalisés avec ActionModel et contrôler leur scénario d'apparition via ActionSceneEnum.
Il est conseillé de connaître les contenus suivants pour faciliter le développement :
- Écrire votre premier plugin — création d'un plugin et structure du répertoire
- Plugin — point d'entrée du plugin et cycle de vie
load() - FlowEngine → Extension d'action — présentation de ActionModel et ActionSceneEnum
- Internationalisation i18n — écriture des fichiers de traduction et utilisation de
tExpr()pour la traduction différée
Résultat final
Nous allons créer trois boutons d'action personnalisés correspondant à trois scénarios :
- Action au niveau de la table (
collection) — apparaît dans la barre d'actions en haut du bloc, par exemple à côté du bouton « Nouveau » - Action au niveau de l'enregistrement (
record) — apparaît dans la colonne d'actions de chaque ligne, par exemple à côté de « Modifier » et « Supprimer » - Disponible dans les deux (
both) — apparaît dans les deux scénarios
Code source complet : @nocobase-example/plugin-simple-action. Pour le faire tourner directement en local :
Construisons ce plugin pas à pas, à partir de zéro.
Étape 1 : créer le squelette du plugin
À la racine du dépôt :
Voir Écrire votre premier plugin pour les détails.
Étape 2 : créer les modèles d'action
Chaque action déclare son scénario d'apparition via la propriété static scene :
Action au niveau de la table
Créez src/client-v2/models/SimpleCollectionActionModel.tsx :
Action au niveau de l'enregistrement
Créez src/client-v2/models/SimpleRecordActionModel.tsx :
Disponible dans les deux scénarios
Créez src/client-v2/models/SimpleBothActionModel.tsx :
Les trois écritures partagent la même structure — la seule différence vient de la valeur de static scene et du libellé du bouton. Chaque bouton écoute le clic via registerFlow({ on: 'click' }) et affiche un message via ctx.message, pour que l'utilisateur voie que le bouton est bien actif.
Étape 3 : ajouter les fichiers de traduction
Modifiez les fichiers de traduction sous src/locale/ du plugin :
L'ajout initial des fichiers de langue nécessite un redémarrage de l'application pour prendre effet.
Pour l'écriture des fichiers de traduction et plus d'utilisations de tExpr(), voir Internationalisation i18n.
Étape 4 : enregistrer dans le plugin
Modifiez src/client-v2/plugin.tsx et utilisez registerModelLoaders pour le chargement à la demande :
Étape 5 : activer le plugin
Une fois activé, vous pourrez ajouter ces boutons d'action personnalisés dans « Configurer les actions » d'un bloc tableau.
Code source complet
- @nocobase-example/plugin-simple-action — exemple complet pour les trois scénarios d'action
Récapitulatif
Capacités utilisées dans cet exemple :
Liens connexes
- Écrire votre premier plugin — créer le squelette d'un plugin de zéro
- Aperçu de FlowEngine — utilisation de base de FlowModel
- FlowEngine → Extension d'action — ActionModel, ActionSceneEnum
- FlowEngine → Extension de bloc — bloc personnalisé
- FlowEngine → Extension de champ — composant de champ personnalisé
- Component vs FlowModel — quand utiliser FlowModel
- Plugin — point d'entrée et cycle de vie load()
- Internationalisation i18n — écriture des fichiers de traduction et utilisation de tExpr
- Documentation complète FlowEngine — référence complète FlowModel, Flow, Context

