Files
TriggerFrontend/src/pages/homepage/components/SettingsButton.tsx
2024-08-15 15:12:05 -05:00

79 lines
2.1 KiB
TypeScript

import { Button, Menu, NavLink, Select } from '@mantine/core';
import { useEffect, useState } from 'react';
import { FiMenu, FiMonitor } from 'react-icons/fi';
import {useQueryAPI} from '../../../hooks/useAPI';
import button from '../../../styles/Button.module.css';
import menu from '../../../styles/Menu.module.css';
import navLink from '../../../styles/NavLink.module.css';
import selectClasses from '../../../styles/Select.module.css';
function SettingsButton({contentType, setContentType, theme}: any) {
const { data, isFetched } = useQueryAPI({ endpoint: 'api/appCategories' });
const [categories, setCategories] = useState([{value: 'All', label: 'All'}]);
useEffect(() => {
if(data) {
const list: [any] = data.map((category: any) => {return {value: category.category, label: category.category}}) || [];
list.unshift({value: 'All', label: 'All'});
setCategories(list);
}
}, [data, isFetched]);
function runWakeCommand() {
const requestOptions = {
method: 'GET',
headers: { 'Content-Type': 'application/json' },
};
fetch('/trigger/api/wakeDakota', requestOptions);
}
return (
<Menu
withinPortal={false}
withArrow
shadow='md'
position='top'
>
<Menu.Target>
<Button className={button.settingsButton} classNames={button}>
<FiMenu />
</Button>
</Menu.Target>
<Menu.Dropdown
className={menu.dropdown}
>
<NavLink
label='Settings'
component='a'
href='/trigger/settings'
className={navLink.defaultNavLink}
classNames={navLink}
/>
<NavLink label='Quick Actions'
className={navLink.defaultNavLink}
classNames={navLink}>
<NavLink
label='Wake Dakota'
leftSection={<FiMonitor />}
onClick={() => runWakeCommand()}
className={navLink.defaultNavLink}
classNames={navLink}
/>
</NavLink>
<Select
label='Homepage Filter'
data={categories ?? []}
defaultValue={contentType}
withCheckIcon={false}
onChange={(data: any) => {
setContentType(data)
}}
classNames={selectClasses}
comboboxProps={{ withinPortal: false }}
/>
</Menu.Dropdown>
</Menu>
);
}
export default SettingsButton;