var addOverlay = function (layer, name, maxArea) {
var item = $("<li>")
- .tooltip({
- placement: "top"
- })
.appendTo(overlays);
+ var tooltip;
+ if (name === "notes" || name === "data") {
+ item.attr("title", I18n.t("javascripts.site.map_" + name + "_zoom_in_tooltip"));
+ tooltip = new bootstrap.Tooltip(item[0]);
+ tooltip.disable();
+ }
+
var label = $("<label>")
.attr("class", "form-check-label")
.appendTo(item);
}
$(item).attr("class", disabled ? "disabled" : "");
- item.attr("data-bs-original-title", disabled ? // has additional bug when zooming out from enabled state
- I18n.t("javascripts.site.map_" + name + "_zoom_in_tooltip") : "");
+ if (tooltip) {
+ if (disabled) {
+ tooltip.enable();
+ } else {
+ tooltip.disable();
+ }
+ }
});
};
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"
+ li.hover # try to trigger disabled tooltip
+ zoomout = find(".control-button.zoomout")
+ zoomout.hover # un-hover the tooltip that's being tested
+ zoomout.click
+ li.matches_css? ".disabled"
+ li.hover
+ assert_selector ".tooltip", :text => "Zoom in"
+ end
end