From 3bcbaf6d29990a40176d3ea9609196fb28a5ba74 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Fri, 20 Jun 2025 14:18:01 +0300 Subject: [PATCH] Replace language select dropdown with modal dialog --- app/assets/javascripts/language_selector.js | 10 +++++--- app/assets/stylesheets/common.scss | 7 ------ app/views/layouts/_header.html.erb | 24 +++++++++++++++++-- .../_select_language_button.html.erb} | 11 ++------- .../layouts/_select_language_list.html.erb | 12 ++++++++++ config/locales/en.yml | 4 ++++ test/system/site_test.rb | 12 +--------- 7 files changed, 48 insertions(+), 32 deletions(-) rename app/views/{shared/_language_selector.html.erb => layouts/_select_language_button.html.erb} (52%) create mode 100644 app/views/layouts/_select_language_list.html.erb diff --git a/app/assets/javascripts/language_selector.js b/app/assets/javascripts/language_selector.js index eac58e403..83525a54d 100644 --- a/app/assets/javascripts/language_selector.js +++ b/app/assets/javascripts/language_selector.js @@ -1,4 +1,8 @@ -$(document).on("change", ".language-change-trigger", function () { - Cookies.set("_osm_locale", this.value, { secure: true, path: "/", samesite: "lax" }); - document.location.reload(); +$(document).on("click", "#select_language_dialog [data-language-code]", function (e) { + e.preventDefault(); + + const code = $(this).data("language-code"); + + Cookies.set("_osm_locale", code, { secure: true, path: "/", samesite: "lax" }); + location.reload(); }); diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index 15482b274..f023e0459 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -22,13 +22,6 @@ time[title] { color: $blue; } -/* Utility for transparent color */ - -.text-transparent { - color: transparent !important; - user-select: none; -} - /* Bootstrap contextual table classes overrides in dark mode */ @include color-mode(dark) { diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 2713ebd25..2a1d09295 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -69,10 +69,14 @@ @@ -111,3 +115,19 @@ <% end %> + +<% unless current_user&.id %> + +<% end %> diff --git a/app/views/shared/_language_selector.html.erb b/app/views/layouts/_select_language_button.html.erb similarity index 52% rename from app/views/shared/_language_selector.html.erb rename to app/views/layouts/_select_language_button.html.erb index 9b64c7598..f88933c03 100644 --- a/app/views/shared/_language_selector.html.erb +++ b/app/views/layouts/_select_language_button.html.erb @@ -1,11 +1,4 @@ - diff --git a/app/views/layouts/_select_language_list.html.erb b/app/views/layouts/_select_language_list.html.erb new file mode 100644 index 000000000..3678269ad --- /dev/null +++ b/app/views/layouts/_select_language_list.html.erb @@ -0,0 +1,12 @@ + diff --git a/config/locales/en.yml b/config/locales/en.yml index 025740752..b082df236 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1721,6 +1721,10 @@ en: communities: Communities learn_more: "Learn More" more: More + header: + select_language: Select Language + select_language_button: + title: Select Language offline_flash: osm_offline: "The OpenStreetMap database is currently offline while essential maintenance work is carried out." osm_read_only: "The OpenStreetMap database is currently in read-only mode while essential maintenance work is carried out." diff --git a/test/system/site_test.rb b/test/system/site_test.rb index 09e14440a..54dcf744f 100644 --- a/test/system/site_test.rb +++ b/test/system/site_test.rb @@ -93,17 +93,7 @@ class SiteTest < ApplicationSystemTestCase test "language selector should exist when logged out" do visit "/" - assert_selector ".language-change-trigger", :visible => "all" - AVAILABLE_LANGUAGES.each do |locale| - assert_selector "option[value='#{locale[:code]}']", :visible => "all" - end - end - - test "language selector should not exist when logged in" do - sign_in_as(create(:user)) - - visit "/" - assert_no_selector ".language-change-trigger", :visible => "all" + assert_button "Select Language" end private -- 2.39.5