showToast(): return a dismiss callback

This commit is contained in:
Wang Guan 2024-10-22 01:50:23 +09:00
parent a73a4c6dd6
commit 903d00bd89

View File

@ -229,13 +229,19 @@ export function showToast(
content: string, content: string,
action?: ToastProps["action"], action?: ToastProps["action"],
delay = 3000, delay = 3000,
) { ): () => void {
const div = document.createElement("div"); const div = document.createElement("div");
div.className = styles.show; div.className = styles.show;
document.body.appendChild(div); document.body.appendChild(div);
const root = createRoot(div); const root = createRoot(div);
let closeCalled = false;
const close = () => { const close = () => {
if (closeCalled) {
return;
} else {
closeCalled = true;
}
div.classList.add(styles.hide); div.classList.add(styles.hide);
setTimeout(() => { setTimeout(() => {
@ -249,6 +255,8 @@ export function showToast(
}, delay); }, delay);
root.render(<Toast content={content} action={action} onClose={close} />); root.render(<Toast content={content} action={action} onClose={close} />);
return close;
} }
export type InputProps = React.HTMLProps<HTMLTextAreaElement> & { export type InputProps = React.HTMLProps<HTMLTextAreaElement> & {