Add Group filter dropdown support
This commit is contained in:
parent
66ea529160
commit
0d688fffd3
|
@ -39,6 +39,7 @@ export default class Todos {
|
|||
}
|
||||
|
||||
initFilters() {
|
||||
this.initFilterDropdown($('.js-group-search'), 'group_id', ['text']);
|
||||
this.initFilterDropdown($('.js-project-search'), 'project_id', ['text']);
|
||||
this.initFilterDropdown($('.js-type-search'), 'type');
|
||||
this.initFilterDropdown($('.js-action-search'), 'action_id');
|
||||
|
@ -53,7 +54,16 @@ export default class Todos {
|
|||
filterable: searchFields ? true : false,
|
||||
search: { fields: searchFields },
|
||||
data: $dropdown.data('data'),
|
||||
clicked: () => $dropdown.closest('form.filter-form').submit(),
|
||||
clicked: () => {
|
||||
const $formEl = $dropdown.closest('form.filter-form');
|
||||
const mutexDropdowns = {
|
||||
group_id: 'project_id',
|
||||
project_id: 'group_id',
|
||||
};
|
||||
|
||||
$formEl.find(`input[name="${mutexDropdowns[fieldName]}"]`).remove();
|
||||
$formEl.submit();
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -174,6 +174,18 @@
|
|||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(lg) {
|
||||
.todos-filters {
|
||||
.filter-categories {
|
||||
width: 75%;
|
||||
|
||||
.filter-item {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(xs) {
|
||||
.todo {
|
||||
.avatar {
|
||||
|
@ -199,6 +211,10 @@
|
|||
}
|
||||
|
||||
.todos-filters {
|
||||
.filter-categories {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.dropdown-menu-toggle {
|
||||
width: 100%;
|
||||
}
|
||||
|
|
|
@ -30,27 +30,33 @@
|
|||
|
||||
.todos-filters
|
||||
.row-content-block.second-block
|
||||
= form_tag todos_filter_path(without: [:project_id, :author_id, :type, :action_id]), method: :get, class: 'filter-form' do
|
||||
.filter-item.inline
|
||||
- if params[:project_id].present?
|
||||
= hidden_field_tag(:project_id, params[:project_id])
|
||||
= dropdown_tag(project_dropdown_label(params[:project_id], 'Project'), options: { toggle_class: 'js-project-search js-filter-submit', title: 'Filter by project', filter: true, filterInput: 'input#project-search', dropdown_class: 'dropdown-menu-selectable dropdown-menu-project js-filter-submit',
|
||||
placeholder: 'Search projects', data: { data: todo_projects_options, default_label: 'Project', display: 'static' } })
|
||||
.filter-item.inline
|
||||
- if params[:author_id].present?
|
||||
= hidden_field_tag(:author_id, params[:author_id])
|
||||
= dropdown_tag(user_dropdown_label(params[:author_id], 'Author'), options: { toggle_class: 'js-user-search js-filter-submit js-author-search', title: 'Filter by author', filter: true, filterInput: 'input#author-search', dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-author js-filter-submit',
|
||||
placeholder: 'Search authors', data: { any_user: 'Any Author', first_user: (current_user.username if current_user), project_id: (@project.id if @project), selected: params[:author_id], field_name: 'author_id', default_label: 'Author', todo_filter: true, todo_state_filter: params[:state] || 'pending' } })
|
||||
.filter-item.inline
|
||||
- if params[:type].present?
|
||||
= hidden_field_tag(:type, params[:type])
|
||||
= dropdown_tag(todo_types_dropdown_label(params[:type], 'Type'), options: { toggle_class: 'js-type-search js-filter-submit', dropdown_class: 'dropdown-menu-selectable dropdown-menu-type js-filter-submit',
|
||||
data: { data: todo_types_options, default_label: 'Type' } })
|
||||
.filter-item.inline.actions-filter
|
||||
- if params[:action_id].present?
|
||||
= hidden_field_tag(:action_id, params[:action_id])
|
||||
= dropdown_tag(todo_actions_dropdown_label(params[:action_id], 'Action'), options: { toggle_class: 'js-action-search js-filter-submit', dropdown_class: 'dropdown-menu-selectable dropdown-menu-action js-filter-submit',
|
||||
data: { data: todo_actions_options, default_label: 'Action' } })
|
||||
= form_tag todos_filter_path(without: [:project_id, :author_id, :type, :action_id]), method: :get, class: 'filter-form d-sm-flex' do
|
||||
.filter-categories.flex-fill
|
||||
.filter-item.inline
|
||||
- if params[:group_id].present?
|
||||
= hidden_field_tag(:group_id, params[:group_id])
|
||||
= dropdown_tag(group_dropdown_label(params[:group_id], 'Group'), options: { toggle_class: 'js-group-search js-filter-submit', title: 'Filter by group', filter: true, filterInput: 'input#group-search', dropdown_class: 'dropdown-menu-selectable dropdown-menu-group js-filter-submit',
|
||||
placeholder: 'Search groups', data: { data: todo_group_options, default_label: 'Group', display: 'static' } })
|
||||
.filter-item.inline
|
||||
- if params[:project_id].present?
|
||||
= hidden_field_tag(:project_id, params[:project_id])
|
||||
= dropdown_tag(project_dropdown_label(params[:project_id], 'Project'), options: { toggle_class: 'js-project-search js-filter-submit', title: 'Filter by project', filter: true, filterInput: 'input#project-search', dropdown_class: 'dropdown-menu-selectable dropdown-menu-project js-filter-submit',
|
||||
placeholder: 'Search projects', data: { data: todo_projects_options, default_label: 'Project', display: 'static' } })
|
||||
.filter-item.inline
|
||||
- if params[:author_id].present?
|
||||
= hidden_field_tag(:author_id, params[:author_id])
|
||||
= dropdown_tag(user_dropdown_label(params[:author_id], 'Author'), options: { toggle_class: 'js-user-search js-filter-submit js-author-search', title: 'Filter by author', filter: true, filterInput: 'input#author-search', dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-author js-filter-submit',
|
||||
placeholder: 'Search authors', data: { any_user: 'Any Author', first_user: (current_user.username if current_user), project_id: (@project.id if @project), selected: params[:author_id], field_name: 'author_id', default_label: 'Author', todo_filter: true, todo_state_filter: params[:state] || 'pending' } })
|
||||
.filter-item.inline
|
||||
- if params[:type].present?
|
||||
= hidden_field_tag(:type, params[:type])
|
||||
= dropdown_tag(todo_types_dropdown_label(params[:type], 'Type'), options: { toggle_class: 'js-type-search js-filter-submit', dropdown_class: 'dropdown-menu-selectable dropdown-menu-type js-filter-submit',
|
||||
data: { data: todo_types_options, default_label: 'Type' } })
|
||||
.filter-item.inline.actions-filter
|
||||
- if params[:action_id].present?
|
||||
= hidden_field_tag(:action_id, params[:action_id])
|
||||
= dropdown_tag(todo_actions_dropdown_label(params[:action_id], 'Action'), options: { toggle_class: 'js-action-search js-filter-submit', dropdown_class: 'dropdown-menu-selectable dropdown-menu-action js-filter-submit',
|
||||
data: { data: todo_actions_options, default_label: 'Action' } })
|
||||
.filter-item.sort-filter
|
||||
.dropdown
|
||||
%button.dropdown-menu-toggle.dropdown-menu-toggle-sort{ type: 'button', 'data-toggle' => 'dropdown' }
|
||||
|
|
Loading…
Reference in New Issue