ConceptPortal-public/rsconcept/frontend/src/pages/LibraryPage/PickerStrategy.tsx

82 lines
2.9 KiB
TypeScript
Raw Normal View History

2023-08-27 15:39:49 +03:00
import { useCallback } from 'react';
import Button from '../../components/Common/Button';
import Dropdown from '../../components/Common/Dropdown';
2023-09-02 01:11:27 +03:00
import DropdownCheckbox from '../../components/Common/DropdownCheckbox';
2023-08-27 15:39:49 +03:00
import { FilterCogIcon } from '../../components/Icons';
import { useAuth } from '../../context/AuthContext';
2023-08-27 15:39:49 +03:00
import useDropdown from '../../hooks/useDropdown';
2023-09-11 20:31:54 +03:00
import { LibraryFilterStrategy } from '../../models/miscelanious';
2023-08-27 15:39:49 +03:00
interface PickerStrategyProps {
value: LibraryFilterStrategy
onChange: (value: LibraryFilterStrategy) => void
}
function PickerStrategy({ value, onChange }: PickerStrategyProps) {
const pickerMenu = useDropdown();
const { user } = useAuth();
2023-08-27 15:39:49 +03:00
const handleChange = useCallback(
(newValue: LibraryFilterStrategy) => {
pickerMenu.hide();
onChange(newValue);
}, [pickerMenu, onChange]);
return (
<div ref={pickerMenu.ref} className='h-full text-right'>
<Button
icon={<FilterCogIcon color='text-controls' size={6} />}
2023-08-27 15:39:49 +03:00
dense
tooltip='Фильтры'
colorClass='clr-input clr-hover text-btn'
dimensions='h-full py-1 px-2 border-none'
2023-08-27 15:39:49 +03:00
onClick={pickerMenu.toggle}
/>
{ pickerMenu.isActive &&
<Dropdown>
2023-09-02 01:11:27 +03:00
<DropdownCheckbox
2023-09-07 16:30:43 +03:00
setValue={() => handleChange(LibraryFilterStrategy.MANUAL)}
2023-09-02 01:11:27 +03:00
value={value === LibraryFilterStrategy.MANUAL}
label='Отображать все'
/>
<DropdownCheckbox
2023-09-07 16:30:43 +03:00
setValue={() => handleChange(LibraryFilterStrategy.COMMON)}
2023-09-02 01:11:27 +03:00
value={value === LibraryFilterStrategy.COMMON}
label='Общедоступные'
tooltip='Отображать только общедоступные схемы'
/>
<DropdownCheckbox
2023-09-07 16:30:43 +03:00
setValue={() => handleChange(LibraryFilterStrategy.CANONICAL)}
2023-09-02 01:11:27 +03:00
value={value === LibraryFilterStrategy.CANONICAL}
label='Неизменные'
tooltip='Отображать только стандартные схемы'
2023-09-02 01:11:27 +03:00
/>
<DropdownCheckbox
2023-09-07 16:30:43 +03:00
setValue={() => handleChange(LibraryFilterStrategy.PERSONAL)}
2023-09-02 01:11:27 +03:00
value={value === LibraryFilterStrategy.PERSONAL}
label='Личные'
disabled={!user}
tooltip='Отображать только подписки и владеемые схемы'
/>
<DropdownCheckbox
2023-09-07 16:30:43 +03:00
setValue={() => handleChange(LibraryFilterStrategy.SUBSCRIBE)}
2023-09-02 01:11:27 +03:00
value={value === LibraryFilterStrategy.SUBSCRIBE}
label='Подписки'
disabled={!user}
tooltip='Отображать только подписки'
/>
<DropdownCheckbox
2023-09-07 16:30:43 +03:00
setValue={() => handleChange(LibraryFilterStrategy.OWNED)}
2023-09-02 01:11:27 +03:00
value={value === LibraryFilterStrategy.OWNED}
disabled={!user}
label='Я - Владелец!'
tooltip='Отображать только владеемые схемы'
/>
2023-08-27 15:39:49 +03:00
</Dropdown>}
</div>
);
}
export default PickerStrategy;