import React, { FC, useCallback, useEffect, useRef } from 'react'; import IconButtonElement from '../../elements/IconButtonElement'; import { ViewSettingsI } from './interface'; interface SortProps { getSortMenuOptions: () => { name: string; value: string; }[]; viewSettings: ViewSettingsI setViewSettings: React.Dispatch>; } const Sort: FC = ({ getSortMenuOptions, viewSettings, setViewSettings }) => { const element = useRef(null); const showSortMenu = useCallback(() => { import('../../components/sortmenu/sortmenu').then(({default: SortMenu}) => { const sortMenu = new SortMenu(); sortMenu.show({ settings: viewSettings, sortOptions: getSortMenuOptions(), setSortValues: setViewSettings }); }); }, [getSortMenuOptions, viewSettings, setViewSettings]); useEffect(() => { const btnSort = element.current?.querySelector('.btnSort'); btnSort?.addEventListener('click', showSortMenu); return () => { btnSort?.removeEventListener('click', showSortMenu); }; }, [showSortMenu]); return (
); }; export default Sort;