]> git.mxchange.org Git - friendica.git/blobdiff - view/theme/frio/js/theme.js
Merge pull request #3439 from tobiasd/20170506-token
[friendica.git] / view / theme / frio / js / theme.js
index cb03f40b5e7c985969f15bb943d0ce4bbbde7f6b..0329ae6c82cb16a287a6238b2d007a41f9dfbfe0 100644 (file)
@@ -303,7 +303,7 @@ $(document).ready(function(){
        // Customize some elements when the app is used in standalone mode on Android
        if (window.matchMedia('(display-mode: standalone)').matches) {
                // Open links to source outside of the webview
-               $('.plink').on('click', function (e) {
+               $('body').on('click', '.plink', function (e) {
                        $(e.target).attr('target', '_blank');
                });
        }
@@ -315,6 +315,44 @@ $(document).ready(function(){
        $(document).on('change', 'textarea', function(event) {
                autosize.update(event.target);
        });
+
+       /*
+        * Sticky aside on page scroll
+        * We enable the sticky aside only when window is wider than
+        * 976px - which is the maximum width where the aside is shown in
+        * mobile style - because on chrome-based browsers (desktop and
+        * android) the sticky plugin in mobile style causes the browser to
+        * scroll back to top the main content, making it impossible
+        * to navigate.
+        * A side effect is that the sitky aside isn't really responsive,
+        * since is enabled or not at page loading time.
+        */
+       if ($(window).width() > 976) {
+               $("aside").stick_in_parent({
+                       offset_top: 100, // px, header + tab bar + spacing
+                       recalc_every: 10
+               });
+               // recalculate sticky aside on clicks on <a> elements
+               // this handle height changes on expanding submenus
+               $("aside").on("click", "a", function(){
+                       $(document.body).trigger("sticky_kit:recalc");
+               });
+       }
+
+       /*
+        * Add or remove "aside-out" class to body tag
+        * when the mobile aside is shown or hidden.
+        * The class is used in css to disable scroll in page when the aside
+        * is shown.
+        */
+       $("aside")
+               .on("shown.bs.offcanvas", function() {
+                       $("body").addClass("aside-out");
+               })
+               .on("hidden.bs.offcanvas", function() {
+                       $("body").removeClass("aside-out");
+               });
+
 });
 
 function openClose(theID) {