58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
// Global jQuery Config & Extensions
 | 
						|
 | 
						|
import jQuery from "jquery"
 | 
						|
window.jQuery = window.$ = jQuery;
 | 
						|
 | 
						|
/**
 | 
						|
 * Scroll the view to a specific element.
 | 
						|
 * @param {HTMLElement} element
 | 
						|
 */
 | 
						|
window.scrollToElement = function(element) {
 | 
						|
    if (!element) return;
 | 
						|
    let offset = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
 | 
						|
    let top = element.getBoundingClientRect().top + offset;
 | 
						|
    $('html, body').animate({
 | 
						|
        scrollTop: top - 60 // Adjust to change final scroll position top margin
 | 
						|
    }, 300);
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * Scroll and highlight an element.
 | 
						|
 * @param {HTMLElement} element
 | 
						|
 */
 | 
						|
window.scrollAndHighlight = function(element) {
 | 
						|
    if (!element) return;
 | 
						|
    window.scrollToElement(element);
 | 
						|
    let color = document.getElementById('custom-styles').getAttribute('data-color-light');
 | 
						|
    let initColor = window.getComputedStyle(element).getPropertyValue('background-color');
 | 
						|
    element.style.backgroundColor = color;
 | 
						|
    setTimeout(() => {
 | 
						|
        element.classList.add('selectFade');
 | 
						|
        element.style.backgroundColor = initColor;
 | 
						|
    }, 10);
 | 
						|
    setTimeout(() => {
 | 
						|
        element.classList.remove('selectFade');
 | 
						|
        element.style.backgroundColor = '';
 | 
						|
    }, 3000);
 | 
						|
};
 | 
						|
 | 
						|
// Smooth scrolling
 | 
						|
jQuery.fn.smoothScrollTo = function () {
 | 
						|
    if (this.length === 0) return;
 | 
						|
    window.scrollToElement(this[0]);
 | 
						|
    return this;
 | 
						|
};
 | 
						|
 | 
						|
// Making contains text expression not worry about casing
 | 
						|
jQuery.expr[":"].contains = $.expr.createPseudo(function (arg) {
 | 
						|
    return function (elem) {
 | 
						|
        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
 | 
						|
    };
 | 
						|
});
 | 
						|
 | 
						|
// Detect IE for css
 | 
						|
if(navigator.userAgent.indexOf('MSIE')!==-1
 | 
						|
    || navigator.appVersion.indexOf('Trident/') > 0
 | 
						|
    || navigator.userAgent.indexOf('Safari') !== -1){
 | 
						|
    document.body.classList.add('flexbox-support');
 | 
						|
} |