import { useRef, useState } from "react"; import type { NumberInputHandlers } from "@mantine/core"; import { ActionIcon, Button, Flex, Group, Modal, NumberInput, rem, Stack, Text } from "@mantine/core"; import { IconClockPause } from "@tabler/icons-react"; import { useI18n } from "@homarr/translation/client"; interface TimerModalProps { opened: boolean; close: () => void; selectedIntegrationIds: string[]; disableDns: (data: { duration: number; integrationId: string }) => void; } const TimerModal = ({ opened, close, selectedIntegrationIds, disableDns }: TimerModalProps) => { const t = useI18n(); const [hours, setHours] = useState(0); const [minutes, setMinutes] = useState(0); const hoursHandlers = useRef(null); const minutesHandlers = useRef(null); const handleSetTimer = () => { const duration = hours * 3600 + minutes * 60; selectedIntegrationIds.forEach((integrationId) => { disableDns({ duration, integrationId }); }); setHours(0); setMinutes(0); close(); }; return ( { close(); setHours(0); setMinutes(0); }} title={t("widget.dnsHoleControls.controls.setTimer")} > {t("widget.dnsHoleControls.controls.hours")} hoursHandlers.current?.decrement()}> – setHours(Number(val))} handlersRef={hoursHandlers} max={999} min={0} step={1} styles={{ input: { width: rem(54), textAlign: "center" } }} /> hoursHandlers.current?.increment()}> + {t("widget.dnsHoleControls.controls.minutes")} minutesHandlers.current?.decrement()}> – setMinutes(Number(val))} handlersRef={minutesHandlers} max={59} min={0} step={1} styles={{ input: { width: rem(54), textAlign: "center" } }} /> minutesHandlers.current?.increment()}> + {t("widget.dnsHoleControls.controls.unlimited")} ); }; export default TimerModal;