Aller au contenu

useDialogsController

Utilisez ce hook pour ouvrir des dialogues de manière impérative. C’est utile lorsque vous devez afficher un dialogue de confirmation ou un modal personnalisé depuis un callback ou un gestionnaire d’événements, où vous ne pouvez pas facilement rendre un composant.

import React from "react";
import { useDialogsController } from "@firecms/core";
import { Button } from "@firecms/ui";
export function MyComponent() {
const dialogsController = useDialogsController();
const handleClick = () => {
dialogsController.open({
key: "my_dialog",
Component: ({ open, closeDialog }) => (
<div className="p-4 bg-white rounded shadow-lg">
<h2 className="text-xl font-bold mb-4">Bonjour !</h2>
<p className="mb-4">Ceci est un dialogue personnalisé.</p>
<Button onClick={closeDialog}>Fermer</Button>
</div>
)
});
};
return <Button onClick={handleClick}>Ouvrir le dialogue</Button>;
}
export interface DialogsController {
/**
* Fermer le dernier dialogue
*/
close: () => void;
/**
* Ouvrir un dialogue
*/
open: <T extends object = object>(props: DialogControllerEntryProps<T>) => { closeDialog: () => void };
}
export interface DialogControllerEntryProps<T extends object = object> {
key: string;
/**
* Le type de composant qui sera rendu
*/
Component: React.ComponentType<{ open: boolean, closeDialog: () => void } & T>;
/**
* Props à passer au composant du dialogue
*/
props?: T;
}