Skip to content

Commit

Permalink
Keep project filters section hidden when using predefined filters fro…
Browse files Browse the repository at this point in the history
…m sidebar

As per requirements and the highlight presented [here](https://community.openproject.org/projects/openproject/work_packages/47850/activity#activity-61), ensuring
that the filters section remains hidden when using the filters from the
sidebar.

Added some specs to demonstrate the undesired behavior and the subsequent
code that fulfills the expectations.
  • Loading branch information
aaron-contreras committed Jul 17, 2023
1 parent 6dc0c12 commit 1c804ca
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 9 deletions.
6 changes: 3 additions & 3 deletions app/helpers/projects_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
module ProjectsHelper
include WorkPackagesFilterHelper

def filter_set?
params[:filters].present?
def show_filters_section?
params[:filters].present? && !params.key?(:hide_filters_section)
end

def allowed_filters(query)
Expand Down Expand Up @@ -127,7 +127,7 @@ def global_menu_archived_projects_item
def projects_path_with_filters(filters)
return projects_path if filters.empty?

projects_path(filters: filters.to_json)
projects_path(filters: filters.to_json, hide_filters_section: true)
end

def global_menu_item_css_class(path)
Expand Down
2 changes: 1 addition & 1 deletion app/views/projects/filters/_form.html.erb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<%= form_tag({},
method: :get,
class: "project-filters #{filter_set? ? '-expanded' : ''}",
class: "project-filters #{show_filters_section? ? '-expanded' : ''}",
data: {
'project-target': 'filterForm',
action: 'submit->project#sendForm:prevent'
Expand Down
2 changes: 1 addition & 1 deletion app/views/projects/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ See COPYRIGHT and LICENSE files for more details.
<% end %>
<li class="toolbar-item">
<button title="<%= t(:label_filters_toggle) %>"
class="button toolbar-icon <%= filter_set? ? '-active' : '' %>"
class="button toolbar-icon <%= show_filters_section? ? '-active' : '' %>"
data-project-target="filterFormToggle"
data-action="project#toggleFilterForm">
<%= op_icon("icon-filter button--icon") %>
Expand Down
12 changes: 8 additions & 4 deletions spec/features/projects/projects_index_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,8 @@ def expect_projects_in_order(*projects)
public_project,
development_project)

expect(page).to have_selector('li[filter-name="active"]', visible: :hidden)
projects_page.expect_filters_container_hidden
projects_page.expect_filter_set 'active'
end
end

Expand All @@ -251,7 +252,8 @@ def expect_projects_in_order(*projects)
projects_page.expect_projects_listed(project)
projects_page.expect_projects_not_listed(public_project, development_project)

expect(page).to have_selector('li[filter-name="active"]', visible: :hidden)
projects_page.expect_filters_container_hidden
projects_page.expect_filter_set 'member_of'
end
end

Expand All @@ -265,7 +267,8 @@ def expect_projects_in_order(*projects)
projects_page.expect_projects_not_listed(project,
development_project)

expect(page).to have_selector('li[filter-name="public"]')
projects_page.expect_filters_container_hidden
projects_page.expect_filter_set 'public'
end
end

Expand All @@ -287,7 +290,8 @@ def expect_projects_in_order(*projects)
project,
development_project)

expect(page).to have_selector('li[filter-name="active"]')
projects_page.expect_filters_container_hidden
projects_page.expect_filter_set 'active'
end
end
end
Expand Down
13 changes: 13 additions & 0 deletions spec/support/pages/projects/index.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,19 @@ def set_sidebar_filter(filter_name)
end
end

def expect_filters_container_toggled
expect(page).to have_selector('form.project-filters')
end

def expect_filters_container_hidden
expect(page).to have_selector('form.project-filters', visible: :hidden)
end

def expect_filter_set(filter_name)
expect(page).to have_selector("li[filter-name='#{filter_name}']:not(.hidden)",
visible: :hidden)
end

def filter_by_active(value)
set_filter('active',
'Active',
Expand Down

0 comments on commit 1c804ca

Please sign in to comment.