2022-08-06 01:36:13 +03:00
|
|
|
import React, { FunctionComponent, useEffect, useRef } from 'react';
|
|
|
|
import IconButtonElement from '../../elements/IconButtonElement';
|
|
|
|
import libraryBrowser from '../../scripts/libraryBrowser';
|
|
|
|
import * as userSettings from '../../scripts/settings/userSettings';
|
|
|
|
import { IQuery } from './type';
|
|
|
|
|
|
|
|
type SortProps = {
|
2022-08-07 02:33:25 +03:00
|
|
|
sortMenuOptions: () => { name: string; id: string}[];
|
2022-08-06 01:36:13 +03:00
|
|
|
query: IQuery;
|
|
|
|
savedQueryKey: string;
|
|
|
|
reloadItems: () => void;
|
|
|
|
}
|
|
|
|
|
2022-08-07 02:33:25 +03:00
|
|
|
const Sort: FunctionComponent<SortProps> = ({ sortMenuOptions, query, savedQueryKey, reloadItems }: SortProps) => {
|
2022-08-06 01:36:13 +03:00
|
|
|
const element = useRef<HTMLDivElement>(null);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const btnSort = element.current?.querySelector('.btnSort');
|
|
|
|
|
|
|
|
if (btnSort) {
|
|
|
|
btnSort.addEventListener('click', (e) => {
|
|
|
|
libraryBrowser.showSortMenu({
|
2022-08-07 02:33:25 +03:00
|
|
|
items: sortMenuOptions(),
|
2022-08-06 01:36:13 +03:00
|
|
|
callback: () => {
|
|
|
|
query.StartIndex = 0;
|
|
|
|
userSettings.saveQuerySettings(savedQueryKey, query);
|
|
|
|
reloadItems();
|
|
|
|
},
|
|
|
|
query: query,
|
|
|
|
button: e.target
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
2022-08-07 02:33:25 +03:00
|
|
|
}, [sortMenuOptions, query, reloadItems, savedQueryKey]);
|
2022-08-06 01:36:13 +03:00
|
|
|
|
|
|
|
return (
|
|
|
|
<div ref={element}>
|
|
|
|
<IconButtonElement
|
|
|
|
is='paper-icon-button-light'
|
|
|
|
className='btnSort autoSize'
|
|
|
|
title='Sort'
|
|
|
|
icon='material-icons sort_by_alpha'
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default Sort;
|