/* * Copyright (C) Contributors to the Suwayomi project * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ import React, { useState } from 'react'; import FilterListIcon from '@mui/icons-material/FilterList'; import { Drawer, FormControlLabel, IconButton, Tabs, Tab, Box, Stack, Checkbox, ListItem, ListItemButton, ListItemIcon, ListItemText, } from '@mui/material'; import useLibraryOptions from 'util/useLibraryOptions'; import ThreeStateCheckbox from 'components/util/ThreeStateCheckbox'; import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'; import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'; import TabPanel from 'components/util/TabPanel'; import { useLibraryOptionsContext } from 'components/context/LibraryOptionsContext'; function filtersTab(currentTab: number) { const { downloaded, setDownloaded, unread, setUnread, } = useLibraryOptions(); return ( )} label="Unread" /> )} label="Downloaded" /> ); } function sortsTab(currentTab: number) { const { sorts, setSorts, sortDesc, setSortDesc, } = useLibraryOptions(); const handleChange = (event: React.MouseEvent, index: string) => { if (sorts === index) { setSortDesc(!sortDesc); } else { setSortDesc(false); } setSorts(index); }; return ( <> { ['sortToRead', 'sortAlph', 'sortID'].map((e) => { let icon; if (sorts === e) { icon = !sortDesc ? () : (); } icon = icon === undefined && sortDesc === undefined && e === 'sortID' ? () : icon; return ( handleChange(event, e)}> {icon} ); }) } ); } function dispalyTab(currentTab: number) { const { options, setOptions } = useLibraryOptionsContext(); function setContextOptions( e: React.ChangeEvent, checked: boolean, ) { setOptions((prev) => ({ ...prev, [e.target.name]: checked })); } return ( )} /> )} /> ); } function Options() { const [currentTab, setCurrentTab] = useState(0); return ( setCurrentTab(newTab)} indicatorColor="primary" textColor="primary" > {filtersTab(currentTab)} {sortsTab(currentTab)} {dispalyTab(currentTab)} ); } export default function LibraryOptions() { const [filtersOpen, setFiltersOpen] = React.useState(false); const { active } = useLibraryOptions(); return ( <> setFiltersOpen(!filtersOpen)} color={active ? 'warning' : 'default'} > setFiltersOpen(false)} PaperProps={{ style: { maxWidth: 600, padding: '1em', marginLeft: 'auto', marginRight: 'auto', }, }} > ); }