/*
Toast.tsx - ESP3D WebUI component file
Copyright (c) 2021 Alexandre Aussourd. All rights reserved.
This code is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with This code; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
import { ComponentChildren } from "preact"
import { useEffect } from "preact/hooks"
import { useUiContextFn, useToastsContext } from "../../contexts"
import { Toast as SpectreToast } from "../Controls"
import { T } from "../Translations"
interface ToastProps {
index: string | number
type?: string
children?: ComponentChildren
timeout?: number
remove: (id: string | number) => void
}
const Toast = ({ index, type = "", children, timeout = 2000, remove }: ToastProps) => {
useEffect(() => {
let timer: any
if (timeout) {
timer = setTimeout(() => {
remove(index)
}, timeout)
return () => clearTimeout(timer)
}
}, [])
return (