3 * Manages the logic for the control which provides list sorting options.
6 class ListSortControl {
10 this.menu = this.$refs.menu;
12 this.sortInput = this.$refs.sort;
13 this.orderInput = this.$refs.order;
14 this.form = this.$refs.form;
16 this.setupListeners();
20 this.menu.addEventListener('click', event => {
21 if (event.target.closest('[data-sort-value]') !== null) {
22 this.sortOptionClick(event);
26 this.elem.addEventListener('click', event => {
27 if (event.target.closest('[data-sort-dir]') !== null) {
28 this.sortDirectionClick(event);
33 sortOptionClick(event) {
34 const sortOption = event.target.closest('[data-sort-value]');
35 this.sortInput.value = sortOption.getAttribute('data-sort-value');
36 event.preventDefault();
40 sortDirectionClick(event) {
41 const currentDir = this.orderInput.value;
42 this.orderInput.value = (currentDir === 'asc') ? 'desc' : 'asc';
43 event.preventDefault();
49 export default ListSortControl;