]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/leaflet.sidebar.js
Merge remote-tracking branch 'upstream/pull/4964'
[rails.git] / app / assets / javascripts / leaflet.sidebar.js
index a6529ad0087d35ded17371569444fb6cfa3c2dac..9573c839d411c4a6eb5be8ebaed9d84a186cf8af 100644 (file)
@@ -1,34 +1,56 @@
-L.OSM.sidebar = function(selector) {
+L.OSM.sidebar = function (selector) {
   var control = {},
-    sidebar = $(selector),
-    current = $();
+      sidebar = $(selector),
+      current = $(),
+      currentButton = $(),
+      map;
 
-  control.addPane = function(pane) {
+  control.addTo = function (_) {
+    map = _;
+    return control;
+  };
+
+  control.addPane = function (pane) {
     pane
       .hide()
       .appendTo(sidebar);
   };
 
-  control.togglePane = function(pane) {
-    var controlContainer = $('.leaflet-control-container .leaflet-top.leaflet-right');
+  control.togglePane = function (pane, button) {
+    var paneWidth = 250;
 
     current
       .hide()
-      .trigger('hide');
+      .trigger("hide");
+
+    currentButton
+      .removeClass("active");
 
     if (current === pane) {
+      if ($("html").attr("dir") === "rtl") {
+        map.panBy([-paneWidth, 0], { animate: false });
+      }
       $(sidebar).hide();
-      controlContainer.css({paddingRight: '0'});
-      current = $();
+      $("#content").addClass("overlay-right-sidebar");
+      current = currentButton = $();
     } else {
       $(sidebar).show();
-      controlContainer.css({paddingRight: '200px'});
+      $("#content").removeClass("overlay-right-sidebar");
       current = pane;
+      currentButton = button || $();
+      if ($("html").attr("dir") === "rtl") {
+        map.panBy([paneWidth, 0], { animate: false });
+      }
     }
 
+    map.invalidateSize({ pan: false, animate: false });
+
     current
       .show()
-      .trigger('show');
+      .trigger("show");
+
+    currentButton
+      .addClass("active");
   };
 
   return control;