diff options
author | kushalpandya <kushal@gitlab.com> | 2017-10-13 11:38:50 +0300 |
---|---|---|
committer | kushalpandya <kushal@gitlab.com> | 2017-10-13 11:38:50 +0300 |
commit | 934f4c6ea4ebaf7a0c1935e1138fdfa1244312e0 (patch) | |
tree | 283ba75e6aa99bd464cd0ad662dd61fc1a7c43e6 /app/assets/javascripts/groups | |
parent | d72b95cfb7a538c9385f373747e3675de8acb980 (diff) |
Add `archived` related options in sort dropdown
Diffstat (limited to 'app/assets/javascripts/groups')
-rw-r--r-- | app/assets/javascripts/groups/groups_filterable_list.js | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/app/assets/javascripts/groups/groups_filterable_list.js b/app/assets/javascripts/groups/groups_filterable_list.js index 6a61a1ca355..396e57c5802 100644 --- a/app/assets/javascripts/groups/groups_filterable_list.js +++ b/app/assets/javascripts/groups/groups_filterable_list.js @@ -25,30 +25,34 @@ export default class GroupFilterableList extends FilterableList { bindEvents() { super.bindEvents(); - this.onFormSubmitWrapper = this.onFormSubmit.bind(this); this.onFilterOptionClikWrapper = this.onOptionClick.bind(this); - this.filterForm.addEventListener('submit', this.onFormSubmitWrapper); this.$dropdown.on('click', 'a', this.onFilterOptionClikWrapper); } - onFormSubmit(e) { - e.preventDefault(); - + onFilterInput() { + const queryData = {}; const $form = $(this.form); + const archivedParam = getParameterByName('archived', window.location.href); const filterGroupsParam = $form.find(`[name="${this.filterInputField}"]`).val(); - const queryData = {}; if (filterGroupsParam) { queryData[this.filterInputField] = filterGroupsParam; } + if (archivedParam) { + queryData.archived = archivedParam; + } + this.filterResults(queryData); - this.setDefaultFilterOption(); + + if (this.setDefaultFilterOption) { + this.setDefaultFilterOption(); + } } setDefaultFilterOption() { - const defaultOption = $.trim(this.$dropdown.find('.dropdown-menu a').first().text()); + const defaultOption = $.trim(this.$dropdown.find('.dropdown-menu li.js-filter-sort-order a').first().text()); this.$dropdown.find('.dropdown-label').text(defaultOption); } @@ -56,17 +60,34 @@ export default class GroupFilterableList extends FilterableList { e.preventDefault(); const queryData = {}; - const sortParam = getParameterByName('sort', e.currentTarget.href); + + // Get type of option selected from dropdown + const currentTargetClassList = e.currentTarget.parentElement.classList; + const isOptionFilterBySort = currentTargetClassList.contains('js-filter-sort-order'); + + // Get option query param, also preserve currently applied query param + const isOptionFilterByArchivedProjects = currentTargetClassList.contains('js-filter-archived-projects'); + const sortParam = getParameterByName('sort', e.currentTarget.href) || getParameterByName('sort', window.location.href); + const archivedParam = getParameterByName('archived', e.currentTarget.href) || getParameterByName('archived', window.location.href); if (sortParam) { queryData.sort = sortParam; } + if (archivedParam) { + queryData.archived = archivedParam; + } + this.filterResults(queryData); // Active selected option - this.$dropdown.find('.dropdown-label').text($.trim(e.currentTarget.text)); - this.$dropdown.find('.dropdown-menu li a').removeClass('is-active'); + if (isOptionFilterBySort) { + this.$dropdown.find('.dropdown-label').text($.trim(e.currentTarget.text)); + this.$dropdown.find('.dropdown-menu li.js-filter-sort-order a').removeClass('is-active'); + } else if (isOptionFilterByArchivedProjects) { + this.$dropdown.find('.dropdown-menu li.js-filter-archived-projects a').removeClass('is-active'); + } + $(e.target).addClass('is-active'); // Clear current value on search form |