/* * 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 from 'react'; import FilterListIcon from '@mui/icons-material/FilterList'; import { Drawer, Button, Fab, } from '@mui/material'; import { Box } from '@mui/system'; import SelectFilter from './filters/SelectFilter'; import CheckBoxFilter from './filters/CheckBoxFilter'; import HeaderFilter from './filters/HeaderFilter'; import SeperatorFilter from './filters/SeparatorFilter'; import SortFilter from './filters/SortFilter'; import TextFilter from './filters/TextFilter'; import TriStateFilter from './filters/TriStateFilter'; // this can only cycle once, so should be fine // eslint-disable-next-line import/no-cycle import GroupFilter from './filters/GroupFilter'; interface IFilters { sourceFilter: ISourceFilters[] updateFilterValue: Function group: number | undefined update: any } interface IFilters1 { sourceFilter: ISourceFilters[] updateFilterValue: Function resetFilterValue: Function setTriggerUpdate: Function setSearch: Function update: any } export function Options({ sourceFilter, group, updateFilterValue, update, }: IFilters) { return ( { sourceFilter.map((e: ISourceFilters, index) => { let checkif = update.find((el: { group: number | undefined; position: number; }) => el.group === group && el.position === index); checkif = checkif ? checkif.state : checkif; switch (e.type) { case 'CheckBox': return ( ); case 'Group': return ( ); case 'Header': return ( ); case 'Select': return ( ); case 'Separator': return ( ); case 'Sort': return ( ); case 'Text': return ( ); case 'TriState': return ( ); default: return (); } })} ); } export default function SourceOptions({ sourceFilter, updateFilterValue, resetFilterValue, setTriggerUpdate, setSearch, update, }: IFilters1) { const [FilterOptions, setFilterOptions] = React.useState(false); function handleReset() { resetFilterValue(0); setFilterOptions(false); } function handleSubmit() { setTriggerUpdate(0); setSearch(true); setFilterOptions(false); } return ( <> setFilterOptions(!FilterOptions)} variant="extended" color="primary" > Filter setFilterOptions(false)} PaperProps={{ style: { maxWidth: 600, padding: '1em', marginLeft: 'auto', marginRight: 'auto', }, }} > ); }