ok
Direktori : /proc/thread-self/root/home2/selectio/www/fms-worksuite/public/vendor/jquery/ |
Current File : //proc/thread-self/root/home2/selectio/www/fms-worksuite/public/vendor/jquery/scripts.bundle.js |
"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; }, }; }();