import { Button, Divider, Grid, GridCol, Group, Popover, Stack, TextInput, } from '@mantine/core'; import { useDebouncedValue, useDisclosure } from '@mantine/hooks'; import { useCommonHooks, useMutationAPI, useQueryAPI } from 'hooks'; import { useEffect, useState } from 'react'; import { popoverClasses, textInputClasses } from 'styles'; import type { WolClient } from 'types'; import AddItemModal from '../Shared/AddItemModal'; import SettingsHeader from '../Shared/SettingsHeader'; import DebouncedWolClient from './DebouncedWolClient'; import WolClientSettingsItem from './WolClientSettingsItem'; const WolClientSettings = () => { const defaultWolClient: WolClient = { id: undefined, hostname: '', macAddress: '', }; const endpoint = 'api/wolClients'; const { data: wolClientsData, isFetched: wolClientsIsFetched } = useQueryAPI({ endpoint: endpoint, }); const [wolClients, setWolClients] = useState([]); const { mutateAsync } = useMutationAPI(); const { isMobile } = useCommonHooks(); const [newWolClient, setNewWolClient] = useState(defaultWolClient); const [modalOpened, { open: openModal, close: closeModal }] = useDisclosure(false); const [searchValue, setSearchValue] = useState(''); const [debouncedSearch] = useDebouncedValue(searchValue, 500); const [isOpen, setIsOpen] = useState(false); const handleClose = () => { setNewWolClient(defaultWolClient); closeModal(); }; useEffect(() => { if (wolClientsData && wolClientsIsFetched) { setWolClients( wolClientsData.filter((a: WolClient) => a.hostname.toLowerCase().includes(debouncedSearch.toLowerCase()), ), ); } }, [wolClientsData, wolClientsIsFetched, debouncedSearch]); return ( { setNewWolClient({ ...newWolClient, hostname: event.target.value, }); }} /> { setNewWolClient({ ...newWolClient, macAddress: event.target.value, }); }} /> } /> {wolClients?.map((client: WolClient) => ( { e.stopPropagation(); }} justify='center' > ))} ); }; export default WolClientSettings;