diff --git a/app/assets/javascripts/advanced_search.js b/app/assets/javascripts/advanced_search.js
index 9fcf8ae5f..d987fda8a 100644
--- a/app/assets/javascripts/advanced_search.js
+++ b/app/assets/javascripts/advanced_search.js
@@ -1,13 +1,6 @@
(function() {
"use strict";
App.AdvancedSearch = {
- advanced_search_terms: function() {
- return $("#js-advanced-search").data("advanced-search-terms");
- },
- toggle_form: function(event) {
- event.preventDefault();
- $("#js-advanced-search").slideToggle();
- },
toggle_date_options: function() {
if ($("#js-advanced-search-date-min").val() === "custom") {
$("#js-custom-date").show();
@@ -18,13 +11,19 @@
}
},
initialize: function() {
- if (App.AdvancedSearch.advanced_search_terms()) {
- $("#js-advanced-search").show();
+ var toggle_button = $("#js-advanced-search-title");
+
+ toggle_button.removeAttr("hidden");
+
+ if (toggle_button.attr("aria-expanded") === "true") {
App.AdvancedSearch.toggle_date_options();
+ } else {
+ toggle_button.next().hide();
}
- $("#js-advanced-search-title").on({
- click: function(event) {
- App.AdvancedSearch.toggle_form(event);
+ toggle_button.on({
+ click: function() {
+ $(this).attr("aria-expanded", !JSON.parse($(this).attr("aria-expanded")));
+ $(this).next().slideToggle();
}
});
$("#js-advanced-search-date-min").on({
diff --git a/app/assets/stylesheets/advanced_search.scss b/app/assets/stylesheets/advanced_search.scss
index 9191bb83c..41b344f7b 100644
--- a/app/assets/stylesheets/advanced_search.scss
+++ b/app/assets/stylesheets/advanced_search.scss
@@ -1,18 +1,7 @@
-.advanced-search {
- float: left;
- margin: $line-height 0;
- position: inherit;
-
- @include breakpoint(medium) {
- float: right;
- margin-bottom: 0;
- margin-top: $line-height / 4;
- position: absolute;
- right: 0;
- }
-}
-
.advanced-search-form {
+ @include grid-row-nest;
+ display: flex;
+ flex-direction: column;
@include breakpoint(large) {
.filter {
@@ -38,6 +27,25 @@
}
}
+ > [aria-expanded] {
+ @include xy-gutters;
+ color: $link;
+ cursor: pointer;
+ margin-top: $line-height;
+ margin-bottom: $line-height;
+ max-width: max-content;
+
+ @include breakpoint(medium) {
+ align-self: flex-end;
+ margin-bottom: 0;
+ margin-top: $line-height / 4;
+ }
+
+ &:focus {
+ outline: $outline-focus;
+ }
+ }
+
.general-search,
.filter,
.submit {
diff --git a/app/components/shared/advanced_search_component.html.erb b/app/components/shared/advanced_search_component.html.erb
index 903542908..1155ef057 100644
--- a/app/components/shared/advanced_search_component.html.erb
+++ b/app/components/shared/advanced_search_component.html.erb
@@ -1,70 +1,66 @@
-
- <%= link_to t("shared.advanced_search.title"), "#advanced_search_form", id: "js-advanced-search-title", class: "advanced-search small" %>
-
-
-
- <%= form_tag request.path, id: "advanced_search_form", method: :get do %>
-
-
-
-
- <%= text_field_tag "search", params[:search],
- placeholder: t("shared.advanced_search.general_placeholder") %>
-
-
-
-
-
- <%= select_tag("advanced_search[date_min]", date_range_options,
- include_blank: t("shared.advanced_search.date_range_blank"),
- id: "js-advanced-search-date-min") %>
-
-
-
-
-
- <%= text_field_tag "advanced_search[date_min]",
- advanced_search[:date_min],
- class: "js-calendar" %>
-
-
-
- <%= text_field_tag "advanced_search[date_max]",
- advanced_search[:date_max],
- class: "js-calendar" %>
-
-
-
-
-
-
- <%= select_tag("advanced_search[official_level]", official_level_search_options,
- include_blank: t("shared.advanced_search.author_type_blank")) %>
-
-
- <% if sdg? %>
-
-
- <%= select_tag("advanced_search[goal]", goal_options,
- include_blank: t("shared.advanced_search.goal_blank")) %>
-
-
-
- <%= select_tag("advanced_search[target]", target_options,
- include_blank: t("shared.advanced_search.target_blank")) %>
-
- <% end %>
-
-
- <%= submit_tag t("shared.advanced_search.search"), class: "button expanded" %>
-
+<%= form_tag request.path, id: "advanced_search_form", class: "advanced-search-form", method: :get do %>
+
+
+
+
+ <%= text_field_tag "search", params[:search],
+ placeholder: t("shared.advanced_search.general_placeholder") %>
- <% end %>
-
+
+
+
+
+ <%= select_tag("advanced_search[date_min]", date_range_options,
+ include_blank: t("shared.advanced_search.date_range_blank"),
+ id: "js-advanced-search-date-min") %>
+
+
+
+
+
+ <%= text_field_tag "advanced_search[date_min]",
+ advanced_search[:date_min],
+ class: "js-calendar" %>
+
+
+
+ <%= text_field_tag "advanced_search[date_max]",
+ advanced_search[:date_max],
+ class: "js-calendar" %>
+
+
+
+
+
+
+ <%= select_tag("advanced_search[official_level]", official_level_search_options,
+ include_blank: t("shared.advanced_search.author_type_blank")) %>
+
+
+ <% if sdg? %>
+
+
+ <%= select_tag("advanced_search[goal]", goal_options,
+ include_blank: t("shared.advanced_search.goal_blank")) %>
+
+
+
+ <%= select_tag("advanced_search[target]", target_options,
+ include_blank: t("shared.advanced_search.target_blank")) %>
+
+ <% end %>
+
+
+ <%= submit_tag t("shared.advanced_search.search"), class: "button expanded" %>
+
+
+<% end %>
diff --git a/spec/components/shared/advanced_search_component_spec.rb b/spec/components/shared/advanced_search_component_spec.rb
index 84f072b8f..1bb232cb0 100644
--- a/spec/components/shared/advanced_search_component_spec.rb
+++ b/spec/components/shared/advanced_search_component_spec.rb
@@ -1,9 +1,23 @@
require "rails_helper"
describe Shared::AdvancedSearchComponent, type: :component do
- describe "SDG filter" do
- let(:component) { Shared::AdvancedSearchComponent.new }
+ let(:component) { Shared::AdvancedSearchComponent.new }
+ context "JavaScript disabled" do
+ it "renders the form" do
+ render_inline component
+
+ expect(page).to have_button "Filter"
+ end
+
+ it "hides the button to show the form" do
+ render_inline component
+
+ expect(page.find("form")).to have_button "Advanced search", visible: :hidden
+ end
+ end
+
+ describe "SDG filter" do
before do
Setting["feature.sdg"] = true
Setting["sdg.process.proposals"] = true
diff --git a/spec/system/advanced_search_spec.rb b/spec/system/advanced_search_spec.rb
index 8eefdbec3..8303f9bea 100644
--- a/spec/system/advanced_search_spec.rb
+++ b/spec/system/advanced_search_spec.rb
@@ -11,7 +11,7 @@ describe "Advanced search" do
visit debates_path
- click_link "Advanced search"
+ click_button "Advanced search"
fill_in "Write the text", with: "Schwifty"
click_button "Filter"
@@ -31,7 +31,7 @@ describe "Advanced search" do
visit proposals_path
- click_link "Advanced search"
+ click_button "Advanced search"
fill_in "Write the text", with: "Schwifty"
click_button "Filter"
@@ -51,7 +51,7 @@ describe "Advanced search" do
visit budget_investments_path(budget)
- click_link "Advanced search"
+ click_button "Advanced search"
fill_in "Write the text", with: "Schwifty"
click_button "Filter"
@@ -76,7 +76,7 @@ describe "Advanced search" do
visit debates_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "Official position 1", from: "advanced_search_official_level"
click_button "Filter"
@@ -100,7 +100,7 @@ describe "Advanced search" do
visit proposals_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "Official position 2", from: "advanced_search_official_level"
click_button "Filter"
@@ -124,7 +124,7 @@ describe "Advanced search" do
visit budget_investments_path(budget)
- click_link "Advanced search"
+ click_button "Advanced search"
select "Official position 3", from: "advanced_search_official_level"
click_button "Filter"
@@ -148,7 +148,7 @@ describe "Advanced search" do
visit debates_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "Official position 4", from: "advanced_search_official_level"
click_button "Filter"
@@ -172,7 +172,7 @@ describe "Advanced search" do
visit proposals_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "Official position 5", from: "advanced_search_official_level"
click_button "Filter"
@@ -194,7 +194,7 @@ describe "Advanced search" do
visit budget_investments_path(budget)
- click_link "Advanced search"
+ click_button "Advanced search"
select "Last 24 hours", from: "js-advanced-search-date-min"
click_button "Filter"
@@ -214,7 +214,7 @@ describe "Advanced search" do
visit debates_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "Last week", from: "js-advanced-search-date-min"
click_button "Filter"
@@ -234,7 +234,7 @@ describe "Advanced search" do
visit proposals_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "Last month", from: "js-advanced-search-date-min"
click_button "Filter"
@@ -254,7 +254,7 @@ describe "Advanced search" do
visit budget_investments_path(budget)
- click_link "Advanced search"
+ click_button "Advanced search"
select "Last year", from: "js-advanced-search-date-min"
click_button "Filter"
@@ -275,7 +275,7 @@ describe "Advanced search" do
visit debates_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "Customized", from: "js-advanced-search-date-min"
fill_in "advanced_search_date_min", with: 7.days.ago.strftime("%d/%m/%Y")
fill_in "advanced_search_date_max", with: 1.day.ago.strftime("%d/%m/%Y")
@@ -298,7 +298,7 @@ describe "Advanced search" do
visit proposals_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "Customized", from: "js-advanced-search-date-min"
fill_in "advanced_search_date_min", with: 4000.years.ago.strftime("%d/%m/%Y")
fill_in "advanced_search_date_max", with: "13/13/2199"
@@ -325,7 +325,7 @@ describe "Advanced search" do
visit budget_investments_path(budget)
- click_link "Advanced search"
+ click_button "Advanced search"
fill_in "Write the text", with: "Schwifty"
select "Official position 1", from: "advanced_search_official_level"
select "Last 24 hours", from: "js-advanced-search-date-min"
@@ -343,7 +343,7 @@ describe "Advanced search" do
Setting["official_level_1_name"] = "Official position 1"
visit debates_path
- click_link "Advanced search"
+ click_button "Advanced search"
fill_in "Write the text", with: "Schwifty"
select "Official position 1", from: "advanced_search_official_level"
@@ -351,7 +351,7 @@ describe "Advanced search" do
click_button "Filter"
- within "#js-advanced-search" do
+ within ".advanced-search-form" do
expect(page).to have_selector("input[name='search'][value='Schwifty']")
expect(page).to have_select("advanced_search[official_level]", selected: "Official position 1")
expect(page).to have_select("advanced_search[date_min]", selected: "Last 24 hours")
@@ -360,7 +360,7 @@ describe "Advanced search" do
scenario "Maintain custom date search criteria" do
visit proposals_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "Customized", from: "js-advanced-search-date-min"
fill_in "advanced_search_date_min", with: 7.days.ago.strftime("%d/%m/%Y")
@@ -370,7 +370,7 @@ describe "Advanced search" do
expect(page).to have_content("citizen proposals cannot be found")
- within "#js-advanced-search" do
+ within ".advanced-search-form" do
expect(page).to have_select("advanced_search[date_min]", selected: "Customized")
expect(page).to have_selector("input[name='advanced_search[date_min]'][value*='#{7.days.ago.strftime("%d/%m/%Y")}']")
expect(page).to have_selector("input[name='advanced_search[date_max]'][value*='#{1.day.ago.strftime("%d/%m/%Y")}']")
@@ -391,7 +391,7 @@ describe "Advanced search" do
create(:budget_investment, title: "Hospital", heading: heading, sdg_goals: [SDG::Goal[3]])
visit budget_investments_path(budget)
- click_link "Advanced search"
+ click_button "Advanced search"
select "6. Clean Water and Sanitation", from: "By SDG"
click_button "Filter"
@@ -413,7 +413,7 @@ describe "Advanced search" do
create(:debate, title: "Preschool", sdg_targets: [SDG::Target["4.2"]])
visit debates_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "4.2", from: "By target"
click_button "Filter"
@@ -429,7 +429,7 @@ describe "Advanced search" do
scenario "Dynamic target options depending on the selected goal" do
visit proposals_path
- click_link "Advanced search"
+ click_button "Advanced search"
select "1. No Poverty", from: "By SDG"
expect(page).to have_select "By target",