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