@syncfusion/ej2-navigations 17.2.55-1205479 → 17.3.14-96615
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/.eslintrc.json +244 -0
- package/CHANGELOG.md +898 -786
- package/README.md +163 -163
- package/dist/ej2-navigations.umd.min.js +1 -10
- package/dist/ej2-navigations.umd.min.js.map +1 -1
- package/dist/es6/ej2-navigations.es2015.js +512 -255
- package/dist/es6/ej2-navigations.es2015.js.map +1 -1
- package/dist/es6/ej2-navigations.es5.js +642 -385
- package/dist/es6/ej2-navigations.es5.js.map +1 -1
- package/dist/global/ej2-navigations.min.js +1 -10
- package/dist/global/ej2-navigations.min.js.map +1 -1
- package/dist/global/index.d.ts +0 -9
- package/dist/ts/accordion/accordion.ts +1312 -0
- package/dist/ts/common/h-scroll.ts +459 -0
- package/dist/ts/common/menu-base.ts +2131 -0
- package/dist/ts/common/v-scroll.ts +430 -0
- package/dist/ts/context-menu/context-menu.ts +119 -0
- package/dist/ts/menu/menu.ts +270 -0
- package/dist/ts/sidebar/sidebar.ts +817 -0
- package/dist/ts/tab/tab.ts +1761 -0
- package/dist/ts/toolbar/toolbar.ts +2076 -0
- package/dist/ts/treeview/treeview.ts +5050 -0
- package/helpers/e2e/index.js +3 -3
- package/license +10 -10
- package/package.json +135 -145
- package/src/accordion/accordion-model.d.ts +162 -143
- package/src/accordion/accordion.d.ts +35 -6
- package/src/accordion/accordion.js +193 -71
- package/src/common/h-scroll-model.d.ts +5 -5
- package/src/common/h-scroll.js +19 -20
- package/src/common/index.d.ts +1 -0
- package/src/common/index.js +1 -0
- package/src/common/menu-base-model.d.ts +157 -157
- package/src/common/menu-base.d.ts +19 -0
- package/src/common/menu-base.js +97 -24
- package/src/common/v-scroll-model.d.ts +5 -5
- package/src/common/v-scroll.js +19 -19
- package/src/context-menu/context-menu-model.d.ts +15 -15
- package/src/context-menu/context-menu.js +19 -19
- package/src/menu/menu-model.d.ts +30 -30
- package/src/menu/menu.js +19 -19
- package/src/sidebar/sidebar-model.d.ts +136 -136
- package/src/sidebar/sidebar.js +19 -19
- package/src/tab/tab-model.d.ts +215 -215
- package/src/tab/tab.d.ts +3 -0
- package/src/tab/tab.js +120 -83
- package/src/toolbar/toolbar-model.d.ts +175 -175
- package/src/toolbar/toolbar.d.ts +2 -1
- package/src/toolbar/toolbar.js +30 -24
- package/src/treeview/treeview-model.d.ts +323 -323
- package/src/treeview/treeview.d.ts +3 -1
- package/src/treeview/treeview.js +107 -87
- package/styles/accordion/_all.scss +2 -2
- package/styles/accordion/_bootstrap-dark-definition.scss +69 -69
- package/styles/accordion/_bootstrap-definition.scss +76 -76
- package/styles/accordion/_bootstrap4-definition.scss +82 -82
- package/styles/accordion/_fabric-dark-definition.scss +74 -74
- package/styles/accordion/_fabric-definition.scss +78 -78
- package/styles/accordion/_highcontrast-definition.scss +106 -106
- package/styles/accordion/_highcontrast-light-definition.scss +104 -104
- package/styles/accordion/_layout.scss +447 -447
- package/styles/accordion/_material-dark-definition.scss +75 -75
- package/styles/accordion/_material-definition.scss +72 -72
- package/styles/accordion/_theme.scss +479 -479
- package/styles/accordion/icons/_bootstrap-dark.scss +17 -17
- package/styles/accordion/icons/_bootstrap.scss +17 -17
- package/styles/accordion/icons/_bootstrap4.scss +17 -17
- package/styles/accordion/icons/_fabric-dark.scss +17 -17
- package/styles/accordion/icons/_fabric.scss +17 -17
- package/styles/accordion/icons/_highcontrast-light.scss +17 -17
- package/styles/accordion/icons/_highcontrast.scss +17 -17
- package/styles/accordion/icons/_material-dark.scss +17 -17
- package/styles/accordion/icons/_material.scss +17 -17
- package/styles/accordion/material-dark.css +2 -2
- package/styles/bootstrap-dark.css +10 -9
- package/styles/bootstrap.css +10 -9
- package/styles/bootstrap4.css +10 -9
- package/styles/bootstrap5-dark.css +0 -0
- package/styles/bootstrap5-dark.scss +0 -0
- package/styles/bootstrap5.css +0 -0
- package/styles/bootstrap5.scss +0 -0
- package/styles/context-menu/_all.scss +2 -2
- package/styles/context-menu/_bootstrap-dark-definition.scss +54 -54
- package/styles/context-menu/_bootstrap-definition.scss +52 -52
- package/styles/context-menu/_bootstrap4-definition.scss +52 -52
- package/styles/context-menu/_fabric-dark-definition.scss +54 -54
- package/styles/context-menu/_fabric-definition.scss +52 -52
- package/styles/context-menu/_highcontrast-definition.scss +52 -52
- package/styles/context-menu/_highcontrast-light-definition.scss +54 -54
- package/styles/context-menu/_layout-mixin.scss +175 -174
- package/styles/context-menu/_layout.scss +70 -70
- package/styles/context-menu/_material-dark-definition.scss +54 -54
- package/styles/context-menu/_material-definition.scss +52 -52
- package/styles/context-menu/_theme-mixin.scss +59 -59
- package/styles/context-menu/_theme.scss +36 -36
- package/styles/context-menu/bootstrap-dark.css +1 -1
- package/styles/context-menu/bootstrap.css +1 -1
- package/styles/context-menu/bootstrap4.css +1 -1
- package/styles/context-menu/fabric-dark.css +1 -1
- package/styles/context-menu/fabric.css +1 -1
- package/styles/context-menu/highcontrast-light.css +1 -1
- package/styles/context-menu/highcontrast.css +1 -1
- package/styles/context-menu/icons/_bootstrap-dark.scss +30 -30
- package/styles/context-menu/icons/_bootstrap.scss +30 -30
- package/styles/context-menu/icons/_bootstrap4.scss +30 -30
- package/styles/context-menu/icons/_fabric-dark.scss +30 -30
- package/styles/context-menu/icons/_fabric.scss +30 -30
- package/styles/context-menu/icons/_highcontrast-light.scss +30 -30
- package/styles/context-menu/icons/_highcontrast.scss +30 -30
- package/styles/context-menu/icons/_material-dark.scss +30 -30
- package/styles/context-menu/icons/_material.scss +30 -30
- package/styles/context-menu/material-dark.css +1 -1
- package/styles/context-menu/material.css +4 -4
- package/styles/fabric-dark.css +10 -9
- package/styles/fabric.css +10 -9
- package/styles/h-scroll/_all.scss +2 -2
- package/styles/h-scroll/_bootstrap-dark-definition.scss +49 -49
- package/styles/h-scroll/_bootstrap-definition.scss +50 -50
- package/styles/h-scroll/_bootstrap4-definition.scss +49 -49
- package/styles/h-scroll/_fabric-dark-definition.scss +50 -50
- package/styles/h-scroll/_fabric-definition.scss +48 -48
- package/styles/h-scroll/_highcontrast-definition.scss +52 -52
- package/styles/h-scroll/_highcontrast-light-definition.scss +54 -54
- package/styles/h-scroll/_layout.scss +198 -198
- package/styles/h-scroll/_material-dark-definition.scss +77 -77
- package/styles/h-scroll/_material-definition.scss +77 -77
- package/styles/h-scroll/_theme.scss +157 -157
- package/styles/h-scroll/icons/_bootstrap-dark.scss +49 -49
- package/styles/h-scroll/icons/_bootstrap.scss +49 -49
- package/styles/h-scroll/icons/_bootstrap4.scss +49 -49
- package/styles/h-scroll/icons/_fabric-dark.scss +49 -49
- package/styles/h-scroll/icons/_fabric.scss +49 -49
- package/styles/h-scroll/icons/_highcontrast-light.scss +49 -49
- package/styles/h-scroll/icons/_highcontrast.scss +49 -49
- package/styles/h-scroll/icons/_material-dark.scss +49 -49
- package/styles/h-scroll/icons/_material.scss +49 -49
- package/styles/highcontrast-light.css +10 -9
- package/styles/highcontrast.css +10 -9
- package/styles/material-dark.css +12 -11
- package/styles/material.css +24 -14
- package/styles/menu/_all.scss +2 -2
- package/styles/menu/_bootstrap-dark-definition.scss +63 -63
- package/styles/menu/_bootstrap-definition.scss +65 -65
- package/styles/menu/_bootstrap4-definition.scss +64 -64
- package/styles/menu/_fabric-dark-definition.scss +63 -63
- package/styles/menu/_fabric-definition.scss +64 -64
- package/styles/menu/_highcontrast-definition.scss +65 -65
- package/styles/menu/_highcontrast-light-definition.scss +61 -61
- package/styles/menu/_layout.scss +638 -637
- package/styles/menu/_material-dark-definition.scss +63 -63
- package/styles/menu/_material-definition.scss +64 -64
- package/styles/menu/_theme.scss +243 -243
- package/styles/menu/bootstrap-dark.css +2 -1
- package/styles/menu/bootstrap.css +2 -1
- package/styles/menu/bootstrap.scss +1 -0
- package/styles/menu/bootstrap4.css +2 -1
- package/styles/menu/fabric-dark.css +2 -1
- package/styles/menu/fabric.css +2 -1
- package/styles/menu/fabric.scss +1 -0
- package/styles/menu/highcontrast-light.css +2 -1
- package/styles/menu/highcontrast.css +2 -1
- package/styles/menu/highcontrast.scss +1 -0
- package/styles/menu/icons/_bootstrap-dark.scss +127 -127
- package/styles/menu/icons/_bootstrap.scss +127 -127
- package/styles/menu/icons/_bootstrap4.scss +127 -127
- package/styles/menu/icons/_fabric-dark.scss +127 -127
- package/styles/menu/icons/_fabric.scss +127 -127
- package/styles/menu/icons/_highcontrast-light.scss +127 -127
- package/styles/menu/icons/_highcontrast.scss +127 -127
- package/styles/menu/icons/_material-dark.scss +127 -127
- package/styles/menu/icons/_material.scss +127 -127
- package/styles/menu/material-dark.css +2 -1
- package/styles/menu/material.css +4 -3
- package/styles/menu/material.scss +1 -0
- package/styles/sidebar/_all.scss +3 -3
- package/styles/sidebar/_bootstrap-dark-definition.scss +4 -4
- package/styles/sidebar/_bootstrap-definition.scss +4 -4
- package/styles/sidebar/_bootstrap4-definition.scss +4 -4
- package/styles/sidebar/_fabric-dark-definition.scss +4 -4
- package/styles/sidebar/_fabric-definition.scss +6 -6
- package/styles/sidebar/_highcontrast-definition.scss +4 -4
- package/styles/sidebar/_highcontrast-light-definition.scss +4 -4
- package/styles/sidebar/_icons.scss +1 -1
- package/styles/sidebar/_material-dark-definition.scss +4 -4
- package/styles/sidebar/_material-definition.scss +6 -6
- package/styles/sidebar/_theme.scss +168 -168
- package/styles/sidebar/bootstrap-dark.css +0 -1
- package/styles/sidebar/bootstrap.css +0 -1
- package/styles/sidebar/bootstrap4.css +0 -1
- package/styles/sidebar/fabric-dark.css +0 -1
- package/styles/sidebar/fabric.css +0 -1
- package/styles/sidebar/highcontrast-light.css +0 -1
- package/styles/sidebar/highcontrast.css +0 -1
- package/styles/sidebar/material-dark.css +0 -1
- package/styles/sidebar/material.css +0 -1
- package/styles/tab/_all.scss +2 -2
- package/styles/tab/_bootstrap-dark-definition.scss +386 -386
- package/styles/tab/_bootstrap-definition.scss +396 -396
- package/styles/tab/_bootstrap4-definition.scss +401 -401
- package/styles/tab/_fabric-dark-definition.scss +394 -394
- package/styles/tab/_fabric-definition.scss +410 -410
- package/styles/tab/_highcontrast-definition.scss +434 -434
- package/styles/tab/_highcontrast-light-definition.scss +423 -423
- package/styles/tab/_icons.scss +43 -43
- package/styles/tab/_layout.scss +3528 -3521
- package/styles/tab/_material-dark-definition.scss +407 -407
- package/styles/tab/_material-definition.scss +416 -416
- package/styles/tab/_theme.scss +1751 -1751
- package/styles/tab/bootstrap-dark.css +7 -2
- package/styles/tab/bootstrap.css +7 -2
- package/styles/tab/bootstrap4.css +7 -2
- package/styles/tab/fabric-dark.css +7 -2
- package/styles/tab/fabric.css +7 -2
- package/styles/tab/highcontrast-light.css +7 -2
- package/styles/tab/highcontrast.css +7 -2
- package/styles/tab/icons/_bootstrap-dark.scss +132 -132
- package/styles/tab/icons/_bootstrap.scss +132 -132
- package/styles/tab/icons/_bootstrap4.scss +132 -132
- package/styles/tab/icons/_fabric-dark.scss +132 -132
- package/styles/tab/icons/_fabric.scss +132 -132
- package/styles/tab/icons/_highcontrast-light.scss +132 -132
- package/styles/tab/icons/_highcontrast.scss +132 -132
- package/styles/tab/icons/_material-dark.scss +132 -132
- package/styles/tab/icons/_material.scss +132 -132
- package/styles/tab/material-dark.css +7 -2
- package/styles/tab/material.css +7 -2
- package/styles/tailwind-dark.css +0 -0
- package/styles/tailwind-dark.scss +0 -0
- package/styles/tailwind.css +0 -0
- package/styles/tailwind.scss +0 -0
- package/styles/toolbar/_all.scss +2 -2
- package/styles/toolbar/_bootstrap-dark-definition.scss +135 -135
- package/styles/toolbar/_bootstrap-definition.scss +134 -134
- package/styles/toolbar/_bootstrap4-definition.scss +139 -139
- package/styles/toolbar/_fabric-dark-definition.scss +155 -155
- package/styles/toolbar/_fabric-definition.scss +139 -139
- package/styles/toolbar/_highcontrast-definition.scss +149 -149
- package/styles/toolbar/_highcontrast-light-definition.scss +164 -164
- package/styles/toolbar/_layout.scss +1460 -1460
- package/styles/toolbar/_material-dark-definition.scss +180 -180
- package/styles/toolbar/_material-definition.scss +164 -164
- package/styles/toolbar/_theme.scss +451 -451
- package/styles/toolbar/bootstrap-dark.css +0 -1
- package/styles/toolbar/bootstrap.css +0 -1
- package/styles/toolbar/bootstrap.scss +1 -0
- package/styles/toolbar/bootstrap4.css +0 -1
- package/styles/toolbar/fabric-dark.css +0 -1
- package/styles/toolbar/fabric.css +0 -1
- package/styles/toolbar/fabric.scss +1 -0
- package/styles/toolbar/highcontrast-light.css +0 -1
- package/styles/toolbar/highcontrast.css +0 -1
- package/styles/toolbar/highcontrast.scss +1 -0
- package/styles/toolbar/icons/_bootstrap-dark.scss +16 -16
- package/styles/toolbar/icons/_bootstrap.scss +16 -16
- package/styles/toolbar/icons/_bootstrap4.scss +16 -16
- package/styles/toolbar/icons/_fabric-dark.scss +16 -16
- package/styles/toolbar/icons/_fabric.scss +16 -16
- package/styles/toolbar/icons/_highcontrast-light.scss +16 -16
- package/styles/toolbar/icons/_highcontrast.scss +16 -16
- package/styles/toolbar/icons/_material-dark.scss +16 -16
- package/styles/toolbar/icons/_material.scss +16 -16
- package/styles/toolbar/material-dark.css +0 -1
- package/styles/toolbar/material.css +0 -1
- package/styles/toolbar/material.scss +1 -0
- package/styles/treeview/_all.scss +2 -2
- package/styles/treeview/_bootstrap-dark-definition.scss +131 -131
- package/styles/treeview/_bootstrap-definition.scss +127 -127
- package/styles/treeview/_bootstrap4-definition.scss +153 -153
- package/styles/treeview/_fabric-dark-definition.scss +130 -130
- package/styles/treeview/_fabric-definition.scss +126 -126
- package/styles/treeview/_highcontrast-definition.scss +132 -132
- package/styles/treeview/_highcontrast-light-definition.scss +137 -137
- package/styles/treeview/_layout.scss +551 -551
- package/styles/treeview/_material-dark-definition.scss +126 -126
- package/styles/treeview/_material-definition.scss +126 -126
- package/styles/treeview/_theme.scss +331 -331
- package/styles/treeview/bootstrap-dark.css +0 -3
- package/styles/treeview/bootstrap.css +0 -3
- package/styles/treeview/bootstrap4.css +0 -3
- package/styles/treeview/fabric-dark.css +0 -3
- package/styles/treeview/fabric.css +0 -3
- package/styles/treeview/highcontrast-light.css +0 -3
- package/styles/treeview/highcontrast.css +0 -3
- package/styles/treeview/icons/_bootstrap-dark.scss +39 -39
- package/styles/treeview/icons/_bootstrap.scss +39 -39
- package/styles/treeview/icons/_bootstrap4.scss +39 -39
- package/styles/treeview/icons/_fabric-dark.scss +43 -43
- package/styles/treeview/icons/_fabric.scss +43 -43
- package/styles/treeview/icons/_highcontrast-light.scss +43 -43
- package/styles/treeview/icons/_highcontrast.scss +43 -43
- package/styles/treeview/icons/_material-dark.scss +43 -43
- package/styles/treeview/icons/_material.scss +43 -43
- package/styles/treeview/material-dark.css +0 -3
- package/styles/treeview/material.css +9 -3
- package/styles/v-scroll/_all.scss +2 -2
- package/styles/v-scroll/_bootstrap-dark-definition.scss +50 -50
- package/styles/v-scroll/_bootstrap-definition.scss +49 -49
- package/styles/v-scroll/_bootstrap4-definition.scss +49 -49
- package/styles/v-scroll/_fabric-dark-definition.scss +51 -51
- package/styles/v-scroll/_fabric-definition.scss +50 -50
- package/styles/v-scroll/_highcontrast-definition.scss +51 -51
- package/styles/v-scroll/_highcontrast-light-definition.scss +52 -52
- package/styles/v-scroll/_layout.scss +162 -162
- package/styles/v-scroll/_material-dark-definition.scss +78 -78
- package/styles/v-scroll/_material-definition.scss +77 -77
- package/styles/v-scroll/_theme.scss +133 -133
- package/styles/v-scroll/icons/_bootstrap-dark.scss +26 -26
- package/styles/v-scroll/icons/_bootstrap.scss +26 -26
- package/styles/v-scroll/icons/_bootstrap4.scss +26 -26
- package/styles/v-scroll/icons/_fabric-dark.scss +26 -26
- package/styles/v-scroll/icons/_fabric.scss +26 -26
- package/styles/v-scroll/icons/_highcontrast-light.scss +26 -26
- package/styles/v-scroll/icons/_highcontrast.scss +26 -26
- package/styles/v-scroll/icons/_material-dark.scss +26 -26
- package/styles/v-scroll/icons/_material.scss +26 -26
- package/tslint.json +111 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-navigations.min.js","sources":["../../src/common/h-scroll.js","../../src/common/v-scroll.js","../../src/common/menu-base.js","../../src/toolbar/toolbar.js","../../src/accordion/accordion.js","../../src/context-menu/context-menu.js","../../src/menu/menu.js","../../src/tab/tab.js","../../src/treeview/treeview.js","../../src/sidebar/sidebar.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n * <div id=\"scroll\"/>\n * <script>\n * var scrollObj = new HScroll();\n * scrollObj.appendTo(\"#scroll\");\n * </script>\n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n * @param options - Specifies HScroll model properties as options.\n * @param element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n * @private\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n * @private\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns void.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n value ? this.element.classList.add(CLS_DISABLE) : this.element.classList.remove(CLS_DISABLE);\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var nav = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var navEle = this.createElement('div', { id: id.concat('_left'), className: clsLeft + ' ' + CLS_DISABLE });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var element = this.scrollEle;\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n var scrlLeft = element.scrollLeft;\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance;\n distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n * @param {HScrollModel} newProp\n * @param {HScrollModel} oldProp\n * @returns void\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n * <div id=\"scroll\"/>\n * <script>\n * var scrollObj = new VScroll();\n * scrollObj.appendTo(\"#scroll\");\n * </script>\n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n * @param options - Specifies VScroll model properties as options.\n * @param element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n * @private\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n * @private\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflowY = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns void.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n value ? this.element.classList.add(CLS_DISABLE) : this.element.classList.remove(CLS_DISABLE);\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () { timeoutFun_1(); }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () { timeoutFun(); }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootElement = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance;\n distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var rootEle = this.element;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n * @param {VScrollModel} newProp\n * @param {VScrollModel} oldProp\n * @returns void\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { updateBlazorTemplate, resetBlazorTemplate, blazorTemplates, extend } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * @private\n * Base class for Menu and ContextMenu components.\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n * @private\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n * @private\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n refEle ? this.element.parentElement.insertBefore(ul, refEle) : this.element.parentElement.appendChild(ul);\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering\n * @private\n */\n MenuBase.prototype.render = function () {\n this.initialize();\n this.renderItems();\n if (this.isMenu && this.template && this.isBlazor()) {\n var menuTemplateId = this.element.id + TEMPLATE_PROPERTY;\n resetBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY);\n if (Object.keys(blazorTemplates).length) {\n extend(this.tempItem, blazorTemplates[menuTemplateId], [], true);\n }\n updateBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY, this);\n }\n this.wireEvents();\n this.renderComplete();\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (this.isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n var wrapper = this.getWrapper();\n this.element.classList.contains('e-vertical') ?\n this.addScrolling(wrapper, this.element, 'vscroll', wrapper.offsetHeight, this.element.offsetHeight)\n : this.addScrolling(wrapper, this.element, 'hscroll', wrapper.offsetWidth, this.element.offsetWidth);\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n e.action === DOWNARROW ? fliIdx++ : fliIdx--;\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var wrapper = this.getWrapper();\n var cul = this.getUlByNavIdx();\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n ((action === DOWNARROW) || (action === RIGHTARROW)) ? index++ : index--;\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var index = void 0;\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, null, null, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n this.closeMenu(null, e);\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n MenuBase.prototype.closeMenu = function (ulIndex, e) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var ul_1;\n var item_1;\n var items_1;\n var beforeCloseArgs = void 0;\n var wrapper = this.getWrapper();\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper.childElementCount;\n ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n }\n _this.unWireKeyboardEvent(popupEle);\n _this.destroyScrollObj(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n }\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n else if (isOpen && _this.hamburgerMode && ulIndex !== null) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !ulIndex && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n sli_1.classList.add(FOCUSED);\n sli_1.focus();\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.destroyScrollObj = function (scrollObj, scrollEle) {\n if (scrollObj) {\n scrollObj.destroy();\n scrollEle.parentElement.appendChild(select('.e-menu-parent', scrollEle));\n detach(scrollEle);\n }\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (_this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var eventArgs;\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.split(' '));\n }\n this.popupObj.hide();\n }\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n if (this.isMenu && this.template && this.isBlazor()) {\n var menuTemplateId = this.element.id + TEMPLATE_PROPERTY;\n if (Object.keys(blazorTemplates).length) {\n var itemFromBlazorTemplate = blazorTemplates[menuTemplateId];\n this.tempItem = this.tempItem.concat(itemFromBlazorTemplate);\n blazorTemplates[menuTemplateId] = this.tempItem;\n }\n updateBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY, this);\n }\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent_1 = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n blankIconElem.forEach(function (element) { return element.style.textIndent = blankIconIndent_1 + 'px'; });\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: this.title\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n var eventArgs = void 0;\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n if (this.hamburgerMode) {\n var beforeCloseArgs = void 0;\n beforeCloseArgs = { element: this.element, parentItem: null, event: e, items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n }\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var navIdx = this.getIndex(li ? li.id : null, true);\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n _this.addScrolling(_this.popupWrapper, _this.uList, 'vscroll', _this.popupWrapper.offsetHeight, _this.uList.offsetHeight);\n _this.checkScrollOffset(e);\n }\n var collide = void 0;\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n collide = isCollide(_this.popupWrapper, null, _this.left, _this.top);\n if ((_this.isNestedOrVertical || _this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n _this.popupObj.collision.X = 'none';\n var offWidth = closest(_this.lItem, '.e-' + _this.getModuleName() + '-wrapper').offsetWidth;\n _this.left =\n _this.enableRtl ? calculatePosition(_this.lItem, _this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : _this.left - _this.popupWrapper.offsetWidth - offWidth;\n }\n collide = isCollide(_this.popupWrapper, null, _this.left, _this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n _this.left = _this.callFit(_this.popupWrapper, true, false, _this.top, _this.left).left;\n }\n _this.popupWrapper.style.left = _this.left + 'px';\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n }\n _this.popupWrapper.style.display = '';\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n var offsetLeft = void 0;\n var offsetRight = void 0;\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.addScrolling = function (wrapper, ul, scrollType, wrapperOffset, contentOffset) {\n if (this.enableScrolling && wrapperOffset < contentOffset) {\n var scrollEle = this.createElement('div', { className: 'e-menu-' + scrollType });\n wrapper.appendChild(scrollEle);\n scrollEle.appendChild(ul);\n scrollEle.style.maxHeight = wrapper.style.maxHeight;\n var scrollObj = void 0;\n wrapper.style.overflow = 'hidden';\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: this.enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', wrapper).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: this.enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', wrapper).offsetWidth;\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (!isNullOrUndefined(left) && !isNullOrUndefined(top))) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var id = 'id';\n var iconCss = 'iconCss';\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: this.getFields(level),\n template: this.template,\n itemCreating: function (args) {\n if (!args.curData[args.fields[id]]) {\n args.curData[args.fields[id]] = getUniqueID('menuitem');\n }\n args.curData.htmlAttributes = {\n role: 'menuitem',\n tabindex: '-1'\n };\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text];\n }\n if (args.curData[args.fields[iconCss]] === '') {\n args.curData[args.fields[iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.removeAttribute('role');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n if (!_this.isMenu) {\n args.item.removeAttribute('role');\n }\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length))) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n this.element.classList.contains('e-hide-menu') ? this.openHamburgerMenu(e) : this.closeHamburgerMenu(e);\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n this.closeMenu(culIdx + 1, e);\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || trgt.parentElement !== wrapper) {\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (this.showSubMenu) {\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.querySelectorAll('li'), li);\n if (this.isMenu && this.template && this.isBlazor()) {\n idx = Array.prototype.indexOf.call(ul.querySelectorAll(li.tagName), li);\n }\n else {\n idx = Array.prototype.indexOf.call(ul.children, li);\n }\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.isBlazor = function () {\n return ((Object.keys(window).indexOf('ejsInterop') === -1) ? false : true);\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed\n * @private\n * @param {MenuBaseModel} newProp\n * @param {MenuBaseModel} oldProp\n * @returns void\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n wrapper.classList.toggle(RTL);\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n this_1.element.classList.contains('e-vertical') ?\n this_1.addScrolling(wrapper, this_1.element, 'vscroll', wrapper.offsetHeight, this_1.element.offsetHeight)\n : this_1.addScrolling(wrapper, this_1.element, 'hscroll', wrapper.offsetWidth, this_1.element.offsetWidth);\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n _this.addScrolling(wrapper, ul_2, 'vscroll', wrapper.offsetHeight, ul_2.offsetHeight);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n this_1.element.classList.contains('e-vertical') ? this_1.destroyScrollObj(getInstance(ul_3, VScroll), ul_3)\n : this_1.destroyScrollObj(getInstance(ul_3, HScroll), ul_3);\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n _this.destroyScrollObj(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items':\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n if (!Object.keys(oldProp.items).length) {\n var ul_4 = this_1.element;\n if (this_1.isBlazor()) {\n ul_4 = this_1.removeChildElement(this_1.element);\n }\n else {\n ul_4.innerHTML = '';\n }\n var lis = [].slice.call(this_1.createItems(this_1.items).children);\n lis.forEach(function (li) {\n ul_4.appendChild(li);\n });\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n item = this_1.getItems(navIdx);\n this_1.removeItem(item, navIdx, idx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n this.getChangedItemIndex(item, index, Number(Object.keys(item.items).pop()));\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n * @private\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = void 0;\n ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n * @returns Element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n * @param items Text items that needs to be enabled/disabled.\n * @param enable Set `true`/`false` to enable/disable the list items.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n * @param items Text items that needs to be shown.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n * @param items Text items that needs to be hidden.\n * @returns void\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (ishide) {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.add(HIDE);\n }\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.remove(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n * @param items Text items that needs to be removed.\n * @returns void\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n this.removeItem(iitems, navIdx, idx);\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n * @param items Items that needs to be inserted.\n * @param text Text item after that the element to be inserted.\n * @returns void\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n * @param items Items that needs to be inserted.\n * @param text Text item before that the element to be inserted.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n var showIcon;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n showIcon = this.hasField(iitems, this.getField('iconCss', navIdx.length - 1));\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n * @returns void\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n refEle && refEle !== wrapper ? this.clonedElement.parentElement.insertBefore(this.element, refEle) :\n this.clonedElement.parentElement.appendChild(this.element);\n if (this.isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (this.isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n }\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Complex({}, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser } from '@syncfusion/ej2-base';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n * <div id=\"toolbar\"/>\n * <script>\n * var toolbarObj = new Toolbar();\n * toolbarObj.appendTo(\"#toolbar\");\n * </script>\n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n * @param options - Specifies Toolbar model properties as options.\n * @param element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end',\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n while (ele.firstElementChild) {\n ele.removeChild(ele.firstElementChild);\n }\n if (this.trgtEle) {\n ele.appendChild(this.ctrlTem);\n }\n this.clearProperty();\n this.popObj = null;\n this.tbarAlign = null;\n this.remove(this.element, 'e-toolpop');\n ele.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'aria-haspopup', 'role'].forEach(function (attrb) {\n _this.element.removeAttribute(attrb);\n });\n };\n /**\n * Initialize the event handler\n * @private\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.element.setAttribute('tabIndex', '0');\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.keyModule.destroy();\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n if (this.tbarAlign) {\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n // tslint:disable-next-line:max-line-length\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n var ele = void 0;\n var nodes = void 0;\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst) || (value === 'next' && popEle.lastElementChild === clst)) {\n return;\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n this.element.removeAttribute('tabindex');\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var clst;\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns void.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n value ? rootEle.classList.add(CLS_DISABLE) : rootEle.classList.remove(CLS_DISABLE);\n rootEle.setAttribute('tabindex', !value ? '0' : '-1');\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', !value ? '0' : '-1');\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n // tslint:disable-next-line:max-line-length\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el);\n // tslint:enable-next-line:max-line-length\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var clsList = trgt.classList;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n itemObj = this.items[this.tbarEle.indexOf(clst)];\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n ;\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.separator();\n this.refreshToolbarTemplate();\n this.wireEvents();\n if (isBlazor()) {\n this.renderComplete();\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false', 'aria-haspopup': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical',\n };\n attributes(this.element, ariaAttr);\n };\n Toolbar.prototype.renderControl = function () {\n this.trgtEle = (this.element.children.length > 0) ? this.element.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n };\n /** @hidden */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n * @returns void.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('tabIndex', '0');\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('tabIndex', '0');\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var eleInlineItem;\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[i].offsetLeft < 30 && eleItem[i].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[i].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[i].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[index]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[i];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var eleHeight;\n var eleItem;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR + ':not(.' + CLS_POPUP + ')');\n sepHeight = (element.style.height === 'auto' || element.style.height === '') ? null : sepItem.offsetHeight;\n }\n eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS)) {\n ele = element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n popup.appendTo(ele);\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n this.element.setAttribute('aria-haspopup', 'true');\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n isOpen ? this.add(this.element, CLS_EXTENDEDPOPOPEN) : this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n };\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[i];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n };\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[i]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[i] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[i], [CLS_POPPRI]) && popPriority) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset = (inEle[i].offsetTop + inEle[i].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset = (inEle[i].offsetLeft + inEle[i].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[i].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n if (itemCount === itemPopCount) {\n var sepEle = inEle[i];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[i].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[i], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n var sepDisplay = 'none';\n eleSep.style.display = 'inherit';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = sepDisplay;\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n ele.setAttribute('aria-haspopup', 'false');\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var checkOverflow;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[index].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n this.enableRtl ? innerItem[2].style.top = popWid : innerItem[2].style.bottom = popWid;\n }\n else {\n this.enableRtl ? innerItem[2].style.left = popWid : innerItem[2].style.right = popWid;\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n this.enableRtl ? innerItem[1].style.marginBottom = mrgn : innerItem[1].style.marginTop = mrgn;\n }\n else {\n this.enableRtl ? innerItem[1].style.marginRight = mrgn : innerItem[1].style.marginLeft = mrgn;\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n ele.setAttribute('aria-disabled', 'false');\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var itemEleDom;\n var innerItem;\n var innerPos;\n var items = this.items;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[i], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[i], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[i].align.toLowerCase());\n if (innerPos) {\n if (!(items[i].showAlwaysInPopup && items[i].overflow !== 'Show')) {\n this.tbarAlgEle[(items[i].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[i];\n keyVal === 'class' ? this.add(element, attr[keyVal]) : element.setAttribute(keyVal, attr[keyVal]);\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns void.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'false');\n }\n else {\n ele.classList.add(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'true');\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[a];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[a] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n isEnable ? removeClass(elements, CLS_DISABLE) : addClass(elements, CLS_DISABLE);\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[index]) {\n return this.tbarEle[index];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n * @param {ItemsModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns void.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.insertBefore(innerEle, ele.children[index]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[index]);\n }\n this.items.splice(index, 0, item);\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns void.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[index] && innerItems[index]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[index]);\n if (this.tbarAlign) {\n var indexAgn = void 0;\n indexAgn = this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].indexOf(this.tbarEle[eleIdx]);\n this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].splice(indexAgn, 1);\n }\n detach(innerItems[index]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n var e = void 0;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n item.id ? (ele.id = item.id) : (ele.id = getUniqueID('tbr-ipt'));\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n item.id ? (dom.id = item.id) : dom.id = getUniqueID('e-tbr-btn');\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var innerEle;\n var dom;\n innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.setAttribute('aria-disabled', 'false');\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n var tempDom = this.createElement('div', { innerHTML: item.tooltipText });\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', '-1');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n return innerEle;\n };\n Toolbar.prototype.refreshToolbarTemplate = function () {\n var blazorContain = Object.keys(window);\n for (var a = 0, length_1 = this.items.length; a < length_1; a++) {\n var item = this.items[a];\n if (item.template && blazorContain.indexOf('Blazor') > -1 && !this.isStringTemplate && item.template.indexOf('<div>Blazor') === 0) {\n resetBlazorTemplate(this.element.id + a + '_template', 'Template');\n updateBlazorTemplate(this.element.id + a + '_template', 'Template', item);\n }\n }\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', '-1');\n }\n this.activeEle = curEle;\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', '0');\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {ToolbarModel} newProp\n * @param {ToolbarModel} oldProp\n * @returns void\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var oldProperty = Object(oldProp.items[index])[property];\n var newProperty = Object(newProp.items[index])[property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[index].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n detach(itemCol[index]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[index]], index);\n this.items.splice(index, 1);\n if (this.items[index].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n var wid = tEle.offsetWidth;\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.renderOverflowMode();\n if (this.popObj && wid < tEle.offsetWidth) {\n this.popupRefresh(this.popObj.element, false);\n }\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.add(tEle, CLS_RTL) : this.remove(tEle, CLS_RTL);\n if (!isNOU(this.scrollModule)) {\n newProp.enableRtl ? this.add(this.scrollModule.element, CLS_RTL) : this.remove(this.scrollModule.element, CLS_RTL);\n }\n if (!isNOU(this.popObj)) {\n newProp.enableRtl ? this.add(this.popObj.element, CLS_RTL) : this.remove(this.popObj.element, CLS_RTL);\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns void.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var initIndex;\n var ele;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[eleIndex]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[eleIndex];\n }\n if (ele) {\n value ? ele.classList.add(CLS_HIDDEN) : ele.classList.remove(CLS_HIDDEN);\n if (value && isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex'))) {\n ele.firstElementChild.setAttribute('tabindex', '-1');\n var innerItems_2 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n eleIndex = innerItems_2.indexOf(ele);\n }\n var nextEle = innerItems_2[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n nextEle.firstElementChild.removeAttribute('tabindex');\n break;\n }\n nextEle = innerItems_2[++eleIndex];\n }\n }\n }\n else if (isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n initIndex = 0;\n var setFlag = false;\n var removeFlag = false;\n var initELe = innerItems[initIndex];\n while (initELe) {\n if (!initELe.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(initELe.firstElementChild.getAttribute('tabindex'))) {\n initELe.firstElementChild.setAttribute('tabindex', '-1');\n setFlag = true;\n }\n else {\n if (setFlag && removeFlag) {\n break;\n }\n var skipEle = this.eleContains(initELe);\n if (!skipEle) {\n initELe.firstElementChild.removeAttribute('tabindex');\n removeFlag = true;\n }\n initELe = innerItems[++initIndex];\n }\n }\n else {\n initELe = innerItems[++initIndex];\n }\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, KeyboardEvents, rippleEffect } from '@syncfusion/ej2-base';\nimport { getUniqueID, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { isVisible, closest, attributes, detach, select, isBlazor } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Collection, Animation } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, selectAll } from '@syncfusion/ej2-base';\nvar CLS_ACRDN_ROOT = 'e-acrdn-root';\nvar CLS_ROOT = 'e-accordion';\nvar CLS_ITEM = 'e-acrdn-item';\nvar CLS_ITEMFOCUS = 'e-item-focus';\nvar CLS_ITEMHIDE = 'e-hide';\nvar CLS_HEADER = 'e-acrdn-header';\nvar CLS_HEADERICN = 'e-acrdn-header-icon';\nvar CLS_HEADERCTN = 'e-acrdn-header-content';\nvar CLS_CONTENT = 'e-acrdn-panel';\nvar CLS_CTENT = 'e-acrdn-content';\nvar CLS_TOOGLEICN = 'e-toggle-icon';\nvar CLS_COLLAPSEICN = 'e-tgl-collapse-icon e-icons';\nvar CLS_EXPANDICN = 'e-expand-icon';\nvar CLS_RTL = 'e-rtl';\nvar CLS_CTNHIDE = 'e-content-hide';\nvar CLS_SLCT = 'e-select';\nvar CLS_SLCTED = 'e-selected';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_ANIMATE = 'e-animate';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_TOGANIMATE = 'e-toggle-animation';\nvar CLS_NEST = 'e-nested';\nvar CLS_EXPANDSTATE = 'e-expand-state';\nvar CLS_CONTAINER = 'e-accordion-container';\nvar AccordionActionSettings = /** @class */ (function (_super) {\n __extends(AccordionActionSettings, _super);\n function AccordionActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], AccordionActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AccordionActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], AccordionActionSettings.prototype, \"easing\", void 0);\n return AccordionActionSettings;\n}(ChildProperty));\nexport { AccordionActionSettings };\nvar AccordionAnimationSettings = /** @class */ (function (_super) {\n __extends(AccordionAnimationSettings, _super);\n function AccordionAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"expand\", void 0);\n return AccordionAnimationSettings;\n}(ChildProperty));\nexport { AccordionAnimationSettings };\n/**\n * An item object that is used to configure Accordion items.\n */\nvar AccordionItem = /** @class */ (function (_super) {\n __extends(AccordionItem, _super);\n function AccordionItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"content\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], AccordionItem.prototype, \"expanded\", void 0);\n return AccordionItem;\n}(ChildProperty));\nexport { AccordionItem };\n/**\n * The Accordion is a vertically collapsible content panel that displays one or more panels at a time within the available space.\n * ```html\n * <div id='accordion'/>\n * <script>\n * var accordionObj = new Accordion();\n * accordionObj.appendTo('#accordion');\n * </script>\n * ```\n */\nvar Accordion = /** @class */ (function (_super) {\n __extends(Accordion, _super);\n /**\n * Initializes a new instance of the Accordion class.\n * @param options - Specifies Accordion model properties as options.\n * @param element - Specifies the element that is rendered as an Accordion.\n */\n function Accordion(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Contains the keyboard configuration of the Accordion.\n */\n _this.keyConfigs = {\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n enter: 'enter',\n space: 'space',\n home: 'home',\n end: 'end',\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n Accordion.prototype.destroy = function () {\n var _this = this;\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n this.isDestroy = true;\n this.restoreContent(null);\n while (ele.firstElementChild) {\n ele.removeChild(ele.firstElementChild);\n }\n if (this.trgtEle) {\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n }\n ele.classList.remove(CLS_ACRDN_ROOT);\n ele.removeAttribute('style');\n ['aria-disabled', 'aria-multiselectable', 'role', 'data-ripple'].forEach(function (attrb) {\n _this.element.removeAttribute(attrb);\n });\n };\n Accordion.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.isNested = false;\n this.templateEle = [];\n if (!this.isDestroy) {\n this.isDestroy = false;\n }\n if (!isNOU(nested)) {\n nested.classList.add(CLS_NEST);\n this.isNested = true;\n }\n else {\n this.element.classList.add(CLS_ACRDN_ROOT);\n }\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n if (!this.enablePersistence || isNOU(this.expandedItems)) {\n this.expandedItems = [];\n }\n };\n Accordion.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Accordion.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n /**\n * To initialize the control rendering\n * @private\n */\n Accordion.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n if (isBlazor()) {\n this.renderComplete();\n }\n };\n Accordion.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n setStyle(this.element, { 'width': width, 'height': height });\n var ariaAttr = {\n 'aria-disabled': 'false', 'role': 'presentation', 'aria-multiselectable': 'true'\n };\n if (this.expandedItems.length > 0) {\n this.initExpand = this.expandedItems;\n }\n attributes(this.element, ariaAttr);\n if (this.expandMode === 'Single') {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n Accordion.prototype.renderControl = function () {\n this.trgtEle = (this.element.children.length > 0) ? select('div', this.element) : null;\n this.renderItems();\n this.initItemExpand();\n };\n Accordion.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n };\n Accordion.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.isNested && !this.isDestroy) {\n rippleEffect(this.element, { selector: '.' + CLS_HEADER });\n }\n if (!this.isNested) {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n };\n Accordion.prototype.focusIn = function (e) {\n e.target.parentElement.classList.add(CLS_ITEMFOCUS);\n };\n Accordion.prototype.focusOut = function (e) {\n e.target.parentElement.classList.remove(CLS_ITEMFOCUS);\n };\n Accordion.prototype.ctrlTemplate = function () {\n this.ctrlTem = this.element.cloneNode(true);\n var innerEles;\n var rootEle = select('.' + CLS_CONTAINER, this.element);\n if (rootEle) {\n innerEles = rootEle.children;\n }\n else {\n innerEles = this.element.children;\n }\n var items = [];\n [].slice.call(innerEles).forEach(function (el) {\n items.push({\n header: (el.childElementCount > 0 && el.children[0]) ? (el.children[0]).innerHTML : '',\n content: (el.childElementCount > 1 && el.children[1]) ? (el.children[1]).innerHTML : ''\n });\n el.parentNode.removeChild(el);\n });\n if (rootEle) {\n this.element.removeChild(rootEle);\n }\n this.setProperties({ items: items }, true);\n };\n Accordion.prototype.toggleIconGenerate = function () {\n var tglIcon = this.createElement('div', { className: CLS_TOOGLEICN });\n var hdrColIcon = this.createElement('span', { className: CLS_COLLAPSEICN });\n tglIcon.appendChild(hdrColIcon);\n return tglIcon;\n };\n Accordion.prototype.initItemExpand = function () {\n var len = this.initExpand.length;\n if (len === 0) {\n return;\n }\n if (this.expandMode === 'Single') {\n this.expandItem(true, this.initExpand[len - 1]);\n }\n else {\n for (var i = 0; i < len; i++) {\n this.expandItem(true, this.initExpand[i]);\n }\n }\n };\n Accordion.prototype.renderItems = function () {\n var _this = this;\n var ele = this.element;\n var innerItem;\n if (isNOU(this.initExpand)) {\n this.initExpand = [];\n }\n if (!isNOU(this.trgtEle)) {\n this.ctrlTemplate();\n }\n var items = this.items;\n if (ele && items.length > 0) {\n items.forEach(function (item, index) {\n innerItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerItem);\n var blazorContain = Object.keys(window);\n if (item.header && blazorContain.indexOf('Blazor') > -1 && !_this.isStringTemplate\n && item.header.indexOf('<div>Blazor') === 0) {\n updateBlazorTemplate(_this.element.id + index + '_header', 'HeaderTemplate', item);\n }\n if (innerItem.childElementCount > 0) {\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n };\n Accordion.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var eventArgs = {};\n var index;\n var tglIcon;\n var acrdEle = closest(trgt, '.' + CLS_ROOT);\n if (acrdEle !== this.element) {\n return;\n }\n trgt.classList.add('e-target');\n var acrdnItem = closest(trgt, '.' + CLS_ITEM);\n var acrdnHdr = closest(trgt, '.' + CLS_HEADER);\n var acrdnCtn = closest(trgt, '.' + CLS_CONTENT);\n if (acrdnItem && (isNOU(acrdnHdr) || isNOU(acrdnCtn))) {\n acrdnHdr = acrdnItem.children[0];\n acrdnCtn = acrdnItem.children[1];\n }\n if (acrdnHdr) {\n tglIcon = select('.' + CLS_TOOGLEICN, acrdnHdr);\n }\n var acrdnCtnItem;\n if (acrdnHdr) {\n acrdnCtnItem = closest(acrdnHdr, '.' + CLS_ITEM);\n }\n else if (acrdnCtn) {\n acrdnCtnItem = closest(acrdnCtn, '.' + CLS_ITEM);\n }\n var acrdActive = [];\n index = this.getIndexByItem(acrdnItem);\n if (acrdnCtnItem) {\n eventArgs.item = this.items[this.getIndexByItem(acrdnCtnItem)];\n }\n eventArgs.originalEvent = e;\n var ctnCheck = !isNOU(tglIcon) && acrdnItem.childElementCount <= 1;\n if (ctnCheck && (isNOU(acrdnCtn) || !isNOU(select('.' + CLS_HEADER + ' .' + CLS_TOOGLEICN, acrdnCtnItem)))) {\n acrdnItem.appendChild(this.contentRendering(index));\n var blazorContain = Object.keys(window);\n if (eventArgs.item.content && blazorContain.indexOf('Blazor') > -1 && !this.isStringTemplate\n && eventArgs.item.content.indexOf('<div>Blazor') === 0) {\n updateBlazorTemplate(this.element.id + index + '_content', 'ContentTemplate', eventArgs.item);\n }\n this.ariaAttrUpdate(acrdnItem);\n }\n this.trigger('clicked', eventArgs);\n var cntclkCheck = (acrdnCtn && !isNOU(select('.e-target', acrdnCtn)));\n var inlineAcrdnSel = '.' + CLS_CONTENT + ' .' + CLS_ROOT;\n var inlineEleAcrdn = acrdnCtn && !isNOU(select('.' + CLS_ROOT, acrdnCtn)) && isNOU(closest(trgt, inlineAcrdnSel));\n var nestContCheck = acrdnCtn && isNOU(select('.' + CLS_ROOT, acrdnCtn)) || !(closest(trgt, '.' + CLS_ROOT) === this.element);\n cntclkCheck = cntclkCheck && (inlineEleAcrdn || nestContCheck);\n trgt.classList.remove('e-target');\n if (trgt.classList.contains(CLS_CONTENT) || trgt.classList.contains(CLS_CTENT) || cntclkCheck) {\n return;\n }\n var acrdcontainer = this.element.querySelector('.' + CLS_CONTAINER);\n var acrdnchild = (acrdcontainer) ? acrdcontainer.children : this.element.children;\n [].slice.call(acrdnchild).forEach(function (el) {\n if (el.classList.contains(CLS_ACTIVE)) {\n acrdActive.push(el);\n }\n });\n var acrdAniEle = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM + ' [' + CLS_ANIMATE + ']'));\n if (acrdAniEle.length > 0) {\n for (var _i = 0, acrdAniEle_1 = acrdAniEle; _i < acrdAniEle_1.length; _i++) {\n var el = acrdAniEle_1[_i];\n acrdActive.push(el.parentElement);\n }\n }\n var sameContentCheck = acrdActive.indexOf(acrdnCtnItem) !== -1 && acrdnCtn.getAttribute('e-animate') === 'true';\n var sameHeader = false;\n if (!isNOU(acrdnItem) && !isNOU(acrdnHdr)) {\n var acrdnCtn_1 = select('.' + CLS_CONTENT, acrdnItem);\n var acrdnRoot = closest(acrdnItem, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n if (isNOU(acrdnCtn_1)) {\n return;\n }\n sameHeader = (expandState === acrdnItem);\n if (isVisible(acrdnCtn_1) && (!sameContentCheck || acrdnCtnItem.classList.contains(CLS_SLCTED))) {\n this.collapse(acrdnCtn_1);\n }\n else {\n if ((acrdActive.length > 0) && this.expandMode === 'Single' && !sameContentCheck) {\n acrdActive.forEach(function (el) {\n _this.collapse(select('.' + CLS_CONTENT, el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n }\n this.expand(acrdnCtn_1);\n }\n if (!isNOU(expandState) && !sameHeader) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n }\n };\n Accordion.prototype.eleMoveFocus = function (action, root, trgt) {\n var clst;\n var clstItem = closest(trgt, '.' + CLS_ITEM);\n if (trgt === root) {\n clst = ((action === 'moveUp' ? trgt.lastElementChild : trgt).querySelector('.' + CLS_HEADER));\n }\n else if (trgt.classList.contains(CLS_HEADER)) {\n clstItem = (action === 'moveUp' ? clstItem.previousElementSibling : clstItem.nextElementSibling);\n if (clstItem) {\n clst = select('.' + CLS_HEADER, clstItem);\n }\n }\n if (clst) {\n clst.focus();\n }\n };\n Accordion.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n var header = closest(e.target, CLS_HEADER);\n if (isNOU(header) && !trgt.classList.contains(CLS_ROOT) && !trgt.classList.contains(CLS_HEADER)) {\n return;\n }\n var clst;\n var root = this.element;\n var content;\n switch (e.action) {\n case 'moveUp':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'moveDown':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'space':\n case 'enter':\n content = trgt.nextElementSibling;\n if (!isNOU(content) && content.classList.contains(CLS_CONTENT)) {\n if (content.getAttribute('e-animate') !== 'true') {\n trgt.click();\n }\n }\n else {\n trgt.click();\n }\n break;\n case 'home':\n case 'end':\n clst = e.action === 'home' ? root.firstElementChild.children[0] : root.lastElementChild.children[0];\n clst.focus();\n break;\n }\n };\n Accordion.prototype.headerEleGenerate = function () {\n var header = this.createElement('div', { className: CLS_HEADER, id: getUniqueID('acrdn_header') });\n var ariaAttr = {\n 'tabindex': '0', 'role': 'heading', 'aria-expanded': 'false', 'aria-selected': 'false',\n 'aria-disabled': 'false', 'aria-level': this.items.length.toString()\n };\n attributes(header, ariaAttr);\n return header;\n };\n Accordion.prototype.renderInnerItem = function (item, index) {\n var innerEle;\n innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.id = getUniqueID('acrdn_item');\n if (item.header && this.angularnativeCondiCheck(item, 'header')) {\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n ctnEle.appendChild(this.fetchElement(hdrEle, item.header, index, true));\n innerEle.appendChild(ctnEle);\n }\n var hdr = select('.' + CLS_HEADER, innerEle);\n if (item.expanded && !isNOU(index) && (!this.enablePersistence)) {\n if (this.initExpand.indexOf(index) === -1) {\n this.initExpand.push(index);\n }\n }\n if (item.cssClass) {\n innerEle.classList.add(item.cssClass);\n }\n if (item.iconCss) {\n var hdrIcnEle = this.createElement('div', { className: CLS_HEADERICN });\n var icon = this.createElement('span', { className: item.iconCss + ' e-icons' });\n hdrIcnEle.appendChild(icon);\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n hdr.appendChild(hdrIcnEle);\n innerEle.appendChild(hdr);\n }\n else {\n hdr.insertBefore(hdrIcnEle, hdr.childNodes[0]);\n }\n }\n if (item.content && this.angularnativeCondiCheck(item, 'content')) {\n var hdrIcon = this.toggleIconGenerate();\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n innerEle.appendChild(hdr);\n }\n hdr.appendChild(hdrIcon);\n this.add(innerEle, CLS_SLCT);\n }\n return innerEle;\n };\n Accordion.prototype.angularnativeCondiCheck = function (item, prop) {\n var property = prop === 'content' ? item.content : item.header;\n var content = property;\n if (this.isAngular && !isNOU(content.elementRef)) {\n var data = content.elementRef.nativeElement.data;\n if (isNOU(data) || data === '' || (data.indexOf('bindings=') === -1)) {\n return true;\n }\n var parseddata = JSON.parse(content.elementRef.nativeElement.data.replace('bindings=', ''));\n if (!isNOU(parseddata) && parseddata['ng-reflect-ng-if'] === 'false') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n Accordion.prototype.fetchElement = function (ele, value, index, isHeader) {\n var blazorContain = Object.keys(window);\n var templateFn;\n var temString;\n try {\n if (document.querySelectorAll(value).length) {\n var eleVal = document.querySelector(value);\n temString = eleVal.outerHTML.trim();\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n catch (e) {\n if (typeof (value) === 'string' && blazorContain.indexOf('Blazor') > -1 && value.indexOf('<div>Blazor') !== 0) {\n ele.innerHTML = value;\n }\n else {\n templateFn = templateCompiler(value);\n }\n }\n var tempArray;\n if (!isNOU(templateFn)) {\n var templateProps = void 0;\n if (ele.classList.contains(CLS_HEADERCTN)) {\n templateProps = this.element.id + index + '_header';\n }\n else if (ele.classList.contains(CLS_CTENT)) {\n templateProps = this.element.id + index + '_content';\n }\n tempArray = templateFn({}, null, null, templateProps, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0 && !(isNOU(tempArray[0].tagName) && tempArray.length === 1)) {\n [].slice.call(tempArray).forEach(function (el) {\n if (!isNOU(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = value;\n }\n if (!isNOU(temString)) {\n if (this.templateEle.indexOf(value) === -1) {\n this.templateEle.push(value);\n }\n }\n return ele;\n };\n Accordion.prototype.ariaAttrUpdate = function (itemEle) {\n var header = select('.' + CLS_HEADER, itemEle);\n var content = select('.' + CLS_CONTENT, itemEle);\n header.setAttribute('aria-controls', content.id);\n content.setAttribute('aria-labelledby', header.id);\n };\n Accordion.prototype.contentRendering = function (index) {\n var content = this.items[index].content;\n var itemcnt = this.createElement('div', { className: CLS_CONTENT + ' ' + CLS_CTNHIDE, id: getUniqueID('acrdn_panel') });\n attributes(itemcnt, { 'aria-hidden': 'true' });\n var ctn = this.createElement('div', { className: CLS_CTENT });\n itemcnt.appendChild(this.fetchElement(ctn, content, index, false));\n return itemcnt;\n };\n Accordion.prototype.expand = function (trgt) {\n var _this = this;\n var eventArgs;\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || (isVisible(trgt) && trgt.getAttribute('e-animate') !== 'true') || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var acrdnRoot = closest(trgtItemEle, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n var animation = {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n eventArgs = { element: trgtItemEle,\n item: this.items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: true };\n var eff = animation.name;\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n icon.classList.add(CLS_TOGANIMATE);\n _this.expandedItemsPush(trgtItemEle);\n if (!isNOU(expandState)) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n if ((animation.name === 'None')) {\n _this.expandProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.expandProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.expandAnimation(eff, icon, trgt, trgtItemEle, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.expandAnimation = function (ef, icn, trgt, trgtItemEle, animate, args) {\n var _this = this;\n var height;\n var trgtHgt;\n this.lastActiveItemId = trgtItemEle.id;\n if (ef === 'SlideDown') {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n trgt.style.position = 'absolute';\n height = trgtItemEle.offsetHeight;\n trgtHgt = trgt.offsetHeight;\n trgt.style.maxHeight = (trgt.offsetHeight) + 'px';\n trgtItemEle.style.maxHeight = '';\n };\n animate.progress = function () {\n trgtItemEle.style.minHeight = (height + trgt.offsetHeight) + 'px';\n };\n animate.end = function () {\n setStyle(trgt, { 'position': '', 'maxHeight': '' });\n trgtItemEle.style.minHeight = '';\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n else {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n };\n animate.end = function () {\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.expandProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(trgt, CLS_CTNHIDE);\n this.add(trgtItemEle, CLS_SLCTED);\n this.add(icon, CLS_EXPANDICN);\n if (progress === 'end') {\n this.add(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'false');\n attributes(trgt.previousElementSibling, { 'aria-selected': 'true', 'aria-expanded': 'true' });\n icon.classList.remove(CLS_TOGANIMATE);\n this.trigger('expanded', eventArgs);\n }\n };\n Accordion.prototype.expandedItemsPush = function (item) {\n var index = this.getIndexByItem(item);\n if (this.expandedItems.indexOf(index) === -1) {\n this.expandedItems.push(index);\n }\n };\n Accordion.prototype.getIndexByItem = function (item) {\n var itemEle = this.getItemElements();\n return [].slice.call(itemEle).indexOf(item);\n };\n Accordion.prototype.getItemElements = function () {\n var itemEle = [];\n var itemCollection = this.element.children;\n [].slice.call(itemCollection).forEach(function (el) {\n if (el.classList.contains(CLS_ITEM)) {\n itemEle.push(el);\n }\n });\n return itemEle;\n };\n Accordion.prototype.expandedItemsPop = function (item) {\n var index = this.getIndexByItem(item);\n this.expandedItems.splice(this.expandedItems.indexOf(index), 1);\n };\n Accordion.prototype.collapse = function (trgt) {\n var _this = this;\n var eventArgs;\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || !isVisible(trgt) || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var animation = {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n eventArgs = { element: trgtItemEle,\n item: this.items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: false };\n var eff = animation.name;\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n _this.expandedItemsPop(trgtItemEle);\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n icon.classList.add(CLS_TOGANIMATE);\n if ((animation.name === 'None')) {\n _this.collapseProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.collapseProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.collapseAnimation(eff, trgt, trgtItemEle, icon, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.collapseAnimation = function (ef, trgt, trgtItEl, icn, animate, args) {\n var _this = this;\n var height;\n var trgtHeight;\n var itemHeight;\n var remain;\n this.lastActiveItemId = trgtItEl.id;\n if (ef === 'SlideUp') {\n animate.begin = function () {\n itemHeight = trgtItEl.offsetHeight;\n trgtItEl.style.minHeight = itemHeight + 'px';\n trgt.style.position = 'absolute';\n height = trgtItEl.offsetHeight;\n trgtHeight = trgt.offsetHeight;\n trgt.style.maxHeight = trgtHeight + 'px';\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.progress = function () {\n remain = ((height - (trgtHeight - trgt.offsetHeight)));\n if (remain < itemHeight) {\n trgtItEl.style.minHeight = remain + 'px';\n }\n };\n animate.end = function () {\n trgt.style.display = 'none';\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n trgtItEl.style.minHeight = '';\n setStyle(trgt, { 'position': '', 'maxHeight': '', 'display': '' });\n };\n }\n else {\n animate.begin = function () {\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.end = function () {\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.collapseProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(icon, CLS_EXPANDICN);\n this.remove(trgtItemEle, CLS_SLCTED);\n if (progress === 'end') {\n this.add(trgt, CLS_CTNHIDE);\n icon.classList.remove(CLS_TOGANIMATE);\n this.remove(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'true');\n attributes(trgt.previousElementSibling, { 'aria-selected': 'false', 'aria-expanded': 'false' });\n this.trigger('expanded', eventArgs);\n }\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Accordion.prototype.getModuleName = function () {\n return 'accordion';\n };\n Accordion.prototype.itemAttribUpdate = function () {\n var itemEle = this.getItemElements();\n var itemLen = this.items.length;\n itemEle.forEach(function (ele) {\n select('.' + CLS_HEADER, ele).setAttribute('aria-level', '' + itemLen);\n });\n };\n /**\n * Adds new item to the Accordion with the specified index of the Accordion.\n * @param {AccordionItemModel} item - Item array that is to be added to the Accordion.\n * @param {number} index - Number value that determines where the item should be added.\n * By default, item is added at the last index if the index is not specified.\n * @returns void\n */\n Accordion.prototype.addItem = function (item, index) {\n var ele = this.element;\n var itemEle = this.getItemElements();\n if (isNOU(index)) {\n index = this.items.length;\n }\n if (ele.childElementCount >= index) {\n this.items.splice(index, 0, item);\n var innerItemEle = this.renderInnerItem(item, index);\n if (ele.childElementCount === index) {\n ele.appendChild(innerItemEle);\n }\n else {\n ele.insertBefore(innerItemEle, itemEle[index]);\n }\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'focus', this.focusIn, this);\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'blur', this.focusOut, this);\n this.itemAttribUpdate();\n }\n this.expandedItems = [];\n this.expandedItemRefresh(ele);\n if (item.expanded) {\n this.expandItem(true, index);\n }\n };\n Accordion.prototype.expandedItemRefresh = function (ele) {\n var _this = this;\n var itemEle = this.getItemElements();\n [].slice.call(itemEle).forEach(function (el) {\n if (el.classList.contains(CLS_SLCTED)) {\n _this.expandedItemsPush(el);\n }\n });\n };\n /**\n * Dynamically removes item from Accordion.\n * @param {number} index - Number value that determines which item should be removed.\n * @returns void.\n */\n Accordion.prototype.removeItem = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele)) {\n return;\n }\n this.restoreContent(index);\n detach(ele);\n this.items.splice(index, 1);\n this.itemAttribUpdate();\n this.expandedItems = [];\n this.expandedItemRefresh(this.element);\n };\n /**\n * Sets focus to the specified index item header in Accordion.\n * @param {number} index - Number value that determines which item should be focused.\n * @returns void.\n */\n Accordion.prototype.select = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele) || isNOU(select('.' + CLS_HEADER, ele))) {\n return;\n }\n ele.children[0].focus();\n };\n /**\n * Shows or hides the specified item from Accordion.\n * @param {number} index - Number value that determines which item should be hidden/shown.\n * @param {Boolean} isHidden - Boolean value that determines the action either hide (true) or show (false). Default value is false.\n * If the `isHidden` value is false, the item is shown or else item it is hidden.\n * @returns void.\n */\n Accordion.prototype.hideItem = function (index, isHidden) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele)) {\n return;\n }\n if (isNOU(isHidden)) {\n isHidden = true;\n }\n isHidden ? this.add(ele, CLS_ITEMHIDE) : this.remove(ele, CLS_ITEMHIDE);\n };\n /**\n * Enables/Disables the specified Accordion item.\n * @param {number} index - Number value that determines which item should be enabled/disabled.\n * @param {boolean} isEnable - Boolean value that determines the action as enable (true) or disable (false).\n * If the `isEnable` value is true, the item is enabled or else it is disabled.\n * @returns void.\n */\n Accordion.prototype.enableItem = function (index, isEnable) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele)) {\n return;\n }\n var eleHeader = ele.firstElementChild;\n if (isEnable) {\n this.remove(ele, CLS_DISABLE);\n attributes(eleHeader, { 'tabindex': '0', 'aria-disabled': 'false' });\n eleHeader.focus();\n }\n else {\n if (ele.classList.contains(CLS_ACTIVE)) {\n this.expandItem(false, index);\n this.eleMoveFocus('movedown', this.element, eleHeader);\n }\n this.add(ele, CLS_DISABLE);\n eleHeader.setAttribute('aria-disabled', 'true');\n eleHeader.removeAttribute('tabindex');\n }\n };\n /**\n * Expands/Collapses the specified Accordion item.\n * @param {boolean} isExpand - Boolean value that determines the action as expand or collapse.\n * @param {number} index - Number value that determines which item should be expanded/collapsed.`index` is optional parameter.\n * Without Specifying index, based on the `isExpand` value all Accordion item can be expanded or collapsed.\n * @returns void.\n */\n Accordion.prototype.expandItem = function (isExpand, index) {\n var _this = this;\n var root = this.element;\n var itemEle = this.getItemElements();\n if (isNOU(index)) {\n if (this.expandMode === 'Single' && isExpand) {\n var ele = itemEle[itemEle.length - 1];\n this.itemExpand(isExpand, ele, this.getIndexByItem(ele));\n }\n else {\n var item = select('#' + this.lastActiveItemId, this.element);\n [].slice.call(itemEle).forEach(function (el) {\n _this.itemExpand(isExpand, el, _this.getIndexByItem(el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n var expandedItem = select('.' + CLS_EXPANDSTATE, this.element);\n if (expandedItem) {\n expandedItem.classList.remove(CLS_EXPANDSTATE);\n }\n if (item) {\n item.classList.add(CLS_EXPANDSTATE);\n }\n }\n }\n else {\n var ele = itemEle[index];\n if (isNOU(ele) || !ele.classList.contains(CLS_SLCT) || (ele.classList.contains(CLS_ACTIVE) && isExpand)) {\n return;\n }\n else {\n if (this.expandMode === 'Single') {\n this.expandItem(false);\n }\n this.itemExpand(isExpand, ele, index);\n }\n }\n };\n Accordion.prototype.itemExpand = function (isExpand, ele, index) {\n var ctn = ele.children[1];\n if (ele.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (isNOU(ctn) && isExpand) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n var blazorContain = Object.keys(window);\n var item = this.items[index];\n if (item.content && blazorContain.indexOf('Blazor') > -1 && !this.isStringTemplate && item.content.indexOf('<div>Blazor') === 0) {\n updateBlazorTemplate(this.element.id + index + '_content', 'ContentTemplate', item);\n }\n this.ariaAttrUpdate(ele);\n }\n else if (isNOU(ctn)) {\n return;\n }\n isExpand ? this.expand(ctn) : this.collapse(ctn);\n };\n Accordion.prototype.destroyItems = function () {\n this.restoreContent(null);\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n };\n Accordion.prototype.restoreContent = function (index) {\n var ctnElePos;\n if (isNOU(index)) {\n ctnElePos = this.element;\n }\n else {\n ctnElePos = this.element.querySelectorAll('.' + CLS_ITEM)[index];\n }\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(ctnElePos.querySelector(eleStr))) {\n document.body.appendChild(ctnElePos.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Accordion.prototype.updateItem = function (item, index) {\n if (!isNOU(item)) {\n var itemObj = this.items[index];\n this.items.splice(index, 1);\n this.restoreContent(index);\n detach(item);\n this.addItem(itemObj, index);\n }\n };\n Accordion.prototype.getPersistData = function () {\n var keyEntity = ['expandedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {AccordionModel} newProp\n * @param {AccordionModel} oldProp\n * @returns void\n * @private\n */\n Accordion.prototype.onPropertyChanged = function (newProp, oldProp) {\n var acrdn = this.element;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var j = 0; j < changedProp.length; j++) {\n var index = parseInt(Object.keys(newProp.items)[j], 10);\n var property = Object.keys(newProp.items[index])[0];\n var item = selectAll('.' + CLS_ITEM, this.element)[index];\n var oldVal = Object(oldProp.items[index])[property];\n var newVal = Object(newProp.items[index])[property];\n var temp = property;\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || ((temp === 'content') && (oldVal === ''))) {\n this.updateItem(item, index);\n }\n if (property === 'cssClass' && !isNOU(item)) {\n item.classList.remove(oldVal);\n item.classList.add(newVal);\n }\n if (property === 'content' && !isNOU(item) && item.children.length === 2) {\n if (item.classList.contains(CLS_SLCTED)) {\n this.expandItem(false, index);\n }\n detach(item.querySelector('.' + CLS_CONTENT));\n }\n }\n }\n else {\n this.destroyItems();\n this.renderItems();\n this.initItemExpand();\n }\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.add(acrdn, CLS_RTL) : this.remove(acrdn, CLS_RTL);\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyle(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'expandMode':\n if (newProp.expandMode === 'Single') {\n this.element.setAttribute('aria-multiselectable', 'false');\n if (this.expandedItems.length > 1) {\n this.expandItem(false);\n }\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n break;\n }\n }\n };\n __decorate([\n Collection([], AccordionItem)\n ], Accordion.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Accordion.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Accordion.prototype, \"height\", void 0);\n __decorate([\n Property('Multiple')\n ], Accordion.prototype, \"expandMode\", void 0);\n __decorate([\n Complex({}, AccordionAnimationSettings)\n ], Accordion.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"destroyed\", void 0);\n Accordion = __decorate([\n NotifyPropertyChanges\n ], Accordion);\n return Accordion;\n}(Component));\nexport { Accordion };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// <reference path='../common/menu-base-model.d.ts'/>\nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n * <div id = 'target'></div>\n * <ul id = 'contextmenu'></ul>\n * ```\n * ```typescript\n * <script>\n * var contextMenuObj = new ContextMenu({items: [{ text: 'Cut' }, { text: 'Copy' },{ text: 'Paste' }], target: '#target'});\n * </script>\n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n * @private\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n * @private\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menu', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n * @param top - To specify ContextMenu vertical positioning.\n * @param left - To specify ContextMenu horizontal positioning.\n * @param target - To calculate z-index for ContextMenu based upon the specified target.\n * @method open\n * @returns void\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed\n * @private\n * @param {ContextMenuModel} newProp\n * @param {ContextMenuModel} oldProp\n * @returns void\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n * @returns string\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// <reference path='../common/menu-base-model.d.ts'/>\nimport { attributes, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, Complex, getUniqueID } from '@syncfusion/ej2-base';\nimport { MenuBase, FieldSettings } from '../common/menu-base';\nvar VMENU = 'e-vertical';\nvar SCROLLABLE = 'e-scrollable';\nvar HAMBURGER = 'e-hamburger';\n/**\n * The Menu is a graphical user interface that serve as navigation headers for your application or site.\n * ```html\n * <ul id = 'menu'></ul>\n * ```\n * ```typescript\n * <script>\n * var menuObj = new Menu({ items: [{ text: 'Home' }, { text: 'Contact Us' },{ text: 'Login' }]});\n * menuObj.appendTo(\"#menu\");\n * </script>\n * ```\n */\nvar Menu = /** @class */ (function (_super) {\n __extends(Menu, _super);\n /**\n * Constructor for creating the component.\n * @private\n */\n function Menu(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.tempItems = [];\n return _this;\n }\n /**\n * Get module name.\n * @returns string\n * @private\n */\n Menu.prototype.getModuleName = function () {\n return 'menu';\n };\n /**\n * For internal use only - prerender processing.\n * @private\n */\n Menu.prototype.preRender = function () {\n this.isMenu = true;\n this.element.id = this.element.id || getUniqueID('ej2-menu');\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n this.clearChanges();\n }\n }\n catch (e) {\n /* action on catch */\n }\n }\n else {\n this.updateMenuItems(this.items);\n }\n _super.prototype.preRender.call(this);\n };\n Menu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n if (this.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode && !this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n if (Browser.isDevice && !this.enableScrolling) {\n this.element.parentElement.classList.add(SCROLLABLE);\n }\n }\n if (this.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n if (this.orientation === 'Horizontal') {\n this.element.classList.add('e-hide-menu');\n }\n }\n };\n Menu.prototype.updateMenuItems = function (items) {\n this.tempItems = items;\n this.items = [];\n this.tempItems.map(this.createMenuItems, this);\n this.setProperties({ items: this.items }, true);\n this.tempItems = [];\n };\n /**\n * Called internally if any of the property value changed\n * @private\n * @param {MenuModel} newProp\n * @param {MenuModel} oldProp\n * @returns void\n */\n Menu.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'orientation':\n if (newProp.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n this.element.classList.remove(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n this.element.removeAttribute('aria-orientation');\n }\n break;\n case 'items':\n if (!Object.keys(oldProp.items).length) {\n this.updateMenuItems(newProp.items);\n }\n break;\n case 'hamburgerMode':\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n if (newProp.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n }\n else {\n this.element.parentElement.classList.remove(HAMBURGER);\n }\n if (this.orientation === 'Vertical') {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n else {\n if (this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');\n }\n break;\n case 'title':\n if (this.hamburgerMode && this.element.previousElementSibling) {\n this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;\n }\n break;\n case 'target':\n if (this.hamburgerMode) {\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n if (this.orientation === 'Horizontal') {\n if (!newProp.target) {\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n }\n break;\n }\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n };\n Menu.prototype.createMenuItems = function (item) {\n var pIdField;\n var idx;\n var i;\n var items = this.items;\n pIdField = this.getField('parentId');\n if (item[pIdField]) {\n idx = this.getIndex(item[pIdField].toString(), true);\n for (i = 0; i < idx.length; i++) {\n if (!items[idx[i]].items) {\n items[idx[i]].items = [];\n }\n items = items[idx[i]].items;\n }\n items.push(item);\n }\n else {\n this.items.push(item);\n }\n };\n /**\n * This method is used to open the Menu in hamburger mode.\n * @method open\n * @returns void\n */\n Menu.prototype.open = function () {\n _super.prototype.openHamburgerMenu.call(this);\n };\n /**\n * Closes the Menu if it is opened in hamburger mode.\n */\n Menu.prototype.close = function () {\n _super.prototype.closeHamburgerMenu.call(this);\n };\n __decorate([\n Property('Horizontal')\n ], Menu.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Menu.prototype, \"target\", void 0);\n __decorate([\n Property(null)\n ], Menu.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"hamburgerMode\", void 0);\n __decorate([\n Property('Menu')\n ], Menu.prototype, \"title\", void 0);\n __decorate([\n Complex({}, FieldSettings)\n ], Menu.prototype, \"fields\", void 0);\n Menu = __decorate([\n NotifyPropertyChanges\n ], Menu);\n return Menu;\n}(MenuBase));\nexport { Menu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { updateBlazorTemplate, isBlazor } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_HORIZONTAL = 'e-horizontal';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n * <div id=\"tab\"></div>\n * <script>\n * var tabObj = new Tab();\n * tab.appendTo(\"#tab\");\n * </script>\n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n * @param options - Specifies Tab model properties as options.\n * @param element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.animateOptions = {};\n _this.animObj = new Animation(_this.animateOptions);\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.resizeContext = _this.refreshActElePosition.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n * @returns void\n */\n Tab.prototype.destroy = function () {\n var _this = this;\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n }\n this.unWireEvents();\n ['role', 'aria-disabled', 'aria-activedescendant', 'tabindex', 'aria-orientation'].forEach(function (val) {\n _this.element.removeAttribute(val);\n });\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Initialize component\n * @private\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwipeed = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { role: 'tablist', 'aria-disabled': 'false', 'aria-activedescendant': '' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n * @private\n */\n Tab.prototype.render = function () {\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (isBlazor()) {\n this.renderComplete();\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n var scrCnt = void 0;\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i).innerHTML);\n }\n if (count > 0) {\n while (this.hdrEle.firstElementChild) {\n detach(this.hdrEle.firstElementChild);\n }\n this.hdrEle.appendChild(this.createElement('div', { className: CLS_ITEMS }));\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + '_' + index,\n attrs: { role: 'tab', 'aria-controls': CLS_CONTENT + '_' + index, 'aria-selected': 'false' }\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, innerHTML: item, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', { className: CLS_WRAP, innerHTML: cont, attrs: { tabIndex: '-1' } });\n select('.' + CLS_ITEMS, _this.element).appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, _this.element)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n if (item.headerTemplate && isBlazor() && !this.isStringTemplate &&\n item.headerTemplate.indexOf('<div>Blazor') === 0) {\n updateBlazorTemplate(this.element.id + i + '_' + 'headerTemplate', 'HeaderTemplate', item);\n }\n }\n this.updateOrientationAttribute();\n this.setCloseButton(this.showCloseButton);\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n contents.item(i).className += CLS_ITEM;\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + i });\n contents.item(i).id = CLS_CONTENT + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n _this.lastIndex = ((tbCount === 0) ? i : ((_this.isReplace) ? (index + i) : (_this.lastIndex + 1)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: '-1' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray === []) {\n _this.itemIndexArray.push(CLS_ITEM + '_' + _this.lastIndex);\n }\n else {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + '_' + _this.lastIndex, role: 'tab', 'aria-selected': 'false'\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = item.cssClass + ' ' + disabled + ' ' + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n (this.isIconAlone) ? this.element.classList.add(CLS_ICON_TAB) : this.element.classList.remove(CLS_ICON_TAB);\n return tItems;\n };\n Tab.prototype.removeActiveClass = function (id) {\n var hdrActEle = selectAll(':root .' + CLS_HEADER + ' .' + CLS_TB_ITEM + '.' + CLS_ACTIVE, this.element)[0];\n var selectEle = select('.' + CLS_HEADER, this.element);\n if (this.headerPlacement === 'Bottom') {\n hdrActEle = selectAll(':root .' + CLS_HEADER + ' .' + CLS_TB_ITEM + '.' + CLS_ACTIVE, selectEle)[0];\n }\n if (!isNOU(hdrActEle)) {\n hdrActEle.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele.cloneNode(true), selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n ele.outerHTML = '';\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target.cloneNode(true));\n this.actEleId = target.id;\n target.outerHTML = '';\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.updateOrientationAttribute = function () {\n attributes(this.element, { 'aria-orientation': (this.isVertical() ? 'vertical' : 'horizontal') });\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n (val === true) ? trg.classList.add(CLS_CLOSE_SHOW) : trg.classList.remove(CLS_CLOSE_SHOW);\n this.tbObj.refreshOverflow();\n this.refreshActElePosition();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = { name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = { name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n var oldCnt;\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var no = this.extIndex(this.tbItem[this.selectedItem].id);\n var newCnt = this.getTrgContent(this.cntEle, no);\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n this.prevActiveEle = newCnt.id;\n if (this.initRender || value === false || this.animation === {} || isNOU(this.animation)) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.select(trgIndex);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_HEADER + ' .' + CLS_TB_ITEM, this.element), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n var item = this.items[index];\n if (!isNOU(item)) {\n if (item.content && isBlazor() && !this.isStringTemplate && item.content.indexOf('<div>Blazor') === 0) {\n updateBlazorTemplate(this.element.id + index + '_' + 'content', 'ContentTemplate', item);\n }\n }\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string' && isBlazor() && val.indexOf('<div>Blazor') !== 0) {\n val = val.trim();\n ele.innerHTML = val;\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n if (isBlazor() && !this.isStringTemplate && val.indexOf('<div>Blazor') === 0) {\n templateFUN = templateFn({}, this, prop, this.element.id + index + '_' + prop, this.isStringTemplate);\n }\n else {\n templateFUN = templateFn({}, this, prop);\n }\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n this.element.classList.add(CLS_VTAB);\n }\n if (this.headerPlacement === 'Bottom') {\n this.hdrEle.classList.add(CLS_HBOTTOM);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n }\n this.addVerticalClass();\n this.updateOrientationAttribute();\n this.select(this.selectedItem);\n };\n Tab.prototype.setOrientation = function (place, ele) {\n if (place === 'Bottom' && Array.prototype.indexOf.call(this.element.children, ele) !== 1) {\n this.element.appendChild(ele);\n }\n else {\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = select('.' + CLS_HEADER, this.element);\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.offsetHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n setStyle(this.element, { 'height': '100%' });\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n else if (this.heightAdjustMode === 'Auto') {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n if (this.isTemplate === true) {\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n this.clearTemplate(['content']);\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n ele.classList.remove(CLS_ACTIVE);\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trg;\n var bar;\n var scrollCnt;\n var trgHdrEle;\n if (this.headerPlacement === 'Bottom') {\n trgHdrEle = select('.' + CLS_HEADER, this.element);\n trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n }\n else {\n trgHdrEle = select('.' + CLS_HEADER, this.element);\n trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, this.element);\n }\n if (trg === null) {\n return;\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n bar = select('.' + CLS_INDICATOR, trgHdrEle);\n scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value) {\n this.tbItem = selectAll('.' + CLS_HEADER + ' .' + CLS_TB_ITEM, this.element);\n var trg = this.tbItem[value];\n if (value >= 0) {\n this.setProperties({ selectedItem: value }, true);\n }\n if (value < 0 || isNaN(value) || this.tbItem.length === 0) {\n return;\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n var prev = this.tbItem[this.prevIndex];\n if (!isNOU(prev)) {\n prev.removeAttribute('aria-controls');\n }\n attributes(trg, { 'aria-controls': CLS_CONTENT + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass(id);\n trg.classList.add(CLS_ACTIVE);\n trg.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + '_' + no;\n }\n attributes(this.element, { 'aria-activedescendant': id });\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, trg.id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n var curActItem = select('.' + CLS_HEADER + ' #' + id, this.element);\n this.refreshItemVisibility(curActItem);\n if (!this.initRender) {\n curActItem.firstChild.focus();\n }\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + '_' + this.selectingID, this.content),\n isSwiped: this.isSwipeed\n };\n if (!this.initRender || this.selectedItem !== 0) {\n this.trigger('selected', eventArg);\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.wireEvents = function () {\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n this.keyModule.destroy();\n this.tabKeyModule.destroy();\n if (!isNOU(this.cntEle)) {\n this.touchModule.destroy();\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNOU(trgParent) && trgIndex !== this.selectedItem) {\n this.select(trgIndex);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n this.isSwipeed = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n }\n }\n this.isSwipeed = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var actEle = select('.' + CLS_HEADER + ' .' + CLS_ACTIVE, this.element);\n var tabItem = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', this.element);\n this.popEle = select('.' + CLS_HEADER + ' .' + CLS_TB_POP, this.element);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', '-1');\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n actEle.children.item(0).setAttribute('tabindex', '0');\n break;\n case 'moveLeft':\n case 'moveRight':\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshActElePosition = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle)) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var oldVal = Object(oldProp.items[index])[property];\n var newVal = Object(newProp.items[index])[property];\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + '_' + index, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + '_' + index, this.element);\n if (property === 'header' || property === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (property === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else {\n cntItem.innerHTML = newVal;\n }\n }\n if (property === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (property === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n }\n }\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns void.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstChild.setAttribute('tabindex', '-1');\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n * @param {TabItemsModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns void.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n }\n else {\n var itemsCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.isAdd = true;\n var tabItems = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) ||\n isNOU(textValue_1) || (textValue_1.length === 0) && isNOU(item.header.iconCss))) {\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + '_' + no, className: CLS_ITEM, attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n }\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n * @param {number} index - Index of target item that is going to be removed.\n * @returns void.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n _this.tbObj.removeItems(index);\n _this.items.splice(index, 1);\n _this.itemIndexArray.splice(index, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (trg.classList.contains(CLS_ACTIVE)) {\n // tslint:disable-next-line:max-line-length\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns void.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length === 0) {\n this.select(index);\n }\n item.classList.remove(CLS_HIDDEN);\n }\n this.setActiveBorder();\n item.setAttribute('aria-hidden', '' + value);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @returns void.\n */\n Tab.prototype.select = function (args) {\n var _this = this;\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.tbItem = selectAll('.' + CLS_HEADER + ' .' + CLS_TB_ITEM, this.element);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', '-1');\n }\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ? select('#' + CLS_CONTENT + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ? select('#' + CLS_CONTENT + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwipeed,\n cancel: false\n };\n if (!this.initRender || this.selectedItem !== 0) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args);\n }\n });\n }\n else {\n this.selectingContent(args);\n }\n };\n Tab.prototype.selectingContent = function (args) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && this.tbItem[args].classList.contains(CLS_DISABLE)) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP)) {\n this.setActive(this.popupHandler(this.tbItem[args]));\n }\n else {\n this.setActive(args);\n }\n }\n else {\n this.setActive(0);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args));\n }\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns void.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {TabModel} newProp\n * @param {TabModel} oldProp\n * @returns void\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n if (oldProp.cssClass !== '') {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActElePosition();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n }\n }\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isUndefined, Browser, compile, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor, getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar CONTENT = 'e-content';\nvar DOWNTAIL = 'e-downtail';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar treeAriaAttr = {\n treeRole: 'tree',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: '',\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n * <div id=\"tree\"></div>\n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n _this.parentNodeCheck = [];\n _this.expandChildren = [];\n _this.mouseDownStatus = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n * @returns string\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding();\n this.setExpandOnType();\n this.setRipple();\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEvents();\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.isBlazorPlatform = isBlazor();\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setEnableRtl = function () {\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true,\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n isEnabled ? addClass([this.element], FULLROWWRAP) : removeClass([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (isEnabled) {\n firstUl.setAttribute('aria-multiselectable', 'true');\n }\n else {\n firstUl.removeAttribute('aria-multiselectable');\n }\n };\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n };\n TreeView.prototype.setDataBinding = function () {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n if (_this.fields.dataSource instanceof DataManager && _this.fields.dataSource.dataSource.offline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n this.listBaseOption.ariaAttributes.level = 1;\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : this.getSortedData(this.rootData), this.listBaseOption);\n this.element.appendChild(this.ulElement);\n if (this.loadOnDemand === false) {\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n else {\n this.finalizeNode(this.element);\n }\n if (this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n TreeView.prototype.updateCheckedStateFromDS = function (id) {\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.fields.dataSource.dataSource.offline) || (this.fields.dataSource instanceof DataManager &&\n !this.loadOnDemand)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n }\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var parentData = this.getTreeData(node);\n var id = parentData[0][this.fields.id].toString();\n if (this.dataType === 1) {\n childCheckedElement = this.getChildNodes(this.treeData, id);\n }\n else {\n childCheckedElement = getValue(this.fields.child.toString(), parentData[0]);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.setAttribute('role', 'checkbox');\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n checkboxEle.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n textEle.innerHTML = '';\n var tempArr = this.nodeTemplateFn(e.curData, undefined, undefined, this.element.id + 'nodeTemplate', this.isStringTemplate);\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n this.trigger('drawNode', eventArgs);\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNOU(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[i])) || !isNOU(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var childId = childCheck[index].getAttribute('data-uid');\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNOU(nodes)) {\n for (var len = nodes.length; len >= 0; len--) {\n var liEle = void 0;\n if (nodes.length === 1) {\n liEle = this.getElement(nodes[len - 1]);\n }\n else {\n liEle = this.getElement(nodes[len]);\n }\n if (isNOU(liEle)) {\n var node = void 0;\n node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length; j++) {\n var node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.fields.dataSource.dataSource.offline) || (this.fields.dataSource instanceof DataManager &&\n !this.loadOnDemand)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && !frameSpan.classList.contains(INDETERMINATE) && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n addClass([firstNode], FOCUS);\n this.updateIdAttr(null, firstNode);\n }\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n };\n TreeView.prototype.doExpandAction = function () {\n var eUids = this.expandedNodes;\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isLoaded = true;\n this.isAnimate = true;\n this.isInitalExpand = false;\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li) {\n return;\n }\n else {\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var currLi = closest(wrapper, '.' + LISTITEM);\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n proxy_1.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.isLoaded && this.expandArgs) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var proxy = this;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n proxy.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n // tslint:disable\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if ((this.fields.dataSource instanceof DataManager && (this.fields.dataSource.dataSource.offline)) ||\n (this.fields.dataSource instanceof DataManager && !this.loadOnDemand)) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n if (this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n }\n else if (this.fields.dataSource instanceof DataManager && this.loadOnDemand) {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n if (_this.nodeTemplate && _this.isBlazorPlatform && !_this.isStringTemplate) {\n _this.updateBlazorTemplate();\n }\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.getSortedData(childItems), this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n if (this.loadOnDemand && this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.fields.dataSource.dataSource.offline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id].toString();\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id].toString();\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n var childData;\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot) {\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, obj[i]);\n if (dataId && dataId.toString() === parentId) {\n return getValue(this.fields.child, obj[i]);\n }\n else if (!isNOU(getValue(this.fields.child, obj[i]))) {\n childNodes = this.getChildNodes(getValue(this.fields.child, obj[i]), parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[i][0]) && !isNOU(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !e.ctrlKey)))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n }\n addClass([li], FOCUS);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[i], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n this.element.focus();\n addClass([focusedNode], HOVER);\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n this.element.focus();\n addClass([focusedNode], HOVER);\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n checkWrap.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && childElement === null && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes(this.treeData, checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[length_1]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true ||\n getValue(this.fields.child.toString(), child[length_1])) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = this.getChildNodes(this.treeData, id.toString());\n if (childId_1) {\n (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '.' + FOCUS, this.element);\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains('e-text-content')) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], [HOVER, FOCUS]);\n if (!nextNode.classList.contains('e-disable')) {\n addClass([nextNode], [HOVER, FOCUS]);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n addClass([this.getFocusedNode()], HOVER);\n }\n this.mouseDownStatus = false;\n };\n TreeView.prototype.focusOut = function () {\n removeClass([this.getFocusedNode()], HOVER);\n };\n TreeView.prototype.onMouseOver = function (e) {\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n ;\n TreeView.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n ;\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = (currLi.getAttribute('aria-expanded') === null) ? false : true;\n var checked = null;\n if (this.showCheckBox) {\n checked = select('.' + CHECKBOXWRAP, currLi).getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.destroyTemplate = function (nodeTemplate) {\n this.clearTemplate(['nodeTemplate']);\n };\n TreeView.prototype.reRenderNodes = function () {\n resetBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate');\n if (this.isBlazorPlatform && this.element.firstElementChild) {\n this.element.removeChild(this.element.firstElementChild);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(this.nodeTemplate);\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.isLoaded = false;\n this.setDataBinding();\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n _this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: _this.enableRtl,\n }\n }, _this.createElement);\n _this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n _this.wireInputEvents(inpEle);\n }\n });\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n this.appendNewText(liEle, txtEle, newText, true);\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n var newData = setValue(_this.editFields.text, newText, _this.editData);\n if (!isNOU(_this.nodeTemplateFn)) {\n txtEle.innerHTML = '';\n var tempArr = _this.nodeTemplateFn(newData, undefined, undefined, _this.element.id + 'nodeTemplate', _this.isStringTemplate);\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, txtEle);\n _this.updateBlazorTemplate();\n }\n else {\n txtEle.innerHTML = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n txtEle.focus();\n }\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent();\n }\n });\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNOU(this.treeData[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n // tslint:disable-next-line:max-func-body-length\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragTarget: '.' + TEXTWRAP,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n if ((_this.isBlazorPlatform && _this.dragStartAction) || !_this.isBlazorPlatform) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n }\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n if ((_this.isBlazorPlatform && _this.dragStartAction) || !_this.isBlazorPlatform) {\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n }\n _this.dragStartAction = false;\n });\n }\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING)) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (dropLi && e && (e.event.offsetY < 7)) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (1) : (0);\n dropLi.insertBefore(virEle, dropLi.children[index]);\n }\n else if (dropLi && e && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10))) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (2) : (1);\n dropLi.insertBefore(virEle, dropLi.children[index]);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance = e.dragData.draggable;\n for (var i = 0; i < dragInstance.ej2_instances.length; i++) {\n if (dragInstance.ej2_instances[i] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i = sNodes.length - 1; i >= 0; i--) {\n if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i = 0; i < sNodes.length; i++) {\n if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n this.triggerEvent();\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n if (!dragLi.classList.contains('e-disable') && !dropLi.classList.contains('e-disable')) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n if (e && (pos < 7)) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10))) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[i];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateInstance();\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[i]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n var refNode = dropUl.childNodes[index];\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n var id = this.getId(dropLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n else {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && obj[i].hasOwnProperty(mapper.child)) ||\n (this.fields.dataSource instanceof DataManager && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n var id = void 0;\n id = (nodes[i]) ? nodes[i].toString() : null;\n if (id && this.disableNode.indexOf(nodes[i].toString()) === -1) {\n this.disableNode.push(nodes[i].toString());\n }\n continue;\n }\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n var id = (nodes[i]) ? nodes[i].toString() : null;\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n continue;\n }\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[j]);\n if (!isNOU(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n var childNodes;\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function () {\n if (this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n var eventArgs = { data: this.treeData };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.updateBlazorTemplate = function () {\n updateBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate', this, false);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n if (toBind) {\n var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n e.originalEvent.preventDefault();\n proxy_3.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var proxy_4 = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && e.tapCount === 2)) {\n proxy_4.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n ;\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'focus', this.focusIn, this);\n EventHandler.add(this.element, 'blur', this.focusOut, this);\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'focus', this.focusIn);\n EventHandler.remove(this.element, 'blur', this.focusOut);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n this.keyboardModule.destroy();\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n };\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'fields':\n this.isAnimate = false;\n this.initialRender = true;\n this.updateListProp(this.fields);\n this.reRenderNodes();\n this.initialRender = false;\n this.isAnimate = true;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n this.renderChildNodes(nodes[i], true, null, true);\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n TreeView.prototype.destroy = function () {\n resetBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate');\n this.element.removeAttribute('aria-activedescendant');\n this.element.removeAttribute('tabindex');\n this.unWireEvents();\n this.wireEditingEvents(false);\n this.rippleFn();\n this.rippleIconFn();\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n var dropUl_1;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy_5 = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy_5.renderChildNodes(dropLi, null, function () {\n dropUl_1 = dropLi.querySelector('.' + PARENTITEM);\n proxy_5.addGivenNodes(nodes, dropLi, index, true, dropUl_1);\n proxy_5.triggerEvent();\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent();\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n this.triggerEvent();\n }\n };\n /**\n * Instead of clicking on the TreeView node for editing, we can enable it by using\n * `beginEdit` property. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (!isNOU(ele)) {\n this.createTextbox(ele, null);\n }\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n TreeView.prototype.ensureVisible = function (node) {\n var liEle = this.getElement(node);\n if (isNOU(liEle)) {\n return;\n }\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n setTimeout(function () { liEle.scrollIntoView(true); }, 450);\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n var newCheck = [];\n var i = 0;\n var id = this.fields.id;\n for (i; i < this.treeData.length; i++) {\n //Checks if isChecked is enabled while node is not loaded in DOM\n var checked = null;\n var childNode = null;\n var isLoaded = this.element.querySelector('[data-uid=\"' + this.treeData[i][id].toString() + '\"]');\n if (isLoaded && isLoaded.querySelector('.e-list-item') === null) {\n //Checks if isChecked is enabled for parent\n if (this.getTreeData()[i][this.fields.isChecked] === true\n && this.checkedElement.indexOf(this.getTreeData()[i][id].toString()) === -1) {\n newCheck.push(this.treeData[i][id].toString());\n checked = 2;\n }\n //Checks for child nodes with isChecked enabled\n if (checked !== 2) {\n checked = 1;\n }\n childNode = this.getChildNodes(this.getTreeData(), this.getTreeData()[i][id].toString());\n (childNode !== null && this.autoCheck) ? this.allCheckNode(childNode, newCheck, checked) : childNode = null;\n }\n }\n i = 0;\n //Gets checked nodes based on UI interaction\n while (i < checkNodes.length) {\n if (newCheck.indexOf(checkNodes[i]) !== -1) {\n i++;\n continue;\n }\n newCheck.push(checkNodes[i]);\n //Gets all child which is not loaded while parent is checked\n var parentNode = this.element.querySelector('[data-uid=\"' + checkNodes[i] + '\"]');\n if (parentNode && parentNode.querySelector('.e-list-item') === null) {\n var child = this.getChildNodes(this.treeData, checkNodes[i].toString());\n (child && this.autoCheck) ? this.allCheckNode(child, newCheck) : child = null;\n }\n i++;\n }\n return newCheck;\n };\n /**\n * Get the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent();\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent();\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, formatUnit, EventHandler, Event, isNullOrUndefined, closest, isBlazor } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, removeClass, Touch } from '@syncfusion/ej2-base';\nvar CONTROL = 'e-control';\nvar ROOT = 'e-sidebar';\nvar DOCKER = 'e-dock';\nvar CLOSE = 'e-close';\nvar OPEN = 'e-open';\nvar TRASITION = 'e-transition';\nvar DEFAULTBACKDROP = 'e-sidebar-overlay';\nvar CONTEXTBACKDROP = 'e-backdrop';\nvar RTL = 'e-rtl';\nvar RIGHT = 'e-right';\nvar LEFT = 'e-left';\nvar OVER = 'e-over';\nvar PUSH = 'e-push';\nvar SLIDE = 'e-slide';\nvar VISIBILITY = 'e-visibility';\nvar MAINCONTENTANIMATION = 'e-content-animation';\nvar DISABLEANIMATION = 'e-disable-animation';\nvar CONTEXT = 'e-sidebar-context';\nvar SIDEBARABSOLUTE = 'e-sidebar-absolute';\n/**\n * Sidebar is an expandable or collapsible\n * component that typically act as a side container to place the primary or secondary content alongside of the main content.\n * ```html\n * <aside id=\"sidebar\">\n * </aside>\n * ```\n * ```typescript\n * <script>\n * let sidebarObject: Sidebar = new Sidebar();\n * sidebarObject.appendTo(\"#sidebar\");\n * </script>\n * ```\n */\nvar Sidebar = /** @class */ (function (_super) {\n __extends(Sidebar, _super);\n function Sidebar(options, element) {\n return _super.call(this, options, element) || this;\n }\n Sidebar.prototype.preRender = function () {\n this.setWidth();\n };\n Sidebar.prototype.render = function () {\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n };\n Sidebar.prototype.initialize = function () {\n this.setTarget();\n this.addClass();\n this.setZindex();\n if (this.enableDock) {\n this.setDock();\n }\n if (this.isOpen) {\n this.show();\n }\n else {\n this.setMediaQuery();\n }\n this.checkType(true);\n this.setType(this.type);\n this.setCloseOnDocumentClick();\n this.setEnableRTL();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.setEnableRTL = function () {\n this.enableRtl ? (addClass([this.element], RTL)) :\n (removeClass([this.element], RTL));\n };\n Sidebar.prototype.setTarget = function () {\n this.sidebarEleCopy = this.element.cloneNode(true);\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (this.target) {\n this.target.insertBefore(this.element, this.target.children[0]);\n addClass([this.element], SIDEBARABSOLUTE);\n addClass([this.target], CONTEXT);\n }\n };\n Sidebar.prototype.setCloseOnDocumentClick = function () {\n if (this.closeOnDocumentClick) {\n EventHandler.add(document, 'mousedown touchstart', this.documentclickHandler, this);\n }\n else {\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n }\n };\n Sidebar.prototype.setWidth = function () {\n if (this.enableDock && this.position === 'Left') {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (this.enableDock && this.position === 'Right') {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (!this.enableDock) {\n setStyle(this.element, { 'width': this.setDimension(this.width) });\n }\n };\n Sidebar.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n Sidebar.prototype.setZindex = function () {\n setStyle(this.element, { 'z-index': '' + this.zIndex });\n };\n Sidebar.prototype.addClass = function () {\n var classELement = document.querySelector('.e-main-content');\n if (!isNullOrUndefined((classELement ||\n this.element.nextElementSibling))) {\n addClass([classELement || this.element.nextElementSibling], [MAINCONTENTANIMATION]);\n }\n if (!this.enableDock && this.type !== 'Auto') {\n addClass([this.element], [VISIBILITY]);\n }\n removeClass([this.element], [OPEN, CLOSE, RIGHT, LEFT, SLIDE, PUSH, OVER]);\n this.element.classList.add(ROOT);\n addClass([this.element], (this.position === 'Right') ? RIGHT : LEFT);\n if (this.type === 'Auto' && !Browser.isDevice) {\n this.show();\n }\n else if (!this.isOpen) {\n addClass([this.element], CLOSE);\n }\n if (this.enableDock) {\n addClass([this.element], DOCKER);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n };\n Sidebar.prototype.checkType = function (val) {\n if (!(this.type === 'Push' || this.type === 'Over' || this.type === 'Slide')) {\n this.type = 'Auto';\n }\n else {\n if (!this.element.classList.contains(CLOSE) && !val) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.transitionEnd = function (e) {\n this.setDock();\n if (!isNullOrUndefined(e) && e.target === this.element) {\n this.triggerChange();\n }\n EventHandler.remove(this.element, 'transitionend', this.transitionEnd);\n };\n Sidebar.prototype.destroyBackDrop = function () {\n var sibling = document.querySelector('.e-main-content') ||\n this.element.nextElementSibling;\n if (this.target && this.showBackdrop && sibling) {\n removeClass([sibling], CONTEXTBACKDROP);\n }\n else if (this.showBackdrop && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n /**\n * Hide the Sidebar component, if it is in an open state.\n * @returns void\n */\n Sidebar.prototype.hide = function (e) {\n var _this = this;\n var closeArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n if (isBlazor()) {\n delete closeArguments.model;\n }\n this.trigger('close', closeArguments, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n if (_this.element.classList.contains(CLOSE)) {\n return;\n }\n if (_this.element.classList.contains(OPEN) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], CLOSE);\n removeClass([_this.element], OPEN);\n _this.enableDock ? setStyle(_this.element, { 'width': formatUnit(_this.dockSize) }) :\n setStyle(_this.element, { 'width': formatUnit(_this.width) });\n _this.setType(_this.type);\n var sibling = document.querySelector('.e-main-content') ||\n _this.element.nextElementSibling;\n if (!_this.enableDock && sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n _this.position === 'Left' ? sibling.style.marginLeft = '0px' : sibling.style.marginRight = '0px';\n }\n _this.destroyBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.remove('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: false }, true);\n if (_this.enableDock) {\n setTimeout(function () { return _this.setTimeOut(); }, 50);\n }\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setTimeOut = function () {\n var sibling = document.querySelector('.e-main-content') ||\n this.element.nextElementSibling;\n if (this.element.classList.contains(OPEN) && sibling) {\n if (this.position === 'Left') {\n this.width === 'auto' ? sibling.style.marginLeft = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginLeft = this.setDimension(this.width);\n }\n else {\n this.width === 'auto' ? sibling.style.marginRight = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginRight = this.setDimension(this.width);\n }\n }\n else if (this.element.classList.contains(CLOSE) && sibling) {\n if (this.position === 'Left') {\n this.dockSize === 'auto' ? sibling.style.marginLeft = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginLeft = this.setDimension(this.dockSize);\n }\n else {\n this.dockSize === 'auto' ? sibling.style.marginRight = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginRight = this.setDimension(this.dockSize);\n }\n }\n };\n ;\n /**\n * Shows the Sidebar component, if it is in closed state.\n * @returns void\n */\n Sidebar.prototype.show = function (e) {\n var _this = this;\n var openArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n if (isBlazor()) {\n delete openArguments.model;\n }\n this.trigger('open', openArguments, function (observedopenArgs) {\n if (!observedopenArgs.cancel) {\n removeClass([_this.element], VISIBILITY);\n if (_this.element.classList.contains(OPEN)) {\n return;\n }\n if (_this.element.classList.contains(CLOSE) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], [OPEN, TRASITION]);\n setStyle(_this.element, { 'transform': '' });\n removeClass([_this.element], CLOSE);\n setStyle(_this.element, { 'width': formatUnit(_this.width) });\n _this.setType(_this.type);\n _this.createBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.add('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: true }, true);\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setAnimation = function () {\n if (this.animate) {\n removeClass([this.element], DISABLEANIMATION);\n }\n else {\n addClass([this.element], DISABLEANIMATION);\n }\n };\n Sidebar.prototype.triggerChange = function () {\n var changeArguments = { name: 'change', element: this.element };\n this.trigger('change', changeArguments);\n };\n Sidebar.prototype.setDock = function () {\n if (this.enableDock && this.position === 'Left' && !this.getState()) {\n setStyle(this.element, { 'transform': 'translateX(' + -100 + '%) translateX(' + this.setDimension(this.dockSize) + ')' });\n }\n else if (this.enableDock && this.position === 'Right' && !this.getState()) {\n setStyle(this.element, { 'transform': 'translateX(' + 100 + '%) translateX(' + '-' + this.setDimension(this.dockSize) + ')' });\n }\n if (this.element.classList.contains(CLOSE) && this.enableDock) {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n };\n Sidebar.prototype.createBackDrop = function () {\n if (this.target && this.showBackdrop && this.getState()) {\n var sibling = document.querySelector('.e-main-content') ||\n this.element.nextElementSibling;\n addClass([sibling], CONTEXTBACKDROP);\n }\n else if (this.showBackdrop && !this.modal && this.getState()) {\n this.modal = this.createElement('div');\n this.modal.className = DEFAULTBACKDROP;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n };\n Sidebar.prototype.getPersistData = function () {\n return this.addOnPersist(['type', 'position', 'isOpen']);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Sidebar.prototype.getModuleName = function () {\n return 'sidebar';\n };\n /**\n * Shows or hides the Sidebar based on the current state.\n * @returns void\n */\n Sidebar.prototype.toggle = function (e) {\n this.element.classList.contains(OPEN) ? this.hide() : this.show();\n };\n Sidebar.prototype.getState = function () {\n return this.element.classList.contains(OPEN) ? true : false;\n };\n Sidebar.prototype.setMediaQuery = function () {\n if (this.mediaQuery) {\n var media = false;\n if (typeof (this.mediaQuery) === 'string') {\n media = window.matchMedia(this.mediaQuery).matches;\n }\n else {\n media = (this.mediaQuery).matches;\n }\n if (media && this.windowWidth !== window.innerWidth) {\n this.show();\n }\n else if (this.getState() && this.windowWidth !== window.innerWidth) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.resize = function (e) {\n if (this.type === 'Auto') {\n if (Browser.isDevice) {\n addClass([this.element], OVER);\n }\n else {\n addClass([this.element], PUSH);\n }\n }\n this.setMediaQuery();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.documentclickHandler = function (e) {\n if (closest(e.target, '.' + CONTROL + '' + '.' + ROOT)) {\n return;\n }\n this.hide(e);\n };\n Sidebar.prototype.enableGestureHandler = function (args) {\n if (this.position === 'Left' && args.swipeDirection === 'Right' &&\n (args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n else if (this.position === 'Left' && args.swipeDirection === 'Left') {\n this.hide();\n }\n else if (this.position === 'Right' && args.swipeDirection === 'Right') {\n this.hide();\n }\n else if (this.position === 'Right' && args.swipeDirection === 'Left'\n && (window.innerWidth - args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n };\n Sidebar.prototype.setEnableGestures = function () {\n if (this.enableGestures) {\n this.mainContentEle = new Touch(document.body, { swipe: this.enableGestureHandler.bind(this) });\n this.sidebarEle = new Touch(this.element, { swipe: this.enableGestureHandler.bind(this) });\n }\n else {\n if (this.mainContentEle && this.sidebarEle) {\n this.mainContentEle.destroy();\n this.sidebarEle.destroy();\n }\n }\n };\n Sidebar.prototype.wireEvents = function () {\n this.setEnableGestures();\n window.addEventListener('resize', this.resize.bind(this));\n };\n Sidebar.prototype.unWireEvents = function () {\n window.removeEventListener('resize', this.resize.bind(this));\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n if (this.mainContentEle) {\n this.mainContentEle.destroy();\n }\n if (this.sidebarEle) {\n this.sidebarEle.destroy();\n }\n };\n Sidebar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var sibling = document.querySelector('.e-main-content') ||\n this.element.nextElementSibling;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isOpen':\n this.isOpen ? this.show() : this.hide();\n break;\n case 'width':\n this.setWidth();\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'animate':\n this.setAnimation();\n break;\n case 'type':\n this.checkType(false);\n removeClass([this.element], [VISIBILITY]);\n this.addClass();\n addClass([this.element], this.type === 'Auto' ? (Browser.isDevice ? ['e-over'] :\n ['e-push']) : ['e-' + this.type.toLowerCase()]);\n break;\n case 'position':\n this.element.style.transform = '';\n this.setDock();\n if (sibling) {\n this.position === 'Left' ? sibling.style.marginRight = '0px' : sibling.style.marginLeft = '0px';\n }\n if (this.position === 'Right') {\n removeClass([this.element], LEFT);\n addClass([this.element], RIGHT);\n }\n else {\n removeClass([this.element], RIGHT);\n addClass([this.element], LEFT);\n }\n this.setType(this.type);\n break;\n case 'showBackdrop':\n if (this.showBackdrop) {\n this.createBackDrop();\n }\n else {\n if (this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n break;\n case 'target':\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (isNullOrUndefined(this.target)) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([oldProp.target], CONTEXT);\n setStyle(sibling, { 'margin-left': 0, 'margin-right': 0 });\n document.body.insertAdjacentElement('afterbegin', this.element);\n }\n else {\n _super.prototype.refresh.call(this);\n }\n break;\n case 'closeOnDocumentClick':\n this.setCloseOnDocumentClick();\n break;\n case 'enableDock':\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'zIndex':\n this.setZindex();\n break;\n case 'mediaQuery':\n this.setMediaQuery();\n break;\n case 'enableGestures':\n this.setEnableGestures();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n }\n }\n };\n Sidebar.prototype.setType = function (type) {\n var elementWidth = this.element.getBoundingClientRect().width;\n this.setZindex();\n var sibling = document.querySelector('.e-main-content') ||\n this.element.nextElementSibling;\n if (sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n if (!Browser.isDevice && this.type !== 'Auto') {\n this.position === 'Left' ? sibling.style.marginLeft = '0px' : sibling.style.marginRight = '0px';\n }\n }\n var margin = this.position === 'Left' ? elementWidth + 'px' : elementWidth + 'px';\n var eleWidth = this.position === 'Left' ? elementWidth : -(elementWidth);\n removeClass([this.element], [PUSH, OVER, SLIDE]);\n switch (type) {\n case 'Push':\n addClass([this.element], [PUSH]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n }\n break;\n case 'Slide':\n addClass([this.element], [SLIDE]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style.transform = 'translateX(' + eleWidth + 'px)';\n }\n break;\n case 'Over':\n addClass([this.element], [OVER]);\n if (this.enableDock && this.element.classList.contains(CLOSE)) {\n if (sibling) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n }\n }\n break;\n case 'Auto':\n addClass([this.element], [TRASITION]);\n if (Browser.isDevice) {\n if (sibling && (this.enableDock) && !this.getState()) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n addClass([this.element], PUSH);\n }\n else {\n addClass([this.element], OVER);\n }\n }\n else {\n addClass([this.element], PUSH);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n }\n }\n this.createBackDrop();\n }\n };\n /**\n * Removes the control from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n * @returns void\n */\n Sidebar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n removeClass([this.element], [OPEN, CLOSE, PUSH, SLIDE, OVER, LEFT, RIGHT, TRASITION]);\n if (this.target) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([this.target], CONTEXT);\n }\n this.destroyBackDrop();\n this.element.style.width = '';\n this.element.style.zIndex = '';\n this.element.style.transform = '';\n this.windowWidth = null;\n (!isNullOrUndefined(this.sidebarEleCopy.getAttribute('tabindex'))) ?\n this.element.setAttribute('tabindex', this.tabIndex) : this.element.removeAttribute('tabindex');\n var sibling = document.querySelector('.e-main-content')\n || this.element.nextElementSibling;\n if (!isNullOrUndefined(sibling)) {\n sibling.style.margin = '';\n sibling.style.transform = '';\n }\n this.unWireEvents();\n };\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"dockSize\", void 0);\n __decorate([\n Property(null)\n ], Sidebar.prototype, \"mediaQuery\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enableDock\", void 0);\n __decorate([\n Property('en-US')\n ], Sidebar.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], Sidebar.prototype, \"enableGestures\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"isOpen\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enableRtl\", void 0);\n __decorate([\n Property(true)\n ], Sidebar.prototype, \"animate\", void 0);\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"closeOnDocumentClick\", void 0);\n __decorate([\n Property('Left')\n ], Sidebar.prototype, \"position\", void 0);\n __decorate([\n Property(null)\n ], Sidebar.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"showBackdrop\", void 0);\n __decorate([\n Property('Auto')\n ], Sidebar.prototype, \"type\", void 0);\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], Sidebar.prototype, \"zIndex\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"destroyed\", void 0);\n Sidebar = __decorate([\n NotifyPropertyChanges\n ], Sidebar);\n return Sidebar;\n}(Component));\nexport { Sidebar };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","HScroll","_super","options","element","call","preRender","browser","Browser","info","name","browserCheck","isDevice","customStep","ieCheck","initialize","id","getUniqueID","uniqueId","style","display","enableRtl","classList","add","render","touchModule","Touch","scroll","touchHandler","bind","swipe","swipeHandler","EventHandler","scrollEle","scrollHandler","createOverlay","createNavIcon","setScrollState","isNullOrUndefined","scrollStep","offsetWidth","createElement","className","scrollDiv","setAttribute","ele","_i","innerEle_1","slice","children","ele_1","appendChild","overflowX","scrollItems","getPersistData","keyEntity","addOnPersist","getModuleName","destroy","remove","nav","selectAll","overlay","forEach","detach","_a","elem","removeAttribute","disable","value","navEles","el","concat","rightOverlayEle","CLS_OVERLAY","clsRight","rightEle","navItem","CLS_NAVRIGHTARROW","leftEle","insertBefore","firstChild","eventBinding","clsLeft","navEle","navLeftItem","CLS_NAVLEFTARROW","onKeyPress","e","_this","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","window","setTimeout","onKeyUp","click","clearTimeout","tapHold","tabHoldHandler","tapHoldThreshold","addEventListener","repeatScroll","preventDefault","clickEventHandler","clearInterval","timeout","trgt","originalEvent","contains","firstElementChild","timeoutFun","setInterval","scrollDis","isContinuous","rootEle","querySelector","scrollLeft","frameScrollRequest","distance","swipeEle","velocity","distanceX","start","animate","step","Math","sin","cancelAnimationFrame","swipeDirection","requestAnimationFrame","scrollUpdating","scrollVal","action","scrollValue","scrollDirection","arrowDisabling","addDisable","removeDisable","arrowIcon","width","navLeftEle","navRightEle","leftOverlay","rightOverlay","scrollWidth","ceil","disEle","onPropertyChanged","newProp","oldProp","keys","Property","NotifyPropertyChanges","Component","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","offsetHeight","scrollCnt","buildTag","scrollBar","overflowY","removeClass","navs","overlays","downOverlayEle","clsDown","downEle","CLS_NAVDOWNARROW","upEle","clsUp","navElement","navUpItem","CLS_NAVUPARROW","ev","event","deltaY","swipeElement","distanceY","scrollTop","addDisableCls","removeDisableCls","height","navUpEle","navDownEle","upOverlay","downOverlay","scrollHeight","FOCUSED","HEADER","SELECTED","ITEM","HIDE","POPUP","FieldSettings","apply","ChildProperty","MenuItem","Collection","MenuAnimationSettings","MenuBase","navIdx","animation","Animation","isTapHold","tempItem","isMenu","ul","tagName","ejInst","getValue","clonedElement","setValue","append","cloneNode","refEle","nextElementSibling","parentElement","ejInstance","wrapper","idx","len","attributes","nodeName","nodeValue","parentNode","renderItems","template","isBlazor","menuTemplateId","resetBlazorTemplate","blazorTemplates","extend","updateBlazorTemplate","wireEvents","renderComplete","getWrapper","document","body","cssClass","addClass","split","hamburgerMode","createHeaderContainer","items","ListBase","createJsonFromElement","fields","child","setProperties","removeChildElement","innerHTML","createItems","addScrolling","targetElems","menuHeaderClickHandler","isIos","cmenuHandler","targetElement","getScrollableParent","parent_1","delegateMoverHandler","moverHandler","delegateMouseDownHandler","mouseDownHandler","delegateClickHandler","clickHandler","wireKeyboardEvent","rippleFn","rippleEffect","selector","keyConfigs","downarrow","uparrow","enter","leftarrow","rightarrow","escape","home","end","KeyboardEvents","keyAction","keyBoardHandler","closest","closeMenu","actionName","actionNeeded","enableScrolling","keyCode","removeLIStateByClass","upDownKeyHandler","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","defaultIdx","childElementCount","fliIdx","fli","getLIByClass","getIdx","cli","isValidLI","focus","index","navIdxLen","popup","select","eventArgs","item","getItem","push","keyType","openMenu","trigger","isCMenu","pageX","changedTouches","pageY","canOpen","ulIndex","isMenuVisible","ul_1","item_1","items_1","sli","beforeCloseArgs","popups","getPopups","isClose","cnt","parentItem","cancel","observedCloseArgs","popupEle","closeArgs","popupObj","isOpen","minHeight","unWireKeyboardEvent","destroyScrollObj","getInstance","Popup","hide","toggleAnimation","pop","afterCloseMenu","isMenusClosed","sli_1","removeStateWrapper","scrollObj","querySelectorAll","getIndex","isVisible","valueOf","filter","li","top","left","lItem","elemId","uList","getField","lastChild","data","text","toString","iconCss","ICONS","hdata","hli","popupWrapper","isNestedOrVertical","generatePopup","calculateIndentSize","triggerBeforeOpen","zIndex","getZindexPartial","itemFromBlazorTemplate","liStyle","getComputedStyle","liIndent","parseInt","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent_1","marginRight","actionOnScroll","relateTo","collision","X","Y","position","targetType","content","open","maxHeight","triggerOpen","spanElem","spanTitle","title","spanIcon","attrs","tabindex","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","callFit","x","y","fit","type","menuType","observedOpenArgs","getBoundingClientRect","checkScrollOffset","collide","refreshPosition","isCollide","indexOf","offWidth","calculatePosition","animationOptions","animationSettings","effect","duration","timingFunction","easing","show","setPosition","eventArgs_1","offsetEle","offsetLeft","offsetRight","scrollType","wrapperOffset","contentOffset","overflow","toggleVisiblity","offset","Number","replace","xCollision","visibility","level","showIcon","hasField","listBaseOptions","moduleName","getFields","itemCreating","args","curData","htmlAttributes","role","itemCreated","span","templateID","createList","liTrgt","getLI","hdrWrapper","regex","RegExp","isDifferentElem","exec","showItemOnClick","isClosed","propName","fieldName","url","separator","field","cliWrapper","isInstLI","setLISelected","showSubMenu","cliIdx","culIdx","cIdx","classname","getItems","skipHdr","removeChild","this_1","prop","toggle","unWireEvents","ul_2","ul_3","getChangedItemIndex","insertAfter","removeItem","ul_4","count","lastElementChild","splice","uls","targetSelctor","parent_2","keyboardModule","isMenuOpen","pUlHeight","pElement","begin","progress","isUniqueId","nIndex","isCallBack","unshift","enableItems","enable","disabled","showItems","showHideItems","hideItems","ishide","removeItems","iitems","insertItems","isAfter","menuitem","removeAttributes","removeProperty","getAttribute","refreshing","getElementById","Event","Complex","CLS_ITEMS","CLS_ITEM","CLS_POPUP","Item","Toolbar","resizeContext","resize","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","tab","unwireEvents","tempId","isNOU","trgtEle","ctrlTem","clearProperty","popObj","tbarAlign","attrb","enableCollision","scrollModule","tbarItemsCol","isVertical","isExtendedOpen","popupPriCount","keyModule","keyActionHandler","docKeyDown","popCheck","overflowMode","destroyScroll","removeEventListener","docEvent","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","destroyItems","tbarItems","destroyMode","tempEle","popupRefresh","val","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","popAnimate","eleFocus","nodes","popupCheck","popFrstEle","activeEle","activeEleRemove","tbarScrollChk","eleContains","pos","sib","clsList","isPopupElement","popupNav","popupClickHandler","itemObj","clickedArgs","CLS_RTL","offsetX","dataBind","getElementOffsetY","renderControl","refreshToolbarTemplate","formatUnit","setStyle","ariaAttr","aria-disabled","aria-haspopup","aria-orientation","renderOverflowMode","itemPositioning","checkPopupRefresh","changeOrientation","refreshOverflow","initScroll","innerItems","checkOverflow","itemWidthCal","parseFloat","marginTop","marginBottom","marginLeft","getScrollCntEle","innerItem","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","getElementsByClassName","removePositioning","createPopupEle","eleInlineItem","eleItem","multiVar","extendVar","innerEle","innerNav","vertical","createPopupIcon","innerNavDom","direction","checkPriority","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","nodeIndex","nodePri","tbResize","childNodes","tbarElement","sepItem","extendEle","CLS_POPUPCLASS","popupInit","getPropertyValue","clientHeight","eleStyles","offsetY","close","appendTo","borderRightWidth","tbarPopupHandler","toolEle","popupElePos","offsetTop","popIcon","scrollY","innerHeight","overflowHeight","tbEleData","bottom","inEle","pre","eleOffset","popPriority","eleWid","sepCheck","itemCount","itemPopCount","checkClass","rVal","cls","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","minWidth","sepEle","popedEle","CLS_POPUPDOWN","tbarPriRef","indx","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","root","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","align","toLowerCase","sepBeforePri_1","refreshPositioning","margin","tbarWid","popWid","right","tbarItemAlign","itemEle","showAlwaysInPopup","alignDiv","alignEle","leftAlign_1","ctrlTemplate","itemEleDom","innerPos","renderSubComponent","setAttr","attr","keyVal","isEnable","elements","a","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","templateRender","templateProp","isComponent","itemType","eleObj","templateFn","trim","tempStr","outerHTML","templateCompiler","tempArray","isStringTemplate","buttonRendering","dom","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","btnObj","Button","iconPosition","tooltipText","tempDom","textContent","itemClick","showTextOn","sTxt","blazorContain","length_1","currentTarget","curEle","multirowele","tEle","changedProb","property","newProperty","refresh","popupPriCheck","booleanCheck","itemCol","hideItem","initIndex","isElement","eleIndex","innerItems_2","nextEle","skipEle","setFlag","removeFlag","initELe","CLS_HEADER","CLS_CONTENT","AccordionActionSettings","AccordionAnimationSettings","AccordionItem","Accordion","space","isDestroy","restoreContent","nested","isNested","templateEle","enablePersistence","expandedItems","aria-multiselectable","initExpand","expandMode","initItemExpand","eventName","focusIn","focusOut","innerEles","header","toggleIconGenerate","tglIcon","hdrColIcon","expandItem","renderInnerItem","acrdnItem","acrdnHdr","acrdnCtn","acrdnCtnItem","acrdActive","getIndexByItem","contentRendering","ariaAttrUpdate","cntclkCheck","inlineEleAcrdn","nestContCheck","acrdcontainer","acrdnchild","acrdAniEle","acrdAniEle_1","sameContentCheck","sameHeader","acrdnCtn_1","expandState","collapse","expand","eleMoveFocus","clstItem","headerEleGenerate","aria-expanded","aria-selected","aria-level","angularnativeCondiCheck","ctnEle","hdrEle","fetchElement","hdr","expanded","hdrIcnEle","icon","hdrIcon","isAngular","elementRef","nativeElement","parseddata","JSON","parse","isHeader","temString","eleVal","templateProps","itemcnt","aria-hidden","ctn","trgtItemEle","isExpanded","eff","expandArgs","expandedItemsPush","expandProgress","expandAnimation","ef","icn","trgtHgt","lastActiveItemId","getItemElements","itemCollection","expandedItemsPop","collapseProgress","collapseAnimation","trgtItEl","trgtHeight","itemHeight","remain","itemAttribUpdate","itemLen","addItem","innerItemEle","expandedItemRefresh","isHidden","enableItem","eleHeader","isExpand","itemExpand","expandedItem","ctnElePos","eleStr","updateItem","acrdn","changedProp","j","oldVal","newVal","temp","ContextMenu","VMENU","Menu","tempItems","clearChanges","updateMenuItems","orientation","map","createMenuItems","pIdField","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POPUP","TabActionSettings","TabAnimationSettings","Header","TabItem","Tab","animateOptions","animObj","lastIndex","isAdd","isIconAlone","refreshActElePosition","delete","tbObj","expTemplateContent","isTemplate","cntEle","prevIndex","isPopup","initRender","isSwipeed","itemIndexArray","css","setCssClass","aria-activedescendant","updatePopAnimationConfig","btnCls","CLS_ICONS","renderContainer","setOrientation","headerPlacement","renderHeader","tbItems","renderContent","scrCnt","bdrLine","CLS_INDICATOR","scrCntClass","setContentHeight","selectedItem","setRTL","hdrPlace","tabItems","addVerticalClass","hdrItems","aria-controls","txt","cont","wrap","tabIndex","parseObject","clicked","headerTemplate","updateOrientationAttribute","setCloseButton","showCloseButton","hdrItem","contents","aria-labelledby","reRenderItems","txtWrapEle","tbCount","tItems","spliceArray","tHtml","txtEmpty","headerTextCompile","tCont","undefined","wrapAttrs","tItem","spliceItemIndex","removeActiveClass","hdrActEle","selectEle","checkPopupOverflow","tbPop","tbrItems","isOverflow","popupHandler","ripEle","tbItem","actEleId","prevEle","trg","prevCtnAnimation","prev","current","previous","next","triggerPrevAnimation","oldCnt","animateObj","triggerAnimation","prevActiveEle","no","extIndex","newCnt","getTrgContent","idNo","openEff","clsEff","setActiveBorder","keyPressed","trgParent","trgIndex","getEleIndex","templateCompile","compileElement","compile","templateFUN","getContent","callType","findEle","tbPos","place","list","heightAdjustMode","max","getHeight","clearTemplate","cs","bar","trgHdrEle","tbWidth","setActive","isNaN","trg_1","enableAnimation","eleTrg","itemIndex","curActItem","refreshItemVisibility","eventArg","previousItem","prevItem","previousIndex","selectedIndex","selectedContent","selectingID","isSwiped","setItems","isReplace","refreshActiveBorder","showPopup","config","tbPopObj","ej2_instances","hoverHandler","spaceKeyDown","keyHandler","tabKeyModule","openPopup","shiftTab","removeTab","k","which","clstHead","actEle","activeElement","nxtSib","nextSibling","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","L10n","closeButtonTitle","locale","getConstant","evalOnPropertyChangeItems","selectElement","cntItem","arr","isHiddenEle","addTab","hideTab","enableTab","addArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","itemsCount","textValue_1","i_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","cntTrg","selectedID","selectingItem","selectingIndex","selectingContent","selectArgs","ROOT","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","HOVER","ACTIVE","LOAD","PROCESS","ICON","TEXTWRAP","SIBLING","DROPNEXT","CHECK","CHECKBOXWRAP","FOCUS","treeAriaAttr","treeRole","itemRole","listRole","itemText","wrapperRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","preventExpand","checkedElement","disableNode","parentNodeCheck","expandChildren","mouseDownStatus","TreeView_1","checkActionNodes","dragStartAction","isAnimate","f2","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","ctrlA","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","listBaseOption","expandCollapse","expandIconClass","ariaAttributes","expandIconPosition","beforeNodeCreate","updateListProp","aniObj","treeList","isLoaded","isInitalExpand","setTouchClass","selectedNodes","checkedNodes","expandedNodes","initialRender","setDataBinding","setExpandOnType","setRipple","wireEditingEvents","allowEditing","setDragAndDrop","allowDragAndDrop","isBlazorPlatform","setEnableRtl","setFullRow","fullRowSelect","nodeTemplateFn","templateComplier","nodeTemplate","rippleModel","ignore","iconModel","isCenterRipple","rippleIconFn","isEnabled","setMultiSelect","firstUl","dataSource","DataManager","ready","then","offline","treeData","result","isNumberTypeId","getType","setRootData","finalize","executeQuery","getQuery","rootData","stringify","mapper","query","columns","clone","Query","getActualProperties","col","from","tableName","addSorting","sortOrder","parentID","where","dataType","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","isSorted","ulElement","getSortedData","loadOnDemand","rootNodes","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","showCheckBox","updateParentCheckState","resultData","executeLocal","isChecked","resultId","hasChildren","id_1","childData","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedData","checkedId","fieldId","childItems","updateChildCheckState","checkNodes","parentEle","changeState","preElement","childCheckedElement","indeterminate","node","parentData","getTreeData","nodeCheck","checkedParent","checkedChild","subChildItems","checkboxEle","createCheckBox","touchClass","checkValue","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","selected","textEle","tempArr","nodeData","rippleSpan","rippleMouseHandler","actionValue","ds","groupBy","cusQuery","group","getDataSource","grpItem","iNodes","sNodes","selectNode","cNodes","disableExpandAttr","eNodes","updateList","updateCheckedProp","ensureIndeterminate","liElement","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkBoxEle","parentUL","currentParent","childElement","checkBoxes","parentCheck","childCheck","checkedState","currentLoadData","isNodeChecked","isUndefined","doCheckBoxAction","doCheck","updateFieldChecked","liEle","getElement","setValidCheckedNode","dynamicCheckState","updateField","checkBox","validateCheckNode","checkbox","currLi","getNodeData","check","updateIndeterminate","subChild","updateChildIndeterminate","parent","indeterminateData","subId","childElementCheck","innerChild","state","isPrevent","nodeCheckAction","getCheckEvent","observedArgs","ariaState","frameSpan","removeCheck","ensureStateChange","checked","isInteracted","firstNode","updateIdAttr","hasPid","doExpandAction","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","proxy","expandCallback","eUid","callback","doSelectionAction","sUids","sNode","selectGivenNodes","preventContextMenu","removeHover","setFocusElement","checkWrapper","checkElement","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","expandNode","loaded","hideSpinner","start_1","end_1","proxy_1","liEle_1","setHeight","activeElement_1","HTMLElement","animateHeight","expandedNode","addExpand","getExpandEvent","colArgs","nodeCollapseAction","collapsedNode","removeExpand","toRemove","currentHeight","timeStamp","parentLi","expandChild","eicon","showSpinner","adaptorName","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","nodeLevel","dataLevel","getChildMapper","obj","parentId","isRoot","getChildGroup","objlen","dataId","cIcons","curLi","multiSelect","ctrlKey","isActive","unselectNode","getSelectEvent","nodeSelectAction","removeSelectAll","shiftKey","startNode","startIndex","liList","endIndex","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","getId","icon_1","inpEle","blur","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","isUp","focusNode","getScrollParent","parentPos","isVisibleInViewport","scrollIntoView","txtWrap","documentElement","innerWidth","clientWidth","isTowards","nextNode","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","parentIndex","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","childId_1","toBeOpened","focusNextNode","setFocus","isBackwards","rootNode","getRootNode","getEndNode","fNode","previousSibling","prevNode","endNode","preNode","onMouseOver","currentLi","setHover","onMouseLeave","hoveredNode","fromDS","getText","pNode","pid","nodeFields","destroyTemplate","reRenderNodes","oldClass","newClass","editingHandler","oldInpEle","updateOldText","getEditEvent","innerHtml","inputObj","Input","createInput","properties","container","inputEle","setSelectionRange","wireInputEvents","editData","editFields","inputFocusOut","newText","txtEle","appendNewText","isInput","newData","triggerEvent","getChildNodeObject","newList","toBind","initializeDrag","destroyDrag","virtualEle","dragObj","Draggable","enableTailMode","enableAutoScroll","dragTarget","helper","sender","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","DRAGITEM","nLen","cNode","cursor","dragData","dragStart","listItem","getDragEvent","draggedNode","dragCancelAction","drag","cursorAt","targetTouches","dragAction","dragStop","removeVirtualEle","dropTarget","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","Droppable","out","over","drop","dropAction","dropWrap","dropLi","isDescendant","virEle","renderVirtualEle","dropIndicator","dragInstance","draggable","droppedElement","appendNode","draggedElement","dropAsSiblingNode","dropAsChildNode","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","generateIcon","generateUL","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","indexValue","iconClass","dropTar","parent_3","hasAttribute","clonedNode","droppedNode","droppedNodeData","dropIndex","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","dm","newId","currId","doGivenAction","toExpand","addGivenNodes","isRemote","dropEle","updateMapper","createListItemFromJson","refNode","navigateUrl","nodeId","updated","childObj","doEnableAction","updatePersistProp","removeField","sleNodes","l","slelen","enodes","nodelen","cnodes","m","names","getMapperProp","proxy_2","touchEditObj","tap","tapCount","wireClickEvent","proxy_3","touchClickObj","wireExpandOnEvent","proxy_4","touchExpandObj","matched","matches","createSpinner","setCheckedNodes","uncheckAll","setIndeterminate","checkAll","setChildCheckState","parent_4","collapseAll","onLoaded","addNodes","dropUl_1","proxy_5","beginEdit","disableNodes","enableNodes","ensureVisible","expandAll","getAllCheckedNodes","childNode","getNode","moveNodes","sourceNodes","removeNodes","updateNode","CLOSE","OPEN","RIGHT","LEFT","OVER","PUSH","CONTEXT","Sidebar","setWidth","setTarget","setZindex","enableDock","setDock","setMediaQuery","checkType","setType","setCloseOnDocumentClick","setEnableRTL","windowWidth","sidebarEleCopy","closeOnDocumentClick","documentclickHandler","setDimension","dockSize","match","z-index","classELement","transitionEnd","triggerChange","destroyBackDrop","sibling","showBackdrop","modal","closeArguments","model","observedcloseArgs","transform","setAnimation","setTimeOut","openArguments","observedopenArgs","createBackDrop","changeArguments","getState","mediaQuery","matchMedia","enableGestureHandler","startX","setEnableGestures","enableGestures","mainContentEle","sidebarEle","margin-left","margin-right","insertAdjacentElement","elementWidth"],"mappings":"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,uBAAoB,IAC3CE,IACIsK,YAAS,IACVigC,EAASzqC,UAAW,mBAAgB,IACvCE,IACIsK,YAAS,IACVigC,EAASzqC,UAAW,0BAAuB,IAC9CE,IACIkiB,aAAYooB,KACbC,EAASzqC,UAAW,gBAAa,IACpCE,IACIsK,cACDigC,EAASzqC,UAAW,mBAAgB,IACvCE,IACIsK,WAAS,KACVigC,EAASzqC,UAAW,eAAY,IACnCE,IACIsK,YAAS,IACVigC,EAASzqC,UAAW,wBAAqB,IAC5CE,IACIsK,cACDigC,EAASzqC,UAAW,oBAAiB,IACxCE,IACIsK,WAAS,SACVigC,EAASzqC,UAAW,eAAY,IACnCE,IACIkiB,aAAYkoB,KACbG,EAASzqC,UAAW,aAAU,IACjCE,IACIsK,YAAS,IACVigC,EAASzqC,UAAW,oBAAiB,IACxCE,IACIsK,YAAS,IACVigC,EAASzqC,UAAW,mBAAgB,IACvCE,IACIsK,cACDigC,EAASzqC,UAAW,mBAAgB,IACvCE,IACIsK,cACDigC,EAASzqC,UAAW,oBAAiB,IACxCE,IACIsK,WAAS,SACVigC,EAASzqC,UAAW,gBAAa,IACpCE,IACIsK,YAAS,IACVigC,EAASzqC,UAAW,mBAAgB,IACvCE,IACIsK,YAAS,IACVigC,EAASzqC,UAAW,gBAAa,IACpCE,IACIiiB,WACDsoB,EAASzqC,UAAW,cAAW,IAClCE,IACIiiB,WACDsoB,EAASzqC,UAAW,gBAAa,IACpCE,IACIiiB,WACDsoB,EAASzqC,UAAW,wBAAqB,IAC5CE,IACIiiB,WACDsoB,EAASzqC,UAAW,eAAY,IACnCE,IACIiiB,WACDsoB,EAASzqC,UAAW,gBAAa,IACpCE,IACIiiB,WACDsoB,EAASzqC,UAAW,eAAY,IACnCE,IACIiiB,WACDsoB,EAASzqC,UAAW,kBAAe,IACtCE,IACIiiB,WACDsoB,EAASzqC,UAAW,mBAAgB,IACvCE,IACIiiB,WACDsoB,EAASzqC,UAAW,kBAAe,IACtCE,IACIiiB,WACDsoB,EAASzqC,UAAW,oBAAiB,IACxCE,IACIiiB,WACDsoB,EAASzqC,UAAW,qBAAkB,IA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"}
|
|
1
|
+
{"version":3,"file":"ej2-navigations.min.js","sources":["../../src/common/h-scroll.js","../../src/common/v-scroll.js","../../src/common/menu-base.js","../../src/toolbar/toolbar.js","../../src/accordion/accordion.js","../../src/context-menu/context-menu.js","../../src/menu/menu.js","../../src/tab/tab.js","../../src/treeview/treeview.js","../../src/sidebar/sidebar.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n * <div id=\"scroll\"/>\n * <script>\n * var scrollObj = new HScroll();\n * scrollObj.appendTo(\"#scroll\");\n * </script>\n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n * @param options - Specifies HScroll model properties as options.\n * @param element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n * @private\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n * @private\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns void.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n value ? this.element.classList.add(CLS_DISABLE) : this.element.classList.remove(CLS_DISABLE);\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var nav = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var navEle = this.createElement('div', { id: id.concat('_left'), className: clsLeft + ' ' + CLS_DISABLE });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var element = this.scrollEle;\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n var scrlLeft = element.scrollLeft;\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance;\n distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n * @param {HScrollModel} newProp\n * @param {HScrollModel} oldProp\n * @returns void\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n * <div id=\"scroll\"/>\n * <script>\n * var scrollObj = new VScroll();\n * scrollObj.appendTo(\"#scroll\");\n * </script>\n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n * @param options - Specifies VScroll model properties as options.\n * @param element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n * @private\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n * @private\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflowY = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns void.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n value ? this.element.classList.add(CLS_DISABLE) : this.element.classList.remove(CLS_DISABLE);\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () { timeoutFun_1(); }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () { timeoutFun(); }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootElement = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance;\n distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var rootEle = this.element;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n * @param {VScrollModel} newProp\n * @param {VScrollModel} oldProp\n * @returns void\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Component, Property, ChildProperty, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { updateBlazorTemplate, resetBlazorTemplate, blazorTemplates, extend } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * @private\n * Base class for Menu and ContextMenu components.\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n * @private\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n * @private\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n refEle ? this.element.parentElement.insertBefore(ul, refEle) : this.element.parentElement.appendChild(ul);\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering\n * @private\n */\n MenuBase.prototype.render = function () {\n this.initialize();\n this.renderItems();\n if (this.isMenu && this.template && this.isBlazor()) {\n var menuTemplateId = this.element.id + TEMPLATE_PROPERTY;\n resetBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY);\n if (Object.keys(blazorTemplates).length) {\n extend(this.tempItem, blazorTemplates[menuTemplateId], [], true);\n }\n updateBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY, this);\n }\n this.wireEvents();\n this.renderComplete();\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (this.isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n var wrapper = this.getWrapper();\n this.element.classList.contains('e-vertical') ?\n this.addScrolling(wrapper, this.element, 'vscroll', wrapper.offsetHeight, this.element.offsetHeight)\n : this.addScrolling(wrapper, this.element, 'hscroll', wrapper.offsetWidth, this.element.offsetWidth);\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (this.menuIos()) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.menuIos = function () {\n return this.getValue('isIos', REGX_IOS);\n };\n MenuBase.prototype.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n e.action === DOWNARROW ? fliIdx++ : fliIdx--;\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var wrapper = this.getWrapper();\n var cul = this.getUlByNavIdx();\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n ((action === DOWNARROW) || (action === RIGHTARROW)) ? index++ : index--;\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var index = void 0;\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, null, null, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n this.closeMenu(null, e);\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n MenuBase.prototype.closeMenu = function (ulIndex, e) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var ul_1;\n var item_1;\n var items_1;\n var beforeCloseArgs = void 0;\n var wrapper = this.getWrapper();\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper.childElementCount;\n ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n }\n _this.unWireKeyboardEvent(popupEle);\n _this.destroyScrollObj(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n }\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n else if (isOpen && _this.hamburgerMode && ulIndex !== null) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !ulIndex && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n sli_1.classList.add(FOCUSED);\n sli_1.focus();\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.destroyScrollObj = function (scrollObj, scrollEle) {\n if (scrollObj) {\n scrollObj.destroy();\n scrollEle.parentElement.appendChild(select('.e-menu-parent', scrollEle));\n detach(scrollEle);\n }\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (_this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var eventArgs;\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.split(' '));\n }\n this.popupObj.hide();\n }\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n if (this.isMenu && this.template && this.isBlazor()) {\n var menuTemplateId = this.element.id + TEMPLATE_PROPERTY;\n if (Object.keys(blazorTemplates).length) {\n var itemFromBlazorTemplate = blazorTemplates[menuTemplateId];\n this.tempItem = this.tempItem.concat(itemFromBlazorTemplate);\n blazorTemplates[menuTemplateId] = this.tempItem;\n }\n updateBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY, this);\n }\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent_1 = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n blankIconElem.forEach(function (element) { return element.style.textIndent = blankIconIndent_1 + 'px'; });\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: this.title\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n var eventArgs = void 0;\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n if (this.hamburgerMode) {\n var beforeCloseArgs = void 0;\n beforeCloseArgs = { element: this.element, parentItem: null, event: e, items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n }\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var navIdx = this.getIndex(li ? li.id : null, true);\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n _this.addScrolling(_this.popupWrapper, _this.uList, 'vscroll', _this.popupWrapper.offsetHeight, _this.uList.offsetHeight);\n _this.checkScrollOffset(e);\n }\n var collide = void 0;\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n collide = isCollide(_this.popupWrapper, null, _this.left, _this.top);\n if ((_this.isNestedOrVertical || _this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n _this.popupObj.collision.X = 'none';\n var offWidth = closest(_this.lItem, '.e-' + _this.getModuleName() + '-wrapper').offsetWidth;\n _this.left =\n _this.enableRtl ? calculatePosition(_this.lItem, _this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : _this.left - _this.popupWrapper.offsetWidth - offWidth;\n }\n collide = isCollide(_this.popupWrapper, null, _this.left, _this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n _this.left = _this.callFit(_this.popupWrapper, true, false, _this.top, _this.left).left;\n }\n _this.popupWrapper.style.left = _this.left + 'px';\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n }\n _this.popupWrapper.style.display = '';\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n var offsetLeft = void 0;\n var offsetRight = void 0;\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.addScrolling = function (wrapper, ul, scrollType, wrapperOffset, contentOffset) {\n if (this.enableScrolling && wrapperOffset < contentOffset) {\n var scrollEle = this.createElement('div', { className: 'e-menu-' + scrollType });\n wrapper.appendChild(scrollEle);\n scrollEle.appendChild(ul);\n scrollEle.style.maxHeight = wrapper.style.maxHeight;\n var scrollObj = void 0;\n wrapper.style.overflow = 'hidden';\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: this.enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', wrapper).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: this.enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', wrapper).offsetWidth;\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (!isNullOrUndefined(left) && !isNullOrUndefined(top))) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var id = 'id';\n var iconCss = 'iconCss';\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: this.getFields(level),\n template: this.template,\n itemCreating: function (args) {\n if (!args.curData[args.fields[id]]) {\n args.curData[args.fields[id]] = getUniqueID('menuitem');\n }\n args.curData.htmlAttributes = {\n role: 'menuitem',\n tabindex: '-1'\n };\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text];\n }\n if (args.curData[args.fields[iconCss]] === '') {\n args.curData[args.fields[iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.removeAttribute('role');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n if (!_this.isMenu) {\n args.item.removeAttribute('role');\n }\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length))) {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n this.element.classList.contains('e-hide-menu') ? this.openHamburgerMenu(e) : this.closeHamburgerMenu(e);\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n this.closeMenu(culIdx + 1, e);\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (this.showSubMenu) {\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.querySelectorAll('li'), li);\n if (this.isMenu && this.template && this.isBlazor()) {\n idx = Array.prototype.indexOf.call(ul.querySelectorAll(li.tagName), li);\n }\n else {\n idx = Array.prototype.indexOf.call(ul.children, li);\n }\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.isBlazor = function () {\n return ((Object.keys(window).indexOf('ejsInterop') === -1) ? false : true);\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed\n * @private\n * @param {MenuBaseModel} newProp\n * @param {MenuBaseModel} oldProp\n * @returns void\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n wrapper.classList.toggle(RTL);\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n this_1.element.classList.contains('e-vertical') ?\n this_1.addScrolling(wrapper, this_1.element, 'vscroll', wrapper.offsetHeight, this_1.element.offsetHeight)\n : this_1.addScrolling(wrapper, this_1.element, 'hscroll', wrapper.offsetWidth, this_1.element.offsetWidth);\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n _this.addScrolling(wrapper, ul_2, 'vscroll', wrapper.offsetHeight, ul_2.offsetHeight);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n this_1.element.classList.contains('e-vertical') ? this_1.destroyScrollObj(getInstance(ul_3, VScroll), ul_3)\n : this_1.destroyScrollObj(getInstance(ul_3, HScroll), ul_3);\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n _this.destroyScrollObj(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items':\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n if (!Object.keys(oldProp.items).length) {\n var ul_4 = this_1.element;\n if (this_1.isBlazor()) {\n ul_4 = this_1.removeChildElement(this_1.element);\n }\n else {\n ul_4.innerHTML = '';\n }\n var lis = [].slice.call(this_1.createItems(this_1.items).children);\n lis.forEach(function (li) {\n ul_4.appendChild(li);\n });\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n this.getChangedItemIndex(item, index, Number(Object.keys(item.items).pop()));\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n * @private\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = void 0;\n ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n * @returns Element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n * @param items Text items that needs to be enabled/disabled.\n * @param enable Set `true`/`false` to enable/disable the list items.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n * @param items Text items that needs to be shown.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n * @param items Text items that needs to be hidden.\n * @returns void\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (ishide) {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.add(HIDE);\n }\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.remove(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n * @param items Text items that needs to be removed.\n * @returns void\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n this.removeItem(iitems, navIdx, idx);\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n * @param items Items that needs to be inserted.\n * @param text Text item after that the element to be inserted.\n * @returns void\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n * @param items Items that needs to be inserted.\n * @param text Text item before that the element to be inserted.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n var showIcon;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n showIcon = this.hasField(iitems, this.getField('iconCss', navIdx.length - 1));\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n * @returns void\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n refEle && refEle !== wrapper ? this.clonedElement.parentElement.insertBefore(this.element, refEle) :\n this.clonedElement.parentElement.appendChild(this.element);\n if (this.isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (this.isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n }\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Complex({}, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser } from '@syncfusion/ej2-base';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n * <div id=\"toolbar\"/>\n * <script>\n * var toolbarObj = new Toolbar();\n * toolbarObj.appendTo(\"#toolbar\");\n * </script>\n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n * @param options - Specifies Toolbar model properties as options.\n * @param element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end',\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n while (ele.firstElementChild) {\n ele.removeChild(ele.firstElementChild);\n }\n if (this.trgtEle) {\n ele.appendChild(this.ctrlTem);\n }\n this.clearProperty();\n this.popObj = null;\n this.tbarAlign = null;\n this.remove(this.element, 'e-toolpop');\n ele.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'aria-haspopup', 'role'].forEach(function (attrb) {\n _this.element.removeAttribute(attrb);\n });\n };\n /**\n * Initialize the event handler\n * @private\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.element.setAttribute('tabIndex', '0');\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.keyModule.destroy();\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n if (this.tbarAlign) {\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n // tslint:disable-next-line:max-line-length\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n var ele = void 0;\n var nodes = void 0;\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst) || (value === 'next' && popEle.lastElementChild === clst)) {\n return;\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n this.element.removeAttribute('tabindex');\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var clst;\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns void.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n value ? rootEle.classList.add(CLS_DISABLE) : rootEle.classList.remove(CLS_DISABLE);\n rootEle.setAttribute('tabindex', !value ? '0' : '-1');\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', !value ? '0' : '-1');\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n // tslint:disable-next-line:max-line-length\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el);\n // tslint:enable-next-line:max-line-length\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var clsList = trgt.classList;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n itemObj = this.items[this.tbarEle.indexOf(clst)];\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n ;\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.separator();\n this.refreshToolbarTemplate();\n this.wireEvents();\n if (isBlazor()) {\n this.renderComplete();\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false', 'aria-haspopup': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical',\n };\n attributes(this.element, ariaAttr);\n };\n Toolbar.prototype.renderControl = function () {\n this.trgtEle = (this.element.children.length > 0) ? this.element.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n };\n /** @hidden */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n * @returns void.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('tabIndex', '0');\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('role', 'list');\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var eleInlineItem;\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[i].offsetLeft < 30 && eleItem[i].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[i].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[i].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[index]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[i];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var eleHeight;\n var eleItem;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR + ':not(.' + CLS_POPUP + ')');\n sepHeight = (element.style.height === 'auto' || element.style.height === '') ? null : sepItem.offsetHeight;\n }\n eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS)) {\n ele = element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n popup.appendTo(ele);\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n this.element.setAttribute('aria-haspopup', 'true');\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n isOpen ? this.add(this.element, CLS_EXTENDEDPOPOPEN) : this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n };\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[i];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n };\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[i]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[i] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[i], [CLS_POPPRI]) && popPriority) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset = (inEle[i].offsetTop + inEle[i].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset = (inEle[i].offsetLeft + inEle[i].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[i].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n if (itemCount === itemPopCount) {\n var sepEle = inEle[i];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[i].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[i], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'list');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n var sepDisplay = 'none';\n eleSep.style.display = 'inherit';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = sepDisplay;\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n ele.setAttribute('aria-haspopup', 'false');\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var checkOverflow;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[index].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n this.enableRtl ? innerItem[2].style.top = popWid : innerItem[2].style.bottom = popWid;\n }\n else {\n this.enableRtl ? innerItem[2].style.left = popWid : innerItem[2].style.right = popWid;\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n this.enableRtl ? innerItem[1].style.marginBottom = mrgn : innerItem[1].style.marginTop = mrgn;\n }\n else {\n this.enableRtl ? innerItem[1].style.marginRight = mrgn : innerItem[1].style.marginLeft = mrgn;\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n ele.setAttribute('aria-disabled', 'false');\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var itemEleDom;\n var innerItem;\n var innerPos;\n var items = this.items;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[i], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[i], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[i].align.toLowerCase());\n if (innerPos) {\n if (!(items[i].showAlwaysInPopup && items[i].overflow !== 'Show')) {\n this.tbarAlgEle[(items[i].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[i];\n keyVal === 'class' ? this.add(element, attr[keyVal]) : element.setAttribute(keyVal, attr[keyVal]);\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns void.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'false');\n }\n else {\n ele.classList.add(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'true');\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[a];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[a] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n isEnable ? removeClass(elements, CLS_DISABLE) : addClass(elements, CLS_DISABLE);\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[index]) {\n return this.tbarEle[index];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n * @param {ItemsModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns void.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.insertBefore(innerEle, ele.children[index]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[index]);\n }\n this.items.splice(index, 0, item);\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns void.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[index] && innerItems[index]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[index]);\n if (this.tbarAlign) {\n var indexAgn = void 0;\n indexAgn = this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].indexOf(this.tbarEle[eleIdx]);\n this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].splice(indexAgn, 1);\n }\n detach(innerItems[index]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n var e = void 0;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n item.id ? (ele.id = item.id) : (ele.id = getUniqueID('tbr-ipt'));\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n item.id ? (dom.id = item.id) : dom.id = getUniqueID('e-tbr-btn');\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var innerEle;\n var dom;\n innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.setAttribute('aria-disabled', 'false');\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n var tempDom = this.createElement('div', { innerHTML: item.tooltipText });\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', '-1');\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n return innerEle;\n };\n Toolbar.prototype.refreshToolbarTemplate = function () {\n var blazorContain = Object.keys(window);\n for (var a = 0, length_1 = this.items.length; a < length_1; a++) {\n var item = this.items[a];\n if (item.template && blazorContain.indexOf('Blazor') > -1 && !this.isStringTemplate && item.template.indexOf('<div>Blazor') === 0) {\n resetBlazorTemplate(this.element.id + a + '_template', 'Template');\n updateBlazorTemplate(this.element.id + a + '_template', 'Template', item);\n }\n }\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', '-1');\n }\n this.activeEle = curEle;\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', '0');\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {ToolbarModel} newProp\n * @param {ToolbarModel} oldProp\n * @returns void\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var oldProperty = Object(oldProp.items[index])[property];\n var newProperty = Object(newProp.items[index])[property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[index].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n detach(itemCol[index]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[index]], index);\n this.items.splice(index, 1);\n if (this.items[index].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n var wid = tEle.offsetWidth;\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.renderOverflowMode();\n if (this.popObj && wid < tEle.offsetWidth) {\n this.popupRefresh(this.popObj.element, false);\n }\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.add(tEle, CLS_RTL) : this.remove(tEle, CLS_RTL);\n if (!isNOU(this.scrollModule)) {\n newProp.enableRtl ? this.add(this.scrollModule.element, CLS_RTL) : this.remove(this.scrollModule.element, CLS_RTL);\n }\n if (!isNOU(this.popObj)) {\n newProp.enableRtl ? this.add(this.popObj.element, CLS_RTL) : this.remove(this.popObj.element, CLS_RTL);\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns void.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var initIndex;\n var ele;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[eleIndex]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[eleIndex];\n }\n if (ele) {\n value ? ele.classList.add(CLS_HIDDEN) : ele.classList.remove(CLS_HIDDEN);\n if (value && isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex'))) {\n ele.firstElementChild.setAttribute('tabindex', '-1');\n var innerItems_2 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n eleIndex = innerItems_2.indexOf(ele);\n }\n var nextEle = innerItems_2[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n nextEle.firstElementChild.removeAttribute('tabindex');\n break;\n }\n nextEle = innerItems_2[++eleIndex];\n }\n }\n }\n else if (isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n initIndex = 0;\n var setFlag = false;\n var removeFlag = false;\n var initELe = innerItems[initIndex];\n while (initELe) {\n if (!initELe.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(initELe.firstElementChild.getAttribute('tabindex'))) {\n initELe.firstElementChild.setAttribute('tabindex', '-1');\n setFlag = true;\n }\n else {\n if (setFlag && removeFlag) {\n break;\n }\n var skipEle = this.eleContains(initELe);\n if (!skipEle) {\n initELe.firstElementChild.removeAttribute('tabindex');\n removeFlag = true;\n }\n initELe = innerItems[++initIndex];\n }\n }\n else {\n initELe = innerItems[++initIndex];\n }\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Component, EventHandler, Property, Event, KeyboardEvents, rippleEffect } from '@syncfusion/ej2-base';\nimport { getUniqueID, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { isVisible, closest, attributes, detach, select, isBlazor, addClass, append } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Collection, Animation } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, selectAll } from '@syncfusion/ej2-base';\nvar CLS_ACRDN_ROOT = 'e-acrdn-root';\nvar CLS_ROOT = 'e-accordion';\nvar CLS_ITEM = 'e-acrdn-item';\nvar CLS_ITEMFOCUS = 'e-item-focus';\nvar CLS_ITEMHIDE = 'e-hide';\nvar CLS_HEADER = 'e-acrdn-header';\nvar CLS_HEADERICN = 'e-acrdn-header-icon';\nvar CLS_HEADERCTN = 'e-acrdn-header-content';\nvar CLS_CONTENT = 'e-acrdn-panel';\nvar CLS_CTENT = 'e-acrdn-content';\nvar CLS_TOOGLEICN = 'e-toggle-icon';\nvar CLS_COLLAPSEICN = 'e-tgl-collapse-icon e-icons';\nvar CLS_EXPANDICN = 'e-expand-icon';\nvar CLS_RTL = 'e-rtl';\nvar CLS_CTNHIDE = 'e-content-hide';\nvar CLS_SLCT = 'e-select';\nvar CLS_SLCTED = 'e-selected';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_ANIMATE = 'e-animate';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_TOGANIMATE = 'e-toggle-animation';\nvar CLS_NEST = 'e-nested';\nvar CLS_EXPANDSTATE = 'e-expand-state';\nvar CLS_CONTAINER = 'e-accordion-container';\nvar AccordionActionSettings = /** @class */ (function (_super) {\n __extends(AccordionActionSettings, _super);\n function AccordionActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], AccordionActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AccordionActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], AccordionActionSettings.prototype, \"easing\", void 0);\n return AccordionActionSettings;\n}(ChildProperty));\nexport { AccordionActionSettings };\nvar AccordionAnimationSettings = /** @class */ (function (_super) {\n __extends(AccordionAnimationSettings, _super);\n function AccordionAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"expand\", void 0);\n return AccordionAnimationSettings;\n}(ChildProperty));\nexport { AccordionAnimationSettings };\n/**\n * An item object that is used to configure Accordion items.\n */\nvar AccordionItem = /** @class */ (function (_super) {\n __extends(AccordionItem, _super);\n function AccordionItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"content\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], AccordionItem.prototype, \"expanded\", void 0);\n return AccordionItem;\n}(ChildProperty));\nexport { AccordionItem };\n/**\n * The Accordion is a vertically collapsible content panel that displays one or more panels at a time within the available space.\n * ```html\n * <div id='accordion'/>\n * <script>\n * var accordionObj = new Accordion();\n * accordionObj.appendTo('#accordion');\n * </script>\n * ```\n */\nvar Accordion = /** @class */ (function (_super) {\n __extends(Accordion, _super);\n /**\n * Initializes a new instance of the Accordion class.\n * @param options - Specifies Accordion model properties as options.\n * @param element - Specifies the element that is rendered as an Accordion.\n */\n function Accordion(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Contains the keyboard configuration of the Accordion.\n */\n _this.keyConfigs = {\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n enter: 'enter',\n space: 'space',\n home: 'home',\n end: 'end',\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n Accordion.prototype.destroy = function () {\n var _this = this;\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n this.isDestroy = true;\n this.restoreContent(null);\n while (ele.firstElementChild) {\n ele.removeChild(ele.firstElementChild);\n }\n if (this.trgtEle) {\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n }\n ele.classList.remove(CLS_ACRDN_ROOT);\n ele.removeAttribute('style');\n ['aria-disabled', 'aria-multiselectable', 'role', 'data-ripple'].forEach(function (attrb) {\n _this.element.removeAttribute(attrb);\n });\n };\n Accordion.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.isNested = false;\n this.templateEle = [];\n if (!this.isDestroy) {\n this.isDestroy = false;\n }\n if (!isNOU(nested)) {\n nested.classList.add(CLS_NEST);\n this.isNested = true;\n }\n else {\n this.element.classList.add(CLS_ACRDN_ROOT);\n }\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n if (!this.enablePersistence || isNOU(this.expandedItems)) {\n this.expandedItems = [];\n }\n };\n Accordion.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Accordion.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n /**\n * To initialize the control rendering\n * @private\n */\n Accordion.prototype.render = function () {\n this.initializeheaderTemplate();\n this.initializeItemTemplate();\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Accordion.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n setStyle(this.element, { 'width': width, 'height': height });\n var ariaAttr = {\n 'aria-disabled': 'false', 'role': 'presentation', 'aria-multiselectable': 'true'\n };\n if (this.expandedItems.length > 0) {\n this.initExpand = this.expandedItems;\n }\n attributes(this.element, ariaAttr);\n if (this.expandMode === 'Single') {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n Accordion.prototype.renderControl = function () {\n this.trgtEle = (this.element.children.length > 0) ? select('div', this.element) : null;\n this.renderItems();\n this.initItemExpand();\n };\n Accordion.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n };\n Accordion.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.isNested && !this.isDestroy) {\n rippleEffect(this.element, { selector: '.' + CLS_HEADER });\n }\n if (!this.isNested) {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n };\n Accordion.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n return templateCompiler(template);\n }\n }\n return undefined;\n };\n Accordion.prototype.initializeheaderTemplate = function () {\n if (this.headerTemplate) {\n this.headerTemplateFn = this.templateParser(this.headerTemplate);\n }\n };\n Accordion.prototype.initializeItemTemplate = function () {\n if (this.itemTemplate) {\n this.itemTemplateFn = this.templateParser(this.itemTemplate);\n }\n };\n Accordion.prototype.getheaderTemplate = function () {\n return this.headerTemplateFn;\n };\n Accordion.prototype.getItemTemplate = function () {\n return this.itemTemplateFn;\n };\n Accordion.prototype.updateContentBlazorTemplate = function (item, index) {\n if (this.itemTemplate && isBlazor() && !this.isStringTemplate) {\n updateBlazorTemplate(this.element.id + '_itemTemplate', 'ItemTemplate', this, false);\n }\n if (item && item.content && isBlazor() && !this.isStringTemplate && item.content.indexOf('<div>Blazor') === 0) {\n updateBlazorTemplate(this.element.id + index + '_content', 'ContentTemplate', item);\n }\n };\n Accordion.prototype.updateHeaderBlazorTemplate = function (item, index) {\n if (this.headerTemplate && isBlazor() && !this.isStringTemplate) {\n updateBlazorTemplate(this.element.id + '_headerTemplate', 'HeaderTemplate', this, false);\n }\n if (item && item.header && isBlazor() && !this.isStringTemplate && item.header.indexOf('<div>Blazor') === 0) {\n updateBlazorTemplate(this.element.id + index + '_header', 'HeaderTemplate', item);\n }\n };\n Accordion.prototype.focusIn = function (e) {\n e.target.parentElement.classList.add(CLS_ITEMFOCUS);\n };\n Accordion.prototype.focusOut = function (e) {\n e.target.parentElement.classList.remove(CLS_ITEMFOCUS);\n };\n Accordion.prototype.ctrlTemplate = function () {\n this.ctrlTem = this.element.cloneNode(true);\n var innerEles;\n var rootEle = select('.' + CLS_CONTAINER, this.element);\n if (rootEle) {\n innerEles = rootEle.children;\n }\n else {\n innerEles = this.element.children;\n }\n var items = [];\n /* tslint:disable */\n [].slice.call(innerEles).forEach(function (el) {\n items.push({\n header: (el.childElementCount > 0 && el.children[0]) ? (el.children[0]) : '',\n content: (el.childElementCount > 1 && el.children[1]) ? (el.children[1]) : ''\n });\n el.parentNode.removeChild(el);\n });\n /* tslint:enable */\n if (rootEle) {\n this.element.removeChild(rootEle);\n }\n this.setProperties({ items: items }, true);\n };\n Accordion.prototype.toggleIconGenerate = function () {\n var tglIcon = this.createElement('div', { className: CLS_TOOGLEICN });\n var hdrColIcon = this.createElement('span', { className: CLS_COLLAPSEICN });\n tglIcon.appendChild(hdrColIcon);\n return tglIcon;\n };\n Accordion.prototype.initItemExpand = function () {\n var len = this.initExpand.length;\n if (len === 0) {\n return;\n }\n if (this.expandMode === 'Single') {\n this.expandItem(true, this.initExpand[len - 1]);\n }\n else {\n for (var i = 0; i < len; i++) {\n this.expandItem(true, this.initExpand[i]);\n }\n }\n };\n Accordion.prototype.renderItems = function () {\n var _this = this;\n var ele = this.element;\n var innerItem;\n var innerDataSourceItem;\n if (isNOU(this.initExpand)) {\n this.initExpand = [];\n }\n if (!isNOU(this.trgtEle)) {\n this.ctrlTemplate();\n }\n if (this.dataSource.length > 0) {\n this.dataSource.forEach(function (item, index) {\n innerDataSourceItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerDataSourceItem);\n if (innerDataSourceItem.childElementCount > 0) {\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n this.updateHeaderBlazorTemplate();\n }\n else {\n var items = this.items;\n if (ele && items.length > 0) {\n items.forEach(function (item, index) {\n innerItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerItem);\n _this.updateHeaderBlazorTemplate(item, index);\n if (innerItem.childElementCount > 0) {\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n }\n };\n Accordion.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var items = this.getItems();\n var eventArgs = {};\n var index;\n var tglIcon;\n var acrdEle = closest(trgt, '.' + CLS_ROOT);\n if (acrdEle !== this.element) {\n return;\n }\n trgt.classList.add('e-target');\n var acrdnItem = closest(trgt, '.' + CLS_ITEM);\n var acrdnHdr = closest(trgt, '.' + CLS_HEADER);\n var acrdnCtn = closest(trgt, '.' + CLS_CONTENT);\n if (acrdnItem && (isNOU(acrdnHdr) || isNOU(acrdnCtn))) {\n acrdnHdr = acrdnItem.children[0];\n acrdnCtn = acrdnItem.children[1];\n }\n if (acrdnHdr) {\n tglIcon = select('.' + CLS_TOOGLEICN, acrdnHdr);\n }\n var acrdnCtnItem;\n if (acrdnHdr) {\n acrdnCtnItem = closest(acrdnHdr, '.' + CLS_ITEM);\n }\n else if (acrdnCtn) {\n acrdnCtnItem = closest(acrdnCtn, '.' + CLS_ITEM);\n }\n var acrdActive = [];\n index = this.getIndexByItem(acrdnItem);\n if (acrdnCtnItem) {\n eventArgs.item = items[this.getIndexByItem(acrdnCtnItem)];\n }\n eventArgs.originalEvent = e;\n var ctnCheck = !isNOU(tglIcon) && acrdnItem.childElementCount <= 1;\n if (ctnCheck && (isNOU(acrdnCtn) || !isNOU(select('.' + CLS_HEADER + ' .' + CLS_TOOGLEICN, acrdnCtnItem)))) {\n acrdnItem.appendChild(this.contentRendering(index));\n this.updateContentBlazorTemplate(eventArgs.item, index);\n this.ariaAttrUpdate(acrdnItem);\n }\n this.trigger('clicked', eventArgs);\n var cntclkCheck = (acrdnCtn && !isNOU(select('.e-target', acrdnCtn)));\n var inlineAcrdnSel = '.' + CLS_CONTENT + ' .' + CLS_ROOT;\n var inlineEleAcrdn = acrdnCtn && !isNOU(select('.' + CLS_ROOT, acrdnCtn)) && isNOU(closest(trgt, inlineAcrdnSel));\n var nestContCheck = acrdnCtn && isNOU(select('.' + CLS_ROOT, acrdnCtn)) || !(closest(trgt, '.' + CLS_ROOT) === this.element);\n cntclkCheck = cntclkCheck && (inlineEleAcrdn || nestContCheck);\n trgt.classList.remove('e-target');\n if (trgt.classList.contains(CLS_CONTENT) || trgt.classList.contains(CLS_CTENT) || cntclkCheck) {\n return;\n }\n var acrdcontainer = this.element.querySelector('.' + CLS_CONTAINER);\n var acrdnchild = (acrdcontainer) ? acrdcontainer.children : this.element.children;\n [].slice.call(acrdnchild).forEach(function (el) {\n if (el.classList.contains(CLS_ACTIVE)) {\n acrdActive.push(el);\n }\n });\n var acrdAniEle = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM + ' [' + CLS_ANIMATE + ']'));\n if (acrdAniEle.length > 0) {\n for (var _i = 0, acrdAniEle_1 = acrdAniEle; _i < acrdAniEle_1.length; _i++) {\n var el = acrdAniEle_1[_i];\n acrdActive.push(el.parentElement);\n }\n }\n var sameContentCheck = acrdActive.indexOf(acrdnCtnItem) !== -1 && acrdnCtn.getAttribute('e-animate') === 'true';\n var sameHeader = false;\n if (!isNOU(acrdnItem) && !isNOU(acrdnHdr)) {\n var acrdnCtn_1 = select('.' + CLS_CONTENT, acrdnItem);\n var acrdnRoot = closest(acrdnItem, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n if (isNOU(acrdnCtn_1)) {\n return;\n }\n sameHeader = (expandState === acrdnItem);\n if (isVisible(acrdnCtn_1) && (!sameContentCheck || acrdnCtnItem.classList.contains(CLS_SLCTED))) {\n this.collapse(acrdnCtn_1);\n }\n else {\n if ((acrdActive.length > 0) && this.expandMode === 'Single' && !sameContentCheck) {\n acrdActive.forEach(function (el) {\n _this.collapse(select('.' + CLS_CONTENT, el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n }\n this.expand(acrdnCtn_1);\n }\n if (!isNOU(expandState) && !sameHeader) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n }\n };\n Accordion.prototype.eleMoveFocus = function (action, root, trgt) {\n var clst;\n var clstItem = closest(trgt, '.' + CLS_ITEM);\n if (trgt === root) {\n clst = ((action === 'moveUp' ? trgt.lastElementChild : trgt).querySelector('.' + CLS_HEADER));\n }\n else if (trgt.classList.contains(CLS_HEADER)) {\n clstItem = (action === 'moveUp' ? clstItem.previousElementSibling : clstItem.nextElementSibling);\n if (clstItem) {\n clst = select('.' + CLS_HEADER, clstItem);\n }\n }\n if (clst) {\n clst.focus();\n }\n };\n Accordion.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n var header = closest(e.target, CLS_HEADER);\n if (isNOU(header) && !trgt.classList.contains(CLS_ROOT) && !trgt.classList.contains(CLS_HEADER)) {\n return;\n }\n var clst;\n var root = this.element;\n var content;\n switch (e.action) {\n case 'moveUp':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'moveDown':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'space':\n case 'enter':\n content = trgt.nextElementSibling;\n if (!isNOU(content) && content.classList.contains(CLS_CONTENT)) {\n if (content.getAttribute('e-animate') !== 'true') {\n trgt.click();\n }\n }\n else {\n trgt.click();\n }\n break;\n case 'home':\n case 'end':\n clst = e.action === 'home' ? root.firstElementChild.children[0] : root.lastElementChild.children[0];\n clst.focus();\n break;\n }\n };\n Accordion.prototype.headerEleGenerate = function () {\n var header = this.createElement('div', { className: CLS_HEADER, id: getUniqueID('acrdn_header') });\n var items = this.getItems();\n var ariaAttr = {\n 'tabindex': '0', 'role': 'heading', 'aria-selected': 'false',\n 'aria-disabled': 'false', 'aria-level': items.length.toString()\n };\n attributes(header, ariaAttr);\n return header;\n };\n Accordion.prototype.renderInnerItem = function (item, index) {\n var innerEle;\n innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.id = getUniqueID('acrdn_item');\n attributes(innerEle, { 'aria-expanded': 'false' });\n if (this.headerTemplate) {\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n append(this.getheaderTemplate()(item, this, 'headerTemplate', this.element.id + '_headerTemplate', false), hdrEle);\n innerEle.appendChild(ctnEle);\n ctnEle.appendChild(this.toggleIconGenerate());\n this.add(innerEle, CLS_SLCT);\n return innerEle;\n }\n if (item.header && this.angularnativeCondiCheck(item, 'header')) {\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n ctnEle.appendChild(this.fetchElement(hdrEle, item.header, index, true));\n innerEle.appendChild(ctnEle);\n }\n var hdr = select('.' + CLS_HEADER, innerEle);\n if (item.expanded && !isNOU(index) && (!this.enablePersistence)) {\n if (this.initExpand.indexOf(index) === -1) {\n this.initExpand.push(index);\n }\n }\n if (item.cssClass) {\n var acrdnClass = item.cssClass;\n var arcdnClassList = [];\n arcdnClassList = acrdnClass.split(' ');\n arcdnClassList.forEach(function (el) {\n addClass([innerEle], el);\n });\n }\n if (item.iconCss) {\n var hdrIcnEle = this.createElement('div', { className: CLS_HEADERICN });\n var icon = this.createElement('span', { className: item.iconCss + ' e-icons' });\n hdrIcnEle.appendChild(icon);\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n hdr.appendChild(hdrIcnEle);\n innerEle.appendChild(hdr);\n }\n else {\n hdr.insertBefore(hdrIcnEle, hdr.childNodes[0]);\n }\n }\n if (item.content && this.angularnativeCondiCheck(item, 'content')) {\n var hdrIcon = this.toggleIconGenerate();\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n innerEle.appendChild(hdr);\n }\n hdr.appendChild(hdrIcon);\n this.add(innerEle, CLS_SLCT);\n }\n return innerEle;\n };\n Accordion.prototype.angularnativeCondiCheck = function (item, prop) {\n var property = prop === 'content' ? item.content : item.header;\n var content = property;\n if (this.isAngular && !isNOU(content.elementRef)) {\n var data = content.elementRef.nativeElement.data;\n if (isNOU(data) || data === '' || (data.indexOf('bindings=') === -1)) {\n return true;\n }\n var parseddata = JSON.parse(content.elementRef.nativeElement.data.replace('bindings=', ''));\n if (!isNOU(parseddata) && parseddata['ng-reflect-ng-if'] === 'false') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n Accordion.prototype.fetchElement = function (ele, value, index, isHeader) {\n var templateFn;\n var temString;\n try {\n if (document.querySelectorAll(value).length) {\n var eleVal = document.querySelector(value);\n temString = eleVal.outerHTML.trim();\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n catch (e) {\n if (typeof (value) === 'string' && isBlazor() && value.indexOf('<div>Blazor') !== 0) {\n ele.innerHTML = value;\n /* tslint:disable */\n }\n else if (!isNOU(this.trgtEle) && (value instanceof (HTMLElement))) {\n ele.appendChild(value);\n ele.firstElementChild.style.display = '';\n /* tslint:enable */\n }\n else {\n templateFn = templateCompiler(value);\n }\n }\n var tempArray;\n if (!isNOU(templateFn)) {\n var templateProps = void 0;\n if (ele.classList.contains(CLS_HEADERCTN)) {\n templateProps = this.element.id + index + '_header';\n }\n else if (ele.classList.contains(CLS_CTENT)) {\n templateProps = this.element.id + index + '_content';\n }\n tempArray = templateFn({}, null, null, templateProps, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0 && !(isNOU(tempArray[0].tagName) && tempArray.length === 1)) {\n [].slice.call(tempArray).forEach(function (el) {\n if (!isNOU(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = value;\n }\n if (!isNOU(temString)) {\n if (this.templateEle.indexOf(value) === -1) {\n this.templateEle.push(value);\n }\n }\n return ele;\n };\n Accordion.prototype.ariaAttrUpdate = function (itemEle) {\n var header = select('.' + CLS_HEADER, itemEle);\n var content = select('.' + CLS_CONTENT, itemEle);\n header.setAttribute('aria-controls', content.id);\n content.setAttribute('aria-labelledby', header.id);\n content.setAttribute('role', 'definition');\n };\n Accordion.prototype.contentRendering = function (index) {\n var itemcnt = this.createElement('div', { className: CLS_CONTENT + ' ' + CLS_CTNHIDE, id: getUniqueID('acrdn_panel') });\n attributes(itemcnt, { 'aria-hidden': 'true' });\n var ctn = this.createElement('div', { className: CLS_CTENT });\n if (this.dataSource.length > 0) {\n append(this.getItemTemplate()(this.dataSource[index], this, 'itemTemplate', this.element.id + '_itemTemplate', false), ctn);\n itemcnt.appendChild(ctn);\n }\n else {\n itemcnt.appendChild(this.fetchElement(ctn, this.items[index].content, index, false));\n }\n return itemcnt;\n };\n Accordion.prototype.expand = function (trgt) {\n var _this = this;\n var eventArgs;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || (isVisible(trgt) && trgt.getAttribute('e-animate') !== 'true') || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var acrdnRoot = closest(trgtItemEle, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n var animation = {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n eventArgs = { element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: true };\n var eff = animation.name;\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n icon.classList.add(CLS_TOGANIMATE);\n _this.expandedItemsPush(trgtItemEle);\n if (!isNOU(expandState)) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n if ((animation.name === 'None')) {\n _this.expandProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.expandProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.expandAnimation(eff, icon, trgt, trgtItemEle, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.expandAnimation = function (ef, icn, trgt, trgtItemEle, animate, args) {\n var _this = this;\n var height;\n var trgtHgt;\n this.lastActiveItemId = trgtItemEle.id;\n if (ef === 'SlideDown') {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n trgt.style.position = 'absolute';\n height = trgtItemEle.offsetHeight;\n trgtHgt = trgt.offsetHeight;\n trgt.style.maxHeight = (trgt.offsetHeight) + 'px';\n trgtItemEle.style.maxHeight = '';\n };\n animate.progress = function () {\n trgtItemEle.style.minHeight = (height + trgt.offsetHeight) + 'px';\n };\n animate.end = function () {\n setStyle(trgt, { 'position': '', 'maxHeight': '' });\n trgtItemEle.style.minHeight = '';\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n else {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n };\n animate.end = function () {\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.expandProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(trgt, CLS_CTNHIDE);\n this.add(trgtItemEle, CLS_SLCTED);\n this.add(icon, CLS_EXPANDICN);\n if (progress === 'end') {\n this.add(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'false');\n attributes(trgtItemEle, { 'aria-expanded': 'true' });\n attributes(trgt.previousElementSibling, { 'aria-selected': 'true' });\n icon.classList.remove(CLS_TOGANIMATE);\n this.trigger('expanded', eventArgs);\n }\n };\n Accordion.prototype.expandedItemsPush = function (item) {\n var index = this.getIndexByItem(item);\n if (this.expandedItems.indexOf(index) === -1) {\n this.expandedItems.push(index);\n }\n };\n Accordion.prototype.getIndexByItem = function (item) {\n var itemEle = this.getItemElements();\n return [].slice.call(itemEle).indexOf(item);\n };\n Accordion.prototype.getItemElements = function () {\n var itemEle = [];\n var itemCollection = this.element.children;\n [].slice.call(itemCollection).forEach(function (el) {\n if (el.classList.contains(CLS_ITEM)) {\n itemEle.push(el);\n }\n });\n return itemEle;\n };\n Accordion.prototype.expandedItemsPop = function (item) {\n var index = this.getIndexByItem(item);\n this.expandedItems.splice(this.expandedItems.indexOf(index), 1);\n };\n Accordion.prototype.collapse = function (trgt) {\n var _this = this;\n var eventArgs;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || !isVisible(trgt) || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var animation = {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n eventArgs = { element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: false };\n var eff = animation.name;\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n _this.expandedItemsPop(trgtItemEle);\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n icon.classList.add(CLS_TOGANIMATE);\n if ((animation.name === 'None')) {\n _this.collapseProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.collapseProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.collapseAnimation(eff, trgt, trgtItemEle, icon, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.collapseAnimation = function (ef, trgt, trgtItEl, icn, animate, args) {\n var _this = this;\n var height;\n var trgtHeight;\n var itemHeight;\n var remain;\n this.lastActiveItemId = trgtItEl.id;\n if (ef === 'SlideUp') {\n animate.begin = function () {\n itemHeight = trgtItEl.offsetHeight;\n trgtItEl.style.minHeight = itemHeight + 'px';\n trgt.style.position = 'absolute';\n height = trgtItEl.offsetHeight;\n trgtHeight = trgt.offsetHeight;\n trgt.style.maxHeight = trgtHeight + 'px';\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.progress = function () {\n remain = ((height - (trgtHeight - trgt.offsetHeight)));\n if (remain < itemHeight) {\n trgtItEl.style.minHeight = remain + 'px';\n }\n };\n animate.end = function () {\n trgt.style.display = 'none';\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n trgtItEl.style.minHeight = '';\n setStyle(trgt, { 'position': '', 'maxHeight': '', 'display': '' });\n };\n }\n else {\n animate.begin = function () {\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.end = function () {\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.collapseProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(icon, CLS_EXPANDICN);\n this.remove(trgtItemEle, CLS_SLCTED);\n if (progress === 'end') {\n this.add(trgt, CLS_CTNHIDE);\n icon.classList.remove(CLS_TOGANIMATE);\n this.remove(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'true');\n attributes(trgtItemEle, { 'aria-expanded': 'false' });\n attributes(trgt.previousElementSibling, { 'aria-selected': 'false' });\n this.trigger('expanded', eventArgs);\n }\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Accordion.prototype.getModuleName = function () {\n return 'accordion';\n };\n Accordion.prototype.itemAttribUpdate = function () {\n var items = this.getItems();\n var itemEle = this.getItemElements();\n var itemLen = items.length;\n itemEle.forEach(function (ele) {\n select('.' + CLS_HEADER, ele).setAttribute('aria-level', '' + itemLen);\n });\n };\n Accordion.prototype.getItems = function () {\n var items;\n if (this.itemTemplate && this.headerTemplate) {\n items = this.dataSource;\n }\n else {\n items = this.items;\n }\n return items;\n };\n /**\n * Adds new item to the Accordion with the specified index of the Accordion.\n * @param {AccordionItemModel | Object} item - Item array that is to be added to the Accordion.\n * @param {number} index - Number value that determines where the item should be added.\n * By default, item is added at the last index if the index is not specified.\n * @returns void\n */\n Accordion.prototype.addItem = function (item, index) {\n var ele = this.element;\n var itemEle = this.getItemElements();\n var items = this.getItems();\n if (isNOU(index)) {\n index = items.length;\n }\n if (ele.childElementCount >= index) {\n items.splice(index, 0, item);\n var innerItemEle = this.renderInnerItem(item, index);\n if (ele.childElementCount === index) {\n ele.appendChild(innerItemEle);\n }\n else {\n ele.insertBefore(innerItemEle, itemEle[index]);\n }\n this.updateHeaderBlazorTemplate();\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'focus', this.focusIn, this);\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'blur', this.focusOut, this);\n this.itemAttribUpdate();\n }\n this.expandedItems = [];\n this.expandedItemRefresh(ele);\n if (item && item.expanded) {\n this.expandItem(true, index);\n }\n };\n Accordion.prototype.expandedItemRefresh = function (ele) {\n var _this = this;\n var itemEle = this.getItemElements();\n [].slice.call(itemEle).forEach(function (el) {\n if (el.classList.contains(CLS_SLCTED)) {\n _this.expandedItemsPush(el);\n }\n });\n };\n /**\n * Dynamically removes item from Accordion.\n * @param {number} index - Number value that determines which item should be removed.\n * @returns void.\n */\n Accordion.prototype.removeItem = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n var items = this.getItems();\n if (isNOU(ele)) {\n return;\n }\n this.restoreContent(index);\n detach(ele);\n items.splice(index, 1);\n this.itemAttribUpdate();\n this.expandedItems = [];\n this.expandedItemRefresh(this.element);\n };\n /**\n * Sets focus to the specified index item header in Accordion.\n * @param {number} index - Number value that determines which item should be focused.\n * @returns void.\n */\n Accordion.prototype.select = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele) || isNOU(select('.' + CLS_HEADER, ele))) {\n return;\n }\n ele.children[0].focus();\n };\n /**\n * Shows or hides the specified item from Accordion.\n * @param {number} index - Number value that determines which item should be hidden/shown.\n * @param {Boolean} isHidden - Boolean value that determines the action either hide (true) or show (false). Default value is false.\n * If the `isHidden` value is false, the item is shown or else item it is hidden.\n * @returns void.\n */\n Accordion.prototype.hideItem = function (index, isHidden) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele)) {\n return;\n }\n if (isNOU(isHidden)) {\n isHidden = true;\n }\n isHidden ? this.add(ele, CLS_ITEMHIDE) : this.remove(ele, CLS_ITEMHIDE);\n };\n /**\n * Enables/Disables the specified Accordion item.\n * @param {number} index - Number value that determines which item should be enabled/disabled.\n * @param {boolean} isEnable - Boolean value that determines the action as enable (true) or disable (false).\n * If the `isEnable` value is true, the item is enabled or else it is disabled.\n * @returns void.\n */\n Accordion.prototype.enableItem = function (index, isEnable) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele)) {\n return;\n }\n var eleHeader = ele.firstElementChild;\n if (isEnable) {\n this.remove(ele, CLS_DISABLE);\n attributes(eleHeader, { 'tabindex': '0', 'aria-disabled': 'false' });\n eleHeader.focus();\n }\n else {\n if (ele.classList.contains(CLS_ACTIVE)) {\n this.expandItem(false, index);\n this.eleMoveFocus('movedown', this.element, eleHeader);\n }\n this.add(ele, CLS_DISABLE);\n eleHeader.setAttribute('aria-disabled', 'true');\n eleHeader.removeAttribute('tabindex');\n }\n };\n /**\n * Expands/Collapses the specified Accordion item.\n * @param {boolean} isExpand - Boolean value that determines the action as expand or collapse.\n * @param {number} index - Number value that determines which item should be expanded/collapsed.`index` is optional parameter.\n * Without Specifying index, based on the `isExpand` value all Accordion item can be expanded or collapsed.\n * @returns void.\n */\n Accordion.prototype.expandItem = function (isExpand, index) {\n var _this = this;\n var root = this.element;\n var itemEle = this.getItemElements();\n if (isNOU(index)) {\n if (this.expandMode === 'Single' && isExpand) {\n var ele = itemEle[itemEle.length - 1];\n this.itemExpand(isExpand, ele, this.getIndexByItem(ele));\n }\n else {\n var item = select('#' + this.lastActiveItemId, this.element);\n [].slice.call(itemEle).forEach(function (el) {\n _this.itemExpand(isExpand, el, _this.getIndexByItem(el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n var expandedItem = select('.' + CLS_EXPANDSTATE, this.element);\n if (expandedItem) {\n expandedItem.classList.remove(CLS_EXPANDSTATE);\n }\n if (item) {\n item.classList.add(CLS_EXPANDSTATE);\n }\n }\n }\n else {\n var ele = itemEle[index];\n if (isNOU(ele) || !ele.classList.contains(CLS_SLCT) || (ele.classList.contains(CLS_ACTIVE) && isExpand)) {\n return;\n }\n else {\n if (this.expandMode === 'Single') {\n this.expandItem(false);\n }\n this.itemExpand(isExpand, ele, index);\n }\n }\n };\n Accordion.prototype.itemExpand = function (isExpand, ele, index) {\n var ctn = ele.children[1];\n var items = this.getItems();\n if (ele.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (isNOU(ctn) && isExpand) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n this.updateContentBlazorTemplate(items[index], index);\n this.ariaAttrUpdate(ele);\n }\n else if (isNOU(ctn)) {\n return;\n }\n isExpand ? this.expand(ctn) : this.collapse(ctn);\n };\n Accordion.prototype.destroyItems = function () {\n this.restoreContent(null);\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n };\n Accordion.prototype.restoreContent = function (index) {\n var ctnElePos;\n if (isNOU(index)) {\n ctnElePos = this.element;\n }\n else {\n ctnElePos = this.element.querySelectorAll('.' + CLS_ITEM)[index];\n }\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(ctnElePos.querySelector(eleStr))) {\n document.body.appendChild(ctnElePos.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Accordion.prototype.updateItem = function (item, index) {\n if (!isNOU(item)) {\n var items = this.getItems();\n var itemObj = items[index];\n items.splice(index, 1);\n this.restoreContent(index);\n detach(item);\n this.addItem(itemObj, index);\n }\n };\n Accordion.prototype.getPersistData = function () {\n var keyEntity = ['expandedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {AccordionModel} newProp\n * @param {AccordionModel} oldProp\n * @returns void\n * @private\n */\n Accordion.prototype.onPropertyChanged = function (newProp, oldProp) {\n var acrdn = this.element;\n var isRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var j = 0; j < changedProp.length; j++) {\n var index = parseInt(Object.keys(newProp.items)[j], 10);\n var property = Object.keys(newProp.items[index])[0];\n var item = selectAll('.' + CLS_ITEM, this.element)[index];\n var oldVal = Object(oldProp.items[index])[property];\n var newVal = Object(newProp.items[index])[property];\n var temp = property;\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || ((temp === 'content') && (oldVal === ''))) {\n this.updateItem(item, index);\n }\n if (property === 'cssClass' && !isNOU(item)) {\n item.classList.remove(oldVal);\n item.classList.add(newVal);\n }\n if (property === 'content' && !isNOU(item) && item.children.length === 2) {\n if (item.classList.contains(CLS_SLCTED)) {\n this.expandItem(false, index);\n }\n detach(item.querySelector('.' + CLS_CONTENT));\n }\n }\n }\n else {\n isRefresh = true;\n }\n break;\n case 'dataSource':\n isRefresh = true;\n break;\n case 'headerTemplate':\n this.initializeheaderTemplate();\n isRefresh = true;\n break;\n case 'itemTemplate':\n this.initializeItemTemplate();\n isRefresh = true;\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.add(acrdn, CLS_RTL) : this.remove(acrdn, CLS_RTL);\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyle(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'expandMode':\n if (newProp.expandMode === 'Single') {\n this.element.setAttribute('aria-multiselectable', 'false');\n if (this.expandedItems.length > 1) {\n this.expandItem(false);\n }\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n break;\n }\n }\n if (isRefresh) {\n this.destroyItems();\n this.renderItems();\n this.initItemExpand();\n }\n };\n __decorate([\n Collection([], AccordionItem)\n ], Accordion.prototype, \"items\", void 0);\n __decorate([\n Property([])\n ], Accordion.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Accordion.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property()\n ], Accordion.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('100%')\n ], Accordion.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Accordion.prototype, \"height\", void 0);\n __decorate([\n Property('Multiple')\n ], Accordion.prototype, \"expandMode\", void 0);\n __decorate([\n Complex({}, AccordionAnimationSettings)\n ], Accordion.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"destroyed\", void 0);\n Accordion = __decorate([\n NotifyPropertyChanges\n ], Accordion);\n return Accordion;\n}(Component));\nexport { Accordion };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/// <reference path='../common/menu-base-model.d.ts'/>\nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n * <div id = 'target'></div>\n * <ul id = 'contextmenu'></ul>\n * ```\n * ```typescript\n * <script>\n * var contextMenuObj = new ContextMenu({items: [{ text: 'Cut' }, { text: 'Copy' },{ text: 'Paste' }], target: '#target'});\n * </script>\n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n * @private\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n * @private\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menu', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n * @param top - To specify ContextMenu vertical positioning.\n * @param left - To specify ContextMenu horizontal positioning.\n * @param target - To calculate z-index for ContextMenu based upon the specified target.\n * @method open\n * @returns void\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed\n * @private\n * @param {ContextMenuModel} newProp\n * @param {ContextMenuModel} oldProp\n * @returns void\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n * @returns string\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/// <reference path='../common/menu-base-model.d.ts'/>\nimport { attributes, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, Complex, getUniqueID } from '@syncfusion/ej2-base';\nimport { MenuBase, FieldSettings } from '../common/menu-base';\nvar VMENU = 'e-vertical';\nvar SCROLLABLE = 'e-scrollable';\nvar HAMBURGER = 'e-hamburger';\n/**\n * The Menu is a graphical user interface that serve as navigation headers for your application or site.\n * ```html\n * <ul id = 'menu'></ul>\n * ```\n * ```typescript\n * <script>\n * var menuObj = new Menu({ items: [{ text: 'Home' }, { text: 'Contact Us' },{ text: 'Login' }]});\n * menuObj.appendTo(\"#menu\");\n * </script>\n * ```\n */\nvar Menu = /** @class */ (function (_super) {\n __extends(Menu, _super);\n /**\n * Constructor for creating the component.\n * @private\n */\n function Menu(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.tempItems = [];\n return _this;\n }\n /**\n * Get module name.\n * @returns string\n * @private\n */\n Menu.prototype.getModuleName = function () {\n return 'menu';\n };\n /**\n * For internal use only - prerender processing.\n * @private\n */\n Menu.prototype.preRender = function () {\n this.isMenu = true;\n this.element.id = this.element.id || getUniqueID('ej2-menu');\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n this.clearChanges();\n }\n }\n catch (e) {\n /* action on catch */\n }\n }\n else {\n this.updateMenuItems(this.items);\n }\n _super.prototype.preRender.call(this);\n };\n Menu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n if (this.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode && !this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n if (Browser.isDevice && !this.enableScrolling) {\n this.element.parentElement.classList.add(SCROLLABLE);\n }\n }\n if (this.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n if (this.orientation === 'Horizontal') {\n this.element.classList.add('e-hide-menu');\n }\n }\n };\n Menu.prototype.updateMenuItems = function (items) {\n this.tempItems = items;\n this.items = [];\n this.tempItems.map(this.createMenuItems, this);\n this.setProperties({ items: this.items }, true);\n this.tempItems = [];\n };\n /**\n * Called internally if any of the property value changed\n * @private\n * @param {MenuModel} newProp\n * @param {MenuModel} oldProp\n * @returns void\n */\n Menu.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'orientation':\n if (newProp.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n this.element.classList.remove(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n this.element.removeAttribute('aria-orientation');\n }\n break;\n case 'items':\n if (!Object.keys(oldProp.items).length) {\n this.updateMenuItems(newProp.items);\n }\n break;\n case 'hamburgerMode':\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n if (newProp.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n }\n else {\n this.element.parentElement.classList.remove(HAMBURGER);\n }\n if (this.orientation === 'Vertical') {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n else {\n if (this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');\n }\n break;\n case 'title':\n if (this.hamburgerMode && this.element.previousElementSibling) {\n this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;\n }\n break;\n case 'target':\n if (this.hamburgerMode) {\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n if (this.orientation === 'Horizontal') {\n if (!newProp.target) {\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n }\n break;\n }\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n };\n Menu.prototype.createMenuItems = function (item) {\n var pIdField;\n var idx;\n var i;\n var items = this.items;\n pIdField = this.getField('parentId');\n if (item[pIdField]) {\n idx = this.getIndex(item[pIdField].toString(), true);\n for (i = 0; i < idx.length; i++) {\n if (!items[idx[i]].items) {\n items[idx[i]].items = [];\n }\n items = items[idx[i]].items;\n }\n items.push(item);\n }\n else {\n this.items.push(item);\n }\n };\n /**\n * This method is used to open the Menu in hamburger mode.\n * @method open\n * @returns void\n */\n Menu.prototype.open = function () {\n _super.prototype.openHamburgerMenu.call(this);\n };\n /**\n * Closes the Menu if it is opened in hamburger mode.\n */\n Menu.prototype.close = function () {\n _super.prototype.closeHamburgerMenu.call(this);\n };\n __decorate([\n Property('Horizontal')\n ], Menu.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Menu.prototype, \"target\", void 0);\n __decorate([\n Property(null)\n ], Menu.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"hamburgerMode\", void 0);\n __decorate([\n Property('Menu')\n ], Menu.prototype, \"title\", void 0);\n __decorate([\n Complex({}, FieldSettings)\n ], Menu.prototype, \"fields\", void 0);\n Menu = __decorate([\n NotifyPropertyChanges\n ], Menu);\n return Menu;\n}(MenuBase));\nexport { Menu };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor, getRandomId } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_HORIZONTAL = 'e-horizontal';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n * <div id=\"tab\"></div>\n * <script>\n * var tabObj = new Tab();\n * tab.appendTo(\"#tab\");\n * </script>\n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n * @param options - Specifies Tab model properties as options.\n * @param element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.animateOptions = {};\n _this.animObj = new Animation(_this.animateOptions);\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.resizeContext = _this.refreshActElePosition.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n * @returns void\n */\n Tab.prototype.destroy = function () {\n var _this = this;\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n }\n this.unWireEvents();\n ['role', 'aria-disabled', 'aria-activedescendant', 'tabindex', 'aria-orientation'].forEach(function (val) {\n _this.element.removeAttribute(val);\n });\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Initialize component\n * @private\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwipeed = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { role: 'tablist', 'aria-disabled': 'false', 'aria-activedescendant': '' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n * @private\n */\n Tab.prototype.render = function () {\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (isBlazor()) {\n this.renderComplete();\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n var scrCnt = void 0;\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i).innerHTML);\n }\n if (count > 0) {\n while (this.hdrEle.firstElementChild) {\n detach(this.hdrEle.firstElementChild);\n }\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index,\n attrs: { role: 'tab', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-selected': 'false' }\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, innerHTML: item, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', { className: CLS_WRAP, innerHTML: cont, attrs: { tabIndex: '-1' } });\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { 'aria-label': 'tab-header' });\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n if (item.headerTemplate && isBlazor() && !this.isStringTemplate &&\n item.headerTemplate.indexOf('<div>Blazor') === 0) {\n updateBlazorTemplate(this.element.id + i + '_' + 'headerTemplate', 'HeaderTemplate', item);\n }\n }\n this.updateOrientationAttribute();\n this.setCloseButton(this.showCloseButton);\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n contents.item(i).className += CLS_ITEM;\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n _this.lastIndex = ((tbCount === 0) ? i : ((_this.isReplace) ? (index + i) : (_this.lastIndex + 1)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: '-1' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray === []) {\n _this.itemIndexArray.push(CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n else {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, role: 'tab', 'aria-selected': 'false'\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = item.cssClass + ' ' + disabled + ' ' + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n (this.isIconAlone) ? this.element.classList.add(CLS_ICON_TAB) : this.element.classList.remove(CLS_ICON_TAB);\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele.cloneNode(true), selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n ele.outerHTML = '';\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target.cloneNode(true));\n this.actEleId = target.id;\n target.outerHTML = '';\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.updateOrientationAttribute = function () {\n attributes(this.element, { 'aria-orientation': (this.isVertical() ? 'vertical' : 'horizontal') });\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n (val === true) ? trg.classList.add(CLS_CLOSE_SHOW) : trg.classList.remove(CLS_CLOSE_SHOW);\n this.tbObj.refreshOverflow();\n this.refreshActElePosition();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n var oldCnt;\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var no = this.extIndex(this.tbItem[this.selectedItem].id);\n var newCnt = this.getTrgContent(this.cntEle, no);\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n this.prevActiveEle = newCnt.id;\n if (this.initRender || value === false || this.animation === {} || isNOU(this.animation)) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.select(trgIndex);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n var item = this.items[index];\n if (!isNOU(item)) {\n if (item.content && isBlazor() && !this.isStringTemplate && item.content.indexOf('<div>Blazor') === 0) {\n updateBlazorTemplate(this.element.id + index + '_' + 'content', 'ContentTemplate', item);\n }\n }\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string' && isBlazor() && val.indexOf('<div>Blazor') !== 0) {\n val = val.trim();\n ele.innerHTML = val;\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n if (isBlazor() && !this.isStringTemplate && val.indexOf('<div>Blazor') === 0) {\n templateFUN = templateFn({}, this, prop, this.element.id + index + '_' + prop, this.isStringTemplate);\n }\n else {\n templateFUN = templateFn({}, this, prop);\n }\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n this.element.classList.add(CLS_VTAB);\n }\n if (this.headerPlacement === 'Bottom') {\n this.hdrEle.classList.add(CLS_HBOTTOM);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n }\n this.addVerticalClass();\n this.updateOrientationAttribute();\n this.select(this.selectedItem);\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.offsetHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n setStyle(this.cntEle, { 'height': '100%' });\n }\n else if (this.heightAdjustMode === 'Auto') {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n if (this.isTemplate === true) {\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n this.clearTemplate(['content']);\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n ele.classList.remove(CLS_ACTIVE);\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var bar;\n var scrollCnt;\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (trg === null) {\n return;\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n bar = select('.' + CLS_INDICATOR, trgHdrEle);\n scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value) {\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value >= 0) {\n this.setProperties({ selectedItem: value }, true);\n }\n if (value < 0 || isNaN(value) || this.tbItem.length === 0) {\n return;\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n var prev = this.tbItem[this.prevIndex];\n if (!isNOU(prev)) {\n prev.removeAttribute('aria-controls');\n }\n attributes(trg, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n attributes(this.element, { 'aria-activedescendant': id });\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, trg.id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n var curActItem = select('.' + CLS_HEADER + ' #' + id, this.element);\n this.refreshItemVisibility(curActItem);\n if (!this.initRender) {\n curActItem.firstChild.focus();\n }\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwipeed\n };\n if (!this.initRender || this.selectedItem !== 0) {\n this.trigger('selected', eventArg);\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.wireEvents = function () {\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n this.keyModule.destroy();\n this.tabKeyModule.destroy();\n if (!isNOU(this.cntEle)) {\n this.touchModule.destroy();\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNOU(trgParent) && trgIndex !== this.selectedItem) {\n this.select(trgIndex);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n this.isSwipeed = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n }\n }\n this.isSwipeed = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', '-1');\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n actEle.children.item(0).setAttribute('tabindex', '0');\n break;\n case 'moveLeft':\n case 'moveRight':\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshActElePosition = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle)) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var oldVal = Object(oldProp.items[index])[property];\n var newVal = Object(newProp.items[index])[property];\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + index, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + index, this.element);\n if (property === 'header' || property === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (property === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else {\n cntItem.innerHTML = newVal;\n }\n }\n if (property === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (property === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n var items = newProp.items;\n for (var i = 0; i < items.length; i++) {\n this.resetBlazorTemplates(items[i], i);\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n }\n }\n };\n Tab.prototype.resetBlazorTemplates = function (item, index) {\n if (!isBlazor()) {\n return;\n }\n if (item.headerTemplate && !this.isStringTemplate && (item.headerTemplate).indexOf('<div>Blazor') === 0) {\n resetBlazorTemplate(this.element.id + index + '_' + 'headerTemplate', 'HeaderTemplate');\n }\n if (item.content && !this.isStringTemplate && item.content.indexOf('<div>Blazor') === 0) {\n resetBlazorTemplate(this.element.id + index + '_' + 'content', 'ContentTemplate');\n }\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns void.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstChild.setAttribute('tabindex', '-1');\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n * @param {TabItemsModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns void.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n }\n else {\n var itemsCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) ||\n isNOU(textValue_1) || (textValue_1.length === 0) && isNOU(item.header.iconCss))) {\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + _this.tabId + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n }\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n * @param {number} index - Index of target item that is going to be removed.\n * @returns void.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n _this.resetBlazorTemplates(_this.items[index], index);\n _this.tbObj.removeItems(index);\n _this.items.splice(index, 1);\n _this.itemIndexArray.splice(index, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (trg.classList.contains(CLS_ACTIVE)) {\n // tslint:disable-next-line:max-line-length\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns void.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length === 0) {\n this.select(index);\n }\n item.classList.remove(CLS_HIDDEN);\n }\n this.setActiveBorder();\n item.setAttribute('aria-hidden', '' + value);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @returns void.\n */\n Tab.prototype.select = function (args) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', '-1');\n }\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwipeed,\n cancel: false\n };\n if (!this.initRender || this.selectedItem !== 0) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args);\n }\n });\n }\n else {\n this.selectingContent(args);\n }\n };\n Tab.prototype.selectingContent = function (args) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && this.tbItem[args].classList.contains(CLS_DISABLE)) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP)) {\n this.setActive(this.popupHandler(this.tbItem[args]));\n }\n else {\n this.setActive(args);\n }\n }\n else {\n this.setActive(0);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args));\n }\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns void.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {TabModel} newProp\n * @param {TabModel} oldProp\n * @returns void\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n if (oldProp.cssClass !== '') {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActElePosition();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n }\n }\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Component, isUndefined, Browser, compile, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor, getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar CONTENT = 'e-content';\nvar DOWNTAIL = 'e-downtail';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar treeAriaAttr = {\n treeRole: 'tree',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: '',\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n * <div id=\"tree\"></div>\n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n _this.parentNodeCheck = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.mouseDownStatus = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n * @returns string\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding();\n this.setExpandOnType();\n this.setRipple();\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEvents();\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.isBlazorPlatform = isBlazor();\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setEnableRtl = function () {\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true,\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n isEnabled ? addClass([this.element], FULLROWWRAP) : removeClass([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (isEnabled) {\n firstUl.setAttribute('aria-multiselectable', 'true');\n }\n else {\n firstUl.removeAttribute('aria-multiselectable');\n }\n };\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n };\n TreeView.prototype.setDataBinding = function () {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n if (_this.fields.dataSource instanceof DataManager && _this.fields.dataSource.dataSource.offline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n this.listBaseOption.ariaAttributes.level = 1;\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : this.getSortedData(this.rootData), this.listBaseOption);\n this.element.appendChild(this.ulElement);\n if (this.loadOnDemand === false) {\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n else {\n this.finalizeNode(this.element);\n }\n if (this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n TreeView.prototype.updateCheckedStateFromDS = function (id) {\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.fields.dataSource.dataSource.offline) || (this.fields.dataSource instanceof DataManager &&\n !this.loadOnDemand)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n }\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.setAttribute('role', 'checkbox');\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n checkboxEle.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n textEle.innerHTML = '';\n var tempArr = this.nodeTemplateFn(e.curData, undefined, undefined, this.element.id + 'nodeTemplate', this.isStringTemplate);\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n this.trigger('drawNode', eventArgs);\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNOU(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[i])) || !isNOU(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var childId = childCheck[index].getAttribute('data-uid');\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNOU(nodes)) {\n for (var len = nodes.length; len >= 0; len--) {\n var liEle = void 0;\n if (nodes.length === 1) {\n liEle = this.getElement(nodes[len - 1]);\n }\n else {\n liEle = this.getElement(nodes[len]);\n }\n if (isNOU(liEle)) {\n var node = void 0;\n node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length; j++) {\n var node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.fields.dataSource.dataSource.offline) || (this.fields.dataSource instanceof DataManager &&\n !this.loadOnDemand)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && !frameSpan.classList.contains(INDETERMINATE) && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n addClass([firstNode], FOCUS);\n this.updateIdAttr(null, firstNode);\n }\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n };\n TreeView.prototype.doExpandAction = function () {\n var eUids = this.expandedNodes;\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n // tslint:disable\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if (!this.isLoaded || this.isFieldChange) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li) {\n return;\n }\n else {\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var currLi = closest(wrapper, '.' + LISTITEM);\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n proxy_1.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.isLoaded && this.expandArgs) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n if (this.isBlazorPlatform) {\n this.setProperties({ expandedNodes: [].concat([], this.expandedNodes, [id]) }, true);\n }\n else {\n this.expandedNodes.push(id);\n }\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var proxy = this;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n proxy.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n if (this.isBlazorPlatform) {\n var removeVal = this.expandedNodes.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ expandedNodes: [].concat([], removeVal) }, true);\n }\n else {\n this.expandedNodes.splice(index, 1);\n }\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n // tslint:disable\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if ((this.fields.dataSource instanceof DataManager && (this.fields.dataSource.dataSource.offline)) ||\n (this.fields.dataSource instanceof DataManager && !this.loadOnDemand)) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n if (this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n }\n else if (this.fields.dataSource instanceof DataManager && this.loadOnDemand) {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n if (_this.nodeTemplate && _this.isBlazorPlatform && !_this.isStringTemplate) {\n _this.updateBlazorTemplate();\n }\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.getSortedData(childItems), this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n if (this.loadOnDemand && this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.fields.dataSource.dataSource.offline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id].toString();\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id].toString();\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n var childData;\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot) {\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, obj[i]);\n if (dataId && dataId.toString() === parentId) {\n return getValue(this.fields.child, obj[i]);\n }\n else if (!isNOU(getValue(this.fields.child, obj[i]))) {\n childNodes = this.getChildNodes(getValue(this.fields.child, obj[i]), parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[i][0]) && !isNOU(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !e.ctrlKey)))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n }\n addClass([li], FOCUS);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[i], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n this.element.focus();\n addClass([focusedNode], HOVER);\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n this.element.focus();\n addClass([focusedNode], HOVER);\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n checkWrap.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && childElement === null && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes(this.treeData, checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[length_1]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true ||\n getValue(this.fields.child.toString(), child[length_1])) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = this.getChildNodes(this.treeData, id.toString());\n if (childId_1) {\n (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '.' + FOCUS, this.element);\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains('e-text-content')) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], [HOVER, FOCUS]);\n if (!nextNode.classList.contains('e-disable')) {\n addClass([nextNode], [HOVER, FOCUS]);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n addClass([this.getFocusedNode()], HOVER);\n }\n this.mouseDownStatus = false;\n };\n TreeView.prototype.focusOut = function () {\n removeClass([this.getFocusedNode()], HOVER);\n };\n TreeView.prototype.onMouseOver = function (e) {\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n ;\n TreeView.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n ;\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = (currLi.getAttribute('aria-expanded') === null) ? false : true;\n var checked = null;\n if (this.showCheckBox) {\n checked = select('.' + CHECKBOXWRAP, currLi).getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.destroyTemplate = function (nodeTemplate) {\n this.clearTemplate(['nodeTemplate']);\n };\n TreeView.prototype.reRenderNodes = function () {\n resetBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate');\n if (this.isBlazorPlatform && this.element.firstElementChild) {\n this.element.removeChild(this.element.firstElementChild);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(this.nodeTemplate);\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding();\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n _this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: _this.enableRtl,\n }\n }, _this.createElement);\n _this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n _this.wireInputEvents(inpEle);\n }\n });\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n this.appendNewText(liEle, txtEle, newText, true);\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n var newData = setValue(_this.editFields.text, newText, _this.editData);\n if (!isNOU(_this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var tempArr = _this.nodeTemplateFn(newData, undefined, undefined, _this.element.id + 'nodeTemplate', _this.isStringTemplate);\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, txtEle);\n _this.updateBlazorTemplate();\n }\n else {\n txtEle.innerText = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n txtEle.focus();\n }\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent();\n }\n });\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNOU(this.treeData[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n // tslint:disable-next-line:max-func-body-length\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragTarget: '.' + TEXTWRAP,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n if (isBlazor()) {\n e.bindEvents(getElement(e.dragElement));\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n if ((_this.isBlazorPlatform && _this.dragStartAction) || !_this.isBlazorPlatform) {\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n }\n _this.dragStartAction = false;\n });\n }\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING)) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (1) : (0);\n dropLi.insertBefore(virEle, dropLi.children[index]);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (2) : (1);\n dropLi.insertBefore(virEle, dropLi.children[index]);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance = e.dragData.draggable;\n for (var i = 0; i < dragInstance.ej2_instances.length; i++) {\n if (dragInstance.ej2_instances[i] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i = sNodes.length - 1; i >= 0; i--) {\n if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i = 0; i < sNodes.length; i++) {\n if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n this.triggerEvent();\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n if (e && (pos < 7) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[i];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateInstance();\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[i]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n var refNode = dropUl.childNodes[index];\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n var id = this.getId(dropLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n else {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && obj[i].hasOwnProperty(mapper.child)) ||\n (this.fields.dataSource instanceof DataManager && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n var id = void 0;\n id = (nodes[i]) ? nodes[i].toString() : null;\n if (id && this.disableNode.indexOf(nodes[i].toString()) === -1) {\n this.disableNode.push(nodes[i].toString());\n }\n continue;\n }\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n var id = (nodes[i]) ? nodes[i].toString() : null;\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n continue;\n }\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[j]);\n if (!isNOU(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n var childNodes;\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function () {\n if (this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n var eventArgs = { data: this.treeData };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.updateBlazorTemplate = function () {\n updateBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate', this, false);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n if (toBind) {\n var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n e.originalEvent.preventDefault();\n proxy_3.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var proxy_4 = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && e.tapCount === 2)) {\n proxy_4.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n ;\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'focus', this.focusIn, this);\n EventHandler.add(this.element, 'blur', this.focusOut, this);\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'focus', this.focusIn);\n EventHandler.remove(this.element, 'blur', this.focusOut);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n this.keyboardModule.destroy();\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n };\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n if (!this.isBlazorPlatform) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n this.collapseAll();\n this.isInitalExpand = true;\n if (!this.isBlazorPlatform) {\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n }\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n this.updateListProp(this.fields);\n this.reRenderNodes();\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n this.renderChildNodes(nodes[i], true, null, true);\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n TreeView.prototype.destroy = function () {\n resetBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate');\n this.element.removeAttribute('aria-activedescendant');\n this.element.removeAttribute('tabindex');\n this.unWireEvents();\n this.wireEditingEvents(false);\n this.rippleFn();\n this.rippleIconFn();\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n var dropUl_1;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy_5 = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy_5.renderChildNodes(dropLi, null, function () {\n dropUl_1 = dropLi.querySelector('.' + PARENTITEM);\n proxy_5.addGivenNodes(nodes, dropLi, index, true, dropUl_1);\n proxy_5.triggerEvent();\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent();\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false) || (this.fields.dataSource instanceof DataManager) && (this.fields.dataSource.adaptorName === 'BlazorAdaptor')) {\n this.preventExpand = false;\n this.triggerEvent();\n }\n };\n /**\n * Instead of clicking on the TreeView node for editing, we can enable it by using\n * `beginEdit` property. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (!isNOU(ele)) {\n this.createTextbox(ele, null);\n }\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n TreeView.prototype.ensureVisible = function (node) {\n var liEle = this.getElement(node);\n if (isNOU(liEle)) {\n return;\n }\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n setTimeout(function () { liEle.scrollIntoView(true); }, 450);\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Get the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @BlazorType NodeData\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent();\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent();\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Component, formatUnit, EventHandler, Event, isNullOrUndefined, closest, isBlazor } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, removeClass, Touch } from '@syncfusion/ej2-base';\nvar CONTROL = 'e-control';\nvar ROOT = 'e-sidebar';\nvar DOCKER = 'e-dock';\nvar CLOSE = 'e-close';\nvar OPEN = 'e-open';\nvar TRASITION = 'e-transition';\nvar DEFAULTBACKDROP = 'e-sidebar-overlay';\nvar CONTEXTBACKDROP = 'e-backdrop';\nvar RTL = 'e-rtl';\nvar RIGHT = 'e-right';\nvar LEFT = 'e-left';\nvar OVER = 'e-over';\nvar PUSH = 'e-push';\nvar SLIDE = 'e-slide';\nvar VISIBILITY = 'e-visibility';\nvar MAINCONTENTANIMATION = 'e-content-animation';\nvar DISABLEANIMATION = 'e-disable-animation';\nvar CONTEXT = 'e-sidebar-context';\nvar SIDEBARABSOLUTE = 'e-sidebar-absolute';\n/**\n * Sidebar is an expandable or collapsible\n * component that typically act as a side container to place the primary or secondary content alongside of the main content.\n * ```html\n * <aside id=\"sidebar\">\n * </aside>\n * ```\n * ```typescript\n * <script>\n * let sidebarObject: Sidebar = new Sidebar();\n * sidebarObject.appendTo(\"#sidebar\");\n * </script>\n * ```\n */\nvar Sidebar = /** @class */ (function (_super) {\n __extends(Sidebar, _super);\n function Sidebar(options, element) {\n return _super.call(this, options, element) || this;\n }\n Sidebar.prototype.preRender = function () {\n this.setWidth();\n };\n Sidebar.prototype.render = function () {\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n };\n Sidebar.prototype.initialize = function () {\n this.setTarget();\n this.addClass();\n this.setZindex();\n if (this.enableDock) {\n this.setDock();\n }\n if (this.isOpen) {\n this.show();\n }\n else {\n this.setMediaQuery();\n }\n this.checkType(true);\n this.setType(this.type);\n this.setCloseOnDocumentClick();\n this.setEnableRTL();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.setEnableRTL = function () {\n this.enableRtl ? (addClass([this.element], RTL)) :\n (removeClass([this.element], RTL));\n };\n Sidebar.prototype.setTarget = function () {\n this.sidebarEleCopy = this.element.cloneNode(true);\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (this.target) {\n this.target.insertBefore(this.element, this.target.children[0]);\n addClass([this.element], SIDEBARABSOLUTE);\n addClass([this.target], CONTEXT);\n }\n };\n Sidebar.prototype.setCloseOnDocumentClick = function () {\n if (this.closeOnDocumentClick) {\n EventHandler.add(document, 'mousedown touchstart', this.documentclickHandler, this);\n }\n else {\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n }\n };\n Sidebar.prototype.setWidth = function () {\n if (this.enableDock && this.position === 'Left') {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (this.enableDock && this.position === 'Right') {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (!this.enableDock) {\n setStyle(this.element, { 'width': this.setDimension(this.width) });\n }\n };\n Sidebar.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n Sidebar.prototype.setZindex = function () {\n setStyle(this.element, { 'z-index': '' + this.zIndex });\n };\n Sidebar.prototype.addClass = function () {\n var classELement = document.querySelector('.e-main-content');\n if (!isNullOrUndefined((classELement ||\n this.element.nextElementSibling))) {\n addClass([classELement || this.element.nextElementSibling], [MAINCONTENTANIMATION]);\n }\n if (!this.enableDock && this.type !== 'Auto') {\n addClass([this.element], [VISIBILITY]);\n }\n removeClass([this.element], [OPEN, CLOSE, RIGHT, LEFT, SLIDE, PUSH, OVER]);\n this.element.classList.add(ROOT);\n addClass([this.element], (this.position === 'Right') ? RIGHT : LEFT);\n if (this.type === 'Auto' && !Browser.isDevice) {\n this.show();\n }\n else if (!this.isOpen) {\n addClass([this.element], CLOSE);\n }\n if (this.enableDock) {\n addClass([this.element], DOCKER);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n };\n Sidebar.prototype.checkType = function (val) {\n if (!(this.type === 'Push' || this.type === 'Over' || this.type === 'Slide')) {\n this.type = 'Auto';\n }\n else {\n if (!this.element.classList.contains(CLOSE) && !val) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.transitionEnd = function (e) {\n this.setDock();\n if (!isNullOrUndefined(e) && e.target === this.element) {\n this.triggerChange();\n }\n EventHandler.remove(this.element, 'transitionend', this.transitionEnd);\n };\n Sidebar.prototype.destroyBackDrop = function () {\n var sibling = document.querySelector('.e-main-content') ||\n this.element.nextElementSibling;\n if (this.target && this.showBackdrop && sibling) {\n removeClass([sibling], CONTEXTBACKDROP);\n }\n else if (this.showBackdrop && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n /**\n * Hide the Sidebar component, if it is in an open state.\n * @returns void\n */\n Sidebar.prototype.hide = function (e) {\n var _this = this;\n var closeArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n if (isBlazor()) {\n delete closeArguments.model;\n }\n this.trigger('close', closeArguments, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n if (_this.element.classList.contains(CLOSE)) {\n return;\n }\n if (_this.element.classList.contains(OPEN) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], CLOSE);\n removeClass([_this.element], OPEN);\n _this.enableDock ? setStyle(_this.element, { 'width': formatUnit(_this.dockSize) }) :\n setStyle(_this.element, { 'width': formatUnit(_this.width) });\n _this.setType(_this.type);\n var sibling = document.querySelector('.e-main-content') ||\n _this.element.nextElementSibling;\n if (!_this.enableDock && sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n _this.position === 'Left' ? sibling.style.marginLeft = '0px' : sibling.style.marginRight = '0px';\n }\n _this.destroyBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.remove('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: false }, true);\n if (_this.enableDock) {\n setTimeout(function () { return _this.setTimeOut(); }, 50);\n }\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setTimeOut = function () {\n var sibling = document.querySelector('.e-main-content') ||\n this.element.nextElementSibling;\n if (this.element.classList.contains(OPEN) && sibling) {\n if (this.position === 'Left') {\n this.width === 'auto' ? sibling.style.marginLeft = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginLeft = this.setDimension(this.width);\n }\n else {\n this.width === 'auto' ? sibling.style.marginRight = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginRight = this.setDimension(this.width);\n }\n }\n else if (this.element.classList.contains(CLOSE) && sibling) {\n if (this.position === 'Left') {\n this.dockSize === 'auto' ? sibling.style.marginLeft = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginLeft = this.setDimension(this.dockSize);\n }\n else {\n this.dockSize === 'auto' ? sibling.style.marginRight = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginRight = this.setDimension(this.dockSize);\n }\n }\n };\n ;\n /**\n * Shows the Sidebar component, if it is in closed state.\n * @returns void\n */\n Sidebar.prototype.show = function (e) {\n var _this = this;\n var openArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n if (isBlazor()) {\n delete openArguments.model;\n }\n this.trigger('open', openArguments, function (observedopenArgs) {\n if (!observedopenArgs.cancel) {\n removeClass([_this.element], VISIBILITY);\n if (_this.element.classList.contains(OPEN)) {\n return;\n }\n if (_this.element.classList.contains(CLOSE) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], [OPEN, TRASITION]);\n setStyle(_this.element, { 'transform': '' });\n removeClass([_this.element], CLOSE);\n setStyle(_this.element, { 'width': formatUnit(_this.width) });\n _this.setType(_this.type);\n _this.createBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.add('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: true }, true);\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setAnimation = function () {\n if (this.animate) {\n removeClass([this.element], DISABLEANIMATION);\n }\n else {\n addClass([this.element], DISABLEANIMATION);\n }\n };\n Sidebar.prototype.triggerChange = function () {\n var changeArguments = { name: 'change', element: this.element };\n this.trigger('change', changeArguments);\n };\n Sidebar.prototype.setDock = function () {\n if (this.enableDock && this.position === 'Left' && !this.getState()) {\n setStyle(this.element, { 'transform': 'translateX(' + -100 + '%) translateX(' + this.setDimension(this.dockSize) + ')' });\n }\n else if (this.enableDock && this.position === 'Right' && !this.getState()) {\n setStyle(this.element, { 'transform': 'translateX(' + 100 + '%) translateX(' + '-' + this.setDimension(this.dockSize) + ')' });\n }\n if (this.element.classList.contains(CLOSE) && this.enableDock) {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n };\n Sidebar.prototype.createBackDrop = function () {\n if (this.target && this.showBackdrop && this.getState()) {\n var sibling = document.querySelector('.e-main-content') ||\n this.element.nextElementSibling;\n addClass([sibling], CONTEXTBACKDROP);\n }\n else if (this.showBackdrop && !this.modal && this.getState()) {\n this.modal = this.createElement('div');\n this.modal.className = DEFAULTBACKDROP;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n };\n Sidebar.prototype.getPersistData = function () {\n return this.addOnPersist(['type', 'position', 'isOpen']);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Sidebar.prototype.getModuleName = function () {\n return 'sidebar';\n };\n /**\n * Shows or hides the Sidebar based on the current state.\n * @returns void\n */\n Sidebar.prototype.toggle = function (e) {\n this.element.classList.contains(OPEN) ? this.hide() : this.show();\n };\n Sidebar.prototype.getState = function () {\n return this.element.classList.contains(OPEN) ? true : false;\n };\n Sidebar.prototype.setMediaQuery = function () {\n if (this.mediaQuery) {\n var media = false;\n if (typeof (this.mediaQuery) === 'string') {\n media = window.matchMedia(this.mediaQuery).matches;\n }\n else {\n media = (this.mediaQuery).matches;\n }\n if (media && this.windowWidth !== window.innerWidth) {\n this.show();\n }\n else if (this.getState() && this.windowWidth !== window.innerWidth) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.resize = function (e) {\n if (this.type === 'Auto') {\n if (Browser.isDevice) {\n addClass([this.element], OVER);\n }\n else {\n addClass([this.element], PUSH);\n }\n }\n this.setMediaQuery();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.documentclickHandler = function (e) {\n if (closest(e.target, '.' + CONTROL + '' + '.' + ROOT)) {\n return;\n }\n this.hide(e);\n };\n Sidebar.prototype.enableGestureHandler = function (args) {\n if (this.position === 'Left' && args.swipeDirection === 'Right' &&\n (args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n else if (this.position === 'Left' && args.swipeDirection === 'Left') {\n this.hide();\n }\n else if (this.position === 'Right' && args.swipeDirection === 'Right') {\n this.hide();\n }\n else if (this.position === 'Right' && args.swipeDirection === 'Left'\n && (window.innerWidth - args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n };\n Sidebar.prototype.setEnableGestures = function () {\n if (this.enableGestures) {\n this.mainContentEle = new Touch(document.body, { swipe: this.enableGestureHandler.bind(this) });\n this.sidebarEle = new Touch(this.element, { swipe: this.enableGestureHandler.bind(this) });\n }\n else {\n if (this.mainContentEle && this.sidebarEle) {\n this.mainContentEle.destroy();\n this.sidebarEle.destroy();\n }\n }\n };\n Sidebar.prototype.wireEvents = function () {\n this.setEnableGestures();\n window.addEventListener('resize', this.resize.bind(this));\n };\n Sidebar.prototype.unWireEvents = function () {\n window.removeEventListener('resize', this.resize.bind(this));\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n if (this.mainContentEle) {\n this.mainContentEle.destroy();\n }\n if (this.sidebarEle) {\n this.sidebarEle.destroy();\n }\n };\n Sidebar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var sibling = document.querySelector('.e-main-content') ||\n this.element.nextElementSibling;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isOpen':\n this.isOpen ? this.show() : this.hide();\n break;\n case 'width':\n this.setWidth();\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'animate':\n this.setAnimation();\n break;\n case 'type':\n this.checkType(false);\n removeClass([this.element], [VISIBILITY]);\n this.addClass();\n addClass([this.element], this.type === 'Auto' ? (Browser.isDevice ? ['e-over'] :\n ['e-push']) : ['e-' + this.type.toLowerCase()]);\n break;\n case 'position':\n this.element.style.transform = '';\n this.setDock();\n if (sibling) {\n this.position === 'Left' ? sibling.style.marginRight = '0px' : sibling.style.marginLeft = '0px';\n }\n if (this.position === 'Right') {\n removeClass([this.element], LEFT);\n addClass([this.element], RIGHT);\n }\n else {\n removeClass([this.element], RIGHT);\n addClass([this.element], LEFT);\n }\n this.setType(this.type);\n break;\n case 'showBackdrop':\n if (this.showBackdrop) {\n this.createBackDrop();\n }\n else {\n if (this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n break;\n case 'target':\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (isNullOrUndefined(this.target)) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([oldProp.target], CONTEXT);\n setStyle(sibling, { 'margin-left': 0, 'margin-right': 0 });\n document.body.insertAdjacentElement('afterbegin', this.element);\n }\n else {\n _super.prototype.refresh.call(this);\n }\n break;\n case 'closeOnDocumentClick':\n this.setCloseOnDocumentClick();\n break;\n case 'enableDock':\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'zIndex':\n this.setZindex();\n break;\n case 'mediaQuery':\n this.setMediaQuery();\n break;\n case 'enableGestures':\n this.setEnableGestures();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n }\n }\n };\n Sidebar.prototype.setType = function (type) {\n var elementWidth = this.element.getBoundingClientRect().width;\n this.setZindex();\n var sibling = document.querySelector('.e-main-content') ||\n this.element.nextElementSibling;\n if (sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n if (!Browser.isDevice && this.type !== 'Auto') {\n this.position === 'Left' ? sibling.style.marginLeft = '0px' : sibling.style.marginRight = '0px';\n }\n }\n var margin = this.position === 'Left' ? elementWidth + 'px' : elementWidth + 'px';\n var eleWidth = this.position === 'Left' ? elementWidth : -(elementWidth);\n removeClass([this.element], [PUSH, OVER, SLIDE]);\n switch (type) {\n case 'Push':\n addClass([this.element], [PUSH]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n }\n break;\n case 'Slide':\n addClass([this.element], [SLIDE]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style.transform = 'translateX(' + eleWidth + 'px)';\n }\n break;\n case 'Over':\n addClass([this.element], [OVER]);\n if (this.enableDock && this.element.classList.contains(CLOSE)) {\n if (sibling) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n }\n }\n break;\n case 'Auto':\n addClass([this.element], [TRASITION]);\n if (Browser.isDevice) {\n if (sibling && (this.enableDock) && !this.getState()) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n addClass([this.element], PUSH);\n }\n else {\n addClass([this.element], OVER);\n }\n }\n else {\n addClass([this.element], PUSH);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n }\n }\n this.createBackDrop();\n }\n };\n /**\n * Removes the control from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n * @returns void\n */\n Sidebar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n removeClass([this.element], [OPEN, CLOSE, PUSH, SLIDE, OVER, LEFT, RIGHT, TRASITION]);\n if (this.target) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([this.target], CONTEXT);\n }\n this.destroyBackDrop();\n this.element.style.width = '';\n this.element.style.zIndex = '';\n this.element.style.transform = '';\n this.windowWidth = null;\n (!isNullOrUndefined(this.sidebarEleCopy.getAttribute('tabindex'))) ?\n this.element.setAttribute('tabindex', this.tabIndex) : this.element.removeAttribute('tabindex');\n var sibling = document.querySelector('.e-main-content')\n || this.element.nextElementSibling;\n if (!isNullOrUndefined(sibling)) {\n sibling.style.margin = '';\n sibling.style.transform = '';\n }\n this.unWireEvents();\n };\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"dockSize\", void 0);\n __decorate([\n Property(null)\n ], Sidebar.prototype, \"mediaQuery\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enableDock\", void 0);\n __decorate([\n Property('en-US')\n ], Sidebar.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], Sidebar.prototype, \"enableGestures\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"isOpen\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enableRtl\", void 0);\n __decorate([\n Property(true)\n ], Sidebar.prototype, \"animate\", void 0);\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"closeOnDocumentClick\", void 0);\n __decorate([\n Property('Left')\n ], Sidebar.prototype, \"position\", void 0);\n __decorate([\n Property(null)\n ], Sidebar.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"showBackdrop\", void 0);\n __decorate([\n Property('Auto')\n ], Sidebar.prototype, \"type\", void 0);\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], Sidebar.prototype, \"zIndex\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"destroyed\", void 0);\n Sidebar = __decorate([\n NotifyPropertyChanges\n ], Sidebar);\n return Sidebar;\n}(Component));\nexport { Sidebar };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","HScroll","_super","options","element","call","preRender","browser","Browser","info","name","browserCheck","isDevice","customStep","ieCheck","initialize","id","getUniqueID","uniqueId","style","display","enableRtl","classList","add","render","touchModule","Touch","scroll","touchHandler","bind","swipe","swipeHandler","EventHandler","scrollEle","scrollHandler","createOverlay","createNavIcon","setScrollState","isNullOrUndefined","scrollStep","offsetWidth","createElement","className","scrollDiv","setAttribute","ele","_i","innerEle_1","slice","children","ele_1","appendChild","overflowX","scrollItems","getPersistData","keyEntity","addOnPersist","getModuleName","destroy","remove","nav","selectAll","overlay","forEach","detach","_a","elem","removeAttribute","disable","value","navEles","el","concat","rightOverlayEle","CLS_OVERLAY","clsRight","rightEle","navItem","CLS_NAVRIGHTARROW","leftEle","insertBefore","firstChild","eventBinding","clsLeft","navEle","navLeftItem","CLS_NAVLEFTARROW","onKeyPress","e","_this","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","window","setTimeout","onKeyUp","click","clearTimeout","tapHold","tabHoldHandler","tapHoldThreshold","addEventListener","repeatScroll","preventDefault","clickEventHandler","clearInterval","timeout","trgt","originalEvent","contains","firstElementChild","timeoutFun","setInterval","scrollDis","isContinuous","rootEle","querySelector","scrollLeft","frameScrollRequest","distance","swipeEle","velocity","distanceX","start","animate","step","Math","sin","cancelAnimationFrame","swipeDirection","requestAnimationFrame","scrollUpdating","scrollVal","action","scrollValue","scrollDirection","arrowDisabling","addDisable","removeDisable","arrowIcon","width","navLeftEle","navRightEle","leftOverlay","rightOverlay","scrollWidth","ceil","disEle","onPropertyChanged","newProp","oldProp","keys","Property","NotifyPropertyChanges","Component","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","offsetHeight","scrollCnt","buildTag","scrollBar","overflowY","removeClass","navs","overlays","downOverlayEle","clsDown","downEle","CLS_NAVDOWNARROW","upEle","clsUp","navElement","navUpItem","CLS_NAVUPARROW","ev","event","deltaY","swipeElement","distanceY","scrollTop","addDisableCls","removeDisableCls","height","navUpEle","navDownEle","upOverlay","downOverlay","scrollHeight","FOCUSED","HEADER","SELECTED","ITEM","HIDE","POPUP","FieldSettings","apply","ChildProperty","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","MenuItem","Collection","MenuAnimationSettings","MenuBase","navIdx","animation","Animation","isTapHold","tempItem","isMenu","ul","tagName","ejInst","getValue","clonedElement","setValue","append","cloneNode","refEle","nextElementSibling","parentElement","ejInstance","wrapper","idx","len","attributes","nodeName","nodeValue","parentNode","renderItems","template","isBlazor","menuTemplateId","resetBlazorTemplate","blazorTemplates","extend","updateBlazorTemplate","wireEvents","renderComplete","getWrapper","document","body","cssClass","addClass","split","hamburgerMode","createHeaderContainer","items","ListBase","createJsonFromElement","fields","child","setProperties","removeChildElement","innerHTML","createItems","addScrolling","targetElems","menuHeaderClickHandler","menuIos","cmenuHandler","targetElement","getScrollableParent","parent_1","delegateMoverHandler","moverHandler","delegateMouseDownHandler","mouseDownHandler","delegateClickHandler","clickHandler","wireKeyboardEvent","rippleFn","rippleEffect","selector","regX","browserDetails","navigator","platform","maxTouchPoints","isTouch","test","userAgent","keyConfigs","downarrow","uparrow","enter","leftarrow","rightarrow","escape","home","end","KeyboardEvents","keyAction","keyBoardHandler","closest","closeMenu","actionName","actionNeeded","enableScrolling","keyCode","removeLIStateByClass","upDownKeyHandler","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","defaultIdx","childElementCount","fliIdx","fli","getLIByClass","getIdx","cli","isValidLI","focus","index","navIdxLen","popup","select","eventArgs","item","getItem","push","keyType","openMenu","trigger","isCMenu","pageX","changedTouches","pageY","canOpen","ulIndex","isMenuVisible","ul_1","item_1","items_1","sli","beforeCloseArgs","popups","getPopups","isClose","cnt","parentItem","cancel","observedCloseArgs","popupEle","closeArgs","popupObj","isOpen","minHeight","unWireKeyboardEvent","destroyScrollObj","getInstance","Popup","hide","toggleAnimation","pop","afterCloseMenu","isMenusClosed","sli_1","removeStateWrapper","scrollObj","querySelectorAll","getIndex","isVisible","valueOf","filter","li","top","left","lItem","elemId","uList","getField","lastChild","data","text","toString","iconCss","ICONS","hdata","hli","popupWrapper","isNestedOrVertical","generatePopup","calculateIndentSize","triggerBeforeOpen","zIndex","getZindexPartial","itemFromBlazorTemplate","liStyle","getComputedStyle","liIndent","parseInt","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent_1","marginRight","actionOnScroll","relateTo","collision","X","Y","position","targetType","content","open","maxHeight","triggerOpen","spanElem","spanTitle","title","spanIcon","attrs","tabindex","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","callFit","x","y","fit","type","menuType","observedOpenArgs","getBoundingClientRect","checkScrollOffset","collide","refreshPosition","isCollide","indexOf","offWidth","calculatePosition","animationOptions","animationSettings","effect","duration","timingFunction","easing","show","setPosition","eventArgs_1","offsetEle","offsetLeft","offsetRight","scrollType","wrapperOffset","contentOffset","overflow","toggleVisiblity","offset","Number","replace","xCollision","visibility","level","showIcon","hasField","listBaseOptions","moduleName","getFields","itemCreating","args","curData","htmlAttributes","role","itemCreated","span","templateID","createList","liTrgt","getLI","hdrWrapper","regex","RegExp","isDifferentElem","exec","showItemOnClick","isClosed","propName","fieldName","url","separator","field","cliWrapper","isInstLI","cliWrapperId","setLISelected","showSubMenu","cliIdx","culIdx","cIdx","classname","getItems","setItems","newItems","splice","skipHdr","removeChild","this_1","prop","toggle","unWireEvents","ul_2","ul_3","getChangedItemIndex","insertAfter","removeItem","ul_4","count","lastElementChild","uls","targetSelctor","isIos","parent_2","keyboardModule","isMenuOpen","pUlHeight","pElement","begin","progress","isUniqueId","nIndex","isCallBack","unshift","enableItems","enable","skipItem","disabled","i_1","showItems","showHideItems","hideItems","ishide","removeItems","iitems","insertItems","isAfter","menuitem","removeAttributes","removeProperty","getAttribute","refreshing","getElementById","Event","Complex","CLS_ITEMS","CLS_ITEM","CLS_POPUP","Item","Toolbar","resizeContext","resize","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","tab","unwireEvents","tempId","isNOU","trgtEle","ctrlTem","clearProperty","popObj","tbarAlign","attrb","enableCollision","scrollModule","tbarItemsCol","isVertical","isExtendedOpen","popupPriCount","keyModule","keyActionHandler","docKeyDown","popCheck","overflowMode","destroyScroll","removeEventListener","docEvent","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","destroyItems","tbarItems","destroyMode","tempEle","popupRefresh","val","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","popAnimate","eleFocus","nodes","popupCheck","popFrstEle","activeEle","activeEleRemove","tbarScrollChk","eleContains","pos","sib","clsList","isPopupElement","popupNav","popupClickHandler","itemObj","clickedArgs","CLS_RTL","offsetX","dataBind","getElementOffsetY","renderControl","refreshToolbarTemplate","formatUnit","setStyle","ariaAttr","aria-disabled","aria-haspopup","aria-orientation","renderOverflowMode","itemPositioning","checkPopupRefresh","changeOrientation","refreshOverflow","initScroll","innerItems","checkOverflow","itemWidthCal","parseFloat","marginTop","marginBottom","marginLeft","getScrollCntEle","innerItem","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","getElementsByClassName","removePositioning","setOverflowAttributes","createPopupEle","eleInlineItem","eleItem","multiVar","extendVar","innerEle","innerNav","vertical","createPopupIcon","innerNavDom","direction","checkPriority","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","nodeIndex","nodePri","tbResize","childNodes","tbarElement","sepItem","extendEle","CLS_POPUPCLASS","popupInit","getPropertyValue","clientHeight","eleStyles","offsetY","close","appendTo","borderRightWidth","tbarPopupHandler","toolEle","popupElePos","offsetTop","popIcon","scrollY","innerHeight","overflowHeight","tbEleData","bottom","inEle","pre","eleOffset","popPriority","eleWid","sepCheck","itemCount","itemPopCount","checkClass","rVal","cls","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","minWidth","sepEle","popedEle","CLS_POPUPDOWN","tbarPriRef","indx","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","root","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","align","toLowerCase","sepBeforePri_1","refreshPositioning","margin","tbarWid","popWid","right","tbarItemAlign","itemEle","showAlwaysInPopup","alignDiv","alignEle","leftAlign_1","ctrlTemplate","itemEleDom","innerPos","renderSubComponent","setAttr","attr","keyVal","isEnable","elements","a","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","templateRender","templateProp","isComponent","itemType","eleObj","templateFn","trim","tempStr","outerHTML","templateCompiler","tempArray","isStringTemplate","buttonRendering","dom","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","btnObj","Button","iconPosition","tooltipText","tempDom","textContent","itemClick","showTextOn","sTxt","blazorContain","length_1","currentTarget","curEle","multirowele","tEle","changedProb","property","newProperty","refresh","popupPriCheck","booleanCheck","itemCol","hideItem","initIndex","isElement","eleIndex","innerItems_2","nextEle","skipEle","setFlag","removeFlag","initELe","CLS_HEADER","CLS_CONTENT","AccordionActionSettings","AccordionAnimationSettings","AccordionItem","Accordion","space","isDestroy","restoreContent","nested","isNested","templateEle","enablePersistence","expandedItems","initializeheaderTemplate","initializeItemTemplate","aria-multiselectable","initExpand","expandMode","initItemExpand","eventName","templateParser","error","headerTemplate","headerTemplateFn","itemTemplate","itemTemplateFn","getheaderTemplate","getItemTemplate","updateContentBlazorTemplate","updateHeaderBlazorTemplate","header","focusIn","focusOut","innerEles","toggleIconGenerate","tglIcon","hdrColIcon","expandItem","innerDataSourceItem","dataSource","renderInnerItem","acrdnItem","acrdnHdr","acrdnCtn","acrdnCtnItem","acrdActive","getIndexByItem","contentRendering","ariaAttrUpdate","cntclkCheck","inlineEleAcrdn","nestContCheck","acrdcontainer","acrdnchild","acrdAniEle","acrdAniEle_1","sameContentCheck","sameHeader","acrdnCtn_1","expandState","collapse","expand","eleMoveFocus","clstItem","headerEleGenerate","aria-selected","aria-level","aria-expanded","ctnEle","hdrEle","angularnativeCondiCheck","fetchElement","hdr","expanded","hdrIcnEle","icon","hdrIcon","isAngular","elementRef","nativeElement","parseddata","JSON","parse","isHeader","temString","eleVal","templateProps","itemcnt","aria-hidden","ctn","trgtItemEle","isExpanded","eff","expandArgs","expandedItemsPush","expandProgress","expandAnimation","ef","icn","trgtHgt","lastActiveItemId","getItemElements","itemCollection","expandedItemsPop","collapseProgress","collapseAnimation","trgtItEl","trgtHeight","itemHeight","remain","itemAttribUpdate","itemLen","addItem","innerItemEle","expandedItemRefresh","isHidden","enableItem","eleHeader","isExpand","itemExpand","expandedItem","ctnElePos","eleStr","updateItem","acrdn","isRefresh","changedProp","j","oldVal","newVal","temp","ContextMenu","VMENU","Menu","tempItems","clearChanges","updateMenuItems","orientation","map","createMenuItems","pIdField","CLS_TB_ITEMS","CLS_TB_ITEM","TabActionSettings","TabAnimationSettings","Header","TabItem","Tab","animateOptions","animObj","lastIndex","isAdd","isIconAlone","refreshActElePosition","delete","tbObj","expTemplateContent","isTemplate","cntEle","prevIndex","isPopup","initRender","isSwipeed","itemIndexArray","css","setCssClass","aria-activedescendant","updatePopAnimationConfig","btnCls","CLS_ICONS","tabId","getRandomId","renderContainer","setOrientation","headerPlacement","renderHeader","tbItems","renderContent","scrCnt","bdrLine","CLS_INDICATOR","scrCntClass","setContentHeight","selectedItem","setRTL","hdrPlace","tabItems","getTabHeader","addVerticalClass","hdrItems","tabItems_1","aria-controls","txt","cont","wrap","tabIndex","parseObject","clicked","aria-label","updateOrientationAttribute","setCloseButton","showCloseButton","hdrItem","contents","aria-labelledby","reRenderItems","txtWrapEle","tbCount","tItems","spliceArray","tHtml","txtEmpty","headerTextCompile","tCont","undefined","wrapAttrs","tItem","spliceItemIndex","removeActiveClass","tabHeader","node","checkPopupOverflow","tbPop","tbrItems","isOverflow","popupHandler","ripEle","tbItem","actEleId","prevEle","trg","prevCtnAnimation","prev","current","previous","next","triggerPrevAnimation","oldCnt","animateObj","triggerAnimation","prevActiveEle","no","extIndex","newCnt","getTrgContent","idNo","openEff","clsEff","setActiveBorder","keyPressed","trgParent","trgIndex","getEleIndex","headers","templateCompile","compileElement","compile","templateFUN","getContent","callType","findEle","tbPos","place","headerPos","contentPos","list","heightAdjustMode","max","getHeight","clearTemplate","cs","bar","trgHdrEle","tbWidth","setActive","isNaN","trg_1","enableAnimation","eleTrg","itemIndex","curActItem","refreshItemVisibility","eventArg","previousItem","prevItem","previousIndex","selectedIndex","selectedContent","selectingID","isSwiped","isReplace","refreshActiveBorder","showPopup","config","tbPopObj","ej2_instances","hoverHandler","spaceKeyDown","keyHandler","tabKeyModule","openPopup","shiftTab","removeTab","k","which","clstHead","actEle","activeElement","nxtSib","nextSibling","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","L10n","closeButtonTitle","locale","getConstant","evalOnPropertyChangeItems","resetBlazorTemplates","selectElement","cntItem","arr","isHiddenEle","addTab","hideTab","enableTab","addArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","itemsCount","textValue_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","cntTrg","selectedID","selectingItem","selectingIndex","selectingContent","selectArgs","ROOT","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","HOVER","ACTIVE","LOAD","PROCESS","ICON","TEXTWRAP","SIBLING","DROPNEXT","CHECK","CHECKBOXWRAP","FOCUS","treeAriaAttr","treeRole","itemRole","listRole","itemText","wrapperRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","preventExpand","checkedElement","disableNode","parentNodeCheck","expandChildren","isFieldChange","mouseDownStatus","TreeView_1","checkActionNodes","dragStartAction","isAnimate","f2","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","ctrlA","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","listBaseOption","expandCollapse","expandIconClass","ariaAttributes","expandIconPosition","beforeNodeCreate","updateListProp","aniObj","treeList","isLoaded","isInitalExpand","setTouchClass","selectedNodes","checkedNodes","expandedNodes","initialRender","setDataBinding","setExpandOnType","setRipple","wireEditingEvents","allowEditing","setDragAndDrop","allowDragAndDrop","isBlazorPlatform","setEnableRtl","setFullRow","fullRowSelect","nodeTemplateFn","templateComplier","nodeTemplate","rippleModel","ignore","iconModel","isCenterRipple","rippleIconFn","isEnabled","setMultiSelect","firstUl","DataManager","ready","then","offline","treeData","result","isNumberTypeId","getType","setRootData","finalize","executeQuery","getQuery","rootData","stringify","mapper","query","columns","clone","Query","getActualProperties","col","from","tableName","addSorting","sortOrder","parentID","where","dataType","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","isSorted","ulElement","getSortedData","loadOnDemand","rootNodes","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","showCheckBox","updateParentCheckState","resultData","executeLocal","isChecked","resultId","hasChildren","id_1","childData","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedData","checkedId","fieldId","childItems","updateChildCheckState","checkNodes","parentEle","changeState","preElement","childCheckedElement","indeterminate","nodeId","nodeCheck","checkedParent","checkedChild","subChildItems","checkboxEle","createCheckBox","touchClass","checkValue","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","selected","textEle","tempArr","nodeData","rippleSpan","rippleMouseHandler","actionValue","ds","groupBy","cusQuery","group","getDataSource","grpItem","iNodes","sNodes","selectNode","cNodes","disableExpandAttr","eNodes","updateList","updateCheckedProp","ensureIndeterminate","liElement","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkBoxEle","parentUL","currentParent","childElement","checkBoxes","parentCheck","childCheck","checkedState","currentLoadData","isNodeChecked","isUndefined","doCheckBoxAction","doCheck","updateFieldChecked","liEle","getElement","setValidCheckedNode","dynamicCheckState","updateField","checkBox","validateCheckNode","checkbox","currLi","getNodeData","check","updateIndeterminate","subChild","updateChildIndeterminate","parent","indeterminateData","getTreeData","subId","childElementCheck","innerChild","state","isPrevent","nodeCheckAction","getCheckEvent","observedArgs","ariaState","frameSpan","removeCheck","ensureStateChange","checked","isInteracted","firstNode","updateIdAttr","hasPid","doExpandAction","eUids","adaptorName","expandGivenNodes","eNode","expandAction","afterFinalized","proxy","expandCallback","eUid","callback","doSelectionAction","sUids","sNode","selectGivenNodes","preventContextMenu","removeHover","setFocusElement","checkWrapper","checkElement","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","expandNode","loaded","hideSpinner","start_1","end_1","proxy_1","liEle_1","setHeight","activeElement_1","HTMLElement","animateHeight","expandedNode","addExpand","getExpandEvent","colArgs","nodeCollapseAction","collapsedNode","removeExpand","toRemove","removeVal","currentHeight","timeStamp","parentLi","expandChild","eicon","showSpinner","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","nodeLevel","dataLevel","getChildMapper","obj","parentId","isRoot","getChildGroup","objlen","dataId","cIcons","curLi","multiSelect","ctrlKey","isActive","unselectNode","getSelectEvent","nodeSelectAction","removeSelectAll","shiftKey","startNode","startIndex","liList","endIndex","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","getId","icon_1","inpEle","blur","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","isUp","focusNode","getScrollParent","parentPos","isVisibleInViewport","scrollIntoView","txtWrap","documentElement","innerWidth","clientWidth","isTowards","nextNode","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","parentIndex","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","childId_1","toBeOpened","focusNextNode","setFocus","isBackwards","rootNode","getRootNode","getEndNode","fNode","previousSibling","prevNode","endNode","preNode","onMouseOver","currentLi","setHover","onMouseLeave","hoveredNode","fromDS","getText","pNode","pid","nodeFields","destroyTemplate","reRenderNodes","oldClass","newClass","editingHandler","oldInpEle","updateOldText","getEditEvent","innerHtml","inputObj","Input","createInput","properties","container","inputEle","setSelectionRange","wireInputEvents","editData","editFields","inputFocusOut","newText","txtEle","appendNewText","isInput","newData","innerText","triggerEvent","getChildNodeObject","newList","toBind","initializeDrag","destroyDrag","virtualEle","dragObj","Draggable","enableTailMode","enableAutoScroll","dragTarget","helper","sender","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","DRAGITEM","nLen","cNode","cursor","dragData","dragStart","listItem","getDragEvent","draggedNode","intDestroy","dragCancelAction","bindEvents","dragElement","drag","cursorAt","targetTouches","dragAction","dragStop","removeVirtualEle","dropTarget","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","Droppable","out","over","drop","dropAction","dropWrap","dropLi","isDescendant","virEle","renderVirtualEle","dropIndicator","dragInstance","draggable","droppedElement","appendNode","draggedElement","dropAsChildNode","dropAsSiblingNode","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","generateIcon","generateUL","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","indexValue","iconClass","dropTar","parent_3","hasAttribute","clonedNode","droppedNode","droppedNodeData","dropIndex","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","dm","newId","currId","doGivenAction","toExpand","addGivenNodes","isRemote","dropEle","updateMapper","createListItemFromJson","refNode","navigateUrl","updated","childObj","doEnableAction","updatePersistProp","removeField","sleNodes","l","slelen","enodes","nodelen","cnodes","m","names","getMapperProp","proxy_2","touchEditObj","tap","tapCount","wireClickEvent","proxy_3","touchClickObj","wireExpandOnEvent","proxy_4","touchExpandObj","matched","matches","createSpinner","setCheckedNodes","uncheckAll","setIndeterminate","checkAll","setChildCheckState","parent_4","collapseAll","onLoaded","addNodes","dropUl_1","proxy_5","beginEdit","disableNodes","enableNodes","ensureVisible","expandAll","getAllCheckedNodes","getNode","moveNodes","sourceNodes","removeNodes","updateNode","CLOSE","OPEN","RIGHT","LEFT","OVER","PUSH","CONTEXT","Sidebar","setWidth","setTarget","setZindex","enableDock","setDock","setMediaQuery","checkType","setType","setCloseOnDocumentClick","setEnableRTL","windowWidth","sidebarEleCopy","closeOnDocumentClick","documentclickHandler","setDimension","dockSize","match","z-index","classELement","transitionEnd","triggerChange","destroyBackDrop","sibling","showBackdrop","modal","closeArguments","model","observedcloseArgs","transform","setAnimation","setTimeOut","openArguments","observedopenArgs","createBackDrop","changeArguments","getState","mediaQuery","matchMedia","enableGestureHandler","startX","setEnableGestures","enableGestures","mainContentEle","sidebarEle","margin-left","margin-right","insertAdjacentElement","elementWidth"],"mappings":"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"}
|