]> git.openstreetmap.org Git - rails.git/commitdiff
Fix zoom level related tooltip for Edit button
authorAnton Khorev <tony29@yandex.ru>
Tue, 13 Sep 2022 02:26:49 +0000 (05:26 +0300)
committerAnton Khorev <tony29@yandex.ru>
Tue, 13 Sep 2022 02:26:49 +0000 (05:26 +0300)
app/assets/javascripts/application.js
test/system/site_test.rb

index 89f60847fb9261f2432051e5c2441b32b96744e9..8b8beb5b4a5164ca10a2c26652ef5662458b0024 100644 (file)
@@ -57,15 +57,19 @@ window.updateLinks = function (loc, zoom, layers, object) {
   });
 
   var editDisabled = zoom < 13;
-  $("#edit_tab")
-    .tooltip({ placement: "bottom" })
-    .attr("data-bs-original-title", editDisabled ?
-      I18n.t("javascripts.site.edit_disabled_tooltip") : "")
+  var editTab = $("#edit_tab");
+  editTab
     // Disable the button group and also the buttons to avoid
     // inconsistent behaviour when zooming
     .toggleClass("disabled", editDisabled)
     .find("a")
     .toggleClass("disabled", editDisabled);
+  var editTooltip = bootstrap.Tooltip.getOrCreateInstance(editTab[0], { placement: "bottom" });
+  if (editDisabled) {
+    editTooltip.enable();
+  } else {
+    editTooltip.disable();
+  }
 };
 
 window.maximiseMap = function () {
@@ -77,6 +81,9 @@ window.minimiseMap = function () {
 };
 
 $(document).ready(function () {
+  $("#edit_tab")
+    .attr("title", I18n.t("javascripts.site.edit_disabled_tooltip"));
+
   var headerWidth = 0,
       compactWidth = 0;
 
index f918b897aa529ff1d05b789446db2041db121087..0ed755a0953d066b0381da4f95a70ab2b77e9b9d 100644 (file)
@@ -61,10 +61,24 @@ class SiteTest < ApplicationSystemTestCase
       find(selector).hover
       assert_selector ".tooltip", :text => "Zoom in"
     end
+
+    test "no zoom-in tooltips on high zoom levels, then tooltips appear after zoom out for control '#{selector}'" do
+      visit "/#map=14/0/0"
+
+      assert_no_selector ".tooltip"
+      find(selector).hover
+      assert_no_selector ".tooltip", :text => "Zoom in"
+      find("h1").hover # un-hover original element
+
+      visit "/#map=10/0/0"
+      find(selector).hover
+      assert_selector ".tooltip", :text => "Zoom in"
+    end
   end
 
   test "notes layer tooltip appears on zoom out" do
     visit "/#map=9/40/-4" # depends on zoom levels where notes are allowed
+
     find(".control-layers .control-button").click
     li = find(".layers-ui .overlay-layers li:first-child")
     li.not_matches_css? ".disabled"