3 * Manages the logic for the control which provides list sorting options.
5 class ListSortControl {
9 this.menu = elem.querySelector('ul');
11 this.sortInput = elem.querySelector('[name="sort"]');
12 this.orderInput = elem.querySelector('[name="order"]');
13 this.form = elem.querySelector('form');
15 this.menu.addEventListener('click', event => {
16 if (event.target.closest('[data-sort-value]') !== null) {
17 this.sortOptionClick(event);
21 this.elem.addEventListener('click', event => {
22 if (event.target.closest('[data-sort-dir]') !== null) {
23 this.sortDirectionClick(event);
28 sortOptionClick(event) {
29 const sortOption = event.target.closest('[data-sort-value]');
30 this.sortInput.value = sortOption.getAttribute('data-sort-value');
31 event.preventDefault();
35 sortDirectionClick(event) {
36 const currentDir = this.orderInput.value;
37 const newDir = (currentDir === 'asc') ? 'desc' : 'asc';
38 this.orderInput.value = newDir;
39 event.preventDefault();
45 export default ListSortControl;