@finqu/cool 1.2.25 → 1.2.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/cool.css +1 -6
- package/dist/css/cool.css.map +2 -2
- package/dist/css/cool.min.css +1 -1
- package/dist/css/cool.min.css.map +1 -1
- package/dist/js/cool.bundle.js +11 -3
- package/dist/js/cool.bundle.js.map +1 -1
- package/dist/js/cool.bundle.min.js +2 -2
- package/dist/js/cool.bundle.min.js.map +1 -1
- package/dist/js/cool.esm.js +11 -3
- package/dist/js/cool.esm.js.map +1 -1
- package/dist/js/cool.esm.min.js +2 -2
- package/dist/js/cool.esm.min.js.map +1 -1
- package/dist/js/cool.js +11 -3
- package/dist/js/cool.js.map +1 -1
- package/dist/js/cool.min.js +2 -2
- package/dist/js/cool.min.js.map +1 -1
- package/html/index.html +40 -0
- package/js/dist/collapse.js +1 -1
- package/js/dist/common.js +1 -1
- package/js/dist/dropdown.js +1 -1
- package/js/dist/popover.js +1 -1
- package/js/dist/sectiontabs.js +439 -336
- package/js/dist/sectiontabs.js.map +1 -1
- package/js/dist/select.js +1 -1
- package/js/dist/tooltip.js +1 -1
- package/js/src/section-tabs.js +11 -2
- package/package.json +1 -1
- package/scss/_dropdown.scss +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../js/src/util/perfect-scrollbar.js","../../js/src/util/animate-css.js","../../js/src/common.js","../../js/src/util/index.js","../../js/src/abstract-ui-component.js","../../js/src/popover.js","../../js/src/select.js","../../js/src/dropdown.js","../../js/src/tooltip.js","../../js/src/section-tabs.js","../../js/src/collapse.js","../../js/src/toast.js","../../js/src/dialog.js","../../js/index.umd.js"],"names":["get","element","getComputedStyle","set","obj","key","val","style","div","className","document","createElement","elMatches","Element","prototype","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","Error","call","remove","parentNode","removeChild","queryChildren","selector","Array","filter","children","child","cls","main","thumb","x","rail","consuming","state","focus","clicking","active","scrolling","scrollingClassTimeout","y","addScrollingClass","i","classList","contains","clearTimeout","add","removeScrollingClass","setTimeout","isAlive","settings","scrollingThreshold","EventElement","this","handlers","prototypeAccessors","isEmpty","configurable","bind","eventName","handler","push","addEventListener","unbind","target","this$1","removeEventListener","unbindAll","name","Object","keys","every","length","defineProperties","EventManager","eventElements","createEvent","window","CustomEvent","evt","initCustomEvent","undefined","eventElement","ee","splice","indexOf","forEach","e","once","onceHandler","processScrollDiff","axis","diff","useScrollingClass","forceFireReachEvent","fields","ref","contentHeight","containerHeight","scrollTop","up","down","reach","dispatchEvent","setScrollingClassInstantly","processScrollDiff$1","toInt","parseInt","env","isWebKit","documentElement","supportsTouch","DocumentTouch","supportsIePointer","navigator","msMaxTouchPoints","isChrome","test","userAgent","updateGeometry","roundedScrollTop","Math","floor","containerWidth","clientWidth","clientHeight","contentWidth","scrollWidth","scrollHeight","scrollbarXRail","el","appendChild","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","scrollLeft","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","width","isRtl","left","isScrollbarXUsingBottom","bottom","scrollbarXBottom","top","scrollbarXTop","yRailOffset","height","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","max","maxScrollbarLength","min","bindMouseScrollHandler","pageY","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","stopPropagation","preventDefault","mouseUpHandler","event","ownerDocument","click-rail","direction","pageYOffset","getBoundingClientRect","pageX","pageXOffset","drag-thumb","keyboard","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","deltaX","deltaY","which","metaKey","altKey","shiftKey","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","querySelector","cursor","overflow","overflowX","overflowY","join","match","maxScrollTop","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","offsetHeight","isLeft","isRight","offsetWidth","abs","ctrlKey","onwheel","onmousewheel","touch","startOffset","startTime","speed","easingLoop","touchStart","touchMove","touchEnd","PointerEvent","MSPointerEvent","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","Date","getTime","clearInterval","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","scrollY","swipeEasing","setInterval","isInitialized","PerfectScrollbar","userSettings","nodeName","result","originalScrollLeft","blur","isNegativeScroll","setAttribute","railXStyle","isNaN","borderLeftWidth","borderRightWidth","display","marginLeft","marginRight","railYStyle","styles","paddingLeft","paddingRight","outerWidth","borderTopWidth","borderBottomWidth","marginTop","marginBottom","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","$","fn","extend","animateCss","animationName","callback","animationEnd","addClass","one","removeClass","on","Cool","Common","initialize","opts","coolPopover","popover","coolSelect","select","coolDropdown","dropdown","coolTooltip","tooltip","coolCollapse","collapse","coolSectionTabs","sectionTabs","coolToast","toast","coolDialog","dialog","hasClass","not","attr","$inputGroup","closest","each","formLabelGroup","find","trigger","$container","parents","href","data","linkDisabled","item","is","parent","open","location","$self","btn","btnDisabled","click","toggleClass","mousedown","mouseup","$sidebarLeftContent","sidebarLeftScroll","$sidebarTabs","scrollContainer","$tab","first","css","transform","last","debounce","func","wait","immediate","timeout","context","args","arguments","callNow","apply","touchEvents","special","destroyed","AbstractUIComponent","onInit","onUpdate","onDestroy","onShow","onClose","onReset","log","_console","debug","console","NAME","DATA_KEY","Popover","_this","_AbstractUIComponent","defaults","init","buildCache","bindEvents","unbindEvents","$el","removeData","container","containerAutoDetect","id","generateUUID","animation","animationIn","animationOut","animationSpeed","placement","placementChanged","title","content","offsetParent","_this2","$popover","close","show","setPosition","off","replace","c","r","random","toString","buildPopover","append","$arrow","arrowPos","popoverPosX","popoverPosY","containerInnerWidth","innerWidth","containerInnerHeight","innerHeight","popoverWidth","popoverHeight","outerHeight","popoverTriggerWidth","popoverTriggerHeight","popoverTriggerPosX","position","popoverTriggerPosY","arrowWidth","arrowHeight","round","will-change","popoverOverflowCount","popoverPosition","popoverOverflow","removeAttr","fixPopoverPosition","overflowAmount","_this3","_jQueryInterface","config","TypeError","JQUERY_NO_CONFLICT","Constructor","noConflict","Select","then","buildScroll","setData","reset","items","$select","$selectItems","$selectIconContainer","html","selectIconDefault","dynamicTitle","dynamicTitleDefault","$selectTitle","text","trim","searchApi","dynamicTitleEmptyDefault","$selectHeader","showSearch","searchData","$searchInput","searchString","search","Promise","primaryResolve","primaryReject","self","faPro","scrollContentHeight","searchRequest","type","contentOpen","searchPlaceholder","btnCloseText","labelTemplate","confirmCheck","confirmUncheck","preventUncheck","allowNoneOnRadioSelect","showValidStateIcon","itemsToExclude","primaryKeyword","preventClose","map","String","isArray","arr","showFooter","secondaryResolve","secondaryReject","selectItems","_renderItemList","_renderSearch","_renderFooter","$scrollableContent","$searchContainer","$searchIconContainer","$clearSearchButton","tabIndex","$footerContainer","$closeButton","buildSearchData","max-height","overflow-y","scroll","_this4","resolve","reject","selectLabels","_this5","checked","cb","onSelect","n","prop","has","getData","faNameSpace","searchUrl","itemCount","currentCount","value","encodeURIComponent","ajax","method","url","done","itemIds","when","$inputs","$input","inputValues","abort","results","toLocaleLowerCase","_this6","$otherSelects","zindex","z-index","scrollIntoView","behavior","block","inline","isEmptyObject","grep","appendItems","_this7","itemsArr","domItems","prepend","deselectItems","array","_this8","getItem","getSelectedItems","segment","ids","getSelectedItem","label","onSearch","Dropdown","offset","minWidth","positionObserver","JSON","parse","closeOnItemClick","$dropdown","next","align","$dropdownItem","menuRight","after","onItemClick","str","dropdownWidth","dropdownHeight","dropdownTriggerWidth","dropdownTriggerHeight","dropdownTriggerPosX","dropdownTriggerPosY","dropdownPosX","dropdownPosY","offsetX","offsetY","offsets","$containingParent","index","toLowerCase","containingBoundingRect","containerBoundingRect","maxTop","maxLeft","maxRight","maxBottom","Tooltip","$tooltip","buildTooltip","tooltipPosX","tooltipPosY","tooltipWidth","tooltipHeight","tooltipTriggerWidth","tooltipTriggerHeight","tooltipTriggerPosX","tooltipTriggerPosY","tooltipOverflowCount","tooltipPosition","tooltipOverflow","fixTooltipPosition","SectionTabs","checkForChanges","$dropdownContainer","$dropdownList","tabsCount","tabs","_name","moveToList","insertBefore","moveToDropdown","appendTo","overflowStatus","dropdownItems","moveableTabs","usedSpace","freeSpace","Collapse","$target","expanded","targetHeight","$indicator","whichTransitionEvent","transEndEventNames","WebkitTransition","MozTransition","transition","t","Toast","toasts","queue","processingQueue","onInitialize","addQueue","processQueue","shift","buildToast","uuid","placementX","placementY","dismiss","size","header","theme","template","maxBodyHeight","_renderTemplate","$inner","$closeBtn","toastPosX","toastPosY","toastWidth","toastHeight","body","bodyCloseBtn","_$$fn$NAME$defaults","Dialog","dialogs","buildDialog","footer","classes","centered","backdrop","preventScroll","closeBtn","callbacks","overflowVisible","actions","confirm","$prevDialog","eq","zIndex","opacity","visibility","checkForBackdrop","btnCancel","btnRemove","btnConfirm","visible","primary","attrs","overFlowVisible","_$$fn$NAME$defaults$1"],"mappings":"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","sourcesContent":["/*!\n * perfect-scrollbar v1.4.0\n * (c) 2018 Hyunje Jun\n * @license MIT\n */\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n var this$1 = this;\n\n for (var name in this$1.handlers) {\n this$1.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nvar processScrollDiff = function(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n};\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nvar updateGeometry = function(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n i.containerWidth = element.clientWidth;\n i.containerHeight = element.clientHeight;\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt(i.railXWidth * i.containerWidth / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n (i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt(i.railYHeight * i.containerHeight / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n roundedScrollTop *\n (i.railYHeight - i.scrollbarYHeight) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n};\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nvar clickRail = function(i) {\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n};\n\nvar dragThumb = function(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n};\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n startingScrollTop = element[scrollTop];\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nvar keyboard = function(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n};\n\nvar wheel = function(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = -1 * e.wheelDeltaX / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for <select> issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n var ref = getDeltaFromEvent(e);\n var deltaX = ref[0];\n var deltaY = ref[1];\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n var shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n element.scrollTop += deltaX * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== 'undefined') {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== 'undefined') {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n};\n\nvar touch = function(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n var element = i.element;\n\n function shouldPrevent(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n\n function shouldHandle(e) {\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = new Date().getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = new Date().getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(easingLoop);\n easingLoop = setInterval(function() {\n if (i.isInitialized) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n};\n\nvar defaultSettings = function () { return ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n}); };\n\nvar handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard: keyboard,\n wheel: wheel,\n touch: touch,\n};\n\nvar PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n var this$1 = this;\n if ( userSettings === void 0 ) userSettings = {};\n\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (var key in userSettings) {\n this$1.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n var focus = function () { return element.classList.add(cls.state.focus); };\n var blur = function () { return element.classList.remove(cls.state.focus); };\n\n this.isRtl = get(element).direction === 'rtl';\n this.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n var railXStyle = get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n var railYStyle = get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });\n updateGeometry(this);\n};\n\nPerfectScrollbar.prototype.update = function update () {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n set(this.scrollbarXRail, { display: 'block' });\n set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(get(this.scrollbarXRail).marginLeft) +\n toInt(get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(get(this.scrollbarYRail).marginTop) +\n toInt(get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n set(this.scrollbarXRail, { display: 'none' });\n set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n set(this.scrollbarXRail, { display: '' });\n set(this.scrollbarYRail, { display: '' });\n};\n\nPerfectScrollbar.prototype.onScroll = function onScroll (e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n};\n\nPerfectScrollbar.prototype.destroy = function destroy () {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n remove(this.scrollbarX);\n remove(this.scrollbarY);\n remove(this.scrollbarXRail);\n remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n};\n\nPerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n this.element.className = this.element.className\n .split(' ')\n .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n .join(' ');\n};\n\nexport default PerfectScrollbar;","import 'jquery';\n\n$.fn.extend({\n animateCss: function (animationName, callback) {\n\n var el = this;\n var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';\n\n el.addClass('animated ' + animationName).one(animationEnd, function(e) {\n\n $(this).removeClass('animated ' + animationName);\n\n if (callback) {\n callback();\n }\n\n }).children().on(animationEnd, function(e) {\n\n e.stopPropagation();\n });\n }\n});","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport './util/animate-css';\n\nwindow.Cool = window.Cool || {};\nwindow.Cool.settings = window.Cool.settings || {};\n\nclass Common {\n\n\tstatic initialize(opts) {\n\n // There's an error if opts is not defined\n opts = opts || {};\n\n // Save settings for later use\n window.Cool.settings = opts;\n\n // Init plugins\n $('[data-toggle=\"popover\"]').coolPopover(opts.popover);\n $('[data-toggle=\"select\"]').coolSelect(opts.select);\n $('[data-toggle=\"dropdown\"]').coolDropdown(opts.dropdown);\n $('[data-toggle=\"tooltip\"]').coolTooltip(opts.tooltip);\n $('[data-toggle=\"collapse\"]').coolCollapse(opts.collapse);\n $('[data-toggle=\"section-tabs\"]').coolSectionTabs(opts.sectionTabs);\n $('body').coolToast(opts.toast);\n $('body').coolDialog(opts.dialog);\n\n // Dom ready\n\t\t$('html').addClass('dom-ready');\n\n // Input group focus in\n\t\t$(document).on('focus', '.form-control', function () {\n\n if (!$(this).hasClass('disabled') && $(this).not(':disabled') && !$(this).attr('readonly')) {\n\n let $inputGroup = $(this).closest('.input-group');\n\n if (!$inputGroup.hasClass('input-group-focus')) {\n $inputGroup.addClass('input-group-focus');\n }\n }\n });\n\n // Input group focus out\n $(document).on('blur', '.form-control', function () {\n\n if (!$(this).hasClass('disabled') && $(this).not(':disabled') && !$(this).attr('readonly')) {\n\n let $inputGroup = $(this).closest('.input-group');\n\n if ($inputGroup.hasClass('input-group-focus')) {\n $inputGroup.removeClass('input-group-focus');\n }\n }\n });\n\n // Custom Form group\n $('.form-label-group').each(function(i, formLabelGroup) {\n\n let $formLabelGroup = $(formLabelGroup);\n\n $formLabelGroup.find('input').on('blur input change', function () {\n\n let val = $(this).val();\n\n if (val) {\n $(formLabelGroup).addClass('label-on-top');\n } else {\n $(formLabelGroup).removeClass('label-on-top');\n }\n\n }).trigger('change');\n });\n\n // Table actions\n $.each($('.table'), function() {\n\n if ($(this).find('[data-table-link], [data-table-btn]').length && !$(this).hasClass('table-hover')) {\n $(this).addClass('table-hover');\n }\n });\n\n $(document).on('click', '[data-table-link]', function(e) {\n\n let $container = $(this).parents('table, .table');\n let href = $(this).data('tableLink');\n let target = $(e.target);\n let exceptions = ['input', 'button', 'a', 'label', 'td.col-select'];\n let linkDisabled = false;\n\n $.each(exceptions, function(item) {\n\n if (target.is(item) || (item == 'a' && target.parent().is(item))) {\n linkDisabled = true;\n }\n });\n\n if ($container.hasClass('bulk-actions-active')) {\n linkDisabled = true;\n }\n\n if (target.hasClass('table-link-exclude')) {\n linkDisabled = true;\n }\n\n if (target.is('td, .td, img') && !linkDisabled) {\n\n if (e.ctrlKey || e.metaKey) {\n\n window.open(href, '_blank');\n\n } else {\n\n window.location.href = href;\n }\n\n } else {\n\n return;\n }\n });\n\n $(document).on('click', '[data-table-btn]', function(e) {\n\n let $container = $(this).parents('table, .table');\n let $self = $(this);\n let btn = $(this).data('tableButton');\n let target = $(e.target);\n let exceptions = ['input', 'button', 'a', 'label', 'td.col-select'];\n let btnDisabled = false;\n\n if (!btn) {\n\n btn = $self.find('button')[0];\n\n if (!btn) {\n return;\n }\n }\n\n $.each(exceptions, function(item) {\n\n if (target.is(item) || (item == 'a' && target.parent().is(item))) {\n btnDisabled = true;\n }\n });\n\n if ($container.hasClass('bulk-actions-active')) {\n btnDisabled = true;\n }\n\n if (target.hasClass('table-btn-exclude')) {\n btnDisabled = true;\n }\n\n if (target.is('td, .td, img') && !btnDisabled) {\n\n $(btn).click();\n\n } else {\n\n return;\n }\n });\n\n // button toggle\n $(document).on('click', '.btn-group-toggle .btn > input', function(e) {\n e.stopPropagation();\n });\n\n $(document).on('click', '.btn-group-toggle .btn', function() {\n $(this).find('input').trigger('click');\n $(this).parent().find('input').trigger('change');\n });\n\n $(document).on('change', '.btn-group-toggle .btn > input', function() {\n if ($(this).is(':checked')) {\n $(this).parent().addClass('active');\n } else {\n $(this).parent().removeClass('active');\n }\n });\n\n // Force select element unfocus after change\n $('select').on('change', function() {\n $(this).blur();\n });\n\n // Tabs\n $('.tab-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).parent().toggleClass('open');\n });\n\n $(document).on('click', function() {\n\n $('.tabs-container').removeClass('open');\n });\n\n // Sidebar togglers\n $('.sidebar-left-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).toggleClass('open');\n $('body').toggleClass('sidebar-left-open');\n });\n\n $('.sidebar-right-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).toggleClass('open');\n $('body').toggleClass('sidebar-right-open');\n });\n\n // Sidebar scroll\n $('.sidebar-content .ps__thumb-y').mousedown(function() {\n $(this).parent().parent().addClass('ps-mousedown-scroll');\n });\n\n $(document).mouseup(function() {\n\n if ($('.sidebar-content').hasClass('ps-mousedown-scroll')) {\n $('.sidebar-content').removeClass('ps-mousedown-scroll');\n }\n });\n\n // Sidebar left scroll\n let $sidebarLeft = $('.sidebar-left');\n let $sidebarLeftContent = $sidebarLeft.find('.sidebar-content');\n\n if ($sidebarLeftContent.length) {\n\n let sidebarLeftScroll = new PerfectScrollbar($sidebarLeftContent[0], {\n wheelSpeed: 2,\n wheelPropagation: true,\n minScrollbarLength: 20,\n suppressScrollX: true\n });\n\n $sidebarLeftContent.find('[data-toggle=\"collapse\"]').on('click', function() {\n\n setTimeout(() => {\n sidebarLeftScroll.update();\n }, 300);\n });\n }\n\n // Sidebar tabs\n let $sidebarTabs = $(document).find('.sidebar-tab');\n\n if ($sidebarTabs.length) {\n\n $.each($sidebarTabs, function(i, el) {\n\n let scrollContainer = $(el).find('.tab-content');\n\n const sidebarTabsScroll = new PerfectScrollbar(scrollContainer[0], {\n wheelSpeed: 2,\n wheelPropagation: true,\n minScrollbarLength: 20,\n suppressScrollX: true\n });\n });\n\n $('[name=\"sidebar-tab-select\"]').on('click', function() {\n\n let val = $(this).val();\n let $tab = $('#sidebar-tab-'+val);\n\n $sidebarTabs.not($tab).removeClass('active');\n $tab.addClass('active');\n\n $('[name=\"sidebar-tab-select\"]').not($(this)).removeClass('active');\n $(this).addClass('active');\n\n if ($tab[0] == $sidebarTabs.first()[0]) {\n\n $sidebarTabs.not($tab).find('.tab-content').css({\n 'transform': 'translate3d(100%, 0px, 0px)'\n });\n\n } else if ($tab[0] == $sidebarTabs.last()[0]) {\n\n $sidebarTabs.not($tab).find('.tab-content').css({\n 'transform': 'translate3d(-100%, 0px, 0px)'\n });\n\n } else {\n\n $sidebarTabs.first().not($tab).find('.tab-content').css({\n 'transform': 'translate3d(-100%, 0px, 0px)'\n });\n\n $sidebarTabs.last().not($tab).find('.tab-content').css({\n 'transform': 'translate3d(100%, 0px, 0px)'\n });\n }\n\n $tab.find('.tab-content').css({\n 'transform': 'none'\n });\n });\n }\n\t}\n}\n\nwindow.Cool.initialize = Common.initialize;\n\nexport default Common;","import 'jquery';\n\nconst debounce = function (func, wait, immediate) {\n\n\tlet timeout;\n\n\treturn function() {\n\n\t\tlet context = this;\n\t\tlet args = arguments;\n\t\tlet later = function() {\n\n\t\t\ttimeout = null;\n\n\t\t\tif (!immediate) {\n\t\t\t\tfunc.apply(context, args)\n\t\t\t};\n\t\t};\n\n\t\tlet callNow = immediate && !timeout;\n\n\t\tclearTimeout(timeout);\n\n\t\ttimeout = setTimeout(later, wait);\n\n\t\tif (callNow) {\n\t\t\tfunc.apply(context, args);\n\t\t}\n\t};\n};\n\nconst shallowProperty = function(key) {\n\n\treturn function(obj) {\n\n\t\treturn obj == null ? void 0 : obj[key];\n\t};\n};\n\nconst isArrayLike = function(collection) {\n\n\tlet length = shallowProperty('length');\n\n\treturn typeof length == 'number' && length >= 0 && length <= Math.pow(2, 53) - 1;\n};\n\nconst optimizeCb = function(func, context, argCount) {\n\n if (context === void 0) {\n \treturn func;\n\t}\n\n\tswitch (argCount == null ? 3 : argCount) {\n\n\t\tcase 1: return function(value) {\n\t\t\treturn func.call(context, value);\n\t\t};\n\n\t\tcase 3: return function(value, index, collection) {\n\t\t\treturn func.call(context, value, index, collection);\n\t\t};\n\t\tcase 4: return function(accumulator, value, index, collection) {\n\t\t\treturn func.call(context, accumulator, value, index, collection);\n\t\t};\n\t}\n\n return function() {\n\t\treturn func.apply(context, arguments);\n };\n};\n\nconst each = function(obj, iteratee, context) {\n\n\titeratee = optimizeCb(iteratee, context);\n\n\tlet i;\n\tlet length;\n\n\tif (isArrayLike(obj)) {\n\n\t\tfor (i = 0, length = obj.length; i < length; i++) {\n\t\t\titeratee(obj[i], i, obj);\n\t\t}\n\n\t} else {\n\n\t\tlet keys = Object.keys(obj);\n\n\t\tfor (i = 0, length = keys.length; i < length; i++) {\n\t\t\titeratee(obj[keys[i]], keys[i], obj);\n\t\t}\n\t}\n\n\treturn obj;\n};\n\nconst touchEvents = function () {\n\n\tlet result = false;\n\n\tif (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n\t\tresult = true;\n\t}\n\n\treturn result;\n};\n\n$.event.special.destroyed = {\n\n\tremove: function(obj) {\n\n\t\tif (obj.handler) {\n\t\t\tobj.handler();\n\t\t}\n\t}\n}\n\nexport {\n\tdebounce,\n\ttouchEvents,\n\teach\n}","export default class AbstractUIComponent {\n\n\t// Init callback\n onInit() {\n\n let onInit = this.opts.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(this);\n }\n }\n\n // Update callback\n onUpdate() {\n\n let onUpdate = this.opts.onUpdate;\n\n if (typeof onUpdate === 'function') {\n\n onUpdate.call(this);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.opts.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this);\n }\n }\n\n // Show callback\n onShow() {\n\n let onShow = this.opts.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(this);\n }\n }\n\n // Close callback\n onClose() {\n\n let onClose = this.opts.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(this);\n }\n }\n\n // Reset callback\n onReset() {\n\n let onReset = this.opts.onReset;\n\n if (typeof onReset === 'function') {\n\n onReset.call(this);\n }\n }\n\n // Debug log\n log(...args) {\n\n \tif (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n \t \tconsole.log(...args);\n }\n \t}\n }\n}","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolPopover';\nconst DATA_KEY = 'plugin_coolPopover';\n\nclass Popover extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.popover) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.popover, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$container = this.$el.data('container') ? $(this.$el.data('container')) : $(this.opts.container);\n this.containerAutoDetect = this.$el.data('containerAutoDetect') ? this.$el.data('containerAutoDetect') : this.opts.containerAutoDetect;\n this.id = 'popover-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.trigger = this.$el.data('trigger') ? this.$el.data('trigger') : this.opts.trigger;\n this.placement = this.$el.data('placement') ? this.$el.data('placement') : this.opts.placement;\n this.placementChanged = false;\n this.title = this.$el.data('title') ? this.$el.data('title') : this.opts.title;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n\n if (this.containerAutoDetect) {\n this.$container = this.$el.offsetParent();\n }\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n if (this.trigger === 'click') {\n\n this.$el.on('click'+'.'+NAME, () => {\n\n if (this.$popover) {\n this.close();\n } else {\n this.show();\n }\n });\n\n } else if (this.trigger === 'hover') {\n\n this.$el.on('mouseenter'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('mouseleave'+'.'+NAME, () => {\n\n this.close();\n });\n\n } else if (this.trigger === 'focus') {\n\n this.$el.on('focusin'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('focusout'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(window).on('resize', debounce(() => {\n\n if (this.$popover) {\n this.setPosition();\n this.onUpdate();\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Build popover\n buildPopover() {\n\n let content;\n\n \tif (typeof this.content === 'function') {\n \t\tcontent = this.content();\n \t} else {\n content = this.content;\n }\n\n \tthis.$popover = $(`\n \t\t<div class=\"popover\" role=\"tooltip\" id=\"${this.id}\">\n\n\t\t\t <div class=\"arrow\"></div>\n\n\t\t\t <h3 class=\"popover-header\">${this.title}</h3>\n\n\t\t\t <div class=\"popover-body\">${content}</div>\n\n\t\t\t</div>\n \t`);\n\n this.$container.append(this.$popover);\n this.$arrow = this.$popover.find('.arrow') ? this.$popover.find('.arrow') : false;\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$popover);\n this.log(this.$arrow);\n this.log('Id: '+this.id);\n this.log('Trigger: '+this.trigger);\n this.log('Placement: '+this.placement);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Title: '+this.title);\n this.log('Content: '+this.content);\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof placement === 'undefined' || placement === null) {\n placement = this.placement;\n }\n\n this.$popover.addClass('popover-'+placement);\n\n let containerInnerWidth = this.$container.innerWidth();\n let containerInnerHeight = this.$container.innerHeight();\n let popoverWidth = this.$popover.outerWidth(true);\n let popoverHeight = this.$popover.outerHeight(true);\n let popoverTriggerWidth = this.$el.outerWidth();\n let popoverTriggerHeight = this.$el.outerHeight();\n let popoverTriggerPosX = this.$el.position().left;\n let popoverTriggerPosY = this.$el.position().top;\n let arrowWidth = this.$arrow.outerWidth(true);\n let arrowHeight = this.$arrow.outerHeight(true);\n let arrowPos;\n let popoverPosX;\n let popoverPosY;\n\n if (placement === 'top') {\n\n popoverPosX = Math.round(popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2);\n popoverPosY = Math.round(popoverTriggerPosY - popoverHeight);\n arrowPos = Math.round(popoverWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n popoverPosX = Math.round(popoverTriggerPosX + popoverTriggerWidth);\n popoverPosY = Math.round(popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2);\n arrowPos = Math.round(popoverHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n popoverPosX = Math.round(popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2);\n popoverPosY = Math.round(popoverTriggerPosY + popoverTriggerHeight);\n arrowPos = Math.round(popoverWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n popoverPosX = Math.round(popoverTriggerPosX - popoverWidth);\n popoverPosY = Math.round(popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2);\n arrowPos = Math.round(popoverHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$popover.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+popoverPosX+'px, '+popoverPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n // Correct placement if popover goes outside of container\n let popoverOverflowCount = 0;\n let popoverPosition = {\n left: this.$popover.position().left,\n top: this.$popover.position().top,\n right: containerInnerWidth - (this.$popover.position().left + popoverWidth),\n bottom: containerInnerHeight - (this.$popover.position().top + popoverHeight),\n };\n let popoverOverflow = {\n left: false,\n top: false,\n right: false,\n bottom: false\n };\n\n if (popoverPosition.right < 0) {\n\n popoverOverflow.right = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from right');\n }\n\n if (popoverPosition.left < 0) {\n\n popoverOverflow.left = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from left');\n }\n\n if (popoverPosition.bottom < 0) {\n\n popoverOverflow.bottom = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from bottom');\n }\n\n if (popoverPosition.top < 0) {\n\n popoverOverflow.top = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from top');\n }\n\n if (popoverOverflowCount > 0) {\n\n if (!this.placementChanged && popoverOverflow.left && popoverPosition.right > popoverWidth) {\n\n this.log('Changing popover placement to right');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('right');\n\n } else if (!this.placementChanged && popoverOverflow.top && popoverPosition.top > popoverHeight) {\n\n this.log('Changing popover placement to bottom');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n\n } else if (!this.placementChanged && popoverOverflow.right && popoverPosition.left > popoverWidth) {\n\n this.log('Changing popover placement to left');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('left');\n\n } else if (!this.placementChanged && popoverOverflow.bottom && popoverPosition.top > popoverHeight) {\n\n this.log('Changing popover placement to top');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else if (!this.placementChanged && (placement !== 'top' || placement !== 'bottom') && (popoverOverflow.left || popoverOverflow.right)) {\n\n if (popoverPosition.top > popoverPosition.bottom) {\n\n this.log('Changing popover placement to top');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else {\n\n this.log('Changing popover placement to bottom');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n }\n\n } else {\n\n this.fixPopoverPosition = true;\n }\n\n if (this.fixPopoverPosition) {\n\n this.log('Adjusting popover size or position in order to popover fit in the container');\n\n if (popoverOverflow.left) {\n\n this.log('Popover overflowing from left');\n\n let overflowAmount = Math.abs(popoverPosition.left);\n let excludePlacements = ['top', 'bottom'];\n\n if ((popoverTriggerPosX >= popoverPosX + overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Popover adjusting width');\n\n popoverWidth -= overflowAmount;\n popoverPosX += overflowAmount;\n\n } else {\n\n this.log('Popover adjusting position x');\n\n popoverPosX += overflowAmount;\n arrowPos -= overflowAmount;\n }\n }\n\n if (popoverOverflow.top) {\n\n this.log('Popover overflowing from top');\n\n let overflowAmount = Math.abs(popoverPosition.top);\n\n this.log('Popover adjusting position y');\n\n popoverPosY += overflowAmount;\n arrowPos -= overflowAmount;\n }\n\n if (popoverOverflow.right) {\n\n this.log('Popover overflowing from right');\n\n let overflowAmount = Math.abs(popoverPosition.right);\n let excludePlacements = ['top', 'bottom'];\n\n if ((popoverTriggerPosX <= popoverPosX - overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Popover adjusting width');\n\n popoverWidth -= overflowAmount;\n\n } else {\n\n this.log('Popover adjusting position x');\n\n popoverPosX -= overflowAmount;\n arrowPos += overflowAmount;\n }\n }\n\n if (popoverOverflow.bottom) {\n\n this.log('Popover overflowing from bottom');\n\n let overflowAmount = Math.abs(popoverPosition.bottom);\n\n this.log('Popover adjusting position y');\n\n popoverPosY -= overflowAmount;\n arrowPos += overflowAmount;\n }\n\n if (placement === 'top') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$popover.css({\n width: popoverWidth,\n transform: 'translate3d('+popoverPosX+'px, '+popoverPosY+'px, 0px)'\n });\n\n this.fixPopoverPosition = false;\n\n this.log('Popover placement changed: '+this.placementChanged);\n this.log('Popover container inner width: '+containerInnerWidth+'px');\n this.log('Popover container inner height: '+containerInnerHeight+'px');\n this.log('Popover trigger width: '+popoverTriggerWidth+'px');\n this.log('Popover trigger height: '+popoverTriggerHeight+'px');\n this.log('popover trigger position x: '+popoverTriggerPosX+'px');\n this.log('Popover trigger position Y: '+popoverTriggerPosY+'px');\n this.log('Popover width: '+popoverWidth+'px');\n this.log('Popover height: '+popoverHeight+'px');\n this.log('Popover position x: '+popoverPosX+'px');\n this.log('Popover position y: '+popoverPosY+'px');\n this.log('Popover position left: '+popoverPosition.left+'px');\n this.log('Popover position top: '+popoverPosition.top+'px');\n this.log('Popover position right: '+popoverPosition.right+'px');\n this.log('Popover position bottom: '+popoverPosition.bottom+'px');\n }\n\n } else {\n\n this.log('Popover placement changed: '+this.placementChanged);\n this.log('Popover container inner width: '+containerInnerWidth+'px');\n this.log('Popover container inner height: '+containerInnerHeight+'px');\n this.log('Popover trigger width: '+popoverTriggerWidth+'px');\n this.log('Popover trigger height: '+popoverTriggerHeight+'px');\n this.log('popover trigger position x: '+popoverTriggerPosX+'px');\n this.log('Popover trigger position Y: '+popoverTriggerPosY+'px');\n this.log('Popover width: '+popoverWidth+'px');\n this.log('Popover height: '+popoverHeight+'px');\n this.log('Popover position x: '+popoverPosX+'px');\n this.log('Popover position y: '+popoverPosY+'px');\n this.log('Popover position left: '+popoverPosition.left+'px');\n this.log('Popover position top: '+popoverPosition.top+'px');\n this.log('Popover position right: '+popoverPosition.right+'px');\n this.log('Popover position bottom: '+popoverPosition.bottom+'px');\n }\n }\n\n // Show\n show() {\n\n if (this.$popover) {\n return;\n }\n\n this.buildPopover();\n this.setPosition();\n\n if (this.animation) {\n\n this.$popover.addClass(this.animationSpeed);\n this.$popover.animateCss(this.animationIn);\n this.$popover.addClass('show');\n this.$popover.attr('id', this.id);\n this.$el.attr('data-popover', this.id);\n\n } else {\n\n this.$popover.addClass('show');\n this.$popover.attr('id', this.id);\n this.$el.attr('data-popover', this.id);\n }\n\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$popover) {\n return;\n }\n\n if (this.animation && !this.$popover.hasClass('animated')) {\n\n this.$popover.animateCss(this.animationOut, () => {\n\n this.$popover.remove();\n this.$el.removeAttr('data-popover');\n this.$popover = null;\n this.placementChanged = false;\n\n this.onClose();\n });\n\n } else {\n\n this.$popover.remove();\n this.$el.removeAttr('data-popover');\n this.$popover = null;\n this.placementChanged = false;\n\n this.onClose();\n }\n }\n\n static _jQueryInterface(config) {\n\n \treturn this.each(function() {\n\n \t\tlet data = $(this).data(DATA_KEY);\n \t\tconst _config = typeof config === 'object' && config;\n\n \t\tif (!data) {\n \t\t\tdata = new Popover(this, _config);\n \t\t\t$(this).data(DATA_KEY, data);\n \t\t}\n\n \t\tif (typeof config === 'string') {\n\n \t\t\tif (typeof data[config] === 'undefined') {\n\t\t \tthrow new TypeError(`No method named \"${config}\"`)\n\t\t }\n\n\t\t data[config]()\n \t\t}\n\t });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Popover._jQueryInterface;\n $.fn[NAME].Constructor = Popover;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Popover._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n container: '.content-inner',\n containerAutoDetect: false,\n trigger: 'focus',\n placement: 'bottom',\n animation: true,\n animationIn: 'fadeIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n title: '',\n content: '',\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Popover;","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolSelect';\nconst DATA_KEY = 'plugin_coolSelect';\n\nclass Select extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.select) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.select, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache().then(() => {\n\n this.buildScroll();\n this.bindEvents();\n\n if (this.data[this.name].length > 0) {\n this.setData();\n }\n\n this.onInit();\n });\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.bindEvents();\n this.onUpdate();\n }\n\n // Reset plugin data\n reset() {\n\n this.data = {};\n this.data[this.name] = [];\n this.items = [];\n this.$select.find('.select-item').remove();\n this.$selectItems = [];\n this.$selectIconContainer.html(this.selectIconDefault);\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.searchData = [];\n this.$searchInput.val('');\n this.searchString = '';\n this.search.call(this);\n }\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n return new Promise((primaryResolve, primaryReject) => {\n\n let self = this;\n\n this.$el = $(this.el);\n this.$container = this.$el.parent();\n this.$selectHeader = this.$el.find('.select-header');\n this.$selectTitle = this.$el.find('.select-title');\n this.$selectIconContainer = this.$selectHeader.find('.select-icon');\n this.selectIconDefault = this.$selectHeader.find('.select-icon') ? this.$selectHeader.find('.select-icon').html() : '<i class=\"'+(this.opts.faPro ? 'fal' : 'fas')+'fa-angle-down icon\"></i>';\n this.name = this.$el.data('name') ? this.$el.data('name') : this.opts.name;\n this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;\n this.items = this.$el.data('items') ? this.$el.data('items') : this.opts.items;\n this.data = {};\n this.data[this.name] = [];\n this.searchData = [];\n this.searchApi = this.$el.data('searchApi') ? this.$el.data('searchApi') : this.opts.searchApi;\n this.searchRequest = null;\n this.type = this.$el.data('type') ? this.$el.data('type') : this.opts.type;\n this.contentOpen = false;\n this.searchPlaceholder = this.$el.data('search-placeholder') ? this.$el.data('search-placeholder') : this.opts.searchPlaceholder;\n this.btnCloseText = this.$el.data('btn-close-text') ? this.$el.data('btn-close-text') : this.opts.btnCloseText;\n this.labelTemplate = this.opts.labelTemplate;\n this.confirmCheck = this.opts.confirmCheck;\n this.confirmUncheck = this.opts.confirmUncheck;\n this.preventUncheck = this.opts.preventUncheck;\n this.dynamicTitle = this.$el.data('dynamicTitle') ? this.$el.data('dynamicTitle') : this.opts.dynamicTitle;\n this.dynamicTitleDefault = this.$el.data('dynamicTitleDefault') ? this.$el.data('dynamicTitleDefault') : this.opts.dynamicTitleDefault;\n this.dynamicTitleEmptyDefault = this.$el.data('dynamicTitleEmptyDefault') ? this.$el.data('dynamicTitleEmptyDefault') : this.opts.dynamicTitleEmptyDefault;\n this.allowNoneOnRadioSelect = this.$el.data('allowNoneOnRadioSelect') ? this.$el.data('allowNoneOnRadioSelect') : this.opts.allowNoneOnRadioSelect;\n this.showValidStateIcon = this.$el.data('showValidStateIcon') ? this.$el.data('showValidStateIcon') : this.opts.showValidStateIcon;\n this.itemsToExclude = this.$el.data('itemsToExclude') ? this.$el.data('itemsToExclude').replace(/\\s/g, '').split(',') : this.opts.itemsToExclude;\n this.primaryKeyword = this.$el.data('primaryKeyword') ? this.$el.data('primaryKeyword') : this.opts.primaryKeyword;\n this.preventClose = false;\n\n if (this.itemsToExclude.length > 0) {\n this.itemsToExclude = this.itemsToExclude.map(String);\n }\n\n if (this.opts.setData) {\n this.data = this.opts.setData;\n }\n\n if (this.$el.data('setData') && this.$el.data('setData') != '') {\n this.data = this.$el.data('setData');\n }\n\n // Convert data to be array so filters doesn't fail\n if (!Array.isArray(this.data[this.name]) && this.data[this.name] !== '' && this.data[this.name].length > 0) {\n\n const arr = this.data[this.name].toString().trim().split(',');\n\n this.data[this.name] = arr;\n }\n\n // Convert all values to string format to make filtering more simple\n if (this.data[this.name].length > 0) {\n this.data[this.name] = this.data[this.name].map(String);\n }\n\n if (this.data[this.name].length > 0 && this.itemsToExclude.length > 0) {\n\n this.data[this.name] = this.data[this.name].filter(function(item) {\n\n if (item[self.primaryKeyword]) {\n\n return self.itemsToExclude.indexOf(item[self.primaryKeyword].toString()) === -1;\n\n } else {\n\n return self.itemsToExclude.indexOf(item.toString()) === -1;\n }\n });\n }\n\n if (this.items.length > 0 && this.itemsToExclude.length > 0) {\n\n this.items = this.items.filter(function(item) {\n\n if (item[self.primaryKeyword]) {\n\n return self.itemsToExclude.indexOf(item[self.primaryKeyword].toString()) === -1;\n\n } else {\n\n return self.itemsToExclude.indexOf(item.toString()) === -1;\n }\n });\n }\n\n if (this.$el.find('.select-search').length) {\n this.showSearch = true;\n } else {\n this.showSearch = this.$el.data('showSearch') ? this.$el.data('showSearch') : this.opts.showSearch;\n }\n\n if (this.$el.find('.select-footer').length) {\n this.showFooter = true;\n } else {\n this.showFooter = this.$el.data('showFooter') ? this.$el.data('showFooter') : this.opts.showFooter;\n }\n\n this.$select = this.$el.find('.select-content');\n\n new Promise((secondaryResolve, secondaryReject) => {\n\n if (!this.$select.length) {\n\n let items = this._renderItemList(this.items);\n\n this.$select = $(`\n <div class=\"select-content\">\n\n ${this._renderSearch()}\n\n <div class=\"select-scrollable-content\"></div>\n\n ${this._renderFooter()}\n\n </div>\n `);\n\n this.$el.append(this.$select);\n this.$select.find('.select-scrollable-content').append(items);\n\n secondaryResolve();\n\n } else {\n\n const selectItems = this.$select.find('.select-item');\n\n if (selectItems.length > 0 && this.itemsToExclude.length > 0) {\n\n $.each(selectItems, (i, el) => {\n\n const val = $(el).find(':input').val();\n\n if (self.itemsToExclude.indexOf(val) > -1) {\n $(el).remove();\n }\n });\n }\n\n secondaryResolve();\n }\n\n }).then(() => {\n\n this.$scrollableContent = this.$select.find('.select-scrollable-content') ? this.$select.find('.select-scrollable-content') : false;\n this.$selectItems = this.$select.find('.select-item');\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.$searchContainer = this.$select.find('.select-search');\n this.$searchInput = this.$select.find('[name=\"select-search\"]');\n this.$searchIconContainer = this.$select.find('.select-search-icon');\n this.$clearSearchButton = this.$select.find('[data-clear-search]');\n\n // Prevent tabfocus from breaking select functionality\n this.$searchInput[0].tabIndex = -1;\n }\n\n if (this.showFooter) {\n\n this.$footerContainer = this.$select.find('.select-footer');\n this.$closeButton = this.$select.find('[data-select-close]');\n\n // Prevent tabfocus from breaking select functionality\n this.$closeButton[0].tabIndex = -1;\n }\n\n this.buildSearchData();\n\n this.log(this.$el);\n this.log(this.$select);\n this.log(this.$scrollableContent);\n this.log('Name: '+this.name);\n this.log('Show search: '+this.showSearch);\n this.log('Show footer: '+this.showFooter);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n this.log(this.items);\n this.log(this.searchData);\n\n primaryResolve();\n })\n });\n }\n\n // Build scroll\n buildScroll() {\n\n if (this.$scrollableContent.length > 0) {\n\n let scrollContentHeight = this.scrollContentHeight;\n\n if (this.showSearch) {\n scrollContentHeight = scrollContentHeight - (this.$searchContainer.outerHeight(true) || 0);\n }\n\n if (this.showFooter) {\n scrollContentHeight = scrollContentHeight - (this.$footerContainer.outerHeight(true) || 0);\n }\n\n this.$scrollableContent.css({\n 'max-height': (scrollContentHeight - parseInt(this.$scrollableContent.css('marginTop'), 10) - parseInt(this.$scrollableContent.css('marginBottom'), 10)) +'px'\n });\n\n if (touchEvents()) {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n } else {\n\n this.$scrollableContent.addClass('ps-dark');\n this.scroll = new PerfectScrollbar(this.$scrollableContent[0], {\n wheelSpeed: 1,\n wheelPropagation: false,\n minScrollbarLength: 20,\n scrollYMarginOffset : -1,\n suppressScrollY: true,\n suppressScrollX: true,\n });\n\n // Prevent tabfocus from breaking select functionality\n this.$scrollableContent.find('[tabindex=\"0\"]').attr('tabindex', -1);\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n\n this.$scrollableContent.addClass('ps-show-rail-y');\n this.scroll.settings.suppressScrollY = false;\n }\n }\n }\n }\n\n // Build search data\n buildSearchData() {\n\n return new Promise((resolve, reject) => {\n\n this.searchData = [];\n\n let selectLabels = this.$select.find('[data-label]');\n\n $.each(selectLabels, (i, el) => {\n\n this.searchData.push({\n id: i,\n val: $(el).text().trim()\n });\n });\n\n resolve();\n });\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n let self = this;\n\n this.$selectHeader.on('click'+'.'+NAME, () => {\n\n if (this.contentOpen) {\n this.close();\n } else if (this.$selectItems.length > 0 || this.searchApi) {\n this.show();\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"checkbox\"]', function() {\n\n let el = this;\n let val = $(this).val();\n let closeTimeout = 600; // ms\n\n self.preventClose = true;\n\n if (typeof self.confirmCheck === 'function' && el.checked) {\n\n el.checked = false;\n\n self.confirmCheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n el.checked = true;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (el.checked) {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (typeof self.confirmUncheck === 'function' && !el.checked) {\n\n el.checked = true;\n\n self.confirmUncheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n el.checked = false;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (!el.checked && !self.preventUncheck) {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (!el.checked && self.preventUncheck) {\n\n el.checked = true;\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n let val = $(this).val();\n\n if (this.checked) {\n\n self.data[self.name] = [val];\n self.$select.find('input[type=\"radio\"]').not($(this)).prop('checked', false);\n self.$select.find('input[type=\"radio\"]').not($(this)).removeClass('checked');\n\n } else {\n\n self.data[self.name] = [];\n }\n });\n\n this.$el.on('click'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n if ($(this).hasClass('checked') && self.allowNoneOnRadioSelect) {\n\n self.data[self.name] = [];\n $(this).prop('checked', false);\n $(this).removeClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html(self.dynamicTitleDefault);\n }\n\n } else {\n\n $(this).addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($(this).parent().find('[data-label]').text());\n }\n }\n\n self.onSelect(this);\n });\n\n if (this.scroll) {\n\n this.$scrollableContent.find('.ps__thumb-y').mousedown(function() {\n self.$scrollableContent.addClass('ps-mousedown-scroll');\n });\n\n $(document).mouseup(function() {\n\n if (self.$scrollableContent.hasClass('ps-mousedown-scroll')) {\n self.$scrollableContent.removeClass('ps-mousedown-scroll');\n }\n });\n }\n\n if (this.showSearch) {\n\n this.$searchInput.on('keydown'+'.'+NAME, debounce(function () {\n\n self.searchString = $(this).val().trim();\n self.search.call(self);\n\n }, 250));\n\n this.$searchInput.on('focusin'+'.'+NAME, function () {\n\n self.$searchContainer.addClass('focused');\n });\n\n this.$searchInput.on('focusout'+'.'+NAME, function () {\n\n self.$searchContainer.removeClass('focused');\n });\n\n this.$searchContainer.on('click'+'.'+NAME, '[data-clear-search]', function () {\n\n if (self.searchString.length) {\n\n self.$searchInput.val('');\n self.searchString = '';\n self.search.call(self);\n\n } else {\n\n return;\n }\n });\n }\n\n if (this.showFooter) {\n\n this.$closeButton.on('click'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(document).on('touchstart click', function(e) {\n\n if (!self.$el.is(e.target) && !self.$el.has(e.target).length && self.contentOpen && !self.preventClose) {\n\n self.close.call(self);\n }\n });\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Get data\n getData(data) {\n\n if (data) {\n return this.data[data];\n } else {\n return this.data;\n }\n }\n\n // Set data\n setData() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.searchApi.length) {\n\n let searchUrl = this.searchApi;\n let itemCount = this.data[this.name].length;\n let currentCount = 0;\n\n this.data[this.name].forEach(function(value) {\n\n searchUrl += encodeURIComponent('#'+value);\n currentCount++;\n\n if (currentCount !== itemCount) {\n searchUrl += '+';\n }\n });\n\n $.ajax({\n method: 'GET',\n url: searchUrl\n }).done(function(data) {\n\n let items = data.map(item => {\n\n item.id = item[self.primaryKeyword].toString();\n\n return item;\n });\n\n let itemIds = items.map(item => {\n return item.id.toString()\n });\n\n // Remove value from data if it doesn't exist anymore\n self.data[self.name] = self.data[self.name].filter(function(value) {\n return itemIds.indexOf(value.toString()) > -1;\n });\n\n if (self.data[self.name].length == 0) {\n self.$selectIconContainer.html(self.selectIconDefault);\n }\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) > -1 && self.itemsToExclude.indexOf(item.id) === -1 && item.id != 0;\n });\n\n let result = self._renderItemList(items);\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let $inputs = self.$scrollableContent.find(':input');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n\n if (self.$scrollableContent.find(':input[type=\"checkbox\"]').length) {\n self.type = 'checkbox';\n } else if (self.$scrollableContent.find(':input[type=\"radio\"]').length) {\n self.type = 'radio';\n }\n\n if (self.type == 'checkbox') {\n\n self.data[self.name].forEach(function(value) {\n\n let $input = $inputs.filter(function() {\n return this.value == value;\n });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (self.type == 'radio') {\n\n let $input = $inputs.filter(function() {\n return this.value == self.data[self.name][0];\n });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n self.onSelect($input[0]);\n }\n });\n });\n\n } else {\n\n // Remove value from data if it doesn't exist anymore\n let $inputs = this.$scrollableContent.find(':input');\n let inputValues = $inputs.length > 0 ? $inputs.map(function() {\n return this.value.toString();\n }).get() : [];\n\n this.data[this.name] = this.data[this.name].filter(function(value) {\n return inputValues.indexOf(value.toString()) > -1;\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.$scrollableContent.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$scrollableContent.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n this.data[this.name].forEach(function(value) {\n\n let $input = $inputs.filter(function() {\n return this.value == value\n });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let $input = $inputs.filter(function() {\n return this.value == self.data[self.name][0];\n });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.onSelect($input[0]);\n }\n }\n }\n\n // Search\n search() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.searchString.length) {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n\n if (this.searchRequest !== null) {\n this.searchRequest.abort();\n }\n\n this.searchRequest = $.ajax({\n method: 'GET',\n url: this.searchApi + this.searchString\n }).done(function(data) {\n\n self.searchRequest = null;\n\n let items = data.map(item => {\n\n item.id = item[self.primaryKeyword].toString();\n\n return item;\n });\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) === -1 && self.itemsToExclude.indexOf(item.id) === -1 && item.id != 0;\n });\n\n let result = self._renderItemList(items);\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let faNameSpace = self.opts.faPro ? 'fal' : 'fas';\n\n self.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n self.$searchIconContainer.attr('data-clear-search', 'true');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n });\n });\n\n } else {\n\n let results = this.searchData.filter(function(item) {\n return item.val.toLocaleLowerCase().indexOf(self.searchString.toLocaleLowerCase()) > -1;\n });\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n\n results.forEach(function(item) {\n $(self.$selectItems[item.id]).addClass('visible');\n });\n\n this.$selectItems.not('.visible').addClass('d-none');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', 'true');\n }\n\n } else {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n\n } else {\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n }\n }\n\n if (this.scroll) {\n this.scroll.update();\n }\n\n this.onUpdate();\n }\n\n // Show\n show() {\n\n if (this.$el.hasClass('show')) {\n return;\n }\n\n let $otherSelects = $('.select.show');\n let zindex = 1;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if ($otherSelects.length) {\n zindex = parseInt($otherSelects.first().css('z-index'), 10) + 2;\n }\n\n this.$el.css({\n 'max-height': (this.scrollContentHeight + this.$selectHeader.outerHeight(true))+'px'\n });\n\n this.$el.addClass('show');\n\n if (!$otherSelects.length) {\n zindex = parseInt(this.$el.css('z-index'), 10) + 1;\n }\n\n this.$el.css({\n 'z-index': zindex\n });\n\n if (this.scroll && this.$scrollableContent.length) {\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n this.$scrollableContent[0].scrollTop = 1;\n this.$scrollableContent[0].scrollTop = 0;\n }\n }\n\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-angle-up icon\"></i>`);\n\n setTimeout(() => {\n this.$el[0].scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'nearest'});\n }, 300);\n\n this.contentOpen = true;\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.preventClose) {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n this.$el.css('max-height', '');\n this.$el.removeClass('show');\n\n setTimeout(() => {\n self.$el.removeAttr('style');\n }, 300);\n\n if (this.data[this.name].length > 0 && this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n this.contentOpen = false;\n this.onClose();\n }\n }\n\n // On select\n onSelect(el) {\n\n let self = this;\n let onSelect = this.opts.onSelect;\n let data = $(el).parents('.select-item').data();\n\n if (this.searchApi.length && !$.isEmptyObject(data)) {\n\n if ($(el).length && el.checked) {\n\n this.items.push(data);\n\n } else {\n\n this.items = $.grep(this.items, function(item) { return item[self.primaryKeyword] != data.id });\n }\n }\n\n if (typeof onSelect === 'function') {\n\n onSelect.call(el, data, this);\n }\n }\n\n // Add more items after plugin is already initialized\n appendItems(items, selectItems) {\n\n return new Promise((resolve, reject) => {\n\n let self = this;\n\n if (!$.isArray(items)) {\n\n let itemsArr = [];\n\n itemsArr.push(items);\n items = itemsArr;\n }\n\n items = items.filter(function(item) {\n return self.itemsToExclude.indexOf(item[self.primaryKeyword].toString()) === -1;\n });\n\n items.forEach(item => {\n\n this.items.push(item);\n });\n\n let domItems = this._renderItemList(items);\n\n this.$scrollableContent.prepend(domItems);\n this.$selectItems = this.$select.find('.select-item');\n\n this.buildSearchData().then(() => {\n\n if (this.$selectItems.length > 0) {\n\n if (this.$select.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$select.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n items.forEach(item => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = $input.val().toString();\n\n $input.prop('checked', true);\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name].push(val) : false;\n this.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let item = items[0];\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = $input.val().toString();\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name] = [val] : false;\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.$select.find('input[type=\"radio\"]').not($input).prop('checked', false);\n this.$select.find('input[type=\"radio\"]').not($input).removeClass('checked');\n this.onSelect($input[0]);\n }\n }\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectHeader.attr('style')) {\n this.$selectHeader.removeAttr('style');\n }\n\n if (this.$selectIconContainer.hasClass('d-none')) {\n this.$selectIconContainer.removeClass('d-none');\n }\n\n resolve();\n });\n });\n }\n\n // Deselect items\n deselectItems(array) {\n\n return new Promise((resolve, reject) => {\n\n array.forEach(id => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == id });\n\n if ($input[0].checked) {\n\n $input.trigger('click');\n }\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n });\n }\n\n // Get item\n getItem(key, val) {\n\n let result = $.grep(this.items, function(item) { return item[key] == val })[0];\n\n return result ? result : null;\n }\n\n // Get selected items\n getSelectedItems(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(String);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(item.id.toString()) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result;\n }\n\n // Get selected item\n getSelectedItem(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(String);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(item.id.toString()) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result[0] == null ? null : result[0];\n }\n\n _renderItemList(items) {\n\n let result = [];\n\n for (let i = 0; i < items.length; ++i) {\n\n let item = items[i];\n let label = '';\n\n if (typeof this.labelTemplate === 'function') {\n\n label = this.labelTemplate(item);\n\n } else {\n\n if (item.name) {\n label = item.name;\n } else if (item.label) {\n label = item.label;\n } else if (item.value) {\n label = item.value;\n }\n }\n\n result.push($(`\n\n <div class=\"select-item\">\n\n <div class=\"select-item-${this.type}\">\n\n <div class=\"styled-${this.type}\">\n\n <input type=\"${this.type}\" id=\"select-${this.name}-${items[i].id}\" value=\"${items[i].id}\" tabindex=\"-1\">\n\n <label for=\"select-${this.name}-${items[i].id}\">\n\n <span class=\"radio-inner\">\n <svg viewBox=\"0 0 18 18\">\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n </svg>\n </span>\n\n <span class=\"${this.type}-label\"${typeof this.labelTemplate !== 'function' ? ' data-label' : ''}>\n ${label}\n </span>\n\n </label>\n\n </div>\n\n </div>\n\n </div>\n\n `).data(item));\n }\n\n return result;\n }\n\n _renderSearch() {\n\n if (!this.showSearch) {\n\n return '';\n\n } else {\n\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n return `\n\n <div class=\"select-search\">\n\n <div class=\"select-search-input\">\n\n <input type=\"text\" name=\"select-search\" value=\"\" placeholder=\"${this.searchPlaceholder}\" tabindex=\"-1\">\n\n </div>\n\n <div class=\"select-search-icon\">\n\n <i class=\"${faNameSpace} fa-search icon\"></i>\n\n </div>\n\n </div>\n\n `;\n }\n }\n\n _renderFooter() {\n\n if (!this.showFooter) {\n\n return '';\n\n } else {\n\n return `\n\n <div class=\"select-footer\">\n\n <button class=\"btn btn-block btn-secondary\" type=\"button\" tabindex=\"-1\" data-select-close >\n ${this.btnCloseText}\n </button>\n\n </div>\n\n `;\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Select(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Select._jQueryInterface;\n $.fn[NAME].Constructor = Select;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Select._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n name: '',\n type: 'checkbox',\n labelTemplate: null,\n confirmCheck: null,\n confirmUncheck: null,\n setData: null,\n scrollContentHeight: 100,\n faPro: false,\n items: [],\n showSearch: false,\n showFooter: false,\n searchApi: false,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n onReset: null,\n onSearch: null,\n onSelect: null,\n buildScroll: null,\n searchPlaceholder: null,\n btnCloseText: null,\n debug: false,\n dynamicTitle: false,\n dynamicTitleDefault: '',\n dynamicTitleEmptyDefault: '',\n allowNoneOnRadioSelect: true,\n preventUncheck: false,\n showValidStateIcon: true,\n itemsToExclude: [],\n primaryKeyword: 'id'\n }\n}\n\nexport default Select;","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolDropdown';\nconst DATA_KEY = 'plugin_coolDropdown';\n\nclass Dropdown extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.dropdown) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.dropdown, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n $.when(this.buildCache()).then(() => {\n this.buildScroll();\n this.bindEvents();\n this.onInit();\n });\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$el.addClass('dropdown-trigger');\n this.$container = this.$el.parent('.dropdown');\n this.id = 'dropdown-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.offset = this.$el.data('offset') ? this.$el.data('offset') : this.opts.offset;\n this.minWidth = this.$el.data('minWidth') ? this.$el.data('minWidth') : this.opts.minWidth;\n this.scroll = this.$el.data('scroll') ? this.$el.data('scroll') : this.opts.scroll;\n this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;\n this.positionObserver = this.$el.attr('data-position-observer') ? JSON.parse(this.$el.attr('data-position-observer')) : this.opts.positionObserver;\n this.closeOnItemClick = this.$el.data('closeOnItemClick') ? this.$el.data('closeOnItemClick') : this.opts.closeOnItemClick;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n this.contentOpen = false;\n\n if (this.$container.hasClass('dropup')) {\n this.placement = 'top';\n } else if (this.$container.hasClass('dropright')) {\n this.placement = 'right';\n } else if (this.$container.hasClass('dropbottom')) {\n this.placement = 'bottom';\n } else {\n this.placement = 'left';\n }\n\n if (typeof this.content === 'function') {\n\n let menuRight = this.opts.align === 'end' ? ' dropdown-menu-right' : '';\n\n this.$dropdown = $(`\n <div class=\"dropdown-menu${menuRight}\" id=\"${this.id}\">\n ${this.content()}\n </div>\n `);\n\n $.when(this.$el.after(this.$dropdown)).then(() => {\n\n this.$scrollableContent = this.$dropdown.find('.dropdown-scrollable-content') ? this.$dropdown.find('.dropdown-scrollable-content') : false;\n this.$dropdown.hasClass('dropdown-menu-right') ? this.align = 'end' : this.align = 'start';\n this.$dropdownItem = this.$dropdown.find('.dropdown-item');\n\n if (this.minWidth) {\n this.$dropdown.css('min-width', this.minWidth+'px');\n }\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$dropdown);\n this.log(this.$scrollableContent);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Offset: '+this.offset);\n this.log('Min width: '+this.minWidth);\n this.log('Content: '+this.content);\n this.log('Scroll: '+this.scroll);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n\n return true;\n });\n\n } else {\n\n this.$dropdown = this.$el.next('.dropdown-menu') ? this.$el.next('.dropdown-menu') : false;\n this.$dropdown.hasClass('dropdown-menu-right') ? this.align = 'end' : this.align = 'start';\n this.$scrollableContent = this.$dropdown.find('.dropdown-scrollable-content') ? this.$dropdown.find('.dropdown-scrollable-content') : false;\n this.$dropdownItem = this.$dropdown.find('.dropdown-item');\n\n if (this.minWidth) {\n this.$dropdown.css('min-width', this.minWidth+'px');\n }\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$dropdown);\n this.log(this.$scrollableContent);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Offset: '+this.offset);\n this.log('Min width: '+this.minWidth);\n this.log('Content: '+this.opts.content);\n this.log('Scroll: '+this.scroll);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n\n return true;\n }\n }\n\n // Build scroll\n buildScroll() {\n\n if (this.opts.scroll && this.$scrollableContent.length) {\n\n this.$scrollableContent.css({\n 'max-height': this.scrollContentHeight+'px'\n });\n\n if (touchEvents()) {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n } else {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n this.scroll = new PerfectScrollbar(this.$scrollableContent[0], {\n wheelSpeed: 1,\n wheelPropagation: false,\n minScrollbarLength: 20\n });\n\n this.$scrollableContent.addClass('ps-show-rail-y');\n }\n }\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n let self = this;\n\n this.$el.on('click'+'.'+NAME, () => {\n\n if (this.contentOpen) {\n this.close();\n } else {\n this.show();\n }\n });\n\n this.$dropdownItem.on('click'+'.'+NAME, function() {\n\n if (self.closeOnItemClick) {\n self.close();\n }\n\n self.onItemClick(this);\n });\n\n $(document).on('touchstart click', (e) => {\n\n if (!this.$el.is(e.target) && !this.$dropdown.is(e.target) && this.$dropdown.has(e.target).length === 0 && this.contentOpen) {\n this.close();\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n this.setPosition();\n this.onUpdate();\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof str === 'undefined' || str === null) {\n placement = this.placement;\n }\n\n let dropdownWidth = this.$dropdown.outerWidth(true);\n let dropdownHeight = this.$dropdown.outerHeight(true);\n let dropdownTriggerWidth = this.$el.outerWidth(true);\n let dropdownTriggerHeight = this.$el.outerHeight(true);\n let dropdownTriggerPosX = this.$el.position().left;\n let dropdownTriggerPosY = this.$el.position().top;\n let dropdownPosX = 0;\n let dropdownPosY = 0;\n let offsetX = 0;\n let offsetY = 0;\n\n if (placement === 'top') {\n\n if (this.align === 'end') {\n dropdownPosX = dropdownTriggerWidth - dropdownWidth;\n } else {\n dropdownPosX = dropdownTriggerPosX;\n }\n\n dropdownPosY = dropdownTriggerPosY - dropdownHeight;\n\n } else if (placement === 'right') {\n\n dropdownPosX = dropdownTriggerPosX + dropdownTriggerWidth;\n dropdownPosY = dropdownTriggerPosY;\n\n } else if (placement === 'bottom') {\n\n if (this.align === 'end') {\n dropdownPosX = dropdownTriggerWidth - dropdownWidth;\n } else {\n dropdownPosX = dropdownTriggerPosX;\n }\n\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight;\n\n } else if (placement === 'left') {\n\n dropdownPosX = dropdownTriggerPosX - dropdownWidth;\n dropdownPosY = dropdownTriggerPosY;\n }\n\n if (this.offset) {\n\n const offsets = this.offset.split(',');\n\n offsetX = offsets[0];\n offsetY = offsets[1];\n dropdownPosX += parseInt(offsetX, 10);\n dropdownPosY += parseInt(offsetY, 10);\n }\n\n if (this.positionObserver && this.$container.length > 0) {\n\n // this is not set during init so we have to fetch it\n // and let's assume that this containing parent fits and is inside\n // viewport\n let $containingParent = this.$container.parent();\n let index = 0;\n while (\n $containingParent.css('overflow-x') !== 'hidden' && \n $containingParent.css('overflow') !== 'hidden' &&\n ($containingParent.prop('tagName') || '').toLowerCase() !== 'body' &&\n index < 100\n ) {\n $containingParent = $containingParent.parent();\n\n if (!$containingParent.get(0)) {\n return;\n }\n\n ++index;\n }\n\n if (!$containingParent.get(0)) {\n return;\n }\n\n const containingBoundingRect = $containingParent.get(0).getBoundingClientRect();\n const containerBoundingRect = this.$container.get(0).getBoundingClientRect();\n\n if (containingBoundingRect.width < dropdownWidth) {\n this.$dropdown.css('max-width', containingBoundingRect.width);\n dropdownWidth = containingBoundingRect.width;\n } else {\n this.$dropdown.css('max-width', '');\n }\n\n if (containingBoundingRect.height < dropdownHeight) {\n this.$dropdown.css('max-height', containingBoundingRect.height);\n dropdownHeight = containingBoundingRect.height;\n } else {\n this.$dropdown.css('max-height', '');\n }\n\n const maxTop = Math.max(Math.abs(containingBoundingRect.y - containerBoundingRect.y), 0);\n const maxLeft = Math.max(Math.abs(containingBoundingRect.x - containerBoundingRect.x), 0);\n const maxRight = $containingParent.get(0).scrollWidth - (containerBoundingRect.x + containerBoundingRect.width);\n const maxBottom = $containingParent.get(0).scrollHeight - (containerBoundingRect.y + (placement === 'dropbottom' ? containerBoundingRect.height : 0));\n\n if (maxLeft < dropdownWidth && dropdownPosX < dropdownTriggerPosX) {\n dropdownPosX = dropdownTriggerPosX;\n\n // would be on top of the trigger\n if (dropdownTriggerPosY + dropdownTriggerHeight > dropdownPosY) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + (offsetY > 0 ? offsetY : 0);\n }\n }\n\n if (maxRight < dropdownWidth && dropdownPosX + dropdownWidth > dropdownTriggerPosX + dropdownTriggerWidth) {\n dropdownPosX = dropdownTriggerPosX + dropdownTriggerWidth - dropdownWidth;\n\n if (dropdownTriggerPosY + dropdownTriggerHeight > dropdownPosY) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + (offsetY > 0 ? offsetY : 0);\n }\n }\n\n if (dropdownPosY < dropdownTriggerPosY && maxTop < dropdownHeight) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + offsetY;\n }\n\n if (dropdownPosY >= dropdownTriggerPosY && maxBottom < dropdownHeight) {\n if (dropdownPosX >= dropdownTriggerPosX + dropdownTriggerWidth || dropdownTriggerPosX >= dropdownPosX + dropdownWidth) {\n dropdownPosY = dropdownTriggerPosY - (dropdownHeight - maxBottom);\n } else {\n dropdownPosY = dropdownTriggerPosY - dropdownHeight - offsetY\n }\n }\n }\n\n this.$dropdown.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+Math.round(dropdownPosX)+'px, '+Math.round(dropdownPosY)+'px, 0px)',\n 'will-change': 'transform'\n });\n\n this.log('Dropdown trigger width: '+dropdownTriggerWidth+'px');\n this.log('Dropdown trigger height: '+dropdownTriggerHeight+'px');\n this.log('Dropdown trigger position x: '+dropdownTriggerPosX+'px');\n this.log('Dropdown trigger position Y: '+dropdownTriggerPosY+'px');\n this.log('Dropdown width: '+dropdownWidth+'px');\n this.log('Dropdown height: '+dropdownHeight+'px');\n this.log('Dropdown position x: '+dropdownPosX+'px');\n this.log('Dropdown position y: '+dropdownPosY+'px');\n }\n\n // Show\n show() {\n\n if (!this.$dropdown || this.$dropdown.hasClass('show')) {\n return;\n }\n\n this.setPosition();\n\n if (this.animation) {\n\n this.$dropdown.attr('x-placement', this.placement+'-'+this.align);\n this.$dropdown.addClass(this.animationSpeed);\n this.$dropdown.animateCss(this.animationIn);\n this.$dropdown.addClass('show');\n this.$dropdown.attr('id', this.id);\n this.$el.attr('data-dropdown', this.id);\n\n } else {\n\n this.$dropdown.attr('x-placement', this.placement+'-'+this.align);\n this.$dropdown.addClass('show');\n this.$dropdown.attr('id', this.id);\n this.$el.attr('data-dropdown', this.id);\n }\n\n if (this.opts.scroll && this.scroll && this.$scrollableContent.length) {\n this.$scrollableContent[0].scrollTop = 1;\n this.$scrollableContent[0].scrollTop = 0;\n }\n\n this.contentOpen = true;\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$dropdown) {\n return;\n }\n\n if (this.animation && !this.$dropdown.hasClass('animated')) {\n\n this.$dropdown.animateCss(this.animationOut, () => {\n this.$dropdown.removeClass('show');\n this.$el.removeAttr('data-dropdown');\n });\n\n } else {\n\n this.$dropdown.removeClass('show');\n this.$el.removeAttr('data-dropdown');\n }\n\n this.contentOpen = false;\n this.onClose();\n }\n\n // Item callback\n onItemClick(el) {\n\n let onItemClick = this.opts.onItemClick;\n\n if (typeof onItemClick === 'function') {\n\n onItemClick.call(el);\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Dropdown._jQueryInterface;\n $.fn[NAME].Constructor = Dropdown;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Dropdown._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n animation: true,\n animationIn: 'zoomIn',\n animationOut: 'zoomOut',\n animationSpeed: 'fastest',\n offset: null,\n minWidth: null,\n align: 'start',\n closeOnItemClick: true,\n positionObserver: true,\n content: false,\n scroll: true,\n scrollContentHeight: 100,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n onItemClick: null,\n debug: false\n }\n}\n\nexport default Dropdown;","import 'jquery';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolTooltip';\nconst DATA_KEY = 'plugin_coolTooltip';\n\nclass Tooltip extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.tooltip) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.tooltip, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$container = this.$el.data('container') ? $(this.$el.data('container')) : $(this.opts.container);\n this.id = 'tooltip-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.placement = this.$el.data('placement') ? this.$el.data('placement') : this.opts.placement;\n this.placementChanged = false;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n this.$el.on('mouseenter'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('mouseleave'+'.'+NAME, () => {\n\n this.close();\n });\n\n this.$el.on('blur'+'.'+NAME, () => {\n\n this.close();\n });\n\n this.$el.on('destroyed'+'.'+NAME, () => {\n\n this.close();\n });\n\n $(window).on('resize', debounce(() => {\n\n if (this.$tooltip) {\n this.setPosition();\n this.onUpdate();\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Build tooltip\n buildTooltip() {\n\n this.$tooltip = $(`\n\n <div class=\"tooltip\" role=\"tooltip\" id=\"${this.id}\">\n\n <div class=\"arrow\"></div>\n\n <div class=\"tooltip-inner\">${this.content}</div>\n\n </div>\n\n `);\n\n this.$container.append(this.$tooltip);\n this.$arrow = this.$tooltip.find('.arrow');\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$tooltip);\n this.log(this.$arrow);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Placement: '+this.placement);\n this.log('Content: '+this.content);\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof placement === 'undefined' || placement === null) {\n placement = this.placement;\n }\n\n this.$tooltip.addClass('tooltip-'+placement);\n\n let containerInnerWidth = this.$container.innerWidth();\n let containerInnerHeight = this.$container.innerHeight();\n let tooltipWidth = this.$tooltip.outerWidth(true);\n let tooltipHeight = this.$tooltip.outerHeight(true);\n let tooltipTriggerWidth = this.$el.outerWidth();\n let tooltipTriggerHeight = this.$el.outerHeight();\n let tooltipTriggerPosX = this.$el.offset().left;\n let tooltipTriggerPosY = this.$el.offset().top;\n let arrowWidth = this.$arrow.outerWidth(true);\n let arrowHeight = this.$arrow.outerHeight(true);\n let arrowPos;\n let tooltipPosX;\n let tooltipPosY;\n\n if (placement === 'top') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - (tooltipWidth - tooltipTriggerWidth) / 2);\n tooltipPosY = Math.round(tooltipTriggerPosY - tooltipHeight);\n arrowPos = Math.round(tooltipWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX + tooltipTriggerWidth);\n tooltipPosY = Math.round(tooltipTriggerPosY - (tooltipHeight - tooltipTriggerHeight) / 2);\n arrowPos = Math.round(tooltipHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - (tooltipWidth - tooltipTriggerWidth) / 2);\n tooltipPosY = Math.round(tooltipTriggerPosY + tooltipTriggerHeight);\n arrowPos = Math.round(tooltipWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - tooltipWidth);\n tooltipPosY = Math.round(tooltipTriggerPosY - (tooltipHeight - tooltipTriggerHeight) / 2);\n arrowPos = Math.round(tooltipHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$tooltip.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+tooltipPosX+'px, '+tooltipPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n // Correct placement if tooltip goes outside of container\n let tooltipOverflowCount = 0;\n let tooltipPosition = {\n left: this.$tooltip.position().left,\n top: this.$tooltip.position().top,\n right: containerInnerWidth - (this.$tooltip.position().left + tooltipWidth),\n bottom: containerInnerHeight - (this.$tooltip.position().top + tooltipHeight),\n };\n let tooltipOverflow = {\n left: false,\n top: false,\n right: false,\n bottom: false\n };\n\n if (tooltipPosition.right < 0) {\n\n tooltipOverflow.right = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from right');\n }\n\n if (tooltipPosition.left < 0) {\n\n tooltipOverflow.left = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from left');\n }\n\n if (tooltipPosition.bottom < 0) {\n\n tooltipOverflow.bottom = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from bottom');\n }\n\n if (tooltipPosition.top < 0) {\n\n tooltipOverflow.top = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from top');\n }\n\n if (tooltipOverflowCount > 0) {\n\n if (!this.placementChanged && tooltipOverflow.left && tooltipPosition.right > tooltipWidth) {\n\n this.log('Changing tooltip placement to right');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('right');\n\n } else if (!this.placementChanged && tooltipOverflow.top && tooltipPosition.top > tooltipHeight) {\n\n this.log('Changing tooltip placement to bottom');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n\n } else if (!this.placementChanged && tooltipOverflow.right && tooltipPosition.left > tooltipWidth) {\n\n this.log('Changing tooltip placement to left');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('left');\n\n } else if (!this.placementChanged && tooltipOverflow.bottom && tooltipPosition.top > tooltipHeight) {\n\n this.log('Changing tooltip placement to top');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else if (!this.placementChanged && (placement !== 'top' || placement !== 'bottom') && (tooltipOverflow.left || tooltipOverflow.right)) {\n\n if (tooltipPosition.top > tooltipPosition.bottom) {\n\n this.log('Changing tooltip placement to top');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else {\n\n this.log('Changing tooltip placement to bottom');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n }\n\n } else {\n\n this.fixTooltipPosition = true;\n }\n\n if (this.fixTooltipPosition) {\n\n this.log('Adjusting tooltip size or position in order to tooltip fit in the container');\n\n if (tooltipOverflow.left) {\n\n this.log('Tooltip overflowing from left');\n\n let overflowAmount = Math.abs(tooltipPosition.left);\n let excludePlacements = ['top', 'bottom'];\n\n if ((tooltipTriggerPosX >= tooltipPosX + overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Tooltip adjusting width');\n\n tooltipWidth -= overflowAmount;\n tooltipPosX += overflowAmount;\n\n } else {\n\n this.log('Tooltip adjusting position x');\n\n tooltipPosX += overflowAmount;\n arrowPos -= overflowAmount;\n }\n }\n\n if (tooltipOverflow.top) {\n\n this.log('Tooltip overflowing from top');\n\n let overflowAmount = Math.abs(tooltipPosition.top);\n\n this.log('Tooltip adjusting position y');\n\n tooltipPosY += overflowAmount;\n arrowPos -= overflowAmount;\n }\n\n if (tooltipOverflow.right) {\n\n this.log('Tooltip overflowing from right');\n\n let overflowAmount = Math.abs(tooltipPosition.right);\n let excludePlacements = ['top', 'bottom'];\n\n if ((tooltipTriggerPosX <= tooltipPosX - overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Tooltip adjusting width');\n\n tooltipWidth -= overflowAmount;\n\n } else {\n\n this.log('Tooltip adjusting position x');\n\n tooltipPosX -= overflowAmount;\n arrowPos += overflowAmount;\n }\n }\n\n if (tooltipOverflow.bottom) {\n\n this.log('Tooltip overflowing from bottom');\n\n let overflowAmount = Math.abs(tooltipPosition.bottom);\n\n this.log('Tooltip adjusting position y');\n\n tooltipPosY -= overflowAmount;\n arrowPos += overflowAmount;\n }\n\n if (placement === 'top') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$tooltip.css({\n width: tooltipWidth,\n transform: 'translate3d('+tooltipPosX+'px, '+tooltipPosY+'px, 0px)'\n });\n\n this.fixTooltipPosition = false;\n\n this.log('Tooltip placement changed: '+this.placementChanged);\n this.log('Tooltip container inner width: '+containerInnerWidth+'px');\n this.log('Tooltip container inner height: '+containerInnerHeight+'px');\n this.log('Tooltip trigger width: '+tooltipTriggerWidth+'px');\n this.log('Tooltip trigger height: '+tooltipTriggerHeight+'px');\n this.log('Tooltip trigger position x: '+tooltipTriggerPosX+'px');\n this.log('Tooltip trigger position Y: '+tooltipTriggerPosY+'px');\n this.log('Tooltip width: '+tooltipWidth+'px');\n this.log('Tooltip height: '+tooltipHeight+'px');\n this.log('Tooltip position x: '+tooltipPosX+'px');\n this.log('Tooltip position y: '+tooltipPosY+'px');\n this.log('Tooltip position left: '+tooltipPosition.left+'px');\n this.log('Tooltip position top: '+tooltipPosition.top+'px');\n this.log('Tooltip position right: '+tooltipPosition.right+'px');\n this.log('Tooltip position bottom: '+tooltipPosition.bottom+'px');\n }\n\n } else {\n\n this.log('Tooltip placement changed: '+this.placementChanged);\n this.log('Tooltip container inner width: '+containerInnerWidth+'px');\n this.log('Tooltip container inner height: '+containerInnerHeight+'px');\n this.log('Tooltip trigger width: '+tooltipTriggerWidth+'px');\n this.log('Tooltip trigger height: '+tooltipTriggerHeight+'px');\n this.log('Tooltip trigger position x: '+tooltipTriggerPosX+'px');\n this.log('Tooltip trigger position Y: '+tooltipTriggerPosY+'px');\n this.log('Tooltip width: '+tooltipWidth+'px');\n this.log('Tooltip height: '+tooltipHeight+'px');\n this.log('Tooltip position x: '+tooltipPosX+'px');\n this.log('Tooltip position y: '+tooltipPosY+'px');\n this.log('Tooltip position left: '+tooltipPosition.left+'px');\n this.log('Tooltip position top: '+tooltipPosition.top+'px');\n this.log('Tooltip position right: '+tooltipPosition.right+'px');\n this.log('Tooltip position bottom: '+tooltipPosition.bottom+'px');\n }\n }\n\n // Show\n show() {\n\n if (this.$tooltip) {\n return;\n }\n\n this.buildTooltip();\n this.setPosition();\n\n if (this.animation) {\n\n this.$tooltip.addClass(this.animationSpeed);\n this.$tooltip.animateCss(this.animationIn);\n this.$tooltip.addClass('show');\n this.$tooltip.attr('id', this.id);\n this.$el.attr('data-tooltip', this.id);\n\n } else {\n\n this.$tooltip.addClass('show');\n this.$tooltip.attr('id', this.id);\n this.$el.attr('data-tooltip', this.id);\n }\n\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$tooltip) {\n return;\n }\n\n if (this.animation && !this.$tooltip.hasClass('animated')) {\n\n this.$tooltip.animateCss(this.animationOut, () => {\n\n this.$tooltip.remove();\n this.$el.removeAttr('data-tooltip');\n this.$tooltip = null;\n this.placementChanged = false;\n\n this.onClose();\n });\n\n } else {\n\n this.$tooltip.remove();\n this.$el.removeAttr('data-tooltip');\n this.$tooltip = null;\n this.placementChanged = false;\n\n this.onClose();\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Tooltip(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Tooltip._jQueryInterface;\n $.fn[NAME].Constructor = Tooltip;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Tooltip._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n container: 'body',\n animation: false,\n animationIn: 'fadeIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n placement: 'bottom',\n content: '',\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Tooltip;","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolSectionTabs';\nconst DATA_KEY = 'plugin_coolSectionTabs';\n\nclass SectionTabs extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.sectionTabs) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.sectionTabs, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.checkForChanges();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$dropdownContainer = this.$el.find('.dropdown-container');\n this.$dropdownList = this.$el.find('.dropdown-list');\n this.tabsCount = this.$el.find('> .tab-item').length;\n this.tabs = this.$el.find('> .tab-item:visible');\n\n $.each(this.tabs, function(i, el) {\n $(el).data('width', $(el).outerWidth(true));\n });\n\n this.log(this.$el);\n this.log(this.$dropdownContainer);\n this.log(this.$dropdownList);\n this.log(this.tabsCount);\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n $(window).on('resize', debounce(() => {\n this.checkForChanges();\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+this._name);\n }\n\n // Move to list\n moveToList(el) {\n\n $(el).insertBefore(this.$dropdownContainer);\n\n this.checkForChanges();\n }\n\n // Move to dropdown\n moveToDropdown(el) {\n\n $(el).appendTo(this.$dropdownList);\n\n this.checkForChanges();\n }\n\n // Overflow status\n overflowStatus() {\n\n if (this.$el[0].offsetWidth < this.$el[0].scrollWidth) {\n return true;\n } else {\n return false;\n }\n }\n\n // CheckForChanges\n checkForChanges() {\n\n let dropdownItems = this.$dropdownList.children();\n let moveableTabs = this.$el.find('> .tab-item').not(this.$dropdownContainer);\n let tabs = this.$el.find('> .tab-item:visible');\n let usedSpace = 0;\n\n $.each(tabs, function(i, el) {\n usedSpace += $(el).outerWidth(true);\n });\n\n let freeSpace = this.$el[0].offsetWidth - usedSpace;\n\n if (dropdownItems.length > 0) {\n\n if (!this.$dropdownContainer.hasClass('visible')) {\n this.$dropdownContainer.addClass('visible');\n }\n\n } else {\n\n if (this.$dropdownContainer.hasClass('visible')) {\n this.$dropdownContainer.removeClass('visible');\n }\n }\n\n if (this.overflowStatus() == true) {\n\n if (moveableTabs.length > 0) {\n this.moveToDropdown(moveableTabs.last());\n }\n\n } else {\n\n if (dropdownItems.length > 0) {\n\n if (freeSpace > dropdownItems.last().data('width')) {\n this.moveToList(dropdownItems.last());\n }\n }\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new SectionTabs(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = SectionTabs._jQueryInterface;\n $.fn[NAME].Constructor = SectionTabs;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return SectionTabs._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n debug: false\n }\n}\n\nexport default SectionTabs;\n","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolCollapse';\nconst DATA_KEY = 'plugin_coolCollapse';\n\nclass Collapse extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.collapse) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.dialog, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache()\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$target = this.$el.data('target') ? $(document).find(this.$el.data('target')) : $(document).find(this.opts.target);\n this.expanded = this.$el.attr('aria-expanded') == 'true' ? true : false;\n\n if (this.$target.length) {\n\n this.targetHeight = this.$target.height();\n this.$container = this.$target.closest('.section-collapse');\n this.$indicator = $(document).find('[data-collapse-indicator=\"' + this.$el.data('target') + '\"]');\n\n } else {\n\n this.$target = $(this.$el).parent().find('.collapse');\n this.targetHeight = this.$target.height();\n this.$container = this.$target.closest('.section-collapse');\n this.$indicator = $(this.$el).parent().find('[data-collapse-indicator]');\n }\n\n if (this.expanded) {\n this.$target.css('height', 'auto');\n }\n\n this.log(this.$el);\n this.log(this.$target);\n this.log(this.$container);\n this.log(this.$indicator);\n this.log('Expanded: '+this.expanded);\n this.log('Target height: '+this.targetHeight+'px');\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n this.$el.on('click'+'.'+this.name, (e) => {\n\n if (this.expanded) {\n this.close();\n } else {\n this.show();\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n if (this.$target.length) {\n\n this.targetHeight = this.$target.height();\n this.log('Target height: '+this.targetHeight+'px');\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+this.name);\n }\n\n // Which transition\n whichTransitionEvent() {\n\n let el = document.createElement('text-transition');\n let transEndEventNames = {\n 'WebkitTransition': 'webkitTransitionEnd', // Saf 6, Android Browser\n 'MozTransition': 'transitionend', // only for FF < 15\n 'transition': 'transitionend' // IE10, Opera, Chrome, FF 15+, Saf 7+\n };\n\n for (let t in transEndEventNames) {\n\n if (el.style[t] !== undefined) {\n return transEndEventNames[t];\n }\n }\n }\n\n // Show\n show() {\n\n // Update target height if something is added to dom which causes height to change\n if (this.targetHeight !== this.$target.height()) {\n this.targetHeight = this.$target.height();\n }\n\n this.$target.removeClass('collapse show');\n this.$target.addClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', true);\n }\n\n if (this.$container.length) {\n this.$container.addClass('show');\n }\n\n this.$target.css('height');\n this.$target.css('height', this.targetHeight);\n\n if (this.$indicator.length) {\n this.$indicator.addClass('show');\n }\n\n this.$target.one(this.whichTransitionEvent(), () => {\n\n this.$target.removeClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', false);\n }\n\n this.$target.removeAttr('style');\n this.$target.addClass('collapse show');\n this.$el.attr('aria-expanded', true);\n this.$target.css('height', 'auto');\n this.expanded = true;\n });\n\n this.onShow();\n }\n\n // Close\n close() {\n\n this.$target.removeClass('collapse show');\n this.$target.addClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', true);\n }\n\n if (this.$container.length) {\n this.$container.removeClass('show');\n }\n\n this.$target.css('height', this.$target.height());\n\n setTimeout(() => {\n this.$target.css('height', 0);\n }, 10);\n\n if (this.$indicator.length && this.$indicator.hasClass('show')) {\n this.$indicator.removeClass('show');\n }\n\n this.$target.one(this.whichTransitionEvent(), () => {\n\n this.$target.removeClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', false);\n }\n\n this.$target.removeAttr('style');\n this.$target.addClass('collapse');\n this.$el.attr('aria-expanded', false);\n this.expanded = false;\n\n // Update target height if something is added to dom which causes height to change\n if (this.targetHeight !== this.$target.height()) {\n this.targetHeight = this.$target.height();\n }\n });\n\n this.onClose();\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Collapse(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Collapse._jQueryInterface;\n $.fn[NAME].Constructor = Collapse;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Collapse._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n target: null,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Collapse;","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolToast';\nconst DATA_KEY = 'plugin_coolToast';\n\nclass Toast {\n\n constructor(container, opts) {\n\n this.settings = {};\n\n if (window.Cool.settings.toast) {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, window.Cool.settings.toast, opts);\n\n } else {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, opts);\n }\n\n this.container = container;\n this.$container = $(this.container);\n this.debug = this.settings.debug;\n this.faPro = this.settings.faPro;\n this.toasts = [];\n this.queue = [];\n this.processingQueue = false;\n this.onInitialize = this.settings.onInitialize;\n this.onDestroy = this.settings.onDestroy;\n }\n\n // Add item to queue\n addQueue(toast) {\n\n this.queue.push(toast);\n\n if (this.processingQueue) {\n return;\n }\n\n return this.processQueue();\n }\n\n // Process queue\n processQueue() {\n\n if (this.processingQueue) {\n\n this.queue.shift();\n }\n\n if (!this.queue.length) {\n\n this.processingQueue = false;\n return;\n }\n\n this.processingQueue = true;\n\n return this.show(this.queue[0]);\n }\n\n // Init toast\n init(opts) {\n\n let settings = {};\n\n $.extend(true, settings, this.settings, opts);\n\n let toast = this.buildToast(settings);\n\n this.addQueue(toast);\n this.onInit(toast);\n\n return toast;\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.$container.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Build toast\n buildToast(settings) {\n\n let toast = {\n uuid: 'toast-'+this.generateUUID(),\n placement: settings.placement,\n placementX: settings.placementX,\n placementY: settings.placementY,\n offset: settings.offset,\n animation: settings.animation,\n animationIn: settings.animationIn,\n animationOut: settings.animationOut,\n animationSpeed: settings.animationSpeed,\n dismiss: settings.dismiss,\n size: settings.size,\n header: settings.header,\n theme: settings.theme,\n title: settings.title,\n content: settings.content,\n template: settings.template,\n maxBodyHeight: settings.maxBodyHeight,\n onInit: settings.onInit,\n onShow: settings.onShow,\n onClose: settings.onClose\n };\n\n if (typeof toast.content === 'function') {\n\n toast.$el = $(toast.template());\n\n } else {\n\n toast.$el = $(this._renderTemplate(toast));\n }\n\n toast.$inner = toast.$el.find('.toast-inner');\n toast.$closeBtn = toast.$el.find('[data-toast-close]');\n\n this.log(toast);\n this.toasts.push(toast);\n\n return toast;\n }\n\n // Bind events that trigger methods\n bindEvents(toast) {\n\n let self = this;\n\n toast.$el.on('click', '[data-toast-close]', () => {\n\n if (toast.$el) {\n self.close(toast);\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n if (toast.$el) {\n this.setPosition(toast);\n }\n }, 250));\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Set positions\n setPosition(toast, placement, placementY, placementX) {\n\n if (typeof placementY === 'undefined' || placementY === null) {\n placementY = toast.placementY;\n }\n\n if (typeof placementX === 'undefined' || placementX === null) {\n placementX = toast.placementX;\n }\n\n if (!placementX || !placementY) {\n placement = toast.placement\n }\n\n if (toast.offset) {\n\n let offsets = toast.offset.split(',')\n let offsetX = parseInt(offsets[0], 10);\n let offsetY = parseInt(offsets[1], 10);\n }\n\n let toastWidth = toast.$el.outerWidth(true);\n let toastHeight = toast.$el.outerHeight(true);\n let toastPosX;\n let toastPosY;\n\n if (placement) {\n\n if (placement === 'top-left') {\n\n toastPosX = 0;\n toastPosY = 0;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += 30;\n toastPosY += 30;\n }\n\n } else if (placement === 'top-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = 0;\n\n this.log(this.$container.width);\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosY += 30;\n }\n\n } else if (placement === 'top-right') {\n\n toastPosX = this.$container.width() - toastWidth;\n toastPosY = 0;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += -30;\n toastPosY += 30;\n }\n\n } else if (placement === 'center-left') {\n\n toastPosX = 0;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += 30;\n }\n\n } else if (placement === 'center-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n }\n\n } else if (placement === 'center-right') {\n\n toastPosX = this.$container.width() - toastWidth;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += -30;\n }\n\n } else if (placement === 'bottom-left') {\n\n toastPosX = 0;\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosX += 30;\n toastPosY += -30;\n }\n\n } else if (placement === 'bottom-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosY += -30;\n }\n\n } else if (placement === 'bottom-right') {\n\n toastPosX = this.$container.width() - toastWidth\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosX += -30;\n toastPosY += -30;\n }\n }\n\n } else {\n\n toastPosX = placementX;\n toastPosY = placementY;\n }\n\n toast.$el.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+toastPosX+'px, '+toastPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n this.log('Toast width: '+toastWidth+'px');\n this.log('Toast height: '+toastHeight+'px');\n this.log('Toast position Y: '+toastPosX+'px');\n this.log('Toast position x: '+toastPosY+'px');\n }\n\n // Show\n show(toast) {\n\n this.$container.append(toast.$el);\n this.bindEvents(toast);\n this.setPosition(toast);\n\n if (toast.animation) {\n\n toast.$el.addClass('show');\n toast.$inner.addClass(toast.animationSpeed);\n toast.$inner.animateCss(toast.animationIn);\n\n } else {\n\n toast.$el.addClass('show');\n }\n\n if (toast.dismiss) {\n\n setTimeout(() => {\n this.close(toast);\n }, toast.dismiss * 1000);\n }\n\n this.onShow(toast);\n }\n\n // Close\n close(toast) {\n\n if (toast.animation && !toast.$inner.hasClass('animated')) {\n\n toast.$el.removeClass('show');\n toast.$inner.animateCss(toast.animationOut, () => {\n\n toast.$el.remove();\n\n this.toasts = $.grep(this.toasts, function(item) {\n return item.uuid != toast.uuid;\n });\n\n this.processQueue();\n this.onClose(toast);\n });\n\n } else {\n\n toast.$el.remove();\n\n this.toasts = $.grep(this.toasts, function(item) {\n return item.uuid != toast.uuid;\n });\n\n this.processQueue();\n this.onClose(toast);\n }\n }\n\n // Initialize callback\n onInitialize() {\n\n let onInitialize = this.onInitialize;\n\n if (typeof onInitialize === 'function') {\n\n onInitialize.call(this.container);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this.container);\n }\n }\n\n // Init callback\n onInit(toast) {\n\n let onInit = toast.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(toast);\n }\n }\n\n // Show callback\n onShow(toast) {\n\n let onShow = toast.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(toast);\n }\n }\n\n // Close callback\n onClose(toast) {\n\n let onClose = toast.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(toast);\n }\n }\n\n // Debug log\n log(...args) {\n\n if (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n console.log(...args);\n }\n }\n }\n\n // Render template\n _renderTemplate(toast) {\n\n let faNameSpace = this.faPro ? 'far' : 'fas';\n let content = '';\n let header = '';\n let body = '';\n let bodyCloseBtn = '';\n\n if (typeof toast.content === 'function') {\n\n content = toast.content();\n\n } else {\n\n content = toast.content;\n }\n\n if (toast.header) {\n\n header = `\n <div class=\"toast-header\">\n\n <span>${toast.title}</span>\n\n <button type=\"button\" data-toast-close>\n <i class=\"${faNameSpace} fa-times icon\"></i>\n </button>\n\n </div>\n `;\n\n } else {\n\n bodyCloseBtn = `\n <button type=\"button\" data-toast-close>\n\n <i class=\"${faNameSpace} fa-times icon\"></i>\n\n </button>\n `;\n }\n\n body = `\n <div class=\"toast-body\">\n\n <span>${content}</span>\n ${bodyCloseBtn}\n\n </div>\n `;\n\n return `\n <div class=\"toast toast-${toast.size} toast-${toast.theme}\" role=\"alert\" id=\"${toast.uuid}\">\n\n <div class=\"toast-inner\">\n\n ${header}\n ${body}\n\n </div>\n\n </div>\n `;\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Toast._jQueryInterface;\n $.fn[NAME].Constructor = Toast;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Toast._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n title: '',\n content: '',\n template: '',\n theme: 'dark',\n placement: 'bottom-center',\n placementX: null,\n placementY: null,\n animation: true,\n animationIn: 'slideInUp',\n animationOut: 'slideOutDown',\n animationSpeed: 'faster',\n offset: null,\n size: null,\n dismiss: 3,\n header: false,\n faPro: false,\n debug: false,\n onInitialize: null,\n onDestroy: null,\n onInit: null,\n onDestroy: null,\n onShow: null,\n onClose: null\n }\n}\n\nexport default Toast;","import 'jquery';\nimport { debounce, touchEvents } from './util/index';\n\nconst NAME = 'coolDialog';\nconst DATA_KEY = 'plugin_coolDialog';\n\nclass Dialog {\n\n constructor(container, opts) {\n\n this.settings = {};\n\n if (window.Cool.settings.dialog) {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, window.Cool.settings.dialog, opts);\n\n } else {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, opts);\n }\n\n this.container = container;\n this.$container = $(this.container);\n this.debug = this.settings.debug;\n this.faPro = this.settings.faPro;\n this.dialogs = [];\n this.onInitialize = this.settings.onInitialize;\n this.onDestroy = this.settings.onDestroy;\n }\n\n // Init dialog\n init(opts) {\n\n let settings = {};\n\n $.extend(true, settings, this.settings, opts);\n\n let dialog = this.buildDialog(settings);\n\n this.show(dialog);\n this.bindEvents(dialog);\n this.onInit(dialog);\n\n return dialog;\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.$container.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Build dialog\n buildDialog(settings) {\n\n let self = this;\n let dialog = {\n uuid: 'dialog-'+this.generateUUID(),\n title: settings.title,\n template: settings.template,\n body: settings.body,\n footer: settings.footer,\n size: settings.size,\n classes: settings.classes,\n centered: settings.centered,\n backdrop: settings.backdrop,\n preventScroll: settings.preventScroll,\n closeBtn: settings.closeBtn,\n animation: settings.animation,\n animationIn: settings.animationIn,\n animationOut: settings.animationOut,\n animationSpeed: settings.animationSpeed,\n callbacks: settings.callbacks,\n maxBodyHeight: settings.maxBodyHeight,\n overflowVisible: settings.overflowVisible,\n actions: settings.actions,\n onInit: settings.onInit,\n onShow: settings.onShow,\n onClose: settings.onClose\n };\n\n if (dialog.maxBodyHeight == null) {\n\n dialog.maxBodyHeight = window.innerHeight - 200;\n }\n\n if (typeof dialog.template === 'function') {\n\n dialog.$el = $(dialog.template());\n\n } else {\n\n dialog.$el = $(this._renderTemplate(dialog));\n }\n\n dialog.show = function() {\n self.show(dialog);\n };\n\n dialog.close = function() {\n self.close(dialog);\n };\n\n this.log(dialog);\n this.dialogs.push(dialog);\n\n return dialog;\n }\n\n // Bind events that trigger methods\n bindEvents(dialog) {\n\n let self = this;\n\n dialog.$el.on('click', '[data-dialog-close]', function (e) {\n\n dialog.$el.trigger('dialog.close');\n\n if (typeof dialog.callbacks.close === 'function') {\n\n dialog.callbacks.close.call(self, function () {\n self.close(dialog)\n }, dialog);\n\n } else {\n\n self.close(dialog);\n }\n });\n\n dialog.$el.on('click', '[data-dialog-remove]', function (e) {\n\n dialog.$el.trigger('dialog.remove');\n\n if (typeof dialog.callbacks.remove === 'function') {\n\n dialog.callbacks.remove.call(self, function () {\n self.close(dialog)\n }, dialog);\n }\n });\n\n dialog.$el.on('click', '[data-dialog-confirm]', debounce(function (e) {\n\n dialog.$el.trigger('dialog.close');\n\n if (typeof dialog.callbacks.confirm === 'function') {\n\n dialog.callbacks.confirm.call(self, function () {\n self.close(dialog)\n }, dialog);\n\n } else {\n\n self.close(dialog);\n }\n }));\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Show\n show(dialog) {\n\n if (!this.$container.hasClass('has-dialogs')) {\n this.$container.addClass('has-dialogs');\n }\n\n if (dialog.preventScroll && !this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.addClass('dialog-prevent-scroll');\n }\n\n if (this.dialogs.length > 1) {\n\n let $prevDialog = $(this.dialogs).eq(-2)[0].$el;\n let zIndex = parseInt($prevDialog.css('z-index'), 10) + 1;\n\n dialog.$el.css('z-index', zIndex);\n\n $prevDialog.css({\n 'transition': 'opacity 0.3s',\n 'opacity': 0,\n 'visibility': 'visible'\n });\n }\n\n if (dialog.backdrop && $('.dialog-backdrop').length < 1) {\n\n this.$container.append('<div class=\"dialog-backdrop\"></div>');\n\n let checkForBackdrop = setInterval(() => {\n\n if (this.dialogs.length == 0 && $('.dialog-backdrop').length) {\n\n $('.dialog-backdrop').remove();\n clearInterval(checkForBackdrop);\n }\n\n }, 100);\n }\n\n this.$container.append(dialog.$el);\n\n if (dialog.animation) {\n dialog.$el.find('.dialog-content').addClass(dialog.animationSpeed).animateCss(dialog.animationIn);\n }\n\n this.onShow(dialog);\n }\n\n // Close\n close(dialog) {\n\n let $prevDialog = null;\n\n if (this.dialogs.length > 1) {\n $prevDialog = $(this.dialogs).eq(-2)[0].$el;\n }\n\n if ($('.dialog[data-dialog-backdrop=\"true\"]').length === 0 && $('.dialog-backdrop').length) {\n $('.dialog-backdrop').remove();\n }\n\n if (dialog.animation) {\n\n dialog.$el.find('.dialog-content').animateCss(dialog.animationOut, () => {\n\n dialog.$el.remove();\n\n this.dialogs = $.grep(this.dialogs, function(item) {\n return item.uuid != dialog.uuid;\n });\n\n if (this.dialogs.length == 0) {\n\n this.$container.removeClass('has-dialogs');\n\n if (this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.removeClass('dialog-prevent-scroll');\n }\n\n } else {\n\n if ($prevDialog) {\n $prevDialog.css('opacity', 1);\n }\n }\n });\n\n } else {\n\n dialog.$el.remove();\n\n this.dialogs = $.grep(this.dialogs, function(item) {\n return item.uuid != dialog.uuid;\n });\n\n if (this.dialogs.length == 0) {\n\n this.$container.removeClass('has-dialogs');\n\n if (this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.removeClass('dialog-prevent-scroll');\n }\n\n } else {\n\n if ($prevDialog) {\n $prevDialog.css('opacity', 1);\n }\n }\n }\n\n this.onClose(dialog);\n }\n\n // Initialize callback\n onInitialize() {\n\n let onInitialize = this.onInitialize;\n\n if (typeof onInitialize === 'function') {\n\n onInitialize.call(this.container);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this.container);\n }\n }\n\n // Init callback\n onInit(dialog) {\n\n let onInit = dialog.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(dialog);\n }\n }\n\n // Show callback\n onShow(dialog) {\n\n let onShow = dialog.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(dialog);\n }\n }\n\n // Close callback\n onClose(dialog) {\n\n let onClose = dialog.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(dialog);\n }\n }\n\n // Debug log\n log(...args) {\n\n if (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n console.log(...args);\n }\n }\n }\n\n // Render footer\n _renderFooter(dialog) {\n\n let footer = '';\n\n if (typeof dialog.footer === 'function') {\n\n footer = dialog.footer();\n\n } else if (dialog.footer !== '' && dialog.footer !== false && dialog.footer !== true) {\n\n footer = dialog.footer;\n\n } else if (dialog.footer === true) {\n\n let btnCancel = '';\n let btnRemove = '';\n let btnConfirm = '';\n let btnStyle = '';\n let btnClasses = '';\n let btnAttrs = '';\n\n if (dialog.actions.close.visible) {\n\n btnStyle = dialog.actions.close.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.close.classes ? ' '+dialog.actions.close.classes : '';\n btnAttrs = dialog.actions.close.attrs ? ' '+dialog.actions.close.attrs : '';\n btnCancel = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-close>\n ${dialog.actions.close.content}\n </button>\n `;\n }\n\n if (dialog.actions.remove.visible) {\n\n btnStyle = dialog.actions.remove.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.remove.classes ? ' '+dialog.actions.remove.classes : '';\n btnAttrs = dialog.actions.remove.attrs ? ' '+dialog.actions.remove.attrs : '';\n btnRemove = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-remove>\n ${dialog.actions.remove.content}\n </button>\n `;\n }\n\n if (dialog.actions.confirm.visible) {\n\n btnStyle = dialog.actions.confirm.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.confirm.classes ? ' '+dialog.actions.confirm.classes : '';\n btnAttrs = dialog.actions.confirm.attrs ? ' '+dialog.actions.confirm.attrs : '';\n btnConfirm = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-confirm>\n ${dialog.actions.confirm.content}\n </button>\n `;\n }\n\n footer = `\n ${btnCancel}\n ${btnRemove}\n ${btnConfirm}\n `;\n\n } else {\n\n return footer;\n }\n\n if (footer) {\n\n return `\n <div class=\"dialog-footer\">\n ${footer}\n </div>\n `;\n }\n }\n\n // Render template\n _renderTemplate(dialog) {\n\n let faNameSpace = this.faPro ? 'far' : 'fas';\n let classes = dialog.classes ? ' '+dialog.classes : '';\n let centered = dialog.centered ? ' dialog-centered' : '';\n let size = dialog.size ? ' dialog-'+dialog.size : '';\n let overFlowVisible = dialog.overflowVisible ? ' dialog-overflow-visible' : '';\n let uuid = ' data-dialog-uuid=\"'+dialog.uuid+'\"';\n let backdrop = dialog.backdrop ? ' data-dialog-backdrop=\"true\"' : ' data-dialog-backdrop=\"false\"';\n let title = dialog.title;\n let closeBtn = dialog.closeBtn ? `<button type=\"button\" data-dialog-close><i class=\"${faNameSpace} fa-times icon\"></i></button>` : '';\n let maxBodyHeight = dialog.maxBodyHeight ? ' style=\"max-height: '+dialog.maxBodyHeight+'px\"' : '';\n let body = '';\n let footer = this._renderFooter(dialog);\n\n if (typeof dialog.body === 'function') {\n\n body = dialog.body();\n\n } else {\n\n body = dialog.body;\n }\n\n return `\n <div class=\"dialog${classes}${centered}${size}${overFlowVisible}\"${uuid}${backdrop}>\n\n <div class=\"dialog-container\">\n\n <div class=\"dialog-content\">\n\n <div class=\"dialog-header\">\n\n <span class=\"dialog-title\">\n ${title}\n </span>\n\n ${closeBtn}\n\n </div>\n\n <div class=\"dialog-body\"${maxBodyHeight}>\n\n ${body}\n\n </div>\n\n ${footer}\n\n </div>\n\n </div>\n\n </div>\n `;\n }\n\n static _jQueryInterface(config) {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Dialog(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Dialog._jQueryInterface;\n $.fn[NAME].Constructor = Dialog;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Dialog._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n title: '',\n template: '',\n body: '',\n footer: true,\n size: '', // sm/lg\n classes: '',\n centered: true,\n backdrop: true,\n preventScroll: true,\n closeBtn: true,\n animation: true,\n animationIn: 'zoomIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n callbacks: {},\n maxBodyHeight: null,\n overflowVisible: false,\n faPro: false,\n debug: true,\n onInitialize: null,\n onDestroy: null,\n onInit: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n actions: {\n close: {\n primary: false,\n visible: true,\n content: 'Close',\n classes: '',\n attrs: ''\n },\n remove: {\n primary: false,\n visible: true,\n content: 'Remove',\n classes: '',\n attrs: ''\n },\n confirm: {\n primary: true,\n visible: true,\n content: 'Confirm',\n classes: '',\n attrs: ''\n }\n }\n }\n}\n\nexport default Dialog;","import Common from './src/common';\nimport Popover from './src/popover.js';\nimport Select from './src/select';\nimport Dropdown from './src/dropdown';\nimport Tooltip from './src/tooltip';\nimport SectionTabs from './src/section-tabs';\nimport Collapse from './src/collapse';\nimport Toast from './src/toast';\nimport Dialog from './src/dialog';\n\nexport default {\n\tCommon,\n\tPopover,\n\tSelect,\n\tDropdown,\n\tTooltip,\n\tSectionTabs,\n\tCollapse,\n\tToast,\n\tDialog\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../js/src/util/perfect-scrollbar.js","../../js/src/util/animate-css.js","../../js/src/common.js","../../js/src/util/index.js","../../js/src/abstract-ui-component.js","../../js/src/popover.js","../../js/src/select.js","../../js/src/dropdown.js","../../js/src/tooltip.js","../../js/src/section-tabs.js","../../js/src/collapse.js","../../js/src/toast.js","../../js/src/dialog.js","../../js/index.umd.js"],"names":["get","element","getComputedStyle","set","obj","key","val","style","div","className","document","createElement","elMatches","Element","prototype","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","Error","call","remove","parentNode","removeChild","queryChildren","selector","Array","filter","children","child","cls","main","thumb","x","rail","consuming","state","focus","clicking","active","scrolling","scrollingClassTimeout","y","addScrollingClass","i","classList","contains","clearTimeout","add","removeScrollingClass","setTimeout","isAlive","settings","scrollingThreshold","EventElement","this","handlers","prototypeAccessors","isEmpty","configurable","bind","eventName","handler","push","addEventListener","unbind","target","this$1","removeEventListener","unbindAll","name","Object","keys","every","length","defineProperties","EventManager","eventElements","createEvent","window","CustomEvent","evt","initCustomEvent","undefined","eventElement","ee","splice","indexOf","forEach","e","once","onceHandler","processScrollDiff","axis","diff","useScrollingClass","forceFireReachEvent","fields","ref","contentHeight","containerHeight","scrollTop","up","down","reach","dispatchEvent","setScrollingClassInstantly","processScrollDiff$1","toInt","parseInt","env","isWebKit","documentElement","supportsTouch","DocumentTouch","supportsIePointer","navigator","msMaxTouchPoints","isChrome","test","userAgent","updateGeometry","roundedScrollTop","Math","floor","containerWidth","clientWidth","clientHeight","contentWidth","scrollWidth","scrollHeight","scrollbarXRail","el","appendChild","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","scrollLeft","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","width","isRtl","left","isScrollbarXUsingBottom","bottom","scrollbarXBottom","top","scrollbarXTop","yRailOffset","height","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","max","maxScrollbarLength","min","bindMouseScrollHandler","pageY","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","stopPropagation","preventDefault","mouseUpHandler","event","ownerDocument","click-rail","direction","pageYOffset","getBoundingClientRect","pageX","pageXOffset","drag-thumb","keyboard","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","deltaX","deltaY","which","metaKey","altKey","shiftKey","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","querySelector","cursor","overflow","overflowX","overflowY","join","match","maxScrollTop","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","offsetHeight","isLeft","isRight","offsetWidth","abs","ctrlKey","onwheel","onmousewheel","touch","startOffset","startTime","speed","easingLoop","touchStart","touchMove","touchEnd","PointerEvent","MSPointerEvent","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","Date","getTime","clearInterval","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","scrollY","swipeEasing","setInterval","isInitialized","PerfectScrollbar","userSettings","nodeName","result","originalScrollLeft","blur","isNegativeScroll","setAttribute","railXStyle","isNaN","borderLeftWidth","borderRightWidth","display","marginLeft","marginRight","railYStyle","styles","paddingLeft","paddingRight","outerWidth","borderTopWidth","borderBottomWidth","marginTop","marginBottom","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","$","fn","extend","animateCss","animationName","callback","animationEnd","addClass","one","removeClass","on","Cool","Common","initialize","opts","coolPopover","popover","coolSelect","select","coolDropdown","dropdown","coolTooltip","tooltip","coolCollapse","collapse","coolSectionTabs","sectionTabs","coolToast","toast","coolDialog","dialog","hasClass","not","attr","$inputGroup","closest","each","formLabelGroup","find","trigger","$container","parents","href","data","linkDisabled","item","is","parent","open","location","$self","btn","btnDisabled","click","toggleClass","mousedown","mouseup","$sidebarLeftContent","sidebarLeftScroll","$sidebarTabs","scrollContainer","$tab","first","css","transform","last","debounce","func","wait","immediate","timeout","context","args","arguments","callNow","apply","touchEvents","special","destroyed","AbstractUIComponent","onInit","onUpdate","onDestroy","onShow","onClose","onReset","log","_console","debug","console","NAME","DATA_KEY","Popover","_this","_AbstractUIComponent","defaults","init","buildCache","bindEvents","unbindEvents","$el","removeData","container","containerAutoDetect","id","generateUUID","animation","animationIn","animationOut","animationSpeed","placement","placementChanged","title","content","offsetParent","_this2","$popover","close","show","setPosition","off","replace","c","r","random","toString","buildPopover","append","$arrow","arrowPos","popoverPosX","popoverPosY","containerInnerWidth","innerWidth","containerInnerHeight","innerHeight","popoverWidth","popoverHeight","outerHeight","popoverTriggerWidth","popoverTriggerHeight","popoverTriggerPosX","position","popoverTriggerPosY","arrowWidth","arrowHeight","round","will-change","popoverOverflowCount","popoverPosition","popoverOverflow","removeAttr","fixPopoverPosition","overflowAmount","_this3","_jQueryInterface","config","TypeError","JQUERY_NO_CONFLICT","Constructor","noConflict","Select","then","buildScroll","setData","reset","items","$select","$selectItems","$selectIconContainer","html","selectIconDefault","dynamicTitle","dynamicTitleDefault","$selectTitle","text","trim","searchApi","dynamicTitleEmptyDefault","$selectHeader","showSearch","searchData","$searchInput","searchString","search","Promise","primaryResolve","primaryReject","self","faPro","scrollContentHeight","searchRequest","type","contentOpen","searchPlaceholder","btnCloseText","labelTemplate","confirmCheck","confirmUncheck","preventUncheck","allowNoneOnRadioSelect","showValidStateIcon","itemsToExclude","primaryKeyword","preventClose","map","String","isArray","arr","showFooter","secondaryResolve","secondaryReject","selectItems","_renderItemList","_renderSearch","_renderFooter","$scrollableContent","$searchContainer","$searchIconContainer","$clearSearchButton","tabIndex","$footerContainer","$closeButton","buildSearchData","max-height","overflow-y","scroll","_this4","resolve","reject","selectLabels","_this5","checked","cb","onSelect","n","prop","has","getData","faNameSpace","searchUrl","itemCount","currentCount","value","encodeURIComponent","ajax","method","url","done","itemIds","when","$inputs","$input","inputValues","abort","results","toLocaleLowerCase","_this6","$otherSelects","zindex","z-index","scrollIntoView","behavior","block","inline","isEmptyObject","grep","appendItems","_this7","itemsArr","domItems","prepend","deselectItems","array","_this8","getItem","getSelectedItems","segment","ids","getSelectedItem","label","onSearch","Dropdown","offset","minWidth","positionObserver","JSON","parse","closeOnItemClick","$dropdown","next","align","$dropdownItem","menuRight","after","onItemClick","str","dropdownWidth","dropdownHeight","dropdownTriggerWidth","dropdownTriggerHeight","dropdownTriggerPosX","dropdownTriggerPosY","dropdownPosX","dropdownPosY","offsetX","offsetY","offsets","$containingParent","index","toLowerCase","containingBoundingRect","containerBoundingRect","maxTop","maxLeft","maxRight","maxBottom","Tooltip","$tooltip","buildTooltip","tooltipPosX","tooltipPosY","tooltipWidth","tooltipHeight","tooltipTriggerWidth","tooltipTriggerHeight","tooltipTriggerPosX","tooltipTriggerPosY","tooltipOverflowCount","tooltipPosition","tooltipOverflow","fixTooltipPosition","SectionTabs","checkForChanges","$dropdownContainer","$dropdownList","tabsCount","tabs","_name","moveToList","insertBefore","moveToDropdown","appendTo","overflowStatus","dropdownItems","moveableTabs","usedSpace","freeSpace","Collapse","$target","expanded","targetHeight","$indicator","whichTransitionEvent","transEndEventNames","WebkitTransition","MozTransition","transition","t","Toast","toasts","queue","processingQueue","onInitialize","addQueue","processQueue","shift","buildToast","uuid","placementX","placementY","dismiss","size","header","theme","template","maxBodyHeight","_renderTemplate","$inner","$closeBtn","toastPosX","toastPosY","toastWidth","toastHeight","body","bodyCloseBtn","_$$fn$NAME$defaults","Dialog","dialogs","buildDialog","footer","classes","centered","backdrop","preventScroll","closeBtn","callbacks","overflowVisible","actions","confirm","$prevDialog","eq","zIndex","opacity","visibility","checkForBackdrop","btnCancel","btnRemove","btnConfirm","visible","primary","attrs","overFlowVisible","_$$fn$NAME$defaults$1"],"mappings":"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","sourcesContent":["/*!\n * perfect-scrollbar v1.4.0\n * (c) 2018 Hyunje Jun\n * @license MIT\n */\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n var this$1 = this;\n\n for (var name in this$1.handlers) {\n this$1.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nvar processScrollDiff = function(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n};\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nvar updateGeometry = function(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n i.containerWidth = element.clientWidth;\n i.containerHeight = element.clientHeight;\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt(i.railXWidth * i.containerWidth / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n (i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt(i.railYHeight * i.containerHeight / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n roundedScrollTop *\n (i.railYHeight - i.scrollbarYHeight) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n};\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nvar clickRail = function(i) {\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n};\n\nvar dragThumb = function(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n};\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n startingScrollTop = element[scrollTop];\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nvar keyboard = function(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n};\n\nvar wheel = function(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = -1 * e.wheelDeltaX / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for <select> issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n var ref = getDeltaFromEvent(e);\n var deltaX = ref[0];\n var deltaY = ref[1];\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n var shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n element.scrollTop += deltaX * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== 'undefined') {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== 'undefined') {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n};\n\nvar touch = function(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n var element = i.element;\n\n function shouldPrevent(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n\n function shouldHandle(e) {\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = new Date().getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = new Date().getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(easingLoop);\n easingLoop = setInterval(function() {\n if (i.isInitialized) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n};\n\nvar defaultSettings = function () { return ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n}); };\n\nvar handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard: keyboard,\n wheel: wheel,\n touch: touch,\n};\n\nvar PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n var this$1 = this;\n if ( userSettings === void 0 ) userSettings = {};\n\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (var key in userSettings) {\n this$1.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n var focus = function () { return element.classList.add(cls.state.focus); };\n var blur = function () { return element.classList.remove(cls.state.focus); };\n\n this.isRtl = get(element).direction === 'rtl';\n this.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n var railXStyle = get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n var railYStyle = get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });\n updateGeometry(this);\n};\n\nPerfectScrollbar.prototype.update = function update () {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n set(this.scrollbarXRail, { display: 'block' });\n set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(get(this.scrollbarXRail).marginLeft) +\n toInt(get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(get(this.scrollbarYRail).marginTop) +\n toInt(get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n set(this.scrollbarXRail, { display: 'none' });\n set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n set(this.scrollbarXRail, { display: '' });\n set(this.scrollbarYRail, { display: '' });\n};\n\nPerfectScrollbar.prototype.onScroll = function onScroll (e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n};\n\nPerfectScrollbar.prototype.destroy = function destroy () {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n remove(this.scrollbarX);\n remove(this.scrollbarY);\n remove(this.scrollbarXRail);\n remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n};\n\nPerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n this.element.className = this.element.className\n .split(' ')\n .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n .join(' ');\n};\n\nexport default PerfectScrollbar;","import 'jquery';\n\n$.fn.extend({\n animateCss: function (animationName, callback) {\n\n var el = this;\n var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';\n\n el.addClass('animated ' + animationName).one(animationEnd, function(e) {\n\n $(this).removeClass('animated ' + animationName);\n\n if (callback) {\n callback();\n }\n\n }).children().on(animationEnd, function(e) {\n\n e.stopPropagation();\n });\n }\n});","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport './util/animate-css';\n\nwindow.Cool = window.Cool || {};\nwindow.Cool.settings = window.Cool.settings || {};\n\nclass Common {\n\n\tstatic initialize(opts) {\n\n // There's an error if opts is not defined\n opts = opts || {};\n\n // Save settings for later use\n window.Cool.settings = opts;\n\n // Init plugins\n $('[data-toggle=\"popover\"]').coolPopover(opts.popover);\n $('[data-toggle=\"select\"]').coolSelect(opts.select);\n $('[data-toggle=\"dropdown\"]').coolDropdown(opts.dropdown);\n $('[data-toggle=\"tooltip\"]').coolTooltip(opts.tooltip);\n $('[data-toggle=\"collapse\"]').coolCollapse(opts.collapse);\n $('[data-toggle=\"section-tabs\"]').coolSectionTabs(opts.sectionTabs);\n $('body').coolToast(opts.toast);\n $('body').coolDialog(opts.dialog);\n\n // Dom ready\n\t\t$('html').addClass('dom-ready');\n\n // Input group focus in\n\t\t$(document).on('focus', '.form-control', function () {\n\n if (!$(this).hasClass('disabled') && $(this).not(':disabled') && !$(this).attr('readonly')) {\n\n let $inputGroup = $(this).closest('.input-group');\n\n if (!$inputGroup.hasClass('input-group-focus')) {\n $inputGroup.addClass('input-group-focus');\n }\n }\n });\n\n // Input group focus out\n $(document).on('blur', '.form-control', function () {\n\n if (!$(this).hasClass('disabled') && $(this).not(':disabled') && !$(this).attr('readonly')) {\n\n let $inputGroup = $(this).closest('.input-group');\n\n if ($inputGroup.hasClass('input-group-focus')) {\n $inputGroup.removeClass('input-group-focus');\n }\n }\n });\n\n // Custom Form group\n $('.form-label-group').each(function(i, formLabelGroup) {\n\n let $formLabelGroup = $(formLabelGroup);\n\n $formLabelGroup.find('input').on('blur input change', function () {\n\n let val = $(this).val();\n\n if (val) {\n $(formLabelGroup).addClass('label-on-top');\n } else {\n $(formLabelGroup).removeClass('label-on-top');\n }\n\n }).trigger('change');\n });\n\n // Table actions\n $.each($('.table'), function() {\n\n if ($(this).find('[data-table-link], [data-table-btn]').length && !$(this).hasClass('table-hover')) {\n $(this).addClass('table-hover');\n }\n });\n\n $(document).on('click', '[data-table-link]', function(e) {\n\n let $container = $(this).parents('table, .table');\n let href = $(this).data('tableLink');\n let target = $(e.target);\n let exceptions = ['input', 'button', 'a', 'label', 'td.col-select'];\n let linkDisabled = false;\n\n $.each(exceptions, function(item) {\n\n if (target.is(item) || (item == 'a' && target.parent().is(item))) {\n linkDisabled = true;\n }\n });\n\n if ($container.hasClass('bulk-actions-active')) {\n linkDisabled = true;\n }\n\n if (target.hasClass('table-link-exclude')) {\n linkDisabled = true;\n }\n\n if (target.is('td, .td, img') && !linkDisabled) {\n\n if (e.ctrlKey || e.metaKey) {\n\n window.open(href, '_blank');\n\n } else {\n\n window.location.href = href;\n }\n\n } else {\n\n return;\n }\n });\n\n $(document).on('click', '[data-table-btn]', function(e) {\n\n let $container = $(this).parents('table, .table');\n let $self = $(this);\n let btn = $(this).data('tableButton');\n let target = $(e.target);\n let exceptions = ['input', 'button', 'a', 'label', 'td.col-select'];\n let btnDisabled = false;\n\n if (!btn) {\n\n btn = $self.find('button')[0];\n\n if (!btn) {\n return;\n }\n }\n\n $.each(exceptions, function(item) {\n\n if (target.is(item) || (item == 'a' && target.parent().is(item))) {\n btnDisabled = true;\n }\n });\n\n if ($container.hasClass('bulk-actions-active')) {\n btnDisabled = true;\n }\n\n if (target.hasClass('table-btn-exclude')) {\n btnDisabled = true;\n }\n\n if (target.is('td, .td, img') && !btnDisabled) {\n\n $(btn).click();\n\n } else {\n\n return;\n }\n });\n\n // button toggle\n $(document).on('click', '.btn-group-toggle .btn > input', function(e) {\n e.stopPropagation();\n });\n\n $(document).on('click', '.btn-group-toggle .btn', function() {\n $(this).find('input').trigger('click');\n $(this).parent().find('input').trigger('change');\n });\n\n $(document).on('change', '.btn-group-toggle .btn > input', function() {\n if ($(this).is(':checked')) {\n $(this).parent().addClass('active');\n } else {\n $(this).parent().removeClass('active');\n }\n });\n\n // Force select element unfocus after change\n $('select').on('change', function() {\n $(this).blur();\n });\n\n // Tabs\n $('.tab-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).parent().toggleClass('open');\n });\n\n $(document).on('click', function() {\n\n $('.tabs-container').removeClass('open');\n });\n\n // Sidebar togglers\n $('.sidebar-left-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).toggleClass('open');\n $('body').toggleClass('sidebar-left-open');\n });\n\n $('.sidebar-right-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).toggleClass('open');\n $('body').toggleClass('sidebar-right-open');\n });\n\n // Sidebar scroll\n $('.sidebar-content .ps__thumb-y').mousedown(function() {\n $(this).parent().parent().addClass('ps-mousedown-scroll');\n });\n\n $(document).mouseup(function() {\n\n if ($('.sidebar-content').hasClass('ps-mousedown-scroll')) {\n $('.sidebar-content').removeClass('ps-mousedown-scroll');\n }\n });\n\n // Sidebar left scroll\n let $sidebarLeft = $('.sidebar-left');\n let $sidebarLeftContent = $sidebarLeft.find('.sidebar-content');\n\n if ($sidebarLeftContent.length) {\n\n let sidebarLeftScroll = new PerfectScrollbar($sidebarLeftContent[0], {\n wheelSpeed: 2,\n wheelPropagation: true,\n minScrollbarLength: 20,\n suppressScrollX: true\n });\n\n $sidebarLeftContent.find('[data-toggle=\"collapse\"]').on('click', function() {\n\n setTimeout(() => {\n sidebarLeftScroll.update();\n }, 300);\n });\n }\n\n // Sidebar tabs\n let $sidebarTabs = $(document).find('.sidebar-tab');\n\n if ($sidebarTabs.length) {\n\n $.each($sidebarTabs, function(i, el) {\n\n let scrollContainer = $(el).find('.tab-content');\n\n const sidebarTabsScroll = new PerfectScrollbar(scrollContainer[0], {\n wheelSpeed: 2,\n wheelPropagation: true,\n minScrollbarLength: 20,\n suppressScrollX: true\n });\n });\n\n $('[name=\"sidebar-tab-select\"]').on('click', function() {\n\n let val = $(this).val();\n let $tab = $('#sidebar-tab-'+val);\n\n $sidebarTabs.not($tab).removeClass('active');\n $tab.addClass('active');\n\n $('[name=\"sidebar-tab-select\"]').not($(this)).removeClass('active');\n $(this).addClass('active');\n\n if ($tab[0] == $sidebarTabs.first()[0]) {\n\n $sidebarTabs.not($tab).find('.tab-content').css({\n 'transform': 'translate3d(100%, 0px, 0px)'\n });\n\n } else if ($tab[0] == $sidebarTabs.last()[0]) {\n\n $sidebarTabs.not($tab).find('.tab-content').css({\n 'transform': 'translate3d(-100%, 0px, 0px)'\n });\n\n } else {\n\n $sidebarTabs.first().not($tab).find('.tab-content').css({\n 'transform': 'translate3d(-100%, 0px, 0px)'\n });\n\n $sidebarTabs.last().not($tab).find('.tab-content').css({\n 'transform': 'translate3d(100%, 0px, 0px)'\n });\n }\n\n $tab.find('.tab-content').css({\n 'transform': 'none'\n });\n });\n }\n\t}\n}\n\nwindow.Cool.initialize = Common.initialize;\n\nexport default Common;","import 'jquery';\n\nconst debounce = function (func, wait, immediate) {\n\n\tlet timeout;\n\n\treturn function() {\n\n\t\tlet context = this;\n\t\tlet args = arguments;\n\t\tlet later = function() {\n\n\t\t\ttimeout = null;\n\n\t\t\tif (!immediate) {\n\t\t\t\tfunc.apply(context, args)\n\t\t\t};\n\t\t};\n\n\t\tlet callNow = immediate && !timeout;\n\n\t\tclearTimeout(timeout);\n\n\t\ttimeout = setTimeout(later, wait);\n\n\t\tif (callNow) {\n\t\t\tfunc.apply(context, args);\n\t\t}\n\t};\n};\n\nconst shallowProperty = function(key) {\n\n\treturn function(obj) {\n\n\t\treturn obj == null ? void 0 : obj[key];\n\t};\n};\n\nconst isArrayLike = function(collection) {\n\n\tlet length = shallowProperty('length');\n\n\treturn typeof length == 'number' && length >= 0 && length <= Math.pow(2, 53) - 1;\n};\n\nconst optimizeCb = function(func, context, argCount) {\n\n if (context === void 0) {\n \treturn func;\n\t}\n\n\tswitch (argCount == null ? 3 : argCount) {\n\n\t\tcase 1: return function(value) {\n\t\t\treturn func.call(context, value);\n\t\t};\n\n\t\tcase 3: return function(value, index, collection) {\n\t\t\treturn func.call(context, value, index, collection);\n\t\t};\n\t\tcase 4: return function(accumulator, value, index, collection) {\n\t\t\treturn func.call(context, accumulator, value, index, collection);\n\t\t};\n\t}\n\n return function() {\n\t\treturn func.apply(context, arguments);\n };\n};\n\nconst each = function(obj, iteratee, context) {\n\n\titeratee = optimizeCb(iteratee, context);\n\n\tlet i;\n\tlet length;\n\n\tif (isArrayLike(obj)) {\n\n\t\tfor (i = 0, length = obj.length; i < length; i++) {\n\t\t\titeratee(obj[i], i, obj);\n\t\t}\n\n\t} else {\n\n\t\tlet keys = Object.keys(obj);\n\n\t\tfor (i = 0, length = keys.length; i < length; i++) {\n\t\t\titeratee(obj[keys[i]], keys[i], obj);\n\t\t}\n\t}\n\n\treturn obj;\n};\n\nconst touchEvents = function () {\n\n\tlet result = false;\n\n\tif (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n\t\tresult = true;\n\t}\n\n\treturn result;\n};\n\n$.event.special.destroyed = {\n\n\tremove: function(obj) {\n\n\t\tif (obj.handler) {\n\t\t\tobj.handler();\n\t\t}\n\t}\n}\n\nexport {\n\tdebounce,\n\ttouchEvents,\n\teach\n}","export default class AbstractUIComponent {\n\n\t// Init callback\n onInit() {\n\n let onInit = this.opts.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(this);\n }\n }\n\n // Update callback\n onUpdate() {\n\n let onUpdate = this.opts.onUpdate;\n\n if (typeof onUpdate === 'function') {\n\n onUpdate.call(this);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.opts.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this);\n }\n }\n\n // Show callback\n onShow() {\n\n let onShow = this.opts.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(this);\n }\n }\n\n // Close callback\n onClose() {\n\n let onClose = this.opts.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(this);\n }\n }\n\n // Reset callback\n onReset() {\n\n let onReset = this.opts.onReset;\n\n if (typeof onReset === 'function') {\n\n onReset.call(this);\n }\n }\n\n // Debug log\n log(...args) {\n\n \tif (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n \t \tconsole.log(...args);\n }\n \t}\n }\n}","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolPopover';\nconst DATA_KEY = 'plugin_coolPopover';\n\nclass Popover extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.popover) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.popover, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$container = this.$el.data('container') ? $(this.$el.data('container')) : $(this.opts.container);\n this.containerAutoDetect = this.$el.data('containerAutoDetect') ? this.$el.data('containerAutoDetect') : this.opts.containerAutoDetect;\n this.id = 'popover-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.trigger = this.$el.data('trigger') ? this.$el.data('trigger') : this.opts.trigger;\n this.placement = this.$el.data('placement') ? this.$el.data('placement') : this.opts.placement;\n this.placementChanged = false;\n this.title = this.$el.data('title') ? this.$el.data('title') : this.opts.title;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n\n if (this.containerAutoDetect) {\n this.$container = this.$el.offsetParent();\n }\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n if (this.trigger === 'click') {\n\n this.$el.on('click'+'.'+NAME, () => {\n\n if (this.$popover) {\n this.close();\n } else {\n this.show();\n }\n });\n\n } else if (this.trigger === 'hover') {\n\n this.$el.on('mouseenter'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('mouseleave'+'.'+NAME, () => {\n\n this.close();\n });\n\n } else if (this.trigger === 'focus') {\n\n this.$el.on('focusin'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('focusout'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(window).on('resize', debounce(() => {\n\n if (this.$popover) {\n this.setPosition();\n this.onUpdate();\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Build popover\n buildPopover() {\n\n let content;\n\n \tif (typeof this.content === 'function') {\n \t\tcontent = this.content();\n \t} else {\n content = this.content;\n }\n\n \tthis.$popover = $(`\n \t\t<div class=\"popover\" role=\"tooltip\" id=\"${this.id}\">\n\n\t\t\t <div class=\"arrow\"></div>\n\n\t\t\t <h3 class=\"popover-header\">${this.title}</h3>\n\n\t\t\t <div class=\"popover-body\">${content}</div>\n\n\t\t\t</div>\n \t`);\n\n this.$container.append(this.$popover);\n this.$arrow = this.$popover.find('.arrow') ? this.$popover.find('.arrow') : false;\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$popover);\n this.log(this.$arrow);\n this.log('Id: '+this.id);\n this.log('Trigger: '+this.trigger);\n this.log('Placement: '+this.placement);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Title: '+this.title);\n this.log('Content: '+this.content);\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof placement === 'undefined' || placement === null) {\n placement = this.placement;\n }\n\n this.$popover.addClass('popover-'+placement);\n\n let containerInnerWidth = this.$container.innerWidth();\n let containerInnerHeight = this.$container.innerHeight();\n let popoverWidth = this.$popover.outerWidth(true);\n let popoverHeight = this.$popover.outerHeight(true);\n let popoverTriggerWidth = this.$el.outerWidth();\n let popoverTriggerHeight = this.$el.outerHeight();\n let popoverTriggerPosX = this.$el.position().left;\n let popoverTriggerPosY = this.$el.position().top;\n let arrowWidth = this.$arrow.outerWidth(true);\n let arrowHeight = this.$arrow.outerHeight(true);\n let arrowPos;\n let popoverPosX;\n let popoverPosY;\n\n if (placement === 'top') {\n\n popoverPosX = Math.round(popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2);\n popoverPosY = Math.round(popoverTriggerPosY - popoverHeight);\n arrowPos = Math.round(popoverWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n popoverPosX = Math.round(popoverTriggerPosX + popoverTriggerWidth);\n popoverPosY = Math.round(popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2);\n arrowPos = Math.round(popoverHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n popoverPosX = Math.round(popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2);\n popoverPosY = Math.round(popoverTriggerPosY + popoverTriggerHeight);\n arrowPos = Math.round(popoverWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n popoverPosX = Math.round(popoverTriggerPosX - popoverWidth);\n popoverPosY = Math.round(popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2);\n arrowPos = Math.round(popoverHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$popover.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+popoverPosX+'px, '+popoverPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n // Correct placement if popover goes outside of container\n let popoverOverflowCount = 0;\n let popoverPosition = {\n left: this.$popover.position().left,\n top: this.$popover.position().top,\n right: containerInnerWidth - (this.$popover.position().left + popoverWidth),\n bottom: containerInnerHeight - (this.$popover.position().top + popoverHeight),\n };\n let popoverOverflow = {\n left: false,\n top: false,\n right: false,\n bottom: false\n };\n\n if (popoverPosition.right < 0) {\n\n popoverOverflow.right = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from right');\n }\n\n if (popoverPosition.left < 0) {\n\n popoverOverflow.left = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from left');\n }\n\n if (popoverPosition.bottom < 0) {\n\n popoverOverflow.bottom = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from bottom');\n }\n\n if (popoverPosition.top < 0) {\n\n popoverOverflow.top = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from top');\n }\n\n if (popoverOverflowCount > 0) {\n\n if (!this.placementChanged && popoverOverflow.left && popoverPosition.right > popoverWidth) {\n\n this.log('Changing popover placement to right');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('right');\n\n } else if (!this.placementChanged && popoverOverflow.top && popoverPosition.top > popoverHeight) {\n\n this.log('Changing popover placement to bottom');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n\n } else if (!this.placementChanged && popoverOverflow.right && popoverPosition.left > popoverWidth) {\n\n this.log('Changing popover placement to left');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('left');\n\n } else if (!this.placementChanged && popoverOverflow.bottom && popoverPosition.top > popoverHeight) {\n\n this.log('Changing popover placement to top');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else if (!this.placementChanged && (placement !== 'top' || placement !== 'bottom') && (popoverOverflow.left || popoverOverflow.right)) {\n\n if (popoverPosition.top > popoverPosition.bottom) {\n\n this.log('Changing popover placement to top');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else {\n\n this.log('Changing popover placement to bottom');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n }\n\n } else {\n\n this.fixPopoverPosition = true;\n }\n\n if (this.fixPopoverPosition) {\n\n this.log('Adjusting popover size or position in order to popover fit in the container');\n\n if (popoverOverflow.left) {\n\n this.log('Popover overflowing from left');\n\n let overflowAmount = Math.abs(popoverPosition.left);\n let excludePlacements = ['top', 'bottom'];\n\n if ((popoverTriggerPosX >= popoverPosX + overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Popover adjusting width');\n\n popoverWidth -= overflowAmount;\n popoverPosX += overflowAmount;\n\n } else {\n\n this.log('Popover adjusting position x');\n\n popoverPosX += overflowAmount;\n arrowPos -= overflowAmount;\n }\n }\n\n if (popoverOverflow.top) {\n\n this.log('Popover overflowing from top');\n\n let overflowAmount = Math.abs(popoverPosition.top);\n\n this.log('Popover adjusting position y');\n\n popoverPosY += overflowAmount;\n arrowPos -= overflowAmount;\n }\n\n if (popoverOverflow.right) {\n\n this.log('Popover overflowing from right');\n\n let overflowAmount = Math.abs(popoverPosition.right);\n let excludePlacements = ['top', 'bottom'];\n\n if ((popoverTriggerPosX <= popoverPosX - overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Popover adjusting width');\n\n popoverWidth -= overflowAmount;\n\n } else {\n\n this.log('Popover adjusting position x');\n\n popoverPosX -= overflowAmount;\n arrowPos += overflowAmount;\n }\n }\n\n if (popoverOverflow.bottom) {\n\n this.log('Popover overflowing from bottom');\n\n let overflowAmount = Math.abs(popoverPosition.bottom);\n\n this.log('Popover adjusting position y');\n\n popoverPosY -= overflowAmount;\n arrowPos += overflowAmount;\n }\n\n if (placement === 'top') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$popover.css({\n width: popoverWidth,\n transform: 'translate3d('+popoverPosX+'px, '+popoverPosY+'px, 0px)'\n });\n\n this.fixPopoverPosition = false;\n\n this.log('Popover placement changed: '+this.placementChanged);\n this.log('Popover container inner width: '+containerInnerWidth+'px');\n this.log('Popover container inner height: '+containerInnerHeight+'px');\n this.log('Popover trigger width: '+popoverTriggerWidth+'px');\n this.log('Popover trigger height: '+popoverTriggerHeight+'px');\n this.log('popover trigger position x: '+popoverTriggerPosX+'px');\n this.log('Popover trigger position Y: '+popoverTriggerPosY+'px');\n this.log('Popover width: '+popoverWidth+'px');\n this.log('Popover height: '+popoverHeight+'px');\n this.log('Popover position x: '+popoverPosX+'px');\n this.log('Popover position y: '+popoverPosY+'px');\n this.log('Popover position left: '+popoverPosition.left+'px');\n this.log('Popover position top: '+popoverPosition.top+'px');\n this.log('Popover position right: '+popoverPosition.right+'px');\n this.log('Popover position bottom: '+popoverPosition.bottom+'px');\n }\n\n } else {\n\n this.log('Popover placement changed: '+this.placementChanged);\n this.log('Popover container inner width: '+containerInnerWidth+'px');\n this.log('Popover container inner height: '+containerInnerHeight+'px');\n this.log('Popover trigger width: '+popoverTriggerWidth+'px');\n this.log('Popover trigger height: '+popoverTriggerHeight+'px');\n this.log('popover trigger position x: '+popoverTriggerPosX+'px');\n this.log('Popover trigger position Y: '+popoverTriggerPosY+'px');\n this.log('Popover width: '+popoverWidth+'px');\n this.log('Popover height: '+popoverHeight+'px');\n this.log('Popover position x: '+popoverPosX+'px');\n this.log('Popover position y: '+popoverPosY+'px');\n this.log('Popover position left: '+popoverPosition.left+'px');\n this.log('Popover position top: '+popoverPosition.top+'px');\n this.log('Popover position right: '+popoverPosition.right+'px');\n this.log('Popover position bottom: '+popoverPosition.bottom+'px');\n }\n }\n\n // Show\n show() {\n\n if (this.$popover) {\n return;\n }\n\n this.buildPopover();\n this.setPosition();\n\n if (this.animation) {\n\n this.$popover.addClass(this.animationSpeed);\n this.$popover.animateCss(this.animationIn);\n this.$popover.addClass('show');\n this.$popover.attr('id', this.id);\n this.$el.attr('data-popover', this.id);\n\n } else {\n\n this.$popover.addClass('show');\n this.$popover.attr('id', this.id);\n this.$el.attr('data-popover', this.id);\n }\n\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$popover) {\n return;\n }\n\n if (this.animation && !this.$popover.hasClass('animated')) {\n\n this.$popover.animateCss(this.animationOut, () => {\n\n this.$popover.remove();\n this.$el.removeAttr('data-popover');\n this.$popover = null;\n this.placementChanged = false;\n\n this.onClose();\n });\n\n } else {\n\n this.$popover.remove();\n this.$el.removeAttr('data-popover');\n this.$popover = null;\n this.placementChanged = false;\n\n this.onClose();\n }\n }\n\n static _jQueryInterface(config) {\n\n \treturn this.each(function() {\n\n \t\tlet data = $(this).data(DATA_KEY);\n \t\tconst _config = typeof config === 'object' && config;\n\n \t\tif (!data) {\n \t\t\tdata = new Popover(this, _config);\n \t\t\t$(this).data(DATA_KEY, data);\n \t\t}\n\n \t\tif (typeof config === 'string') {\n\n \t\t\tif (typeof data[config] === 'undefined') {\n\t\t \tthrow new TypeError(`No method named \"${config}\"`)\n\t\t }\n\n\t\t data[config]()\n \t\t}\n\t });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Popover._jQueryInterface;\n $.fn[NAME].Constructor = Popover;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Popover._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n container: '.content-inner',\n containerAutoDetect: false,\n trigger: 'focus',\n placement: 'bottom',\n animation: true,\n animationIn: 'fadeIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n title: '',\n content: '',\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Popover;","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolSelect';\nconst DATA_KEY = 'plugin_coolSelect';\n\nclass Select extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.select) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.select, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache().then(() => {\n\n this.buildScroll();\n this.bindEvents();\n\n if (this.data[this.name].length > 0) {\n this.setData();\n }\n\n this.onInit();\n });\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.bindEvents();\n this.onUpdate();\n }\n\n // Reset plugin data\n reset() {\n\n this.data = {};\n this.data[this.name] = [];\n this.items = [];\n this.$select.find('.select-item').remove();\n this.$selectItems = [];\n this.$selectIconContainer.html(this.selectIconDefault);\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.searchData = [];\n this.$searchInput.val('');\n this.searchString = '';\n this.search.call(this);\n }\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n return new Promise((primaryResolve, primaryReject) => {\n\n let self = this;\n\n this.$el = $(this.el);\n this.$container = this.$el.parent();\n this.$selectHeader = this.$el.find('.select-header');\n this.$selectTitle = this.$el.find('.select-title');\n this.$selectIconContainer = this.$selectHeader.find('.select-icon');\n this.selectIconDefault = this.$selectHeader.find('.select-icon') ? this.$selectHeader.find('.select-icon').html() : '<i class=\"'+(this.opts.faPro ? 'fal' : 'fas')+'fa-angle-down icon\"></i>';\n this.name = this.$el.data('name') ? this.$el.data('name') : this.opts.name;\n this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;\n this.items = this.$el.data('items') ? this.$el.data('items') : this.opts.items;\n this.data = {};\n this.data[this.name] = [];\n this.searchData = [];\n this.searchApi = this.$el.data('searchApi') ? this.$el.data('searchApi') : this.opts.searchApi;\n this.searchRequest = null;\n this.type = this.$el.data('type') ? this.$el.data('type') : this.opts.type;\n this.contentOpen = false;\n this.searchPlaceholder = this.$el.data('search-placeholder') ? this.$el.data('search-placeholder') : this.opts.searchPlaceholder;\n this.btnCloseText = this.$el.data('btn-close-text') ? this.$el.data('btn-close-text') : this.opts.btnCloseText;\n this.labelTemplate = this.opts.labelTemplate;\n this.confirmCheck = this.opts.confirmCheck;\n this.confirmUncheck = this.opts.confirmUncheck;\n this.preventUncheck = this.opts.preventUncheck;\n this.dynamicTitle = this.$el.data('dynamicTitle') ? this.$el.data('dynamicTitle') : this.opts.dynamicTitle;\n this.dynamicTitleDefault = this.$el.data('dynamicTitleDefault') ? this.$el.data('dynamicTitleDefault') : this.opts.dynamicTitleDefault;\n this.dynamicTitleEmptyDefault = this.$el.data('dynamicTitleEmptyDefault') ? this.$el.data('dynamicTitleEmptyDefault') : this.opts.dynamicTitleEmptyDefault;\n this.allowNoneOnRadioSelect = this.$el.data('allowNoneOnRadioSelect') ? this.$el.data('allowNoneOnRadioSelect') : this.opts.allowNoneOnRadioSelect;\n this.showValidStateIcon = this.$el.data('showValidStateIcon') ? this.$el.data('showValidStateIcon') : this.opts.showValidStateIcon;\n this.itemsToExclude = this.$el.data('itemsToExclude') ? this.$el.data('itemsToExclude').replace(/\\s/g, '').split(',') : this.opts.itemsToExclude;\n this.primaryKeyword = this.$el.data('primaryKeyword') ? this.$el.data('primaryKeyword') : this.opts.primaryKeyword;\n this.preventClose = false;\n\n if (this.itemsToExclude.length > 0) {\n this.itemsToExclude = this.itemsToExclude.map(String);\n }\n\n if (this.opts.setData) {\n this.data = this.opts.setData;\n }\n\n if (this.$el.data('setData') && this.$el.data('setData') != '') {\n this.data = this.$el.data('setData');\n }\n\n // Convert data to be array so filters doesn't fail\n if (!Array.isArray(this.data[this.name]) && this.data[this.name] !== '' && this.data[this.name].length > 0) {\n\n const arr = this.data[this.name].toString().trim().split(',');\n\n this.data[this.name] = arr;\n }\n\n // Convert all values to string format to make filtering more simple\n if (this.data[this.name].length > 0) {\n this.data[this.name] = this.data[this.name].map(String);\n }\n\n if (this.data[this.name].length > 0 && this.itemsToExclude.length > 0) {\n\n this.data[this.name] = this.data[this.name].filter(function(item) {\n\n if (item[self.primaryKeyword]) {\n\n return self.itemsToExclude.indexOf(item[self.primaryKeyword].toString()) === -1;\n\n } else {\n\n return self.itemsToExclude.indexOf(item.toString()) === -1;\n }\n });\n }\n\n if (this.items.length > 0 && this.itemsToExclude.length > 0) {\n\n this.items = this.items.filter(function(item) {\n\n if (item[self.primaryKeyword]) {\n\n return self.itemsToExclude.indexOf(item[self.primaryKeyword].toString()) === -1;\n\n } else {\n\n return self.itemsToExclude.indexOf(item.toString()) === -1;\n }\n });\n }\n\n if (this.$el.find('.select-search').length) {\n this.showSearch = true;\n } else {\n this.showSearch = this.$el.data('showSearch') ? this.$el.data('showSearch') : this.opts.showSearch;\n }\n\n if (this.$el.find('.select-footer').length) {\n this.showFooter = true;\n } else {\n this.showFooter = this.$el.data('showFooter') ? this.$el.data('showFooter') : this.opts.showFooter;\n }\n\n this.$select = this.$el.find('.select-content');\n\n new Promise((secondaryResolve, secondaryReject) => {\n\n if (!this.$select.length) {\n\n let items = this._renderItemList(this.items);\n\n this.$select = $(`\n <div class=\"select-content\">\n\n ${this._renderSearch()}\n\n <div class=\"select-scrollable-content\"></div>\n\n ${this._renderFooter()}\n\n </div>\n `);\n\n this.$el.append(this.$select);\n this.$select.find('.select-scrollable-content').append(items);\n\n secondaryResolve();\n\n } else {\n\n const selectItems = this.$select.find('.select-item');\n\n if (selectItems.length > 0 && this.itemsToExclude.length > 0) {\n\n $.each(selectItems, (i, el) => {\n\n const val = $(el).find(':input').val();\n\n if (self.itemsToExclude.indexOf(val) > -1) {\n $(el).remove();\n }\n });\n }\n\n secondaryResolve();\n }\n\n }).then(() => {\n\n this.$scrollableContent = this.$select.find('.select-scrollable-content') ? this.$select.find('.select-scrollable-content') : false;\n this.$selectItems = this.$select.find('.select-item');\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.$searchContainer = this.$select.find('.select-search');\n this.$searchInput = this.$select.find('[name=\"select-search\"]');\n this.$searchIconContainer = this.$select.find('.select-search-icon');\n this.$clearSearchButton = this.$select.find('[data-clear-search]');\n\n // Prevent tabfocus from breaking select functionality\n this.$searchInput[0].tabIndex = -1;\n }\n\n if (this.showFooter) {\n\n this.$footerContainer = this.$select.find('.select-footer');\n this.$closeButton = this.$select.find('[data-select-close]');\n\n // Prevent tabfocus from breaking select functionality\n this.$closeButton[0].tabIndex = -1;\n }\n\n this.buildSearchData();\n\n this.log(this.$el);\n this.log(this.$select);\n this.log(this.$scrollableContent);\n this.log('Name: '+this.name);\n this.log('Show search: '+this.showSearch);\n this.log('Show footer: '+this.showFooter);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n this.log(this.items);\n this.log(this.searchData);\n\n primaryResolve();\n })\n });\n }\n\n // Build scroll\n buildScroll() {\n\n if (this.$scrollableContent.length > 0) {\n\n let scrollContentHeight = this.scrollContentHeight;\n\n if (this.showSearch) {\n scrollContentHeight = scrollContentHeight - (this.$searchContainer.outerHeight(true) || 0);\n }\n\n if (this.showFooter) {\n scrollContentHeight = scrollContentHeight - (this.$footerContainer.outerHeight(true) || 0);\n }\n\n this.$scrollableContent.css({\n 'max-height': (scrollContentHeight - parseInt(this.$scrollableContent.css('marginTop'), 10) - parseInt(this.$scrollableContent.css('marginBottom'), 10)) +'px'\n });\n\n if (touchEvents()) {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n } else {\n\n this.$scrollableContent.addClass('ps-dark');\n this.scroll = new PerfectScrollbar(this.$scrollableContent[0], {\n wheelSpeed: 1,\n wheelPropagation: false,\n minScrollbarLength: 20,\n scrollYMarginOffset : -1,\n suppressScrollY: true,\n suppressScrollX: true,\n });\n\n // Prevent tabfocus from breaking select functionality\n this.$scrollableContent.find('[tabindex=\"0\"]').attr('tabindex', -1);\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n\n this.$scrollableContent.addClass('ps-show-rail-y');\n this.scroll.settings.suppressScrollY = false;\n }\n }\n }\n }\n\n // Build search data\n buildSearchData() {\n\n return new Promise((resolve, reject) => {\n\n this.searchData = [];\n\n let selectLabels = this.$select.find('[data-label]');\n\n $.each(selectLabels, (i, el) => {\n\n this.searchData.push({\n id: i,\n val: $(el).text().trim()\n });\n });\n\n resolve();\n });\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n let self = this;\n\n this.$selectHeader.on('click'+'.'+NAME, () => {\n\n if (this.contentOpen) {\n this.close();\n } else if (this.$selectItems.length > 0 || this.searchApi) {\n this.show();\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"checkbox\"]', function() {\n\n let el = this;\n let val = $(this).val();\n let closeTimeout = 600; // ms\n\n self.preventClose = true;\n\n if (typeof self.confirmCheck === 'function' && el.checked) {\n\n el.checked = false;\n\n self.confirmCheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n el.checked = true;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (el.checked) {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (typeof self.confirmUncheck === 'function' && !el.checked) {\n\n el.checked = true;\n\n self.confirmUncheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n el.checked = false;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (!el.checked && !self.preventUncheck) {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (!el.checked && self.preventUncheck) {\n\n el.checked = true;\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n let val = $(this).val();\n\n if (this.checked) {\n\n self.data[self.name] = [val];\n self.$select.find('input[type=\"radio\"]').not($(this)).prop('checked', false);\n self.$select.find('input[type=\"radio\"]').not($(this)).removeClass('checked');\n\n } else {\n\n self.data[self.name] = [];\n }\n });\n\n this.$el.on('click'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n if ($(this).hasClass('checked') && self.allowNoneOnRadioSelect) {\n\n self.data[self.name] = [];\n $(this).prop('checked', false);\n $(this).removeClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html(self.dynamicTitleDefault);\n }\n\n } else {\n\n $(this).addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($(this).parent().find('[data-label]').text());\n }\n }\n\n self.onSelect(this);\n });\n\n if (this.scroll) {\n\n this.$scrollableContent.find('.ps__thumb-y').mousedown(function() {\n self.$scrollableContent.addClass('ps-mousedown-scroll');\n });\n\n $(document).mouseup(function() {\n\n if (self.$scrollableContent.hasClass('ps-mousedown-scroll')) {\n self.$scrollableContent.removeClass('ps-mousedown-scroll');\n }\n });\n }\n\n if (this.showSearch) {\n\n this.$searchInput.on('keydown'+'.'+NAME, debounce(function () {\n\n self.searchString = $(this).val().trim();\n self.search.call(self);\n\n }, 250));\n\n this.$searchInput.on('focusin'+'.'+NAME, function () {\n\n self.$searchContainer.addClass('focused');\n });\n\n this.$searchInput.on('focusout'+'.'+NAME, function () {\n\n self.$searchContainer.removeClass('focused');\n });\n\n this.$searchContainer.on('click'+'.'+NAME, '[data-clear-search]', function () {\n\n if (self.searchString.length) {\n\n self.$searchInput.val('');\n self.searchString = '';\n self.search.call(self);\n\n } else {\n\n return;\n }\n });\n }\n\n if (this.showFooter) {\n\n this.$closeButton.on('click'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(document).on('touchstart click', function(e) {\n\n if (!self.$el.is(e.target) && !self.$el.has(e.target).length && self.contentOpen && !self.preventClose) {\n\n self.close.call(self);\n }\n });\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Get data\n getData(data) {\n\n if (data) {\n return this.data[data];\n } else {\n return this.data;\n }\n }\n\n // Set data\n setData() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.searchApi.length) {\n\n let searchUrl = this.searchApi;\n let itemCount = this.data[this.name].length;\n let currentCount = 0;\n\n this.data[this.name].forEach(function(value) {\n\n searchUrl += encodeURIComponent('#'+value);\n currentCount++;\n\n if (currentCount !== itemCount) {\n searchUrl += '+';\n }\n });\n\n $.ajax({\n method: 'GET',\n url: searchUrl\n }).done(function(data) {\n\n let items = data.map(item => {\n\n item.id = item[self.primaryKeyword].toString();\n\n return item;\n });\n\n let itemIds = items.map(item => {\n return item.id.toString()\n });\n\n // Remove value from data if it doesn't exist anymore\n self.data[self.name] = self.data[self.name].filter(function(value) {\n return itemIds.indexOf(value.toString()) > -1;\n });\n\n if (self.data[self.name].length == 0) {\n self.$selectIconContainer.html(self.selectIconDefault);\n }\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) > -1 && self.itemsToExclude.indexOf(item.id) === -1 && item.id != 0;\n });\n\n let result = self._renderItemList(items);\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let $inputs = self.$scrollableContent.find(':input');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n\n if (self.$scrollableContent.find(':input[type=\"checkbox\"]').length) {\n self.type = 'checkbox';\n } else if (self.$scrollableContent.find(':input[type=\"radio\"]').length) {\n self.type = 'radio';\n }\n\n if (self.type == 'checkbox') {\n\n self.data[self.name].forEach(function(value) {\n\n let $input = $inputs.filter(function() {\n return this.value == value;\n });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (self.type == 'radio') {\n\n let $input = $inputs.filter(function() {\n return this.value == self.data[self.name][0];\n });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n self.onSelect($input[0]);\n }\n });\n });\n\n } else {\n\n // Remove value from data if it doesn't exist anymore\n let $inputs = this.$scrollableContent.find(':input');\n let inputValues = $inputs.length > 0 ? $inputs.map(function() {\n return this.value.toString();\n }).get() : [];\n\n this.data[this.name] = this.data[this.name].filter(function(value) {\n return inputValues.indexOf(value.toString()) > -1;\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.$scrollableContent.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$scrollableContent.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n this.data[this.name].forEach(function(value) {\n\n let $input = $inputs.filter(function() {\n return this.value == value\n });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let $input = $inputs.filter(function() {\n return this.value == self.data[self.name][0];\n });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.onSelect($input[0]);\n }\n }\n }\n\n // Search\n search() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.searchString.length) {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n\n if (this.searchRequest !== null) {\n this.searchRequest.abort();\n }\n\n this.searchRequest = $.ajax({\n method: 'GET',\n url: this.searchApi + this.searchString\n }).done(function(data) {\n\n self.searchRequest = null;\n\n let items = data.map(item => {\n\n item.id = item[self.primaryKeyword].toString();\n\n return item;\n });\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) === -1 && self.itemsToExclude.indexOf(item.id) === -1 && item.id != 0;\n });\n\n let result = self._renderItemList(items);\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let faNameSpace = self.opts.faPro ? 'fal' : 'fas';\n\n self.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n self.$searchIconContainer.attr('data-clear-search', 'true');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n });\n });\n\n } else {\n\n let results = this.searchData.filter(function(item) {\n return item.val.toLocaleLowerCase().indexOf(self.searchString.toLocaleLowerCase()) > -1;\n });\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n\n results.forEach(function(item) {\n $(self.$selectItems[item.id]).addClass('visible');\n });\n\n this.$selectItems.not('.visible').addClass('d-none');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', 'true');\n }\n\n } else {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n\n } else {\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n }\n }\n\n if (this.scroll) {\n this.scroll.update();\n }\n\n this.onUpdate();\n }\n\n // Show\n show() {\n\n if (this.$el.hasClass('show')) {\n return;\n }\n\n let $otherSelects = $('.select.show');\n let zindex = 1;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if ($otherSelects.length) {\n zindex = parseInt($otherSelects.first().css('z-index'), 10) + 2;\n }\n\n this.$el.css({\n 'max-height': (this.scrollContentHeight + this.$selectHeader.outerHeight(true))+'px'\n });\n\n this.$el.addClass('show');\n\n if (!$otherSelects.length) {\n zindex = parseInt(this.$el.css('z-index'), 10) + 1;\n }\n\n this.$el.css({\n 'z-index': zindex\n });\n\n if (this.scroll && this.$scrollableContent.length) {\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n this.$scrollableContent[0].scrollTop = 1;\n this.$scrollableContent[0].scrollTop = 0;\n }\n }\n\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-angle-up icon\"></i>`);\n\n setTimeout(() => {\n this.$el[0].scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'nearest'});\n }, 300);\n\n this.contentOpen = true;\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.preventClose) {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n this.$el.css('max-height', '');\n this.$el.removeClass('show');\n\n setTimeout(() => {\n self.$el.removeAttr('style');\n }, 300);\n\n if (this.data[this.name].length > 0 && this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n this.contentOpen = false;\n this.onClose();\n }\n }\n\n // On select\n onSelect(el) {\n\n let self = this;\n let onSelect = this.opts.onSelect;\n let data = $(el).parents('.select-item').data();\n\n if (this.searchApi.length && !$.isEmptyObject(data)) {\n\n if ($(el).length && el.checked) {\n\n this.items.push(data);\n\n } else {\n\n this.items = $.grep(this.items, function(item) { return item[self.primaryKeyword] != data.id });\n }\n }\n\n if (typeof onSelect === 'function') {\n\n onSelect.call(el, data, this);\n }\n }\n\n // Add more items after plugin is already initialized\n appendItems(items, selectItems) {\n\n return new Promise((resolve, reject) => {\n\n let self = this;\n\n if (!$.isArray(items)) {\n\n let itemsArr = [];\n\n itemsArr.push(items);\n items = itemsArr;\n }\n\n items = items.filter(function(item) {\n return self.itemsToExclude.indexOf(item[self.primaryKeyword].toString()) === -1;\n });\n\n items.forEach(item => {\n\n this.items.push(item);\n });\n\n let domItems = this._renderItemList(items);\n\n this.$scrollableContent.prepend(domItems);\n this.$selectItems = this.$select.find('.select-item');\n\n this.buildSearchData().then(() => {\n\n if (this.$selectItems.length > 0) {\n\n if (this.$select.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$select.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n items.forEach(item => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = $input.val().toString();\n\n $input.prop('checked', true);\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name].push(val) : false;\n this.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let item = items[0];\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = $input.val().toString();\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name] = [val] : false;\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.$select.find('input[type=\"radio\"]').not($input).prop('checked', false);\n this.$select.find('input[type=\"radio\"]').not($input).removeClass('checked');\n this.onSelect($input[0]);\n }\n }\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectHeader.attr('style')) {\n this.$selectHeader.removeAttr('style');\n }\n\n if (this.$selectIconContainer.hasClass('d-none')) {\n this.$selectIconContainer.removeClass('d-none');\n }\n\n resolve();\n });\n });\n }\n\n // Deselect items\n deselectItems(array) {\n\n return new Promise((resolve, reject) => {\n\n array.forEach(id => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == id });\n\n if ($input[0].checked) {\n\n $input.trigger('click');\n }\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n });\n }\n\n // Get item\n getItem(key, val) {\n\n let result = $.grep(this.items, function(item) { return item[key] == val })[0];\n\n return result ? result : null;\n }\n\n // Get selected items\n getSelectedItems(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(String);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(item.id.toString()) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result;\n }\n\n // Get selected item\n getSelectedItem(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(String);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(item.id.toString()) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result[0] == null ? null : result[0];\n }\n\n _renderItemList(items) {\n\n let result = [];\n\n for (let i = 0; i < items.length; ++i) {\n\n let item = items[i];\n let label = '';\n\n if (typeof this.labelTemplate === 'function') {\n\n label = this.labelTemplate(item);\n\n } else {\n\n if (item.name) {\n label = item.name;\n } else if (item.label) {\n label = item.label;\n } else if (item.value) {\n label = item.value;\n }\n }\n\n result.push($(`\n\n <div class=\"select-item\">\n\n <div class=\"select-item-${this.type}\">\n\n <div class=\"styled-${this.type}\">\n\n <input type=\"${this.type}\" id=\"select-${this.name}-${items[i].id}\" value=\"${items[i].id}\" tabindex=\"-1\">\n\n <label for=\"select-${this.name}-${items[i].id}\">\n\n <span class=\"radio-inner\">\n <svg viewBox=\"0 0 18 18\">\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n </svg>\n </span>\n\n <span class=\"${this.type}-label\"${typeof this.labelTemplate !== 'function' ? ' data-label' : ''}>\n ${label}\n </span>\n\n </label>\n\n </div>\n\n </div>\n\n </div>\n\n `).data(item));\n }\n\n return result;\n }\n\n _renderSearch() {\n\n if (!this.showSearch) {\n\n return '';\n\n } else {\n\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n return `\n\n <div class=\"select-search\">\n\n <div class=\"select-search-input\">\n\n <input type=\"text\" name=\"select-search\" value=\"\" placeholder=\"${this.searchPlaceholder}\" tabindex=\"-1\">\n\n </div>\n\n <div class=\"select-search-icon\">\n\n <i class=\"${faNameSpace} fa-search icon\"></i>\n\n </div>\n\n </div>\n\n `;\n }\n }\n\n _renderFooter() {\n\n if (!this.showFooter) {\n\n return '';\n\n } else {\n\n return `\n\n <div class=\"select-footer\">\n\n <button class=\"btn btn-block btn-secondary\" type=\"button\" tabindex=\"-1\" data-select-close >\n ${this.btnCloseText}\n </button>\n\n </div>\n\n `;\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Select(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Select._jQueryInterface;\n $.fn[NAME].Constructor = Select;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Select._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n name: '',\n type: 'checkbox',\n labelTemplate: null,\n confirmCheck: null,\n confirmUncheck: null,\n setData: null,\n scrollContentHeight: 100,\n faPro: false,\n items: [],\n showSearch: false,\n showFooter: false,\n searchApi: false,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n onReset: null,\n onSearch: null,\n onSelect: null,\n buildScroll: null,\n searchPlaceholder: null,\n btnCloseText: null,\n debug: false,\n dynamicTitle: false,\n dynamicTitleDefault: '',\n dynamicTitleEmptyDefault: '',\n allowNoneOnRadioSelect: true,\n preventUncheck: false,\n showValidStateIcon: true,\n itemsToExclude: [],\n primaryKeyword: 'id'\n }\n}\n\nexport default Select;","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolDropdown';\nconst DATA_KEY = 'plugin_coolDropdown';\n\nclass Dropdown extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.dropdown) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.dropdown, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n $.when(this.buildCache()).then(() => {\n this.buildScroll();\n this.bindEvents();\n this.onInit();\n });\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$el.addClass('dropdown-trigger');\n this.$container = this.$el.parent('.dropdown');\n this.id = 'dropdown-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.offset = this.$el.data('offset') ? this.$el.data('offset') : this.opts.offset;\n this.minWidth = this.$el.data('minWidth') ? this.$el.data('minWidth') : this.opts.minWidth;\n this.scroll = this.$el.data('scroll') ? this.$el.data('scroll') : this.opts.scroll;\n this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;\n this.positionObserver = this.$el.attr('data-position-observer') ? JSON.parse(this.$el.attr('data-position-observer')) : this.opts.positionObserver;\n this.closeOnItemClick = this.$el.data('closeOnItemClick') ? this.$el.data('closeOnItemClick') : this.opts.closeOnItemClick;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n this.contentOpen = false;\n\n if (this.$container.hasClass('dropup')) {\n this.placement = 'top';\n } else if (this.$container.hasClass('dropright')) {\n this.placement = 'right';\n } else if (this.$container.hasClass('dropbottom')) {\n this.placement = 'bottom';\n } else {\n this.placement = 'left';\n }\n\n if (typeof this.content === 'function') {\n\n let menuRight = this.opts.align === 'end' ? ' dropdown-menu-right' : '';\n\n this.$dropdown = $(`\n <div class=\"dropdown-menu${menuRight}\" id=\"${this.id}\">\n ${this.content()}\n </div>\n `);\n\n $.when(this.$el.after(this.$dropdown)).then(() => {\n\n this.$scrollableContent = this.$dropdown.find('.dropdown-scrollable-content') ? this.$dropdown.find('.dropdown-scrollable-content') : false;\n this.$dropdown.hasClass('dropdown-menu-right') ? this.align = 'end' : this.align = 'start';\n this.$dropdownItem = this.$dropdown.find('.dropdown-item');\n\n if (this.minWidth) {\n this.$dropdown.css('min-width', this.minWidth+'px');\n }\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$dropdown);\n this.log(this.$scrollableContent);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Offset: '+this.offset);\n this.log('Min width: '+this.minWidth);\n this.log('Content: '+this.content);\n this.log('Scroll: '+this.scroll);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n\n return true;\n });\n\n } else {\n\n this.$dropdown = this.$el.next('.dropdown-menu') ? this.$el.next('.dropdown-menu') : false;\n this.$dropdown.hasClass('dropdown-menu-right') ? this.align = 'end' : this.align = 'start';\n this.$scrollableContent = this.$dropdown.find('.dropdown-scrollable-content') ? this.$dropdown.find('.dropdown-scrollable-content') : false;\n this.$dropdownItem = this.$dropdown.find('.dropdown-item');\n\n if (this.minWidth) {\n this.$dropdown.css('min-width', this.minWidth+'px');\n }\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$dropdown);\n this.log(this.$scrollableContent);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Offset: '+this.offset);\n this.log('Min width: '+this.minWidth);\n this.log('Content: '+this.opts.content);\n this.log('Scroll: '+this.scroll);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n\n return true;\n }\n }\n\n // Build scroll\n buildScroll() {\n\n if (this.opts.scroll && this.$scrollableContent.length) {\n\n this.$scrollableContent.css({\n 'max-height': this.scrollContentHeight+'px'\n });\n\n if (touchEvents()) {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n } else {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n this.scroll = new PerfectScrollbar(this.$scrollableContent[0], {\n wheelSpeed: 1,\n wheelPropagation: false,\n minScrollbarLength: 20\n });\n\n this.$scrollableContent.addClass('ps-show-rail-y');\n }\n }\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n let self = this;\n\n this.$el.on('click'+'.'+NAME, () => {\n\n if (this.contentOpen) {\n this.close();\n } else {\n this.show();\n }\n });\n\n this.$dropdownItem.on('click'+'.'+NAME, function() {\n\n if (self.closeOnItemClick) {\n self.close();\n }\n\n self.onItemClick(this);\n });\n\n $(document).on('touchstart click', (e) => {\n\n if (!this.$el.is(e.target) && !this.$dropdown.is(e.target) && this.$dropdown.has(e.target).length === 0 && this.contentOpen) {\n this.close();\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n this.setPosition();\n this.onUpdate();\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof str === 'undefined' || str === null) {\n placement = this.placement;\n }\n\n let dropdownWidth = this.$dropdown.outerWidth(true);\n let dropdownHeight = this.$dropdown.outerHeight(true);\n let dropdownTriggerWidth = this.$el.outerWidth(true);\n let dropdownTriggerHeight = this.$el.outerHeight(true);\n let dropdownTriggerPosX = this.$el.position().left;\n let dropdownTriggerPosY = this.$el.position().top;\n let dropdownPosX = 0;\n let dropdownPosY = 0;\n let offsetX = 0;\n let offsetY = 0;\n\n if (placement === 'top') {\n\n if (this.align === 'end') {\n dropdownPosX = dropdownTriggerWidth - dropdownWidth;\n } else {\n dropdownPosX = dropdownTriggerPosX;\n }\n\n dropdownPosY = dropdownTriggerPosY - dropdownHeight;\n\n } else if (placement === 'right') {\n\n dropdownPosX = dropdownTriggerPosX + dropdownTriggerWidth;\n dropdownPosY = dropdownTriggerPosY;\n\n } else if (placement === 'bottom') {\n\n if (this.align === 'end') {\n dropdownPosX = dropdownTriggerWidth - dropdownWidth;\n } else {\n dropdownPosX = dropdownTriggerPosX;\n }\n\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight;\n\n } else if (placement === 'left') {\n\n dropdownPosX = dropdownTriggerPosX - dropdownWidth;\n dropdownPosY = dropdownTriggerPosY;\n }\n\n if (this.offset) {\n\n const offsets = this.offset.split(',');\n\n offsetX = offsets[0];\n offsetY = offsets[1];\n dropdownPosX += parseInt(offsetX, 10);\n dropdownPosY += parseInt(offsetY, 10);\n }\n\n if (this.positionObserver && this.$container.length > 0) {\n\n // this is not set during init so we have to fetch it\n // and let's assume that this containing parent fits and is inside\n // viewport\n let $containingParent = this.$container.parent();\n let index = 0;\n while (\n $containingParent.css('overflow-x') !== 'hidden' && \n $containingParent.css('overflow') !== 'hidden' &&\n ($containingParent.prop('tagName') || '').toLowerCase() !== 'body' &&\n index < 100\n ) {\n $containingParent = $containingParent.parent();\n\n if (!$containingParent.get(0)) {\n return;\n }\n\n ++index;\n }\n\n if (!$containingParent.get(0)) {\n return;\n }\n\n const containingBoundingRect = $containingParent.get(0).getBoundingClientRect();\n const containerBoundingRect = this.$container.get(0).getBoundingClientRect();\n\n if (containingBoundingRect.width < dropdownWidth) {\n this.$dropdown.css('max-width', containingBoundingRect.width);\n dropdownWidth = containingBoundingRect.width;\n } else {\n this.$dropdown.css('max-width', '');\n }\n\n if (containingBoundingRect.height < dropdownHeight) {\n this.$dropdown.css('max-height', containingBoundingRect.height);\n dropdownHeight = containingBoundingRect.height;\n } else {\n this.$dropdown.css('max-height', '');\n }\n\n const maxTop = Math.max(Math.abs(containingBoundingRect.y - containerBoundingRect.y), 0);\n const maxLeft = Math.max(Math.abs(containingBoundingRect.x - containerBoundingRect.x), 0);\n const maxRight = $containingParent.get(0).scrollWidth - (containerBoundingRect.x + containerBoundingRect.width);\n const maxBottom = $containingParent.get(0).scrollHeight - (containerBoundingRect.y + (placement === 'dropbottom' ? containerBoundingRect.height : 0));\n\n if (maxLeft < dropdownWidth && dropdownPosX < dropdownTriggerPosX) {\n dropdownPosX = dropdownTriggerPosX;\n\n // would be on top of the trigger\n if (dropdownTriggerPosY + dropdownTriggerHeight > dropdownPosY) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + (offsetY > 0 ? offsetY : 0);\n }\n }\n\n if (maxRight < dropdownWidth && dropdownPosX + dropdownWidth > dropdownTriggerPosX + dropdownTriggerWidth) {\n dropdownPosX = dropdownTriggerPosX + dropdownTriggerWidth - dropdownWidth;\n\n if (dropdownTriggerPosY + dropdownTriggerHeight > dropdownPosY) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + (offsetY > 0 ? offsetY : 0);\n }\n }\n\n if (dropdownPosY < dropdownTriggerPosY && maxTop < dropdownHeight) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + offsetY;\n }\n\n if (dropdownPosY >= dropdownTriggerPosY && maxBottom < dropdownHeight) {\n if (dropdownPosX >= dropdownTriggerPosX + dropdownTriggerWidth || dropdownTriggerPosX >= dropdownPosX + dropdownWidth) {\n dropdownPosY = dropdownTriggerPosY - (dropdownHeight - maxBottom);\n } else {\n dropdownPosY = dropdownTriggerPosY - dropdownHeight - offsetY\n }\n }\n }\n\n this.$dropdown.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+Math.round(dropdownPosX)+'px, '+Math.round(dropdownPosY)+'px, 0px)',\n 'will-change': 'transform'\n });\n\n this.log('Dropdown trigger width: '+dropdownTriggerWidth+'px');\n this.log('Dropdown trigger height: '+dropdownTriggerHeight+'px');\n this.log('Dropdown trigger position x: '+dropdownTriggerPosX+'px');\n this.log('Dropdown trigger position Y: '+dropdownTriggerPosY+'px');\n this.log('Dropdown width: '+dropdownWidth+'px');\n this.log('Dropdown height: '+dropdownHeight+'px');\n this.log('Dropdown position x: '+dropdownPosX+'px');\n this.log('Dropdown position y: '+dropdownPosY+'px');\n }\n\n // Show\n show() {\n\n if (!this.$dropdown || this.$dropdown.hasClass('show')) {\n return;\n }\n\n this.setPosition();\n\n if (this.animation) {\n\n this.$dropdown.attr('x-placement', this.placement+'-'+this.align);\n this.$dropdown.addClass(this.animationSpeed);\n this.$dropdown.animateCss(this.animationIn);\n this.$dropdown.addClass('show');\n this.$dropdown.attr('id', this.id);\n this.$el.attr('data-dropdown', this.id);\n\n } else {\n\n this.$dropdown.attr('x-placement', this.placement+'-'+this.align);\n this.$dropdown.addClass('show');\n this.$dropdown.attr('id', this.id);\n this.$el.attr('data-dropdown', this.id);\n }\n\n if (this.opts.scroll && this.scroll && this.$scrollableContent.length) {\n this.$scrollableContent[0].scrollTop = 1;\n this.$scrollableContent[0].scrollTop = 0;\n }\n\n this.contentOpen = true;\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$dropdown) {\n return;\n }\n\n if (this.animation && !this.$dropdown.hasClass('animated')) {\n\n this.$dropdown.animateCss(this.animationOut, () => {\n this.$dropdown.removeClass('show');\n this.$el.removeAttr('data-dropdown');\n });\n\n } else {\n\n this.$dropdown.removeClass('show');\n this.$el.removeAttr('data-dropdown');\n }\n\n this.contentOpen = false;\n this.onClose();\n }\n\n // Item callback\n onItemClick(el) {\n\n let onItemClick = this.opts.onItemClick;\n\n if (typeof onItemClick === 'function') {\n\n onItemClick.call(el);\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Dropdown._jQueryInterface;\n $.fn[NAME].Constructor = Dropdown;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Dropdown._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n animation: true,\n animationIn: 'zoomIn',\n animationOut: 'zoomOut',\n animationSpeed: 'fastest',\n offset: null,\n minWidth: null,\n align: 'start',\n closeOnItemClick: true,\n positionObserver: true,\n content: false,\n scroll: true,\n scrollContentHeight: 100,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n onItemClick: null,\n debug: false\n }\n}\n\nexport default Dropdown;","import 'jquery';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolTooltip';\nconst DATA_KEY = 'plugin_coolTooltip';\n\nclass Tooltip extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.tooltip) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.tooltip, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$container = this.$el.data('container') ? $(this.$el.data('container')) : $(this.opts.container);\n this.id = 'tooltip-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.placement = this.$el.data('placement') ? this.$el.data('placement') : this.opts.placement;\n this.placementChanged = false;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n this.$el.on('mouseenter'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('mouseleave'+'.'+NAME, () => {\n\n this.close();\n });\n\n this.$el.on('blur'+'.'+NAME, () => {\n\n this.close();\n });\n\n this.$el.on('destroyed'+'.'+NAME, () => {\n\n this.close();\n });\n\n $(window).on('resize', debounce(() => {\n\n if (this.$tooltip) {\n this.setPosition();\n this.onUpdate();\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Build tooltip\n buildTooltip() {\n\n this.$tooltip = $(`\n\n <div class=\"tooltip\" role=\"tooltip\" id=\"${this.id}\">\n\n <div class=\"arrow\"></div>\n\n <div class=\"tooltip-inner\">${this.content}</div>\n\n </div>\n\n `);\n\n this.$container.append(this.$tooltip);\n this.$arrow = this.$tooltip.find('.arrow');\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$tooltip);\n this.log(this.$arrow);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Placement: '+this.placement);\n this.log('Content: '+this.content);\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof placement === 'undefined' || placement === null) {\n placement = this.placement;\n }\n\n this.$tooltip.addClass('tooltip-'+placement);\n\n let containerInnerWidth = this.$container.innerWidth();\n let containerInnerHeight = this.$container.innerHeight();\n let tooltipWidth = this.$tooltip.outerWidth(true);\n let tooltipHeight = this.$tooltip.outerHeight(true);\n let tooltipTriggerWidth = this.$el.outerWidth();\n let tooltipTriggerHeight = this.$el.outerHeight();\n let tooltipTriggerPosX = this.$el.offset().left;\n let tooltipTriggerPosY = this.$el.offset().top;\n let arrowWidth = this.$arrow.outerWidth(true);\n let arrowHeight = this.$arrow.outerHeight(true);\n let arrowPos;\n let tooltipPosX;\n let tooltipPosY;\n\n if (placement === 'top') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - (tooltipWidth - tooltipTriggerWidth) / 2);\n tooltipPosY = Math.round(tooltipTriggerPosY - tooltipHeight);\n arrowPos = Math.round(tooltipWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX + tooltipTriggerWidth);\n tooltipPosY = Math.round(tooltipTriggerPosY - (tooltipHeight - tooltipTriggerHeight) / 2);\n arrowPos = Math.round(tooltipHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - (tooltipWidth - tooltipTriggerWidth) / 2);\n tooltipPosY = Math.round(tooltipTriggerPosY + tooltipTriggerHeight);\n arrowPos = Math.round(tooltipWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - tooltipWidth);\n tooltipPosY = Math.round(tooltipTriggerPosY - (tooltipHeight - tooltipTriggerHeight) / 2);\n arrowPos = Math.round(tooltipHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$tooltip.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+tooltipPosX+'px, '+tooltipPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n // Correct placement if tooltip goes outside of container\n let tooltipOverflowCount = 0;\n let tooltipPosition = {\n left: this.$tooltip.position().left,\n top: this.$tooltip.position().top,\n right: containerInnerWidth - (this.$tooltip.position().left + tooltipWidth),\n bottom: containerInnerHeight - (this.$tooltip.position().top + tooltipHeight),\n };\n let tooltipOverflow = {\n left: false,\n top: false,\n right: false,\n bottom: false\n };\n\n if (tooltipPosition.right < 0) {\n\n tooltipOverflow.right = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from right');\n }\n\n if (tooltipPosition.left < 0) {\n\n tooltipOverflow.left = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from left');\n }\n\n if (tooltipPosition.bottom < 0) {\n\n tooltipOverflow.bottom = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from bottom');\n }\n\n if (tooltipPosition.top < 0) {\n\n tooltipOverflow.top = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from top');\n }\n\n if (tooltipOverflowCount > 0) {\n\n if (!this.placementChanged && tooltipOverflow.left && tooltipPosition.right > tooltipWidth) {\n\n this.log('Changing tooltip placement to right');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('right');\n\n } else if (!this.placementChanged && tooltipOverflow.top && tooltipPosition.top > tooltipHeight) {\n\n this.log('Changing tooltip placement to bottom');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n\n } else if (!this.placementChanged && tooltipOverflow.right && tooltipPosition.left > tooltipWidth) {\n\n this.log('Changing tooltip placement to left');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('left');\n\n } else if (!this.placementChanged && tooltipOverflow.bottom && tooltipPosition.top > tooltipHeight) {\n\n this.log('Changing tooltip placement to top');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else if (!this.placementChanged && (placement !== 'top' || placement !== 'bottom') && (tooltipOverflow.left || tooltipOverflow.right)) {\n\n if (tooltipPosition.top > tooltipPosition.bottom) {\n\n this.log('Changing tooltip placement to top');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else {\n\n this.log('Changing tooltip placement to bottom');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n }\n\n } else {\n\n this.fixTooltipPosition = true;\n }\n\n if (this.fixTooltipPosition) {\n\n this.log('Adjusting tooltip size or position in order to tooltip fit in the container');\n\n if (tooltipOverflow.left) {\n\n this.log('Tooltip overflowing from left');\n\n let overflowAmount = Math.abs(tooltipPosition.left);\n let excludePlacements = ['top', 'bottom'];\n\n if ((tooltipTriggerPosX >= tooltipPosX + overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Tooltip adjusting width');\n\n tooltipWidth -= overflowAmount;\n tooltipPosX += overflowAmount;\n\n } else {\n\n this.log('Tooltip adjusting position x');\n\n tooltipPosX += overflowAmount;\n arrowPos -= overflowAmount;\n }\n }\n\n if (tooltipOverflow.top) {\n\n this.log('Tooltip overflowing from top');\n\n let overflowAmount = Math.abs(tooltipPosition.top);\n\n this.log('Tooltip adjusting position y');\n\n tooltipPosY += overflowAmount;\n arrowPos -= overflowAmount;\n }\n\n if (tooltipOverflow.right) {\n\n this.log('Tooltip overflowing from right');\n\n let overflowAmount = Math.abs(tooltipPosition.right);\n let excludePlacements = ['top', 'bottom'];\n\n if ((tooltipTriggerPosX <= tooltipPosX - overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Tooltip adjusting width');\n\n tooltipWidth -= overflowAmount;\n\n } else {\n\n this.log('Tooltip adjusting position x');\n\n tooltipPosX -= overflowAmount;\n arrowPos += overflowAmount;\n }\n }\n\n if (tooltipOverflow.bottom) {\n\n this.log('Tooltip overflowing from bottom');\n\n let overflowAmount = Math.abs(tooltipPosition.bottom);\n\n this.log('Tooltip adjusting position y');\n\n tooltipPosY -= overflowAmount;\n arrowPos += overflowAmount;\n }\n\n if (placement === 'top') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$tooltip.css({\n width: tooltipWidth,\n transform: 'translate3d('+tooltipPosX+'px, '+tooltipPosY+'px, 0px)'\n });\n\n this.fixTooltipPosition = false;\n\n this.log('Tooltip placement changed: '+this.placementChanged);\n this.log('Tooltip container inner width: '+containerInnerWidth+'px');\n this.log('Tooltip container inner height: '+containerInnerHeight+'px');\n this.log('Tooltip trigger width: '+tooltipTriggerWidth+'px');\n this.log('Tooltip trigger height: '+tooltipTriggerHeight+'px');\n this.log('Tooltip trigger position x: '+tooltipTriggerPosX+'px');\n this.log('Tooltip trigger position Y: '+tooltipTriggerPosY+'px');\n this.log('Tooltip width: '+tooltipWidth+'px');\n this.log('Tooltip height: '+tooltipHeight+'px');\n this.log('Tooltip position x: '+tooltipPosX+'px');\n this.log('Tooltip position y: '+tooltipPosY+'px');\n this.log('Tooltip position left: '+tooltipPosition.left+'px');\n this.log('Tooltip position top: '+tooltipPosition.top+'px');\n this.log('Tooltip position right: '+tooltipPosition.right+'px');\n this.log('Tooltip position bottom: '+tooltipPosition.bottom+'px');\n }\n\n } else {\n\n this.log('Tooltip placement changed: '+this.placementChanged);\n this.log('Tooltip container inner width: '+containerInnerWidth+'px');\n this.log('Tooltip container inner height: '+containerInnerHeight+'px');\n this.log('Tooltip trigger width: '+tooltipTriggerWidth+'px');\n this.log('Tooltip trigger height: '+tooltipTriggerHeight+'px');\n this.log('Tooltip trigger position x: '+tooltipTriggerPosX+'px');\n this.log('Tooltip trigger position Y: '+tooltipTriggerPosY+'px');\n this.log('Tooltip width: '+tooltipWidth+'px');\n this.log('Tooltip height: '+tooltipHeight+'px');\n this.log('Tooltip position x: '+tooltipPosX+'px');\n this.log('Tooltip position y: '+tooltipPosY+'px');\n this.log('Tooltip position left: '+tooltipPosition.left+'px');\n this.log('Tooltip position top: '+tooltipPosition.top+'px');\n this.log('Tooltip position right: '+tooltipPosition.right+'px');\n this.log('Tooltip position bottom: '+tooltipPosition.bottom+'px');\n }\n }\n\n // Show\n show() {\n\n if (this.$tooltip) {\n return;\n }\n\n this.buildTooltip();\n this.setPosition();\n\n if (this.animation) {\n\n this.$tooltip.addClass(this.animationSpeed);\n this.$tooltip.animateCss(this.animationIn);\n this.$tooltip.addClass('show');\n this.$tooltip.attr('id', this.id);\n this.$el.attr('data-tooltip', this.id);\n\n } else {\n\n this.$tooltip.addClass('show');\n this.$tooltip.attr('id', this.id);\n this.$el.attr('data-tooltip', this.id);\n }\n\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$tooltip) {\n return;\n }\n\n if (this.animation && !this.$tooltip.hasClass('animated')) {\n\n this.$tooltip.animateCss(this.animationOut, () => {\n\n this.$tooltip.remove();\n this.$el.removeAttr('data-tooltip');\n this.$tooltip = null;\n this.placementChanged = false;\n\n this.onClose();\n });\n\n } else {\n\n this.$tooltip.remove();\n this.$el.removeAttr('data-tooltip');\n this.$tooltip = null;\n this.placementChanged = false;\n\n this.onClose();\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Tooltip(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Tooltip._jQueryInterface;\n $.fn[NAME].Constructor = Tooltip;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Tooltip._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n container: 'body',\n animation: false,\n animationIn: 'fadeIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n placement: 'bottom',\n content: '',\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Tooltip;","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolSectionTabs';\nconst DATA_KEY = 'plugin_coolSectionTabs';\n\nclass SectionTabs extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.sectionTabs) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.sectionTabs, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.checkForChanges();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$dropdownContainer = this.$el.find('.dropdown-container');\n this.$dropdownList = this.$el.find('.dropdown-list');\n this.tabsCount = this.$el.find('> .tab-item').length;\n this.tabs = this.$el.find('> .tab-item:visible');\n\n $.each(this.tabs, function(i, el) {\n $(el).data('width', $(el).outerWidth(true));\n });\n\n this.log(this.$el);\n this.log(this.$dropdownContainer);\n this.log(this.$dropdownList);\n this.log(this.tabsCount);\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n $(window).on('resize', debounce(() => {\n this.checkForChanges();\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+this._name);\n }\n\n // Move to list\n moveToList(el) {\n\n const $el = $(el);\n\n $el.removeClass('dropdown-item');\n $el.insertBefore(this.$dropdownContainer);\n\n this.checkForChanges();\n }\n\n // Move to dropdown\n moveToDropdown(el) {\n\n const $el = $(el);\n\n if (!$el.hasClass('dropdown-item')) {\n $el.addClass('dropdown-item');\n }\n\n $el.appendTo(this.$dropdownList);\n\n this.checkForChanges();\n }\n\n // Overflow status\n overflowStatus() {\n\n if (this.$el[0].offsetWidth < this.$el[0].scrollWidth) {\n return true;\n } else {\n return false;\n }\n }\n\n // CheckForChanges\n checkForChanges() {\n\n let dropdownItems = this.$dropdownList.children();\n let moveableTabs = this.$el.find('> .tab-item').not(this.$dropdownContainer);\n let tabs = this.$el.find('> .tab-item:visible');\n let usedSpace = 0;\n\n $.each(tabs, function(i, el) {\n usedSpace += $(el).outerWidth(true);\n });\n\n let freeSpace = this.$el[0].offsetWidth - usedSpace;\n\n if (dropdownItems.length > 0) {\n\n if (!this.$dropdownContainer.hasClass('visible')) {\n this.$dropdownContainer.addClass('visible');\n }\n\n } else {\n\n if (this.$dropdownContainer.hasClass('visible')) {\n this.$dropdownContainer.removeClass('visible');\n }\n }\n\n if (this.overflowStatus() == true) {\n\n if (moveableTabs.length > 0) {\n this.moveToDropdown(moveableTabs.last());\n }\n\n } else {\n\n if (dropdownItems.length > 0) {\n\n if (freeSpace > dropdownItems.last().data('width')) {\n this.moveToList(dropdownItems.last());\n }\n }\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new SectionTabs(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = SectionTabs._jQueryInterface;\n $.fn[NAME].Constructor = SectionTabs;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return SectionTabs._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n debug: false\n }\n}\n\nexport default SectionTabs;\n","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolCollapse';\nconst DATA_KEY = 'plugin_coolCollapse';\n\nclass Collapse extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.collapse) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.dialog, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache()\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$target = this.$el.data('target') ? $(document).find(this.$el.data('target')) : $(document).find(this.opts.target);\n this.expanded = this.$el.attr('aria-expanded') == 'true' ? true : false;\n\n if (this.$target.length) {\n\n this.targetHeight = this.$target.height();\n this.$container = this.$target.closest('.section-collapse');\n this.$indicator = $(document).find('[data-collapse-indicator=\"' + this.$el.data('target') + '\"]');\n\n } else {\n\n this.$target = $(this.$el).parent().find('.collapse');\n this.targetHeight = this.$target.height();\n this.$container = this.$target.closest('.section-collapse');\n this.$indicator = $(this.$el).parent().find('[data-collapse-indicator]');\n }\n\n if (this.expanded) {\n this.$target.css('height', 'auto');\n }\n\n this.log(this.$el);\n this.log(this.$target);\n this.log(this.$container);\n this.log(this.$indicator);\n this.log('Expanded: '+this.expanded);\n this.log('Target height: '+this.targetHeight+'px');\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n this.$el.on('click'+'.'+this.name, (e) => {\n\n if (this.expanded) {\n this.close();\n } else {\n this.show();\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n if (this.$target.length) {\n\n this.targetHeight = this.$target.height();\n this.log('Target height: '+this.targetHeight+'px');\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+this.name);\n }\n\n // Which transition\n whichTransitionEvent() {\n\n let el = document.createElement('text-transition');\n let transEndEventNames = {\n 'WebkitTransition': 'webkitTransitionEnd', // Saf 6, Android Browser\n 'MozTransition': 'transitionend', // only for FF < 15\n 'transition': 'transitionend' // IE10, Opera, Chrome, FF 15+, Saf 7+\n };\n\n for (let t in transEndEventNames) {\n\n if (el.style[t] !== undefined) {\n return transEndEventNames[t];\n }\n }\n }\n\n // Show\n show() {\n\n // Update target height if something is added to dom which causes height to change\n if (this.targetHeight !== this.$target.height()) {\n this.targetHeight = this.$target.height();\n }\n\n this.$target.removeClass('collapse show');\n this.$target.addClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', true);\n }\n\n if (this.$container.length) {\n this.$container.addClass('show');\n }\n\n this.$target.css('height');\n this.$target.css('height', this.targetHeight);\n\n if (this.$indicator.length) {\n this.$indicator.addClass('show');\n }\n\n this.$target.one(this.whichTransitionEvent(), () => {\n\n this.$target.removeClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', false);\n }\n\n this.$target.removeAttr('style');\n this.$target.addClass('collapse show');\n this.$el.attr('aria-expanded', true);\n this.$target.css('height', 'auto');\n this.expanded = true;\n });\n\n this.onShow();\n }\n\n // Close\n close() {\n\n this.$target.removeClass('collapse show');\n this.$target.addClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', true);\n }\n\n if (this.$container.length) {\n this.$container.removeClass('show');\n }\n\n this.$target.css('height', this.$target.height());\n\n setTimeout(() => {\n this.$target.css('height', 0);\n }, 10);\n\n if (this.$indicator.length && this.$indicator.hasClass('show')) {\n this.$indicator.removeClass('show');\n }\n\n this.$target.one(this.whichTransitionEvent(), () => {\n\n this.$target.removeClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', false);\n }\n\n this.$target.removeAttr('style');\n this.$target.addClass('collapse');\n this.$el.attr('aria-expanded', false);\n this.expanded = false;\n\n // Update target height if something is added to dom which causes height to change\n if (this.targetHeight !== this.$target.height()) {\n this.targetHeight = this.$target.height();\n }\n });\n\n this.onClose();\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Collapse(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Collapse._jQueryInterface;\n $.fn[NAME].Constructor = Collapse;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Collapse._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n target: null,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Collapse;","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolToast';\nconst DATA_KEY = 'plugin_coolToast';\n\nclass Toast {\n\n constructor(container, opts) {\n\n this.settings = {};\n\n if (window.Cool.settings.toast) {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, window.Cool.settings.toast, opts);\n\n } else {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, opts);\n }\n\n this.container = container;\n this.$container = $(this.container);\n this.debug = this.settings.debug;\n this.faPro = this.settings.faPro;\n this.toasts = [];\n this.queue = [];\n this.processingQueue = false;\n this.onInitialize = this.settings.onInitialize;\n this.onDestroy = this.settings.onDestroy;\n }\n\n // Add item to queue\n addQueue(toast) {\n\n this.queue.push(toast);\n\n if (this.processingQueue) {\n return;\n }\n\n return this.processQueue();\n }\n\n // Process queue\n processQueue() {\n\n if (this.processingQueue) {\n\n this.queue.shift();\n }\n\n if (!this.queue.length) {\n\n this.processingQueue = false;\n return;\n }\n\n this.processingQueue = true;\n\n return this.show(this.queue[0]);\n }\n\n // Init toast\n init(opts) {\n\n let settings = {};\n\n $.extend(true, settings, this.settings, opts);\n\n let toast = this.buildToast(settings);\n\n this.addQueue(toast);\n this.onInit(toast);\n\n return toast;\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.$container.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Build toast\n buildToast(settings) {\n\n let toast = {\n uuid: 'toast-'+this.generateUUID(),\n placement: settings.placement,\n placementX: settings.placementX,\n placementY: settings.placementY,\n offset: settings.offset,\n animation: settings.animation,\n animationIn: settings.animationIn,\n animationOut: settings.animationOut,\n animationSpeed: settings.animationSpeed,\n dismiss: settings.dismiss,\n size: settings.size,\n header: settings.header,\n theme: settings.theme,\n title: settings.title,\n content: settings.content,\n template: settings.template,\n maxBodyHeight: settings.maxBodyHeight,\n onInit: settings.onInit,\n onShow: settings.onShow,\n onClose: settings.onClose\n };\n\n if (typeof toast.content === 'function') {\n\n toast.$el = $(toast.template());\n\n } else {\n\n toast.$el = $(this._renderTemplate(toast));\n }\n\n toast.$inner = toast.$el.find('.toast-inner');\n toast.$closeBtn = toast.$el.find('[data-toast-close]');\n\n this.log(toast);\n this.toasts.push(toast);\n\n return toast;\n }\n\n // Bind events that trigger methods\n bindEvents(toast) {\n\n let self = this;\n\n toast.$el.on('click', '[data-toast-close]', () => {\n\n if (toast.$el) {\n self.close(toast);\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n if (toast.$el) {\n this.setPosition(toast);\n }\n }, 250));\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Set positions\n setPosition(toast, placement, placementY, placementX) {\n\n if (typeof placementY === 'undefined' || placementY === null) {\n placementY = toast.placementY;\n }\n\n if (typeof placementX === 'undefined' || placementX === null) {\n placementX = toast.placementX;\n }\n\n if (!placementX || !placementY) {\n placement = toast.placement\n }\n\n if (toast.offset) {\n\n let offsets = toast.offset.split(',')\n let offsetX = parseInt(offsets[0], 10);\n let offsetY = parseInt(offsets[1], 10);\n }\n\n let toastWidth = toast.$el.outerWidth(true);\n let toastHeight = toast.$el.outerHeight(true);\n let toastPosX;\n let toastPosY;\n\n if (placement) {\n\n if (placement === 'top-left') {\n\n toastPosX = 0;\n toastPosY = 0;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += 30;\n toastPosY += 30;\n }\n\n } else if (placement === 'top-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = 0;\n\n this.log(this.$container.width);\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosY += 30;\n }\n\n } else if (placement === 'top-right') {\n\n toastPosX = this.$container.width() - toastWidth;\n toastPosY = 0;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += -30;\n toastPosY += 30;\n }\n\n } else if (placement === 'center-left') {\n\n toastPosX = 0;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += 30;\n }\n\n } else if (placement === 'center-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n }\n\n } else if (placement === 'center-right') {\n\n toastPosX = this.$container.width() - toastWidth;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += -30;\n }\n\n } else if (placement === 'bottom-left') {\n\n toastPosX = 0;\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosX += 30;\n toastPosY += -30;\n }\n\n } else if (placement === 'bottom-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosY += -30;\n }\n\n } else if (placement === 'bottom-right') {\n\n toastPosX = this.$container.width() - toastWidth\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosX += -30;\n toastPosY += -30;\n }\n }\n\n } else {\n\n toastPosX = placementX;\n toastPosY = placementY;\n }\n\n toast.$el.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+toastPosX+'px, '+toastPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n this.log('Toast width: '+toastWidth+'px');\n this.log('Toast height: '+toastHeight+'px');\n this.log('Toast position Y: '+toastPosX+'px');\n this.log('Toast position x: '+toastPosY+'px');\n }\n\n // Show\n show(toast) {\n\n this.$container.append(toast.$el);\n this.bindEvents(toast);\n this.setPosition(toast);\n\n if (toast.animation) {\n\n toast.$el.addClass('show');\n toast.$inner.addClass(toast.animationSpeed);\n toast.$inner.animateCss(toast.animationIn);\n\n } else {\n\n toast.$el.addClass('show');\n }\n\n if (toast.dismiss) {\n\n setTimeout(() => {\n this.close(toast);\n }, toast.dismiss * 1000);\n }\n\n this.onShow(toast);\n }\n\n // Close\n close(toast) {\n\n if (toast.animation && !toast.$inner.hasClass('animated')) {\n\n toast.$el.removeClass('show');\n toast.$inner.animateCss(toast.animationOut, () => {\n\n toast.$el.remove();\n\n this.toasts = $.grep(this.toasts, function(item) {\n return item.uuid != toast.uuid;\n });\n\n this.processQueue();\n this.onClose(toast);\n });\n\n } else {\n\n toast.$el.remove();\n\n this.toasts = $.grep(this.toasts, function(item) {\n return item.uuid != toast.uuid;\n });\n\n this.processQueue();\n this.onClose(toast);\n }\n }\n\n // Initialize callback\n onInitialize() {\n\n let onInitialize = this.onInitialize;\n\n if (typeof onInitialize === 'function') {\n\n onInitialize.call(this.container);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this.container);\n }\n }\n\n // Init callback\n onInit(toast) {\n\n let onInit = toast.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(toast);\n }\n }\n\n // Show callback\n onShow(toast) {\n\n let onShow = toast.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(toast);\n }\n }\n\n // Close callback\n onClose(toast) {\n\n let onClose = toast.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(toast);\n }\n }\n\n // Debug log\n log(...args) {\n\n if (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n console.log(...args);\n }\n }\n }\n\n // Render template\n _renderTemplate(toast) {\n\n let faNameSpace = this.faPro ? 'far' : 'fas';\n let content = '';\n let header = '';\n let body = '';\n let bodyCloseBtn = '';\n\n if (typeof toast.content === 'function') {\n\n content = toast.content();\n\n } else {\n\n content = toast.content;\n }\n\n if (toast.header) {\n\n header = `\n <div class=\"toast-header\">\n\n <span>${toast.title}</span>\n\n <button type=\"button\" data-toast-close>\n <i class=\"${faNameSpace} fa-times icon\"></i>\n </button>\n\n </div>\n `;\n\n } else {\n\n bodyCloseBtn = `\n <button type=\"button\" data-toast-close>\n\n <i class=\"${faNameSpace} fa-times icon\"></i>\n\n </button>\n `;\n }\n\n body = `\n <div class=\"toast-body\">\n\n <span>${content}</span>\n ${bodyCloseBtn}\n\n </div>\n `;\n\n return `\n <div class=\"toast toast-${toast.size} toast-${toast.theme}\" role=\"alert\" id=\"${toast.uuid}\">\n\n <div class=\"toast-inner\">\n\n ${header}\n ${body}\n\n </div>\n\n </div>\n `;\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Toast._jQueryInterface;\n $.fn[NAME].Constructor = Toast;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Toast._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n title: '',\n content: '',\n template: '',\n theme: 'dark',\n placement: 'bottom-center',\n placementX: null,\n placementY: null,\n animation: true,\n animationIn: 'slideInUp',\n animationOut: 'slideOutDown',\n animationSpeed: 'faster',\n offset: null,\n size: null,\n dismiss: 3,\n header: false,\n faPro: false,\n debug: false,\n onInitialize: null,\n onDestroy: null,\n onInit: null,\n onDestroy: null,\n onShow: null,\n onClose: null\n }\n}\n\nexport default Toast;","import 'jquery';\nimport { debounce, touchEvents } from './util/index';\n\nconst NAME = 'coolDialog';\nconst DATA_KEY = 'plugin_coolDialog';\n\nclass Dialog {\n\n constructor(container, opts) {\n\n this.settings = {};\n\n if (window.Cool.settings.dialog) {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, window.Cool.settings.dialog, opts);\n\n } else {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, opts);\n }\n\n this.container = container;\n this.$container = $(this.container);\n this.debug = this.settings.debug;\n this.faPro = this.settings.faPro;\n this.dialogs = [];\n this.onInitialize = this.settings.onInitialize;\n this.onDestroy = this.settings.onDestroy;\n }\n\n // Init dialog\n init(opts) {\n\n let settings = {};\n\n $.extend(true, settings, this.settings, opts);\n\n let dialog = this.buildDialog(settings);\n\n this.show(dialog);\n this.bindEvents(dialog);\n this.onInit(dialog);\n\n return dialog;\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.$container.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Build dialog\n buildDialog(settings) {\n\n let self = this;\n let dialog = {\n uuid: 'dialog-'+this.generateUUID(),\n title: settings.title,\n template: settings.template,\n body: settings.body,\n footer: settings.footer,\n size: settings.size,\n classes: settings.classes,\n centered: settings.centered,\n backdrop: settings.backdrop,\n preventScroll: settings.preventScroll,\n closeBtn: settings.closeBtn,\n animation: settings.animation,\n animationIn: settings.animationIn,\n animationOut: settings.animationOut,\n animationSpeed: settings.animationSpeed,\n callbacks: settings.callbacks,\n maxBodyHeight: settings.maxBodyHeight,\n overflowVisible: settings.overflowVisible,\n actions: settings.actions,\n onInit: settings.onInit,\n onShow: settings.onShow,\n onClose: settings.onClose\n };\n\n if (dialog.maxBodyHeight == null) {\n\n dialog.maxBodyHeight = window.innerHeight - 200;\n }\n\n if (typeof dialog.template === 'function') {\n\n dialog.$el = $(dialog.template());\n\n } else {\n\n dialog.$el = $(this._renderTemplate(dialog));\n }\n\n dialog.show = function() {\n self.show(dialog);\n };\n\n dialog.close = function() {\n self.close(dialog);\n };\n\n this.log(dialog);\n this.dialogs.push(dialog);\n\n return dialog;\n }\n\n // Bind events that trigger methods\n bindEvents(dialog) {\n\n let self = this;\n\n dialog.$el.on('click', '[data-dialog-close]', function (e) {\n\n dialog.$el.trigger('dialog.close');\n\n if (typeof dialog.callbacks.close === 'function') {\n\n dialog.callbacks.close.call(self, function () {\n self.close(dialog)\n }, dialog);\n\n } else {\n\n self.close(dialog);\n }\n });\n\n dialog.$el.on('click', '[data-dialog-remove]', function (e) {\n\n dialog.$el.trigger('dialog.remove');\n\n if (typeof dialog.callbacks.remove === 'function') {\n\n dialog.callbacks.remove.call(self, function () {\n self.close(dialog)\n }, dialog);\n }\n });\n\n dialog.$el.on('click', '[data-dialog-confirm]', debounce(function (e) {\n\n dialog.$el.trigger('dialog.close');\n\n if (typeof dialog.callbacks.confirm === 'function') {\n\n dialog.callbacks.confirm.call(self, function () {\n self.close(dialog)\n }, dialog);\n\n } else {\n\n self.close(dialog);\n }\n }));\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Show\n show(dialog) {\n\n if (!this.$container.hasClass('has-dialogs')) {\n this.$container.addClass('has-dialogs');\n }\n\n if (dialog.preventScroll && !this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.addClass('dialog-prevent-scroll');\n }\n\n if (this.dialogs.length > 1) {\n\n let $prevDialog = $(this.dialogs).eq(-2)[0].$el;\n let zIndex = parseInt($prevDialog.css('z-index'), 10) + 1;\n\n dialog.$el.css('z-index', zIndex);\n\n $prevDialog.css({\n 'transition': 'opacity 0.3s',\n 'opacity': 0,\n 'visibility': 'visible'\n });\n }\n\n if (dialog.backdrop && $('.dialog-backdrop').length < 1) {\n\n this.$container.append('<div class=\"dialog-backdrop\"></div>');\n\n let checkForBackdrop = setInterval(() => {\n\n if (this.dialogs.length == 0 && $('.dialog-backdrop').length) {\n\n $('.dialog-backdrop').remove();\n clearInterval(checkForBackdrop);\n }\n\n }, 100);\n }\n\n this.$container.append(dialog.$el);\n\n if (dialog.animation) {\n dialog.$el.find('.dialog-content').addClass(dialog.animationSpeed).animateCss(dialog.animationIn);\n }\n\n this.onShow(dialog);\n }\n\n // Close\n close(dialog) {\n\n let $prevDialog = null;\n\n if (this.dialogs.length > 1) {\n $prevDialog = $(this.dialogs).eq(-2)[0].$el;\n }\n\n if ($('.dialog[data-dialog-backdrop=\"true\"]').length === 0 && $('.dialog-backdrop').length) {\n $('.dialog-backdrop').remove();\n }\n\n if (dialog.animation) {\n\n dialog.$el.find('.dialog-content').animateCss(dialog.animationOut, () => {\n\n dialog.$el.remove();\n\n this.dialogs = $.grep(this.dialogs, function(item) {\n return item.uuid != dialog.uuid;\n });\n\n if (this.dialogs.length == 0) {\n\n this.$container.removeClass('has-dialogs');\n\n if (this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.removeClass('dialog-prevent-scroll');\n }\n\n } else {\n\n if ($prevDialog) {\n $prevDialog.css('opacity', 1);\n }\n }\n });\n\n } else {\n\n dialog.$el.remove();\n\n this.dialogs = $.grep(this.dialogs, function(item) {\n return item.uuid != dialog.uuid;\n });\n\n if (this.dialogs.length == 0) {\n\n this.$container.removeClass('has-dialogs');\n\n if (this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.removeClass('dialog-prevent-scroll');\n }\n\n } else {\n\n if ($prevDialog) {\n $prevDialog.css('opacity', 1);\n }\n }\n }\n\n this.onClose(dialog);\n }\n\n // Initialize callback\n onInitialize() {\n\n let onInitialize = this.onInitialize;\n\n if (typeof onInitialize === 'function') {\n\n onInitialize.call(this.container);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this.container);\n }\n }\n\n // Init callback\n onInit(dialog) {\n\n let onInit = dialog.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(dialog);\n }\n }\n\n // Show callback\n onShow(dialog) {\n\n let onShow = dialog.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(dialog);\n }\n }\n\n // Close callback\n onClose(dialog) {\n\n let onClose = dialog.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(dialog);\n }\n }\n\n // Debug log\n log(...args) {\n\n if (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n console.log(...args);\n }\n }\n }\n\n // Render footer\n _renderFooter(dialog) {\n\n let footer = '';\n\n if (typeof dialog.footer === 'function') {\n\n footer = dialog.footer();\n\n } else if (dialog.footer !== '' && dialog.footer !== false && dialog.footer !== true) {\n\n footer = dialog.footer;\n\n } else if (dialog.footer === true) {\n\n let btnCancel = '';\n let btnRemove = '';\n let btnConfirm = '';\n let btnStyle = '';\n let btnClasses = '';\n let btnAttrs = '';\n\n if (dialog.actions.close.visible) {\n\n btnStyle = dialog.actions.close.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.close.classes ? ' '+dialog.actions.close.classes : '';\n btnAttrs = dialog.actions.close.attrs ? ' '+dialog.actions.close.attrs : '';\n btnCancel = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-close>\n ${dialog.actions.close.content}\n </button>\n `;\n }\n\n if (dialog.actions.remove.visible) {\n\n btnStyle = dialog.actions.remove.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.remove.classes ? ' '+dialog.actions.remove.classes : '';\n btnAttrs = dialog.actions.remove.attrs ? ' '+dialog.actions.remove.attrs : '';\n btnRemove = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-remove>\n ${dialog.actions.remove.content}\n </button>\n `;\n }\n\n if (dialog.actions.confirm.visible) {\n\n btnStyle = dialog.actions.confirm.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.confirm.classes ? ' '+dialog.actions.confirm.classes : '';\n btnAttrs = dialog.actions.confirm.attrs ? ' '+dialog.actions.confirm.attrs : '';\n btnConfirm = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-confirm>\n ${dialog.actions.confirm.content}\n </button>\n `;\n }\n\n footer = `\n ${btnCancel}\n ${btnRemove}\n ${btnConfirm}\n `;\n\n } else {\n\n return footer;\n }\n\n if (footer) {\n\n return `\n <div class=\"dialog-footer\">\n ${footer}\n </div>\n `;\n }\n }\n\n // Render template\n _renderTemplate(dialog) {\n\n let faNameSpace = this.faPro ? 'far' : 'fas';\n let classes = dialog.classes ? ' '+dialog.classes : '';\n let centered = dialog.centered ? ' dialog-centered' : '';\n let size = dialog.size ? ' dialog-'+dialog.size : '';\n let overFlowVisible = dialog.overflowVisible ? ' dialog-overflow-visible' : '';\n let uuid = ' data-dialog-uuid=\"'+dialog.uuid+'\"';\n let backdrop = dialog.backdrop ? ' data-dialog-backdrop=\"true\"' : ' data-dialog-backdrop=\"false\"';\n let title = dialog.title;\n let closeBtn = dialog.closeBtn ? `<button type=\"button\" data-dialog-close><i class=\"${faNameSpace} fa-times icon\"></i></button>` : '';\n let maxBodyHeight = dialog.maxBodyHeight ? ' style=\"max-height: '+dialog.maxBodyHeight+'px\"' : '';\n let body = '';\n let footer = this._renderFooter(dialog);\n\n if (typeof dialog.body === 'function') {\n\n body = dialog.body();\n\n } else {\n\n body = dialog.body;\n }\n\n return `\n <div class=\"dialog${classes}${centered}${size}${overFlowVisible}\"${uuid}${backdrop}>\n\n <div class=\"dialog-container\">\n\n <div class=\"dialog-content\">\n\n <div class=\"dialog-header\">\n\n <span class=\"dialog-title\">\n ${title}\n </span>\n\n ${closeBtn}\n\n </div>\n\n <div class=\"dialog-body\"${maxBodyHeight}>\n\n ${body}\n\n </div>\n\n ${footer}\n\n </div>\n\n </div>\n\n </div>\n `;\n }\n\n static _jQueryInterface(config) {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Dialog(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Dialog._jQueryInterface;\n $.fn[NAME].Constructor = Dialog;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Dialog._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n title: '',\n template: '',\n body: '',\n footer: true,\n size: '', // sm/lg\n classes: '',\n centered: true,\n backdrop: true,\n preventScroll: true,\n closeBtn: true,\n animation: true,\n animationIn: 'zoomIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n callbacks: {},\n maxBodyHeight: null,\n overflowVisible: false,\n faPro: false,\n debug: true,\n onInitialize: null,\n onDestroy: null,\n onInit: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n actions: {\n close: {\n primary: false,\n visible: true,\n content: 'Close',\n classes: '',\n attrs: ''\n },\n remove: {\n primary: false,\n visible: true,\n content: 'Remove',\n classes: '',\n attrs: ''\n },\n confirm: {\n primary: true,\n visible: true,\n content: 'Confirm',\n classes: '',\n attrs: ''\n }\n }\n }\n}\n\nexport default Dialog;","import Common from './src/common';\nimport Popover from './src/popover.js';\nimport Select from './src/select';\nimport Dropdown from './src/dropdown';\nimport Tooltip from './src/tooltip';\nimport SectionTabs from './src/section-tabs';\nimport Collapse from './src/collapse';\nimport Toast from './src/toast';\nimport Dialog from './src/dialog';\n\nexport default {\n\tCommon,\n\tPopover,\n\tSelect,\n\tDropdown,\n\tTooltip,\n\tSectionTabs,\n\tCollapse,\n\tToast,\n\tDialog\n}"]}
|