%PDF- %GIF98; %PNG;
Server : ApacheSystem : Linux host.digitalbabaji.in 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : addictionfreeind ( 1003) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system Directory : /home/addictionfreeind/public_html/admin1/public/vendor/jquery/ |
Upload File : |
"use strict";
// Component Definition
var KTMenu = function(elementId, options) {
// Main object
var the = this;
var init = false;
// Get element object
var element = KTUtil.getById(elementId);
var body = KTUtil.getBody();
if (!element) {
return;
}
// Default options
var defaultOptions = {
// scrollable area with Perfect Scroll
scroll: {
rememberPosition: false
},
};
///////// // /////////////////
// ** Private Methods ** //
////////////////////////////
var Plugin = {
/**
* Run plugin
* @returns {KTMenu}
*/
construct: function(options) {
if (KTUtil.data(element).has('menu')) {
the = KTUtil.data(element).get('menu');
} else {
// reset menu
Plugin.init(options);
// reset menu
Plugin.reset();
// build menu
Plugin.build();
KTUtil.data(element).set('menu', the);
}
return the;
},
init: function(options) {
the.events = [];
the.eventHandlers = {};
// merge default and user defined options
the.options = KTUtil.deepExtend({}, defaultOptions, options);
the.uid = KTUtil.getUniqueID();
},
update: function(options) {
// merge default and user defined options
the.options = KTUtil.deepExtend({}, defaultOptions, options);
// reset menu
Plugin.reset();
the.eventHandlers = {};
// build menu
Plugin.build();
KTUtil.data(element).set('menu', the);
},
reload: function() {
// reset menu
Plugin.reset();
// build menu
Plugin.build();
// reset submenu props
Plugin.resetSubmenuProps();
},
/**
* Reset menu
* @returns {KTMenu}
*/
build: function() {
// Init scrollable menu
if (the.options.scroll && the.options.scroll.height) {
Plugin.scrollInit();
}
},
/**
* Reset menu
* @returns {KTMenu}
*/
reset: function() {
KTUtil.off( element, 'click', the.eventHandlers['event_1']);
// handle link click
KTUtil.off(element, 'click', the.eventHandlers['event_6']);
},
/**
* Init scroll menu
*
*/
scrollInit: function() {
if ( the.options.scroll && the.options.scroll.height ) {
KTUtil.scrollDestroy(element, true);
KTUtil.scrollInit(element, {mobileNativeScroll: true, windowScroll: false, resetHeightOnDestroy: true, handleWindowResize: true, height: the.options.scroll.height, rememberPosition: the.options.scroll.rememberPosition});
} else {
KTUtil.scrollDestroy(element, true);
}
},
/**
* Update scroll menu
*/
scrollUpdate: function() {
if ( the.options.scroll && the.options.scroll.height ) {
KTUtil.scrollUpdate(element);
}
},
/**
* Scroll top
*/
scrollTop: function() {
if ( the.options.scroll && the.options.scroll.height ) {
KTUtil.scrollTop(element);
}
},
/**
* Reset submenu attributes
* @returns {KTMenu}
*/
resetSubmenuProps: function(e) {
var submenus = KTUtil.findAll(element, '.menu-submenu');
if ( submenus ) {
for (var i = 0, len = submenus.length; i < len; i++) {
var submenu = submenus[0];
KTUtil.css(submenu, 'display', '');
KTUtil.css(submenu, 'overflow', '');
if (submenu.hasAttribute('data-hor-direction')) {
KTUtil.removeClass(submenu, 'menu-submenu-left');
KTUtil.removeClass(submenu, 'menu-submenu-right');
KTUtil.addClass(submenu, submenu.getAttribute('data-hor-direction'));
}
}
}
},
/**
* Reset menu's current active item
* @returns {KTMenu}
*/
resetActiveItem: function(item) {
var list;
var parents;
list = element.querySelectorAll('.menu-item-active');
for (var i = 0, len = list.length; i < len; i++) {
var el = list[0];
KTUtil.removeClass(el, 'menu-item-active');
KTUtil.hide( KTUtil.child(el, '.menu-submenu') );
parents = KTUtil.parents(el, '.menu-item-submenu') || [];
for (var i_ = 0, len_ = parents.length; i_ < len_; i_++) {
var el_ = parents[i];
KTUtil.removeClass(el_, 'menu-item-open');
KTUtil.hide( KTUtil.child(el_, '.menu-submenu') );
}
}
},
/**
* Sets menu's active item
* @returns {KTMenu}
*/
setActiveItem: function(item) {
// reset current active item
Plugin.resetActiveItem();
var parents = KTUtil.parents(item, '.menu-item-submenu') || [];
for (var i = 0, len = parents.length; i < len; i++) {
KTUtil.addClass(parents[i], 'menu-item-open');
}
KTUtil.addClass(item, 'menu-item-active');
},
/**
* Returns page breadcrumbs for the menu's active item
* @returns {KTMenu}
*/
getBreadcrumbs: function(item) {
var query;
var breadcrumbs = [];
var link = KTUtil.child(item, '.menu-link');
breadcrumbs.push({
text: (query = KTUtil.child(link, '.menu-text') ? query.innerHTML : ''),
title: link.getAttribute('title'),
href: link.getAttribute('href')
});
var parents = KTUtil.parents(item, '.menu-item-submenu');
for (var i = 0, len = parents.length; i < len; i++) {
var submenuLink = KTUtil.child(parents[i], '.menu-link');
breadcrumbs.push({
text: (query = KTUtil.child(submenuLink, '.menu-text') ? query.innerHTML : ''),
title: submenuLink.getAttribute('title'),
href: submenuLink.getAttribute('href')
});
}
return breadcrumbs.reverse();
},
/**
* Returns page title for the menu's active item
* @returns {KTMenu}
*/
getPageTitle: function(item) {
var query;
return (query = KTUtil.child(item, '.menu-text') ? query.innerHTML : '');
},
/**
* Trigger events
*/
eventTrigger: function(name, target, e) {
for (var i = 0; i < the.events.length; i++ ) {
var event = the.events[i];
if ( event.name == name ) {
if ( event.one == true ) {
if ( event.fired == false ) {
the.events[i].fired = true;
return event.handler.call(this, target, e);
}
} else {
return event.handler.call(this, target, e);
}
}
}
},
addEvent: function(name, handler, one) {
the.events.push({
name: name,
handler: handler,
one: one,
fired: false
});
},
removeEvent: function(name) {
if (the.events[name]) {
delete the.events[name];
}
}
};
//////////////////////////
// ** Public Methods ** //
//////////////////////////
/**
* Set default options
*/
the.setDefaults = function(options) {
defaultOptions = options;
};
/**
* Update scroll
*/
the.scrollUpdate = function() {
return Plugin.scrollUpdate();
};
/**
* Re-init scroll
*/
the.scrollReInit = function() {
return Plugin.scrollInit();
};
/**
* Scroll top
*/
the.scrollTop = function() {
return Plugin.scrollTop();
};
/**
* Set active menu item
*/
the.setActiveItem = function(item) {
return Plugin.setActiveItem(item);
};
the.reload = function() {
return Plugin.reload();
};
the.update = function(options) {
return Plugin.update(options);
};
/**
* Set breadcrumb for menu item
*/
the.getBreadcrumbs = function(item) {
return Plugin.getBreadcrumbs(item);
};
/**
* Set page title for menu item
*/
the.getPageTitle = function(item) {
return Plugin.getPageTitle(item);
};
/**
* Get submenu mode
*/
the.getSubmenuMode = function(el) {
return Plugin.getSubmenuMode(el);
};
///////////////////////////////
// ** Plugin Construction ** //
///////////////////////////////
// Run plugin
Plugin.construct.apply(the, [options]);
// Handle plugin on window resize
KTUtil.addResizeHandler(function() {
if (init) {
the.reload();
}
});
// Init done
init = true;
// Return plugin instance
return the;
};
// Global variables
window.KTUtilElementDataStore = {};
window.KTUtilElementDataStoreID = 0;
window.KTUtilDelegatedEventHandlers = {};
var KTUtil = function() {
var resizeHandlers = [];
/** @type {object} breakpoints The device width breakpoints **/
var breakpoints = {
sm: 544, // Small screen / phone
md: 768, // Medium screen / tablet
lg: 992, // Large screen / desktop
xl: 1200 // Extra large screen / wide desktop
};
/**
* Handle window resize event with some
* delay to attach event handlers upon resize complete
*/
var _windowResizeHandler = function() {
var _runResizeHandlers = function() {
// reinitialize other subscribed elements
for (var i = 0; i < resizeHandlers.length; i++) {
var each = resizeHandlers[i];
each.call();
}
};
var timer;
window.addEventListener('resize', function() {
KTUtil.throttle(timer, function() {
_runResizeHandlers();
}, 200);
});
};
return {
/**
* Class main initializer.
* @param {object} settings.
* @returns null
*/
//main function to initiate the theme
init: function(settings) {
if (settings && settings.breakpoints) {
breakpoints = settings.breakpoints;
}
_windowResizeHandler();
},
/**
* Adds window resize event handler.
* @param {function} callback function.
*/
addResizeHandler: function(callback) {
resizeHandlers.push(callback);
},
/**
* Removes window resize event handler.
* @param {function} callback function.
*/
removeResizeHandler: function(callback) {
for (var i = 0; i < resizeHandlers.length; i++) {
if (callback === resizeHandlers[i]) {
delete resizeHandlers[i];
}
}
},
/**
* Trigger window resize handlers.
*/
runResizeHandlers: function() {
_runResizeHandlers();
},
resize: function() {
if (typeof(Event) === 'function') {
// modern browsers
window.dispatchEvent(new Event('resize'));
} else {
// for IE and other old browsers
// causes deprecation warning on modern browsers
var evt = window.document.createEvent('UIEvents');
evt.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(evt);
}
},
/**
* Get GET parameter value from URL.
* @param {string} paramName Parameter name.
* @returns {string}
*/
getURLParam: function(paramName) {
var searchString = window.location.search.substring(1),
i, val, params = searchString.split("&");
for (i = 0; i < params.length; i++) {
val = params[i].split("=");
if (val[0] == paramName) {
return unescape(val[1]);
}
}
return null;
},
/**
* Checks whether current device is mobile touch.
* @returns {boolean}
*/
isMobileDevice: function() {
var test = (this.getViewPort().width < this.getBreakpoint('lg') ? true : false);
if (test === false) {
// For use within normal web clients
test = navigator.userAgent.match(/iPad/i) != null;
}
return test;
},
/**
* Checks whether current device is desktop.
* @returns {boolean}
*/
isDesktopDevice: function() {
return KTUtil.isMobileDevice() ? false : true;
},
/**
* Gets browser window viewport size. Ref:
* http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/
* @returns {object}
*/
getViewPort: function() {
var e = window,
a = 'inner';
if (!('innerWidth' in window)) {
a = 'client';
e = document.documentElement || document.body;
}
return {
width: e[a + 'Width'],
height: e[a + 'Height']
};
},
/**
* Checks whether given device mode is currently activated.
* @param {string} mode Responsive mode name(e.g: desktop,
* desktop-and-tablet, tablet, tablet-and-mobile, mobile)
* @returns {boolean}
*/
isInResponsiveRange: function(mode) {
var breakpoint = this.getViewPort().width;
if (mode == 'general') {
return true;
} else if (mode == 'desktop' && breakpoint >= (this.getBreakpoint('lg') + 1)) {
return true;
} else if (mode == 'tablet' && (breakpoint >= (this.getBreakpoint('md') + 1) && breakpoint < this.getBreakpoint('lg'))) {
return true;
} else if (mode == 'mobile' && breakpoint <= this.getBreakpoint('md')) {
return true;
} else if (mode == 'desktop-and-tablet' && breakpoint >= (this.getBreakpoint('md') + 1)) {
return true;
} else if (mode == 'tablet-and-mobile' && breakpoint <= this.getBreakpoint('lg')) {
return true;
} else if (mode == 'minimal-desktop-and-below' && breakpoint <= this.getBreakpoint('xl')) {
return true;
}
return false;
},
/**
* Checks whether given device mode is currently activated.
* @param {string} mode Responsive mode name(e.g: desktop,
* desktop-and-tablet, tablet, tablet-and-mobile, mobile)
* @returns {boolean}
*/
isBreakpointUp: function(mode) {
var width = this.getViewPort().width;
var breakpoint = this.getBreakpoint(mode);
return (width >= breakpoint);
},
isBreakpointDown: function(mode) {
var width = this.getViewPort().width;
var breakpoint = this.getBreakpoint(mode);
return (width < breakpoint);
},
/**
* Generates unique ID for give prefix.
* @param {string} prefix Prefix for generated ID
* @returns {boolean}
*/
getUniqueID: function(prefix) {
return prefix + Math.floor(Math.random() * (new Date()).getTime());
},
/**
* Gets window width for give breakpoint mode.
* @param {string} mode Responsive mode name(e.g: xl, lg, md, sm)
* @returns {number}
*/
getBreakpoint: function(mode) {
return breakpoints[mode];
},
/**
* Checks whether object has property matchs given key path.
* @param {object} obj Object contains values paired with given key path
* @param {string} keys Keys path seperated with dots
* @returns {object}
*/
isset: function(obj, keys) {
var stone;
keys = keys || '';
if (keys.indexOf('[') !== -1) {
throw new Error('Unsupported object path notation.');
}
keys = keys.split('.');
do {
if (obj === undefined) {
return false;
}
stone = keys.shift();
if (!obj.hasOwnProperty(stone)) {
return false;
}
obj = obj[stone];
} while (keys.length);
return true;
},
/**
* Gets highest z-index of the given element parents
* @param {object} el jQuery element object
* @returns {number}
*/
getHighestZindex: function(el) {
var position, value;
while (el && el !== document) {
// Ignore z-index if position is set to a value where z-index is ignored by the browser
// This makes behavior of this function consistent across browsers
// WebKit always returns auto if the element is positioned
position = KTUtil.css(el, 'position');
if (position === "absolute" || position === "relative" || position === "fixed") {
// IE returns 0 when zIndex is not specified
// other browsers return a string
// we ignore the case of nested elements with an explicit value of 0
// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
value = parseInt(KTUtil.css(el, 'z-index'));
if (!isNaN(value) && value !== 0) {
return value;
}
}
el = el.parentNode;
}
return null;
},
/**
* Checks whether the element has any parent with fixed positionfreg
* @param {object} el jQuery element object
* @returns {boolean}
*/
hasFixedPositionedParent: function(el) {
var position;
while (el && el !== document) {
position = KTUtil.css(el, 'position');
if (position === "fixed") {
return true;
}
el = el.parentNode;
}
return false;
},
/**
* Simulates delay
*/
sleep: function(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds) {
break;
}
}
},
/**
* Gets randomly generated integer value within given min and max range
* @param {number} min Range start value
* @param {number} max Range end value
* @returns {number}
*/
getRandomInt: function(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
},
/**
* Checks whether Angular library is included
* @returns {boolean}
*/
isAngularVersion: function() {
return window.Zone !== undefined ? true : false;
},
// jQuery Workarounds
// Deep extend: $.extend(true, {}, objA, objB);
deepExtend: function(out) {
out = out || {};
for (var i = 1; i < arguments.length; i++) {
var obj = arguments[i];
if (!obj)
continue;
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === 'object')
out[key] = KTUtil.deepExtend(out[key], obj[key]);
else
out[key] = obj[key];
}
}
}
return out;
},
// extend: $.extend({}, objA, objB);
extend: function(out) {
out = out || {};
for (var i = 1; i < arguments.length; i++) {
if (!arguments[i])
continue;
for (var key in arguments[i]) {
if (arguments[i].hasOwnProperty(key))
out[key] = arguments[i][key];
}
}
return out;
},
getById: function(el) {
if (typeof el === 'string') {
return document.getElementById(el);
} else {
return el;
}
},
getByTag: function(query) {
return document.getElementsByTagName(query);
},
getByTagName: function(query) {
return document.getElementsByTagName(query);
},
getByClass: function(query) {
return document.getElementsByClassName(query);
},
getBody: function() {
return document.getElementsByTagName('body')[0];
},
/**
* Checks whether the element has given classes
* @param {object} el jQuery element object
* @param {string} Classes string
* @returns {boolean}
*/
hasClasses: function(el, classes) {
if (!el) {
return;
}
var classesArr = classes.split(" ");
for (var i = 0; i < classesArr.length; i++) {
if (KTUtil.hasClass(el, KTUtil.trim(classesArr[i])) == false) {
return false;
}
}
return true;
},
hasClass: function(el, className) {
if (!el) {
return;
}
return el.classList ? el.classList.contains(className) : new RegExp('\\b' + className + '\\b').test(el.className);
},
addClass: function(el, className) {
if (!el || typeof className === 'undefined') {
return;
}
var classNames = className.split(' ');
if (el.classList) {
for (var i = 0; i < classNames.length; i++) {
if (classNames[i] && classNames[i].length > 0) {
el.classList.add(KTUtil.trim(classNames[i]));
}
}
} else if (!KTUtil.hasClass(el, className)) {
for (var x = 0; x < classNames.length; x++) {
el.className += ' ' + KTUtil.trim(classNames[x]);
}
}
},
removeClass: function(el, className) {
if (!el || typeof className === 'undefined') {
return;
}
var classNames = className.split(' ');
if (el.classList) {
for (var i = 0; i < classNames.length; i++) {
el.classList.remove(KTUtil.trim(classNames[i]));
}
} else if (KTUtil.hasClass(el, className)) {
for (var x = 0; x < classNames.length; x++) {
el.className = el.className.replace(new RegExp('\\b' + KTUtil.trim(classNames[x]) + '\\b', 'g'), '');
}
}
},
triggerCustomEvent: function(el, eventName, data) {
var event;
if (window.CustomEvent) {
event = new CustomEvent(eventName, {
detail: data
});
} else {
event = document.createEvent('CustomEvent');
event.initCustomEvent(eventName, true, true, data);
}
el.dispatchEvent(event);
},
triggerEvent: function(node, eventName) {
// Make sure we use the ownerDocument from the provided node to avoid cross-window problems
var doc;
if (node.ownerDocument) {
doc = node.ownerDocument;
} else if (node.nodeType == 9) {
// the node may be the document itself, nodeType 9 = DOCUMENT_NODE
doc = node;
} else {
throw new Error("Invalid node passed to fireEvent: " + node.id);
}
},
index: function( el ){
var c = el.parentNode.children, i = 0;
for(; i < c.length; i++ )
if( c[i] == el ) return i;
},
trim: function(string) {
return string.trim();
},
eventTriggered: function(e) {
if (e.currentTarget.dataset.triggered) {
return true;
} else {
e.currentTarget.dataset.triggered = true;
return false;
}
},
remove: function(el) {
if (el && el.parentNode) {
el.parentNode.removeChild(el);
}
},
find: function(parent, query) {
parent = KTUtil.getById(parent);
if (parent) {
return parent.querySelector(query);
}
},
findAll: function(parent, query) {
parent = KTUtil.getById(parent);
if (parent) {
return parent.querySelectorAll(query);
}
},
insertAfter: function(el, referenceNode) {
return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);
},
parents: function(elem, selector) {
// Element.matches() polyfill
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.oMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
function(s) {
var matches = (this.document || this.ownerDocument).querySelectorAll(s),
i = matches.length;
while (--i >= 0 && matches.item(i) !== this) {}
return i > -1;
};
}
// Set up a parent array
var parents = [];
// Push each parent element to the array
for ( ; elem && elem !== document; elem = elem.parentNode ) {
if (selector) {
if (elem.matches(selector)) {
parents.push(elem);
}
continue;
}
parents.push(elem);
}
// Return our parent array
return parents;
},
children: function(el, selector, log) {
if (!el || !el.childNodes) {
return;
}
var result = [],
i = 0,
l = el.childNodes.length;
for (var i; i < l; ++i) {
if (el.childNodes[i].nodeType == 1 && KTUtil.matches(el.childNodes[i], selector, log)) {
result.push(el.childNodes[i]);
}
}
return result;
},
child: function(el, selector, log) {
var children = KTUtil.children(el, selector, log);
return children ? children[0] : null;
},
matches: function(el, selector, log) {
var p = Element.prototype;
var f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function(s) {
return [].indexOf.call(document.querySelectorAll(s), this) !== -1;
};
if (el && el.tagName) {
return f.call(el, selector);
} else {
return false;
}
},
data: function(el) {
return {
set: function(name, data) {
if (!el) {
return;
}
if (el.customDataTag === undefined) {
window.KTUtilElementDataStoreID++;
el.customDataTag = window.KTUtilElementDataStoreID;
}
if (window.KTUtilElementDataStore[el.customDataTag] === undefined) {
window.KTUtilElementDataStore[el.customDataTag] = {};
}
window.KTUtilElementDataStore[el.customDataTag][name] = data;
},
get: function(name) {
if (!el) {
return;
}
if (el.customDataTag === undefined) {
return null;
}
return this.has(name) ? window.KTUtilElementDataStore[el.customDataTag][name] : null;
},
has: function(name) {
if (!el) {
return false;
}
if (el.customDataTag === undefined) {
return false;
}
return (window.KTUtilElementDataStore[el.customDataTag] && window.KTUtilElementDataStore[el.customDataTag][name]) ? true : false;
},
remove: function(name) {
if (el && this.has(name)) {
delete window.KTUtilElementDataStore[el.customDataTag][name];
}
}
};
},
outerWidth: function(el, margin) {
var width;
if (margin === true) {
width = parseFloat(el.offsetWidth);
width += parseFloat(KTUtil.css(el, 'margin-left')) + parseFloat(KTUtil.css(el, 'margin-right'));
return parseFloat(width);
} else {
width = parseFloat(el.offsetWidth);
return width;
}
},
offset: function(el) {
var rect, win;
if ( !el ) {
return;
}
// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
// Support: IE <=11 only
// Running getBoundingClientRect on a
// disconnected node in IE throws an error
if ( !el.getClientRects().length ) {
return { top: 0, left: 0 };
}
// Get document-relative position by adding viewport scroll to viewport-relative gBCR
rect = el.getBoundingClientRect();
win = el.ownerDocument.defaultView;
return {
top: rect.top + win.pageYOffset,
left: rect.left + win.pageXOffset
};
},
height: function(el) {
return KTUtil.css(el, 'height');
},
outerHeight: function(el, withMargin) {
var height = el.offsetHeight;
var style;
if (typeof withMargin !== 'undefined' && withMargin === true) {
style = getComputedStyle(el);
height += parseInt(style.marginTop) + parseInt(style.marginBottom);
return height;
} else {
return height;
}
},
visible: function(el) {
return !(el.offsetWidth === 0 && el.offsetHeight === 0);
},
attr: function(el, name, value) {
if (el == undefined) {
return;
}
if (value !== undefined) {
el.setAttribute(name, value);
} else {
return el.getAttribute(name);
}
},
hasAttr: function(el, name) {
if (el == undefined) {
return;
}
return el.getAttribute(name) ? true : false;
},
removeAttr: function(el, name) {
if (el == undefined) {
return;
}
el.removeAttribute(name);
},
animate: function(from, to, duration, update, easing, done) {
/**
* TinyAnimate.easings
* Adapted from jQuery Easing
*/
var easings = {};
var easing;
easings.linear = function(t, b, c, d) {
return c * t / d + b;
};
easing = easings.linear;
// Early bail out if called incorrectly
if (typeof from !== 'number' ||
typeof to !== 'number' ||
typeof duration !== 'number' ||
typeof update !== 'function') {
return;
}
// Create mock done() function if necessary
if (typeof done !== 'function') {
done = function() {};
}
// Pick implementation (requestAnimationFrame | setTimeout)
var rAF = window.requestAnimationFrame || function(callback) {
window.setTimeout(callback, 1000 / 50);
};
// Animation loop
var canceled = false;
var change = to - from;
function loop(timestamp) {
var time = (timestamp || +new Date()) - start;
if (time >= 0) {
update(easing(time, from, change, duration));
}
if (time >= 0 && time >= duration) {
update(to);
done();
} else {
rAF(loop);
}
}
update(from);
// Start animation loop
var start = window.performance && window.performance.now ? window.performance.now() : +new Date();
rAF(loop);
},
actualCss: function(el, prop, cache) {
var css = '';
if (el instanceof HTMLElement === false) {
return;
}
if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {
var value;
// the element is hidden so:
// making the el block so we can meassure its height but still be hidden
css = el.style.cssText;
el.style.cssText = 'position: absolute; visibility: hidden; display: block;';
if (prop == 'width') {
value = el.offsetWidth;
} else if (prop == 'height') {
value = el.offsetHeight;
}
el.style.cssText = css;
// store it in cache
el.setAttribute('kt-hidden-' + prop, value);
return parseFloat(value);
} else {
// store it in cache
return parseFloat(el.getAttribute('kt-hidden-' + prop));
}
},
actualHeight: function(el, cache) {
return KTUtil.actualCss(el, 'height', cache);
},
actualWidth: function(el, cache) {
return KTUtil.actualCss(el, 'width', cache);
},
getScroll: function(element, method) {
// The passed in `method` value should be 'Top' or 'Left'
method = 'scroll' + method;
return (element == window || element == document) ? (
self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||
(browserSupportsBoxModel && document.documentElement[method]) ||
document.body[method]
) : element[method];
},
css: function(el, styleProp, value) {
if (!el) {
return;
}
if (value !== undefined) {
el.style[styleProp] = value;
} else {
var defaultView = (el.ownerDocument || document).defaultView;
// W3C standard way:
if (defaultView && defaultView.getComputedStyle) {
// sanitize property name to css notation
// (hyphen separated words eg. font-Size)
styleProp = styleProp.replace(/([A-Z])/g, "-$1").toLowerCase();
return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
} else if (el.currentStyle) { // IE
// sanitize property name to camelCase
styleProp = styleProp.replace(/\-(\w)/g, function(str, letter) {
return letter.toUpperCase();
});
value = el.currentStyle[styleProp];
// convert other units to pixels on IE
if (/^\d+(em|pt|%|ex)?$/i.test(value)) {
return (function(value) {
var oldLeft = el.style.left,
oldRsLeft = el.runtimeStyle.left;
el.runtimeStyle.left = el.currentStyle.left;
el.style.left = value || 0;
value = el.style.pixelLeft + "px";
el.style.left = oldLeft;
el.runtimeStyle.left = oldRsLeft;
return value;
})(value);
}
return value;
}
}
},
slide: function(el, dir, speed, callback, recalcMaxHeight) {
if (!el || (dir == 'up' && KTUtil.visible(el) === false) || (dir == 'down' && KTUtil.visible(el) === true)) {
return;
}
speed = (speed ? speed : 600);
var calcHeight = KTUtil.actualHeight(el);
var calcPaddingTop = false;
var calcPaddingBottom = false;
if (KTUtil.css(el, 'padding-top') && KTUtil.data(el).has('slide-padding-top') !== true) {
KTUtil.data(el).set('slide-padding-top', KTUtil.css(el, 'padding-top'));
}
if (KTUtil.css(el, 'padding-bottom') && KTUtil.data(el).has('slide-padding-bottom') !== true) {
KTUtil.data(el).set('slide-padding-bottom', KTUtil.css(el, 'padding-bottom'));
}
if (KTUtil.data(el).has('slide-padding-top')) {
calcPaddingTop = parseInt(KTUtil.data(el).get('slide-padding-top'));
}
if (KTUtil.data(el).has('slide-padding-bottom')) {
calcPaddingBottom = parseInt(KTUtil.data(el).get('slide-padding-bottom'));
}
if (dir == 'up') { // up
el.style.cssText = 'display: block; overflow: hidden;';
if (calcPaddingTop) {
KTUtil.animate(0, calcPaddingTop, speed, function(value) {
el.style.paddingTop = (calcPaddingTop - value) + 'px';
}, 'linear');
}
if (calcPaddingBottom) {
KTUtil.animate(0, calcPaddingBottom, speed, function(value) {
el.style.paddingBottom = (calcPaddingBottom - value) + 'px';
}, 'linear');
}
KTUtil.animate(0, calcHeight, speed, function(value) {
el.style.height = (calcHeight - value) + 'px';
}, 'linear', function() {
el.style.height = '';
el.style.display = 'none';
if (typeof callback === 'function') {
callback();
}
});
} else if (dir == 'down') { // down
el.style.cssText = 'display: block; overflow: hidden;';
if (calcPaddingTop) {
KTUtil.animate(0, calcPaddingTop, speed, function(value) {//
el.style.paddingTop = value + 'px';
}, 'linear', function() {
el.style.paddingTop = '';
});
}
if (calcPaddingBottom) {
KTUtil.animate(0, calcPaddingBottom, speed, function(value) {
el.style.paddingBottom = value + 'px';
}, 'linear', function() {
el.style.paddingBottom = '';
});
}
KTUtil.animate(0, calcHeight, speed, function(value) {
el.style.height = value + 'px';
}, 'linear', function() {
el.style.height = '';
el.style.display = '';
el.style.overflow = '';
if (typeof callback === 'function') {
callback();
}
});
}
},
slideUp: function(el, speed, callback) {
KTUtil.slide(el, 'up', speed, callback);
},
slideDown: function(el, speed, callback) {
KTUtil.slide(el, 'down', speed, callback);
},
addEvent: function(el, type, handler, one) {
if (typeof el !== 'undefined' && el !== null) {
el.addEventListener(type, handler);
}
},
removeEvent: function(el, type, handler) {
if (el !== null) {
el.removeEventListener(type, handler);
}
},
on: function(element, selector, event, handler) {
if (!selector) {
return;
}
var eventId = KTUtil.getUniqueID('event');
window.KTUtilDelegatedEventHandlers[eventId] = function(e) {
var targets = element.querySelectorAll(selector);
var target = e.target;
while (target && target !== element) {
for (var i = 0, j = targets.length; i < j; i++) {
if (target === targets[i]) {
handler.call(target, e);
}
}
target = target.parentNode;
}
}
KTUtil.addEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]);
return eventId;
},
off: function(element, event, eventId) {
if (!element || !window.KTUtilDelegatedEventHandlers[eventId]) {
return;
}
KTUtil.removeEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]);
delete window.KTUtilDelegatedEventHandlers[eventId];
},
one: function onetime(el, type, callback) {
el.addEventListener(type, function callee(e) {
// remove event
if (e.target && e.target.removeEventListener) {
e.target.removeEventListener(e.type, callee);
}
// need to verify from https://themeforest.net/author_dashboard#comment_23615588
if (el && el.removeEventListener) {
e.currentTarget.removeEventListener(e.type, callee);
}
// call handler
return callback(e);
});
},
hash: function(str) {
var hash = 0,
i, chr;
if (str.length === 0) return hash;
for (i = 0; i < str.length; i++) {
chr = str.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
},
animateClass: function(el, animationName, callback) {
var animation;
var animations = {
animation: 'animationend',
OAnimation: 'oAnimationEnd',
MozAnimation: 'mozAnimationEnd',
WebkitAnimation: 'webkitAnimationEnd',
msAnimation: 'msAnimationEnd',
};
for (var t in animations) {
if (el.style[t] !== undefined) {
animation = animations[t];
}
}
KTUtil.addClass(el, 'animated ' + animationName);
KTUtil.one(el, animation, function() {
KTUtil.removeClass(el, 'animated ' + animationName);
});
if (callback) {
KTUtil.one(el, animation, callback);
}
},
transitionEnd: function(el, callback) {
var transition;
var transitions = {
transition: 'transitionend',
OTransition: 'oTransitionEnd',
MozTransition: 'mozTransitionEnd',
WebkitTransition: 'webkitTransitionEnd',
msTransition: 'msTransitionEnd'
};
for (var t in transitions) {
if (el.style[t] !== undefined) {
transition = transitions[t];
}
}
KTUtil.one(el, transition, callback);
},
animationEnd: function(el, callback) {
var animation;
var animations = {
animation: 'animationend',
OAnimation: 'oAnimationEnd',
MozAnimation: 'mozAnimationEnd',
WebkitAnimation: 'webkitAnimationEnd',
msAnimation: 'msAnimationEnd'
};
for (var t in animations) {
if (el.style[t] !== undefined) {
animation = animations[t];
}
}
KTUtil.one(el, animation, callback);
},
animateDelay: function(el, value) {
var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];
for (var i = 0; i < vendors.length; i++) {
KTUtil.css(el, vendors[i] + 'animation-delay', value);
}
},
animateDuration: function(el, value) {
var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];
for (var i = 0; i < vendors.length; i++) {
KTUtil.css(el, vendors[i] + 'animation-duration', value);
}
},
scrollTo: function(target, offset, duration) {
var duration = duration ? duration : 500;
var targetPos = target ? KTUtil.offset(target).top : 0;
var scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
var from, to;
if (offset) {
scrollPos += offset;
}
from = scrollPos;
to = targetPos;
KTUtil.animate(from, to, duration, function(value) {
document.documentElement.scrollTop = value;
document.body.parentNode.scrollTop = value;
document.body.scrollTop = value;
}); //, easing, done
},
scrollTop: function(offset, duration) {
KTUtil.scrollTo(null, offset, duration);
},
isArray: function(obj) {
return obj && Array.isArray(obj);
},
ready: function(callback) {
if (document.attachEvent ? document.readyState === "complete" : document.readyState !== "loading") {
callback();
} else {
document.addEventListener('DOMContentLoaded', callback);
}
},
isEmpty: function(obj) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
return false;
}
}
return true;
},
numberString: function(nStr) {
nStr += '';
var x = nStr.split('.');
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
},
detectIE: function() {
var ua = window.navigator.userAgent;
// Test values; Uncomment to check result …
// IE 10
// ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';
// IE 11
// ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';
// Edge 12 (Spartan)
// ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';
// Edge 13
// ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older => return version number
return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
}
var trident = ua.indexOf('Trident/');
if (trident > 0) {
// IE 11 => return version number
var rv = ua.indexOf('rv:');
return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
}
var edge = ua.indexOf('Edge/');
if (edge > 0) {
// Edge (IE 12+) => return version number
return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
}
// other browser
return false;
},
isRTL: function() {
var html = KTUtil.getByTagName('html')[0];
if (html) {
return (KTUtil.attr(html, 'direction') == 'rtl');
}
},
// Scroller
scrollInit: function(element, options) {
if (!element) {
return;
}
// Learn more: https://github.com/mdbootstrap/perfect-scrollbar#options
var pluginDefOptions = {
wheelSpeed: 0.5,
swipeEasing: true,
wheelPropagation: false,
minScrollbarLength: 40,
maxScrollbarLength: 300,
suppressScrollX: true
};
options = KTUtil.deepExtend({}, pluginDefOptions, options);
// Define init function
function init() {
var ps;
var height;
// Get extra options via data attributes
var attrs = element.getAttributeNames();
if (attrs.length > 0) {
attrs.forEach(function(attrName) {
// more options; https://github.com/ganlanyuan/tiny-slider#options
if ((/^data-.*/g).test(attrName)) {
if (['scroll', 'height', 'mobile-height'].includes(optionName) == false) {
var optionName = attrName.replace('data-', '').toLowerCase().replace(/(?:[\s-])\w/g, function(match) {
return match.replace('-', '').toUpperCase();
});
options[optionName] = KTUtil.filterBoolean(element.getAttribute(attrName));
}
}
});
}
if (options.height instanceof Function) {
height = options.height.call();
} else {
if (KTUtil.isMobileDevice() === true && options.mobileHeight) {
height = parseInt(options.mobileHeight);
} else {
height = parseInt(options.height);
}
}
if (height === false) {
KTUtil.scrollDestroy(element, true);
return;
}
height = parseInt(height);
// Destroy scroll on table and mobile modes
if ((options.mobileNativeScroll || options.disableForMobile) && KTUtil.isMobileDevice() === true) {
ps = KTUtil.data(element).get('ps');
if (ps) {
if (options.resetHeightOnDestroy) {
KTUtil.css(element, 'height', 'auto');
} else {
KTUtil.css(element, 'overflow', 'auto');
if (height > 0) {
KTUtil.css(element, 'height', height + 'px');
}
}
ps.destroy();
ps = KTUtil.data(element).remove('ps');
} else if (height > 0){
KTUtil.css(element, 'overflow', 'auto');
KTUtil.css(element, 'height', height + 'px');
}
return;
}
if (height > 0) {
KTUtil.css(element, 'height', height + 'px');
}
if (options.desktopNativeScroll) {
KTUtil.css(element, 'overflow', 'auto');
return;
}
// Pass options via HTML Attributes
if (KTUtil.attr(element, 'data-window-scroll') == 'true') {
options.windowScroll = true;
}
// Init scroll
ps = KTUtil.data(element).get('ps');
if (ps) {
ps.update();
} else {
KTUtil.css(element, 'overflow', 'hidden');
KTUtil.addClass(element, 'scroll');
ps = new PerfectScrollbar(element, options);
KTUtil.data(element).set('ps', ps);
}
// Remember scroll position in cookie
var uid = KTUtil.attr(element, 'id');
// Consider using Localstorage
//if (options.rememberPosition === true && Cookies && uid) {
// if (KTCookie.getCookie(uid)) {
// var pos = parseInt(KTCookie.getCookie(uid));
//
// if (pos > 0) {
// element.scrollTop = pos;
// }
// }
//
// element.addEventListener('ps-scroll-y', function() {
// KTCookie.setCookie(uid, element.scrollTop);
// });
//}
}
// Init
init();
// Handle window resize
if (options.handleWindowResize) {
KTUtil.addResizeHandler(function() {
init();
});
}
},
scrollUpdate: function(element) {
var ps = KTUtil.data(element).get('ps');
if (ps) {
ps.update();
}
},
scrollUpdateAll: function(parent) {
var scrollers = KTUtil.findAll(parent, '.ps');
for (var i = 0, len = scrollers.length; i < len; i++) {
KTUtil.scrollUpdate(scrollers[i]);
}
},
scrollDestroy: function(element, resetAll) {
var ps = KTUtil.data(element).get('ps');
if (ps) {
ps.destroy();
ps = KTUtil.data(element).remove('ps');
}
if (element && resetAll) {
element.style.setProperty('overflow', '');
element.style.setProperty('height', '');
}
},
filterBoolean: function(val) {
// Convert string boolean
if (val === true || val === 'true') {
return true;
}
if (val === false || val === 'false') {
return false;
}
return val;
},
setHTML: function(el, html) {
el.innerHTML = html;
},
getHTML: function(el) {
if (el) {
return el.innerHTML;
}
},
getDocumentHeight: function() {
var body = document.body;
var html = document.documentElement;
return Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight );
},
getScrollTop: function() {
return (document.scrollingElement || document.documentElement).scrollTop;
},
changeColor: function(col, amt) {
var usePound = false;
if (col[0] == "#") {
col = col.slice(1);
usePound = true;
}
var num = parseInt(col,16);
var r = (num >> 16) + amt;
if (r > 255) r = 255;
else if (r < 0) r = 0;
var b = ((num >> 8) & 0x00FF) + amt;
if (b > 255) b = 255;
else if (b < 0) b = 0;
var g = (num & 0x0000FF) + amt;
if (g > 255) g = 255;
else if (g < 0) g = 0;
return (usePound?"#":"") + (g | (b << 8) | (r << 16)).toString(16);
},
// Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds
throttle: function (timer, func, delay) {
// If setTimeout is already scheduled, no need to do anything
if (timer) {
return;
}
// Schedule a setTimeout after delay seconds
timer = setTimeout(function () {
func();
// Once setTimeout function execution is finished, timerId = undefined so that in <br>
// the next scroll event function execution can be scheduled by the setTimeout
timer = undefined;
}, delay);
},
// Debounce function: Input as function which needs to be debounced and delay is the debounced time in milliseconds
debounce: function (timer, func, delay) {
// Cancels the setTimeout method execution
clearTimeout(timer)
// Executes the func after delay time.
timer = setTimeout(func, delay);
},
btnWait: function(el, cls, message, disable) {
if (!el) {
return;
}
if (typeof disable !== 'undefined' && disable === true) {
KTUtil.attr(el, "disabled", true);
}
if (cls) {
KTUtil.addClass(el, cls);
KTUtil.attr(el, "wait-class", cls);
}
if (message) {
var caption = KTUtil.find(el, '.btn-caption');
if (caption) {
KTUtil.data(caption).set('caption', KTUtil.getHTML(caption));
KTUtil.setHTML(caption, message);
} else {
KTUtil.data(el).set('caption', KTUtil.getHTML(el));
KTUtil.setHTML(el, message);
}
}
},
}
}();
//IMPORTANT
"use strict";
// Initialization
KTUtil.ready(function() {
////////////////////////////////////////////////////
// Layout Base Partials(mandatory for core layout)//
////////////////////////////////////////////////////
// Init sideMenuScroll
sideMenuScroll.init('sideMenuScroll');
// Init msgLeft
msgLeft.init('msgLeft');
// Init chatBox
chatBox.init('chatBox');
// Init settingsMenu
settingsMenu.init('settingsMenu');
// Init recentTickets Menu
recentTickets.init('recentTickets');
// Init ticketMsg Menu
ticketMsg.init('ticketMsg');
// Init projectActivityDetail Menu
projectActivityDetail.init('projectActivityDetail');
// Init empDashNotice Menu
empDashNotice.init('empDashNotice');
});
"use strict";
var sideMenuScroll = function () {
// Private properties
var _element;
var _menuObject;
// Initialize
var _init = function () {
var scroll;
if (KTUtil.attr(_element, 'data-menu-scroll') === '1') {
scroll = {
rememberPosition: true, // remember position on page reload
height: function () { // calculate available scrollable area height
var height = parseInt(KTUtil.getViewPort().height);
if (KTUtil.isBreakpointUp('lg')) {
height = parseInt(KTUtil.getViewPort().height) - 111;
}
else
height = parseInt(KTUtil.getViewPort().height) - 63;
return height;
}
};
}
_menuObject = new KTMenu(_element, {
// Vertical scroll
scroll: scroll,
});
}
// Public methods
return {
init: function (id) {
_element = KTUtil.getById(id);
if (!_element) {
return;
}
// Initialize menu
_init();
},
getElement: function () {
return _element;
},
};
}();
var msgLeft = function() {
// Private properties
var _element;
var _menuObject;
// Initialize
var _init = function() {
var scroll;
if (KTUtil.attr(_element, ' data-menu-scroll') === '1') {
scroll = {
rememberPosition: true, // remember position on page reload
height: function() { // calculate avail able scrollable area height
var height = parseInt(KTUtil.getViewPort(). height);
if (KTUtil.isBreakpointUp('lg')) {
height = parseInt(KTUtil.getViewPort().height) - 127;
}
else
height = parseInt(KTUtil.getViewPort().height) - 194;
return height;
}
};
}
_menuObject = new KTMenu(_element, {
// Vertical scroll
scroll: scroll,
});
}
// Public methods
return {
init: function(id) {
_element = KTUtil.getById(id);
if (!_element) {
return;
}
// Initialize menu
_init();
},
getElement: function() {
return _element;
},
};
}();
var chatBox = function() {
// Private properties
var _element;
var _menuObject;
// Initialize
var _init = function() {
var scroll;
if (KTUtil.attr(_element, 'data-menu-scroll') === '1') {
scroll = {
rememberPosition: true, // remember position on page reload
height: function() { // calculate available scrollable area height
var height = parseInt(KTUtil.getViewPort().height);
if (KTUtil.isBreakpointUp('lg')) {
height = parseInt(KTUtil.getViewPort().height) - 280;
}
else
height = parseInt(KTUtil.getViewPort().height) - 273;
return height;
}
};
}
_menuObject = new KTMenu(_element, {
// Vertical scroll
scroll: scroll,
});
}
// Public methods
return {
init: function(id) {
_element = KTUtil.getById(id);
if (!_element) {
return;
}
// Initialize menu
_init();
},
getElement: function() {
return _element;
},
};
}();
var settingsMenu = function () {
// Private properties
var _element;
var _menuObject;
// Initialize
var _init = function () {
var scroll;
if (KTUtil.attr(_element, 'data-menu-scroll') === '1') {
scroll = {
rememberPosition: true, // remember position on page reload
height: function () { // calculate available scrollable area height
var height = parseInt(KTUtil.getViewPort().height);
if (KTUtil.isBreakpointUp('lg')) {
height = parseInt(KTUtil.getViewPort().height) - 130;
}
else
height = parseInt(KTUtil.getViewPort().height) - 65;
return height;
}
};
}
_menuObject = new KTMenu(_element, {
// Vertical scroll
scroll: scroll,
});
}
// Public methods
return {
init: function (id) {
_element = KTUtil.getById(id);
if (!_element) {
return;
}
// Initialize menu
_init();
},
getElement: function () {
return _element;
},
};
}();
var recentTickets = function () {
// Private properties
var _element;
var _menuObject;
// Initialize
var _init = function () {
var scroll;
if (KTUtil.attr(_element, 'data-menu-scroll') === '1') {
scroll = {
rememberPosition: true, // remember position on page reload
height: function () { // calculate available scrollable area height
var height = parseInt(KTUtil.getViewPort().height);
if (KTUtil.isBreakpointUp('lg')) {
height = parseInt(KTUtil.getViewPort().height) - 451;
}
else
height = parseInt(KTUtil.getViewPort().height) - 333;
return height;
}
};
}
_menuObject = new KTMenu(_element, {
// Vertical scroll
scroll: scroll,
});
}
// Public methods
return {
init: function (id) {
_element = KTUtil.getById(id);
if (!_element) {
return;
}
// Initialize menu
_init();
},
getElement: function () {
return _element;
},
};
}();
var ticketMsg = function () {
// Private properties
var _element;
var _menuObject;
// Initialize
var _init = function () {
var scroll;
if (KTUtil.attr(_element, 'data-menu-scroll') === '1') {
scroll = {
rememberPosition: true, // remember position on page reload
height: function () { // calculate available scrollable area height
var height = parseInt(KTUtil.getViewPort().height);
if (KTUtil.isBreakpointUp('lg')) {
height = parseInt(KTUtil.getViewPort().height) - 260;
}
else
height = parseInt(KTUtil.getViewPort().height) - 325;
return height;
}
};
}
_menuObject = new KTMenu(_element, {
// Vertical scroll
scroll: scroll,
});
}
// Public methods
return {
init: function (id) {
_element = KTUtil.getById(id);
if (!_element) {
return;
}
// Initialize menu
_init();
},
getElement: function () {
return _element;
},
};
}();
var projectActivityDetail = function () {
// Private properties
var _element;
var _menuObject;
// Initialize
var _init = function () {
var scroll;
if (KTUtil.attr(_element, 'data-menu-scroll') === '1') {
scroll = {
rememberPosition: true, // remember position on page reload
height: function () { // calculate available scrollable area height
var height = parseInt(KTUtil.getViewPort().height);
if (KTUtil.isBreakpointUp('lg')) {
height = parseInt(KTUtil.getViewPort().height) - 175;
}
else
height = parseInt(KTUtil.getViewPort().height) - 325;
return height;
}
};
}
_menuObject = new KTMenu(_element, {
// Vertical scroll
scroll: scroll,
});
}
// Public methods
return {
init: function (id) {
_element = KTUtil.getById(id);
if (!_element) {
return;
}
// Initialize menu
_init();
},
getElement: function () {
return _element;
},
};
}();
var empDashNotice = function () {
// Private properties
var _element;
var _menuObject;
// Initialize
var _init = function () {
var scroll;
if (KTUtil.attr(_element, 'data-menu-scroll') === '1') {
scroll = {
rememberPosition: true, // remember position on page reload
height: function () { // calculate available scrollable area height
var height = parseInt(KTUtil.getViewPort().height);
if (KTUtil.isBreakpointUp('xl')) {
height = parseInt(KTUtil.getViewPort().height) - 300;
}
else
height = parseInt(KTUtil.getViewPort().height) - 300;
return height;
}
};
}
_menuObject = new KTMenu(_element, {
// Vertical scroll
scroll: scroll,
});
}
// Public methods
return {
init: function (id) {
_element = KTUtil.getById(id);
if (!_element) {
return;
}
// Initialize menu
_init();
},
getElement: function () {
return _element;
},
};
}();