import { ImageType } from '@jellyfin/sdk/lib/generated-client'; import React, { FC, useCallback } from 'react'; import IconButton from '@mui/material/IconButton'; import MenuItem from '@mui/material/MenuItem'; import Checkbox from '@mui/material/Checkbox'; import Typography from '@mui/material/Typography'; import Divider from '@mui/material/Divider'; import Box from '@mui/material/Box'; import InputLabel from '@mui/material/InputLabel'; import FormControl from '@mui/material/FormControl'; import FormControlLabel from '@mui/material/FormControlLabel'; import FormGroup from '@mui/material/FormGroup'; import Select, { SelectChangeEvent } from '@mui/material/Select'; import Popover from '@mui/material/Popover'; import ViewComfyIcon from '@mui/icons-material/ViewComfy'; import globalize from 'scripts/globalize'; import { LibraryViewSettings } from 'types/library'; import { LibraryTab } from 'types/libraryTab'; const excludedViewType = [ LibraryTab.Episodes, LibraryTab.Artists, LibraryTab.AlbumArtists, LibraryTab.Albums ]; const imageTypesOptions = [ { label: 'Primary', value: ImageType.Primary }, { label: 'Banner', value: ImageType.Banner }, { label: 'Disc', value: ImageType.Disc }, { label: 'Logo', value: ImageType.Logo }, { label: 'Thumb', value: ImageType.Thumb } ]; interface ViewSettingsButtonProps { viewType: LibraryTab; libraryViewSettings: LibraryViewSettings; setLibraryViewSettings: React.Dispatch< React.SetStateAction >; } const ViewSettingsButton: FC = ({ viewType, libraryViewSettings, setLibraryViewSettings }) => { const [anchorEl, setAnchorEl] = React.useState(null); const open = Boolean(anchorEl); const id = open ? 'selectview-popover' : undefined; const handleClick = useCallback((event: React.MouseEvent) => { setAnchorEl(event.currentTarget); }, []); const handleClose = useCallback(() => { setAnchorEl(null); }, []); const handleChange = useCallback( (event: React.ChangeEvent) => { const name = event.target.name; setLibraryViewSettings((prevState) => ({ ...prevState, [name]: event.target.checked })); }, [setLibraryViewSettings] ); const onSelectChange = useCallback( (event: SelectChangeEvent) => { setLibraryViewSettings((prevState) => ({ ...prevState, ImageType: event.target.value as ImageType })); }, [setLibraryViewSettings] ); const isVisible = !excludedViewType.includes(viewType); return ( {isVisible && ( {globalize.translate('LabelImageType')} )} } label={globalize.translate('ShowTitle')} /> {isVisible && ( } label={globalize.translate('ShowYear')} /> )} } label={globalize.translate('EnableCardLayout')} /> ); }; export default ViewSettingsButton;