ctx.modal

Une API de raccourci basée sur Ant Design Modal, utilisée pour ouvrir activement des boîtes modales (invites d'information, fenêtres de confirmation, etc.) dans RunJS. Elle est implémentée par ctx.viewer / le système de vue.

Scénarios d'utilisation

ScénarioDescription
JSBlock / JSFieldAfficher les résultats d'opération, les messages d'erreur ou les confirmations secondaires après l'interaction de l'utilisateur.
Flux de travail / Événements d'actionFenêtre de confirmation avant la soumission ; interrompre les étapes suivantes via ctx.exit() si l'utilisateur annule.
Règles de liaisonFenêtres d'invite pour l'utilisateur lorsque la validation échoue.

Remarque : ctx.modal est disponible dans les environnements RunJS disposant d'un contexte de vue (comme les JSBlocks dans une page, les flux de travail, etc.) ; il peut ne pas exister dans le backend ou les contextes sans interface utilisateur (UI). Il est recommandé d'utiliser le chaînage optionnel (ctx.modal?.confirm?.()) lors de l'appel.

Définition des types

modal: {
  info: (config: ModalConfig) => Promise<void>;
  success: (config: ModalConfig) => Promise<void>;
  error: (config: ModalConfig) => Promise<void>;
  warning: (config: ModalConfig) => Promise<void>;
  confirm: (config: ModalConfig) => Promise<boolean>;  // Retourne true si l'utilisateur clique sur OK, false s'il annule
};

ModalConfig est conforme à la configuration des méthodes statiques de Modal d'Ant Design.

Méthodes courantes

MéthodeValeur de retourDescription
info(config)Promise<void>Fenêtre modale d'information
success(config)Promise<void>Fenêtre modale de succès
error(config)Promise<void>Fenêtre modale d'erreur
warning(config)Promise<void>Fenêtre modale d'avertissement
confirm(config)Promise<boolean>Fenêtre de confirmation ; retourne true si l'utilisateur clique sur OK, et false s'il annule

Paramètres de configuration

Conformément à Modal d'Ant Design, les champs courants incluent :

ParamètreTypeDescription
titleReactNodeTitre
contentReactNodeContenu
okTextstringTexte du bouton OK
cancelTextstringTexte du bouton Annuler (uniquement pour confirm)
onOk() => void | Promise<void>Exécuté lors du clic sur OK
onCancel() => voidExécuté lors du clic sur Annuler

Relation avec ctx.message et ctx.openView

UsageUtilisation recommandée
Invite temporaire légèrectx.message, disparaît automatiquement
Modale d'info/succès/erreur/avertissementctx.modal.info / success / error / warning
Confirmation secondaire (nécessite un choix utilisateur)ctx.modal.confirm, utilisé avec ctx.exit() pour contrôler le flux
Interactions complexes (formulaires, listes, etc.)ctx.openView pour ouvrir une vue personnalisée (page/tiroir/modale)

Exemples

Fenêtre d'information simple

ctx.modal.info({
  title: 'Indication',
  content: 'Opération terminée',
});

Fenêtre de confirmation et contrôle du flux

const confirmed = await ctx.modal.confirm({
  title: 'Confirmer la suppression',
  content: 'Êtes-vous sûr de vouloir supprimer cet enregistrement ?',
  okText: 'Confirmer',
  cancelText: 'Annuler',
});
if (!confirmed) {
  ctx.exit();  // Interrompt les étapes suivantes si l'utilisateur annule
  return;
}
await ctx.runAction('destroy', { filterByTk: ctx.record?.id });

Fenêtre de confirmation avec onOk

await ctx.modal.confirm({
  title: 'Confirmer la soumission',
  content: 'Les modifications ne pourront plus être modifiées après la soumission. Voulez-vous continuer ?',
  async onOk() {
    await ctx.form.submit();
  },
});

Affichage d'erreur

try {
  await someOperation();
  ctx.modal.success({ title: 'Succès', content: 'Opération terminée' });
} catch (e) {
  ctx.modal.error({ title: 'Erreur', content: e.message });
}

Relatif

  • ctx.message : Invite temporaire légère, disparaît automatiquement
  • ctx.exit() : Couramment utilisé sous la forme if (!confirmed) ctx.exit() pour interrompre le flux lorsqu'un utilisateur annule une confirmation
  • ctx.openView() : Ouvre une vue personnalisée, adaptée aux interactions complexes