Fixed back-to-top button on firefox. Fixes #153.
This commit is contained in:
		
							parent
							
								
									547e117760
								
							
						
					
					
						commit
						d05e85efa9
					
				| 
						 | 
					@ -10,9 +10,12 @@ require('angular-ui-sortable');
 | 
				
			||||||
var ngApp = angular.module('bookStack', ['ngResource', 'ngAnimate', 'ngSanitize', 'ui.sortable']);
 | 
					var ngApp = angular.module('bookStack', ['ngResource', 'ngAnimate', 'ngSanitize', 'ui.sortable']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Global Event System
 | 
					// Global Event System
 | 
				
			||||||
var Events = {
 | 
					class Events {
 | 
				
			||||||
    listeners: {},
 | 
					    constructor() {
 | 
				
			||||||
    emit: function (eventName, eventData) {
 | 
					        this.listeners = {};
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    emit(eventName, eventData) {
 | 
				
			||||||
        if (typeof this.listeners[eventName] === 'undefined') return this;
 | 
					        if (typeof this.listeners[eventName] === 'undefined') return this;
 | 
				
			||||||
        var eventsToStart = this.listeners[eventName];
 | 
					        var eventsToStart = this.listeners[eventName];
 | 
				
			||||||
        for (let i = 0; i < eventsToStart.length; i++) {
 | 
					        for (let i = 0; i < eventsToStart.length; i++) {
 | 
				
			||||||
| 
						 | 
					@ -20,14 +23,15 @@ var Events = {
 | 
				
			||||||
            event(eventData);
 | 
					            event(eventData);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return this;
 | 
					        return this;
 | 
				
			||||||
    },
 | 
					    }
 | 
				
			||||||
    listen: function (eventName, callback) {
 | 
					
 | 
				
			||||||
 | 
					    listen(eventName, callback) {
 | 
				
			||||||
        if (typeof this.listeners[eventName] === 'undefined') this.listeners[eventName] = [];
 | 
					        if (typeof this.listeners[eventName] === 'undefined') this.listeners[eventName] = [];
 | 
				
			||||||
        this.listeners[eventName].push(callback);
 | 
					        this.listeners[eventName].push(callback);
 | 
				
			||||||
        return this;
 | 
					        return this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
window.Events = Events;
 | 
					window.Events = new Events();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var services = require('./services')(ngApp, Events);
 | 
					var services = require('./services')(ngApp, Events);
 | 
				
			||||||
var directives = require('./directives')(ngApp, Events);
 | 
					var directives = require('./directives')(ngApp, Events);
 | 
				
			||||||
| 
						 | 
					@ -38,14 +42,15 @@ var controllers = require('./controllers')(ngApp, Events);
 | 
				
			||||||
// Smooth scrolling
 | 
					// Smooth scrolling
 | 
				
			||||||
jQuery.fn.smoothScrollTo = function () {
 | 
					jQuery.fn.smoothScrollTo = function () {
 | 
				
			||||||
    if (this.length === 0) return;
 | 
					    if (this.length === 0) return;
 | 
				
			||||||
    $('body').animate({
 | 
					    let scrollElem = document.documentElement.scrollTop === 0 ?  document.body : document.documentElement;
 | 
				
			||||||
 | 
					    $(scrollElem).animate({
 | 
				
			||||||
        scrollTop: this.offset().top - 60 // Adjust to change final scroll position top margin
 | 
					        scrollTop: this.offset().top - 60 // Adjust to change final scroll position top margin
 | 
				
			||||||
    }, 800); // Adjust to change animations speed (ms)
 | 
					    }, 800); // Adjust to change animations speed (ms)
 | 
				
			||||||
    return this;
 | 
					    return this;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Making contains text expression not worry about casing
 | 
					// Making contains text expression not worry about casing
 | 
				
			||||||
$.expr[":"].contains = $.expr.createPseudo(function (arg) {
 | 
					jQuery.expr[":"].contains = $.expr.createPseudo(function (arg) {
 | 
				
			||||||
    return function (elem) {
 | 
					    return function (elem) {
 | 
				
			||||||
        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
 | 
					        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
| 
						 | 
					@ -95,13 +100,14 @@ $(function () {
 | 
				
			||||||
    var scrollTop = document.getElementById('back-to-top');
 | 
					    var scrollTop = document.getElementById('back-to-top');
 | 
				
			||||||
    var scrollTopBreakpoint = 1200;
 | 
					    var scrollTopBreakpoint = 1200;
 | 
				
			||||||
    window.addEventListener('scroll', function() {
 | 
					    window.addEventListener('scroll', function() {
 | 
				
			||||||
        if (!scrollTopShowing && document.body.scrollTop > scrollTopBreakpoint) {
 | 
					        let scrollTopPos = document.documentElement.scrollTop || document.body.scrollTop || 0;
 | 
				
			||||||
 | 
					        if (!scrollTopShowing && scrollTopPos > scrollTopBreakpoint) {
 | 
				
			||||||
            scrollTop.style.display = 'block';
 | 
					            scrollTop.style.display = 'block';
 | 
				
			||||||
            scrollTopShowing = true;
 | 
					            scrollTopShowing = true;
 | 
				
			||||||
            setTimeout(() => {
 | 
					            setTimeout(() => {
 | 
				
			||||||
                scrollTop.style.opacity = 0.4;
 | 
					                scrollTop.style.opacity = 0.4;
 | 
				
			||||||
            }, 1);
 | 
					            }, 1);
 | 
				
			||||||
        } else if (scrollTopShowing && document.body.scrollTop < scrollTopBreakpoint) {
 | 
					        } else if (scrollTopShowing && scrollTopPos < scrollTopBreakpoint) {
 | 
				
			||||||
            scrollTop.style.opacity = 0;
 | 
					            scrollTop.style.opacity = 0;
 | 
				
			||||||
            scrollTopShowing = false;
 | 
					            scrollTopShowing = false;
 | 
				
			||||||
            setTimeout(() => {
 | 
					            setTimeout(() => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue