[init] initial commit
This commit is contained in:
17
assets/js/TweenMax.min.js
vendored
Normal file
17
assets/js/TweenMax.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
assets/js/bootstrap.min.js
vendored
Normal file
7
assets/js/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
45
assets/js/joinable.js
Normal file
45
assets/js/joinable.js
Normal file
File diff suppressed because one or more lines are too long
4
assets/js/jquery-1.11.1.min.js
vendored
Normal file
4
assets/js/jquery-1.11.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
173
assets/js/lozad.js
Normal file
173
assets/js/lozad.js
Normal file
@ -0,0 +1,173 @@
|
||||
/*! lozad.js - v1.14.0 - 2019-10-19
|
||||
* https://github.com/ApoorvSaxena/lozad.js
|
||||
* Copyright (c) 2019 Apoorv Saxena; Licensed MIT */
|
||||
|
||||
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, global.lozad = factory());
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
/**
|
||||
* Detect IE browser
|
||||
* @const {boolean}
|
||||
* @private
|
||||
*/
|
||||
var isIE = typeof document !== 'undefined' && document.documentMode;
|
||||
|
||||
var defaultConfig = {
|
||||
rootMargin: '0px',
|
||||
threshold: 0,
|
||||
load: function load(element) {
|
||||
if (element.nodeName.toLowerCase() === 'picture') {
|
||||
var img = document.createElement('img');
|
||||
if (isIE && element.getAttribute('data-iesrc')) {
|
||||
img.src = element.getAttribute('data-iesrc');
|
||||
}
|
||||
|
||||
if (element.getAttribute('data-alt')) {
|
||||
img.alt = element.getAttribute('data-alt');
|
||||
}
|
||||
|
||||
element.append(img);
|
||||
}
|
||||
|
||||
if (element.nodeName.toLowerCase() === 'video' && !element.getAttribute('data-src')) {
|
||||
if (element.children) {
|
||||
var childs = element.children;
|
||||
var childSrc = void 0;
|
||||
for (var i = 0; i <= childs.length - 1; i++) {
|
||||
childSrc = childs[i].getAttribute('data-src');
|
||||
if (childSrc) {
|
||||
childs[i].src = childSrc;
|
||||
}
|
||||
}
|
||||
|
||||
element.load();
|
||||
}
|
||||
}
|
||||
|
||||
if (element.getAttribute('data-src')) {
|
||||
element.src = element.getAttribute('data-src');
|
||||
}
|
||||
|
||||
if (element.getAttribute('data-srcset')) {
|
||||
element.setAttribute('srcset', element.getAttribute('data-srcset'));
|
||||
}
|
||||
|
||||
if (element.getAttribute('data-background-image')) {
|
||||
element.style.backgroundImage = 'url(\'' + element.getAttribute('data-background-image').split(',').join('\'),url(\'') + '\')';
|
||||
} else if (element.getAttribute('data-background-image-set')) {
|
||||
var imageSetLinks = element.getAttribute('data-background-image-set').split(',');
|
||||
var firstUrlLink = imageSetLinks[0].substr(0, imageSetLinks[0].indexOf(' ')) || imageSetLinks[0]; // Substring before ... 1x
|
||||
firstUrlLink = firstUrlLink.indexOf('url(') === -1 ? 'url(' + firstUrlLink + ')' : firstUrlLink;
|
||||
if (imageSetLinks.length === 1) {
|
||||
element.style.backgroundImage = firstUrlLink;
|
||||
} else {
|
||||
element.setAttribute('style', (element.getAttribute('style') || '') + ('background-image: ' + firstUrlLink + '; background-image: -webkit-image-set(' + imageSetLinks + '); background-image: image-set(' + imageSetLinks + ')'));
|
||||
}
|
||||
}
|
||||
|
||||
if (element.getAttribute('data-toggle-class')) {
|
||||
element.classList.toggle(element.getAttribute('data-toggle-class'));
|
||||
}
|
||||
},
|
||||
loaded: function loaded() {}
|
||||
};
|
||||
|
||||
function markAsLoaded(element) {
|
||||
element.setAttribute('data-loaded', true);
|
||||
}
|
||||
|
||||
var isLoaded = function isLoaded(element) {
|
||||
return element.getAttribute('data-loaded') === 'true';
|
||||
};
|
||||
|
||||
var onIntersection = function onIntersection(load, loaded) {
|
||||
return function (entries, observer) {
|
||||
entries.forEach(function (entry) {
|
||||
if (entry.intersectionRatio > 0 || entry.isIntersecting) {
|
||||
observer.unobserve(entry.target);
|
||||
|
||||
if (!isLoaded(entry.target)) {
|
||||
load(entry.target);
|
||||
markAsLoaded(entry.target);
|
||||
loaded(entry.target);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
var getElements = function getElements(selector) {
|
||||
var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
|
||||
|
||||
if (selector instanceof Element) {
|
||||
return [selector];
|
||||
}
|
||||
|
||||
if (selector instanceof NodeList) {
|
||||
return selector;
|
||||
}
|
||||
|
||||
return root.querySelectorAll(selector);
|
||||
};
|
||||
|
||||
function lozad () {
|
||||
var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.lozad';
|
||||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
|
||||
var _Object$assign = Object.assign({}, defaultConfig, options),
|
||||
root = _Object$assign.root,
|
||||
rootMargin = _Object$assign.rootMargin,
|
||||
threshold = _Object$assign.threshold,
|
||||
load = _Object$assign.load,
|
||||
loaded = _Object$assign.loaded;
|
||||
|
||||
var observer = void 0;
|
||||
|
||||
if (typeof window !== 'undefined' && window.IntersectionObserver) {
|
||||
observer = new IntersectionObserver(onIntersection(load, loaded), {
|
||||
root: root,
|
||||
rootMargin: rootMargin,
|
||||
threshold: threshold
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
observe: function observe() {
|
||||
var elements = getElements(selector, root);
|
||||
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
if (isLoaded(elements[i])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (observer) {
|
||||
observer.observe(elements[i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
load(elements[i]);
|
||||
markAsLoaded(elements[i]);
|
||||
loaded(elements[i]);
|
||||
}
|
||||
},
|
||||
triggerLoad: function triggerLoad(element) {
|
||||
if (isLoaded(element)) {
|
||||
return;
|
||||
}
|
||||
|
||||
load(element);
|
||||
markAsLoaded(element);
|
||||
loaded(element);
|
||||
},
|
||||
|
||||
observer: observer
|
||||
};
|
||||
}
|
||||
|
||||
return lozad;
|
||||
|
||||
}));
|
122
assets/js/resizeable.js
Normal file
122
assets/js/resizeable.js
Normal file
@ -0,0 +1,122 @@
|
||||
/*
|
||||
This function will be called in the event when browser breakpoint changes
|
||||
*/
|
||||
|
||||
var public_vars = public_vars || {};
|
||||
|
||||
jQuery.extend(public_vars, {
|
||||
|
||||
breakpoints: {
|
||||
largescreen: [991, -1],
|
||||
tabletscreen: [768, 990],
|
||||
devicescreen: [420, 767],
|
||||
sdevicescreen: [0, 419]
|
||||
},
|
||||
|
||||
lastBreakpoint: null
|
||||
});
|
||||
|
||||
|
||||
/* Main Function that will be called each time when the screen breakpoint changes */
|
||||
function resizable(breakpoint)
|
||||
{
|
||||
var sb_with_animation;
|
||||
|
||||
// Large Screen Specific Script
|
||||
if(is('largescreen'))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// Tablet or larger screen
|
||||
if(ismdxl())
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// Tablet Screen Specific Script
|
||||
if(is('tabletscreen'))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// Tablet device screen
|
||||
if(is('tabletscreen'))
|
||||
{
|
||||
public_vars.$sidebarMenu.addClass('collapsed');
|
||||
ps_destroy();
|
||||
}
|
||||
|
||||
|
||||
// Tablet Screen Specific Script
|
||||
if(isxs())
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// Trigger Event
|
||||
jQuery(window).trigger('xenon.resize');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Functions */
|
||||
|
||||
// Get current breakpoint
|
||||
function get_current_breakpoint()
|
||||
{
|
||||
var width = jQuery(window).width(),
|
||||
breakpoints = public_vars.breakpoints;
|
||||
|
||||
for(var breakpont_label in breakpoints)
|
||||
{
|
||||
var bp_arr = breakpoints[breakpont_label],
|
||||
min = bp_arr[0],
|
||||
max = bp_arr[1];
|
||||
|
||||
if(max == -1)
|
||||
max = width;
|
||||
|
||||
if(min <= width && max >= width)
|
||||
{
|
||||
return breakpont_label;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
// Check current screen breakpoint
|
||||
function is(screen_label)
|
||||
{
|
||||
return get_current_breakpoint() == screen_label;
|
||||
}
|
||||
|
||||
|
||||
// Is xs device
|
||||
function isxs()
|
||||
{
|
||||
return is('devicescreen') || is('sdevicescreen');
|
||||
}
|
||||
|
||||
// Is md or xl
|
||||
function ismdxl()
|
||||
{
|
||||
return is('tabletscreen') || is('largescreen');
|
||||
}
|
||||
|
||||
|
||||
// Trigger Resizable Function
|
||||
function trigger_resizable()
|
||||
{
|
||||
if(public_vars.lastBreakpoint != get_current_breakpoint())
|
||||
{
|
||||
public_vars.lastBreakpoint = get_current_breakpoint();
|
||||
resizable(public_vars.lastBreakpoint);
|
||||
}
|
||||
|
||||
|
||||
// Trigger Event (Repeated)
|
||||
jQuery(window).trigger('xenon.resized');
|
||||
}
|
91
assets/js/xenon-api.js
Normal file
91
assets/js/xenon-api.js
Normal file
@ -0,0 +1,91 @@
|
||||
/**
|
||||
* Xenon API Functions
|
||||
*
|
||||
* Theme by: www.laborator.co
|
||||
**/
|
||||
|
||||
|
||||
function rtl() // checks whether the content is in RTL mode
|
||||
{
|
||||
if(typeof window.isRTL == 'boolean')
|
||||
return window.isRTL;
|
||||
|
||||
window.isRTL = jQuery("html").get(0).dir == 'rtl' ? true : false;
|
||||
|
||||
return window.isRTL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Page Loader
|
||||
function show_loading_bar(options)
|
||||
{
|
||||
var defaults = {
|
||||
pct: 0,
|
||||
delay: 1.3,
|
||||
wait: 0,
|
||||
before: function(){},
|
||||
finish: function(){},
|
||||
resetOnEnd: true
|
||||
};
|
||||
|
||||
if(typeof options == 'object')
|
||||
defaults = jQuery.extend(defaults, options);
|
||||
else
|
||||
if(typeof options == 'number')
|
||||
defaults.pct = options;
|
||||
|
||||
|
||||
if(defaults.pct > 100)
|
||||
defaults.pct = 100;
|
||||
else
|
||||
if(defaults.pct < 0)
|
||||
defaults.pct = 0;
|
||||
|
||||
var $ = jQuery,
|
||||
$loading_bar = $(".xenon-loading-bar");
|
||||
|
||||
if($loading_bar.length == 0)
|
||||
{
|
||||
$loading_bar = $('<div class="xenon-loading-bar progress-is-hidden"><span data-pct="0"></span></div>');
|
||||
public_vars.$body.append( $loading_bar );
|
||||
}
|
||||
|
||||
var $pct = $loading_bar.find('span'),
|
||||
current_pct = $pct.data('pct'),
|
||||
is_regress = current_pct > defaults.pct;
|
||||
|
||||
|
||||
defaults.before(current_pct);
|
||||
|
||||
TweenMax.to($pct, defaults.delay, {css: {width: defaults.pct + '%'}, delay: defaults.wait, ease: is_regress ? Expo.easeOut : Expo.easeIn,
|
||||
onStart: function()
|
||||
{
|
||||
$loading_bar.removeClass('progress-is-hidden');
|
||||
},
|
||||
onComplete: function()
|
||||
{
|
||||
var pct = $pct.data('pct');
|
||||
|
||||
if(pct == 100 && defaults.resetOnEnd)
|
||||
{
|
||||
hide_loading_bar();
|
||||
}
|
||||
|
||||
defaults.finish(pct);
|
||||
},
|
||||
onUpdate: function()
|
||||
{
|
||||
$pct.data('pct', parseInt($pct.get(0).style.width, 10));
|
||||
}});
|
||||
}
|
||||
|
||||
function hide_loading_bar()
|
||||
{
|
||||
var $ = jQuery,
|
||||
$loading_bar = $(".xenon-loading-bar"),
|
||||
$pct = $loading_bar.find('span');
|
||||
|
||||
$loading_bar.addClass('progress-is-hidden');
|
||||
$pct.width(0).data('pct', 0);
|
||||
}
|
1950
assets/js/xenon-custom.js
Normal file
1950
assets/js/xenon-custom.js
Normal file
File diff suppressed because it is too large
Load Diff
321
assets/js/xenon-toggles.js
Normal file
321
assets/js/xenon-toggles.js
Normal file
@ -0,0 +1,321 @@
|
||||
/**
|
||||
* Toggles
|
||||
*
|
||||
* Non-animation
|
||||
*/
|
||||
|
||||
|
||||
;(function($, window, undefined)
|
||||
{
|
||||
"use strict";
|
||||
|
||||
$(document).ready(function()
|
||||
{
|
||||
|
||||
// Chat Toggler
|
||||
$('a[data-toggle="chat"]').each(function(i, el)
|
||||
{
|
||||
$(el).on('click', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
public_vars.$body.toggleClass('chat-open');
|
||||
|
||||
if($.isFunction($.fn.perfectScrollbar))
|
||||
{
|
||||
setTimeout(function()
|
||||
{
|
||||
public_vars.$chat.find('.chat_inner').perfectScrollbar('update');
|
||||
$(window).trigger('xenon.resize');
|
||||
}, 1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// Settings Pane Toggler
|
||||
$('a[data-toggle="settings-pane"]').each(function(i, el)
|
||||
{
|
||||
$(el).on('click', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
var use_animation = attrDefault($(el), 'animate', false) && ! isxs();
|
||||
|
||||
var scroll = {
|
||||
top: $(document).scrollTop(),
|
||||
toTop: 0
|
||||
};
|
||||
|
||||
if(public_vars.$body.hasClass('settings-pane-open'))
|
||||
{
|
||||
scroll.toTop = scroll.top;
|
||||
}
|
||||
|
||||
TweenMax.to(scroll, (use_animation ? .1 : 0), {top: scroll.toTop, roundProps: ['top'], ease: scroll.toTop < 10 ? null : Sine.easeOut, onUpdate: function()
|
||||
{
|
||||
$(window).scrollTop( scroll.top );
|
||||
},
|
||||
onComplete: function()
|
||||
{
|
||||
if(use_animation)
|
||||
{
|
||||
// With Animation
|
||||
public_vars.$settingsPaneIn.addClass('with-animation');
|
||||
|
||||
// Opening
|
||||
if( ! public_vars.$settingsPane.is(':visible'))
|
||||
{
|
||||
public_vars.$body.addClass('settings-pane-open');
|
||||
|
||||
var height = public_vars.$settingsPane.outerHeight(true);
|
||||
|
||||
public_vars.$settingsPane.css({
|
||||
height: 0
|
||||
});
|
||||
|
||||
TweenMax.to(public_vars.$settingsPane, .25, {css: {height: height}, ease: Circ.easeInOut, onComplete: function()
|
||||
{
|
||||
public_vars.$settingsPane.css({height: ''});
|
||||
}});
|
||||
|
||||
public_vars.$settingsPaneIn.addClass('visible');
|
||||
}
|
||||
// Closing
|
||||
else
|
||||
{
|
||||
public_vars.$settingsPaneIn.addClass('closing');
|
||||
|
||||
TweenMax.to(public_vars.$settingsPane, .25, {css: {height: 0}, delay: .15, ease: Power1.easeInOut, onComplete: function()
|
||||
{
|
||||
public_vars.$body.removeClass('settings-pane-open');
|
||||
public_vars.$settingsPane.css({height: ''});
|
||||
public_vars.$settingsPaneIn.removeClass('closing visible');
|
||||
}});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Without Animation
|
||||
public_vars.$body.toggleClass('settings-pane-open');
|
||||
public_vars.$settingsPaneIn.removeClass('visible');
|
||||
public_vars.$settingsPaneIn.removeClass('with-animation');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Sidebar Toggle
|
||||
$('a[data-toggle="sidebar"]').each(function(i, el)
|
||||
{
|
||||
$(el).on('click', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
|
||||
if(public_vars.$sidebarMenu.hasClass('collapsed'))
|
||||
{
|
||||
public_vars.$sidebarMenu.removeClass('collapsed');
|
||||
ps_init();
|
||||
}
|
||||
else
|
||||
{
|
||||
public_vars.$sidebarMenu.addClass('collapsed');
|
||||
ps_destroy();
|
||||
}
|
||||
|
||||
$(window).trigger('xenon.resize');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Mobile Menu Trigger
|
||||
$('a[data-toggle="mobile-menu"]').on('click', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
public_vars.$mainMenu.add(public_vars.$sidebarProfile).toggleClass('mobile-is-visible');
|
||||
ps_destroy();
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Mobile Menu Trigger for Horizontal Menu
|
||||
$('a[data-toggle="mobile-menu-horizontal"]').on('click', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
public_vars.$horizontalMenu.toggleClass('mobile-is-visible');
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Mobile Menu Trigger for Sidebar & Horizontal Menu
|
||||
$('a[data-toggle="mobile-menu-both"]').on('click', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
public_vars.$mainMenu.toggleClass('mobile-is-visible both-menus-visible');
|
||||
public_vars.$horizontalMenu.toggleClass('mobile-is-visible both-menus-visible');
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Mobile User Info Menu Trigger
|
||||
$('a[data-toggle="user-info-menu"]').on('click', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
public_vars.$userInfoMenu.toggleClass('mobile-is-visible');
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Mobile User Info Menu Trigger for Horizontal Menu
|
||||
$('a[data-toggle="user-info-menu-horizontal"]').on('click', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
public_vars.$userInfoMenuHor.find('.nav.nav-userinfo').toggleClass('mobile-is-visible');
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Panel Close
|
||||
$('body').on('click', '.panel a[data-toggle="remove"]', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
var $panel = $(this).closest('.panel'),
|
||||
$panel_parent = $panel.parent();
|
||||
|
||||
$panel.remove();
|
||||
|
||||
if($panel_parent.children().length == 0)
|
||||
{
|
||||
$panel_parent.remove();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Panel Reload
|
||||
$('body').on('click', '.panel a[data-toggle="reload"]', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
var $panel = $(this).closest('.panel');
|
||||
|
||||
// This is just a simulation, nothing is going to be reloaded
|
||||
$panel.append('<div class="panel-disabled"><div class="loader-1"></div></div>');
|
||||
|
||||
var $pd = $panel.find('.panel-disabled');
|
||||
|
||||
setTimeout(function()
|
||||
{
|
||||
$pd.fadeOut('fast', function()
|
||||
{
|
||||
$pd.remove();
|
||||
});
|
||||
|
||||
}, 500 + 300 * (Math.random() * 5));
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Panel Expand/Collapse Toggle
|
||||
$('body').on('click', '.panel a[data-toggle="panel"]', function(ev)
|
||||
{
|
||||
ev.preventDefault();
|
||||
|
||||
var $panel = $(this).closest('.panel');
|
||||
|
||||
$panel.toggleClass('collapsed');
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Loading Text toggle
|
||||
$('[data-loading-text]').each(function(i, el) // Temporary for demo purpose only
|
||||
{
|
||||
var $this = $(el);
|
||||
|
||||
$this.on('click', function(ev)
|
||||
{
|
||||
$this.button('loading');
|
||||
|
||||
setTimeout(function(){ $this.button('reset'); }, 1800);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
// Popovers and tooltips
|
||||
$('[data-toggle="popover"]').each(function(i, el)
|
||||
{
|
||||
var $this = $(el),
|
||||
placement = attrDefault($this, 'placement', 'right'),
|
||||
trigger = attrDefault($this, 'trigger', 'click'),
|
||||
popover_class = $this.get(0).className.match(/(popover-[a-z0-9]+)/i);
|
||||
|
||||
$this.popover({
|
||||
placement: placement,
|
||||
trigger: trigger
|
||||
});
|
||||
|
||||
if(popover_class)
|
||||
{
|
||||
$this.removeClass(popover_class[1]);
|
||||
|
||||
$this.on('show.bs.popover', function(ev)
|
||||
{
|
||||
setTimeout(function()
|
||||
{
|
||||
var $popover = $this.next();
|
||||
$popover.addClass(popover_class[1]);
|
||||
|
||||
}, 0);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('[data-toggle="tooltip"]').each(function(i, el)
|
||||
{
|
||||
var $this = $(el),
|
||||
placement = attrDefault($this, 'placement', 'top'),
|
||||
trigger = attrDefault($this, 'trigger', 'hover'),
|
||||
tooltip_class = $this.get(0).className.match(/(tooltip-[a-z0-9]+)/i);
|
||||
|
||||
$this.tooltip({
|
||||
placement: placement,
|
||||
trigger: trigger
|
||||
});
|
||||
|
||||
if(tooltip_class)
|
||||
{
|
||||
$this.removeClass(tooltip_class[1]);
|
||||
|
||||
$this.on('show.bs.tooltip', function(ev)
|
||||
{
|
||||
setTimeout(function()
|
||||
{
|
||||
var $tooltip = $this.next();
|
||||
$tooltip.addClass(tooltip_class[1]);
|
||||
|
||||
}, 0);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
})(jQuery, window);
|
Reference in New Issue
Block a user