diff --git a/app/components/sidebar_component.html.erb b/app/components/sidebar_component.html.erb index 1a74ded79c..3f13b49a49 100644 --- a/app/components/sidebar_component.html.erb +++ b/app/components/sidebar_component.html.erb @@ -1,4 +1,4 @@ - + <% if planning_application.pre_application? && tasks.first.section == "Assessment" %> <%= govuk_button_link_to "Preview report", bops_reports.planning_application_path(planning_application, view_as: "applicant"), new_tab: "", secondary: true, id: "preview-report-button-link" %> <% end %> diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js index ac50116f66..d1df059faf 100644 --- a/app/javascript/controllers/index.js +++ b/app/javascript/controllers/index.js @@ -74,6 +74,9 @@ application.register("rich-text", RichTextController) import ShowHideController from "./show_hide_controller.js" application.register("show-hide", ShowHideController) +import SidebarScrollController from "./sidebar_scroll_controller.js" +application.register("sidebar-scroll", SidebarScrollController) + import ShowHideFormController from "./show_hide_form_controller.js" application.register("show-hide-form", ShowHideFormController) diff --git a/app/javascript/controllers/sidebar_scroll_controller.js b/app/javascript/controllers/sidebar_scroll_controller.js new file mode 100644 index 0000000000..a30b7beaef --- /dev/null +++ b/app/javascript/controllers/sidebar_scroll_controller.js @@ -0,0 +1,39 @@ +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + static values = { + key: { type: String, default: "sidebar-scroll-position" }, + } + + connect() { + this.boundSaveBeforeNavigation = this.saveScrollPosition.bind(this) + document.addEventListener( + "turbo:before-visit", + this.boundSaveBeforeNavigation, + ) + this.restoreScrollPosition() + } + + disconnect() { + document.removeEventListener( + "turbo:before-visit", + this.boundSaveBeforeNavigation, + ) + this.saveScrollPosition() + } + + saveScrollPosition() { + sessionStorage.setItem(this.keyValue, this.element.scrollTop) + } + + restoreScrollPosition() { + const savedPosition = sessionStorage.getItem(this.keyValue) + if (savedPosition) { + this.element.scrollTop = Number.parseInt(savedPosition, 10) + } + } + + handleScroll() { + this.saveScrollPosition() + } +} diff --git a/engines/bops_core/spec/mailers/bops_core/magic_link_mailer_spec.rb b/engines/bops_core/spec/mailers/bops_core/magic_link_mailer_spec.rb index e6415ac288..056b52e842 100644 --- a/engines/bops_core/spec/mailers/bops_core/magic_link_mailer_spec.rb +++ b/engines/bops_core/spec/mailers/bops_core/magic_link_mailer_spec.rb @@ -22,7 +22,7 @@ end it "assigns the correct magic link URL" do - expect(mail.body.encoded).to include("http://buckinghamshire.bops.services/consultees/planning_applications/25-00100-LDCE?sgid=123456789") + expect(mail.body.encoded).to include("http://buckinghamshire.bops.services/consultees/planning_applications/#{planning_application.reference}?sgid=123456789") end it "includes the planning application reference in the email body" do diff --git a/engines/bops_preapps/spec/system/tasks/review_documents_spec.rb b/engines/bops_preapps/spec/system/tasks/review_documents_spec.rb index e145baab12..24dbf7b6aa 100644 --- a/engines/bops_preapps/spec/system/tasks/review_documents_spec.rb +++ b/engines/bops_preapps/spec/system/tasks/review_documents_spec.rb @@ -26,6 +26,14 @@ end end + it "has sidebar scroll controller attached" do + within(".bops-sidebar") do + click_link "Review documents" + end + + expect(page).to have_css(".bops-sidebar[data-controller='sidebar-scroll']") + end + context "when there are no documents" do it "displays a message indicating no active documents" do within ".bops-sidebar" do