@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.
Files changed (316) hide show
  1. package/.eslintrc.json +244 -0
  2. package/CHANGELOG.md +898 -786
  3. package/README.md +163 -163
  4. package/dist/ej2-navigations.umd.min.js +1 -10
  5. package/dist/ej2-navigations.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-navigations.es2015.js +512 -255
  7. package/dist/es6/ej2-navigations.es2015.js.map +1 -1
  8. package/dist/es6/ej2-navigations.es5.js +642 -385
  9. package/dist/es6/ej2-navigations.es5.js.map +1 -1
  10. package/dist/global/ej2-navigations.min.js +1 -10
  11. package/dist/global/ej2-navigations.min.js.map +1 -1
  12. package/dist/global/index.d.ts +0 -9
  13. package/dist/ts/accordion/accordion.ts +1312 -0
  14. package/dist/ts/common/h-scroll.ts +459 -0
  15. package/dist/ts/common/menu-base.ts +2131 -0
  16. package/dist/ts/common/v-scroll.ts +430 -0
  17. package/dist/ts/context-menu/context-menu.ts +119 -0
  18. package/dist/ts/menu/menu.ts +270 -0
  19. package/dist/ts/sidebar/sidebar.ts +817 -0
  20. package/dist/ts/tab/tab.ts +1761 -0
  21. package/dist/ts/toolbar/toolbar.ts +2076 -0
  22. package/dist/ts/treeview/treeview.ts +5050 -0
  23. package/helpers/e2e/index.js +3 -3
  24. package/license +10 -10
  25. package/package.json +135 -145
  26. package/src/accordion/accordion-model.d.ts +162 -143
  27. package/src/accordion/accordion.d.ts +35 -6
  28. package/src/accordion/accordion.js +193 -71
  29. package/src/common/h-scroll-model.d.ts +5 -5
  30. package/src/common/h-scroll.js +19 -20
  31. package/src/common/index.d.ts +1 -0
  32. package/src/common/index.js +1 -0
  33. package/src/common/menu-base-model.d.ts +157 -157
  34. package/src/common/menu-base.d.ts +19 -0
  35. package/src/common/menu-base.js +97 -24
  36. package/src/common/v-scroll-model.d.ts +5 -5
  37. package/src/common/v-scroll.js +19 -19
  38. package/src/context-menu/context-menu-model.d.ts +15 -15
  39. package/src/context-menu/context-menu.js +19 -19
  40. package/src/menu/menu-model.d.ts +30 -30
  41. package/src/menu/menu.js +19 -19
  42. package/src/sidebar/sidebar-model.d.ts +136 -136
  43. package/src/sidebar/sidebar.js +19 -19
  44. package/src/tab/tab-model.d.ts +215 -215
  45. package/src/tab/tab.d.ts +3 -0
  46. package/src/tab/tab.js +120 -83
  47. package/src/toolbar/toolbar-model.d.ts +175 -175
  48. package/src/toolbar/toolbar.d.ts +2 -1
  49. package/src/toolbar/toolbar.js +30 -24
  50. package/src/treeview/treeview-model.d.ts +323 -323
  51. package/src/treeview/treeview.d.ts +3 -1
  52. package/src/treeview/treeview.js +107 -87
  53. package/styles/accordion/_all.scss +2 -2
  54. package/styles/accordion/_bootstrap-dark-definition.scss +69 -69
  55. package/styles/accordion/_bootstrap-definition.scss +76 -76
  56. package/styles/accordion/_bootstrap4-definition.scss +82 -82
  57. package/styles/accordion/_fabric-dark-definition.scss +74 -74
  58. package/styles/accordion/_fabric-definition.scss +78 -78
  59. package/styles/accordion/_highcontrast-definition.scss +106 -106
  60. package/styles/accordion/_highcontrast-light-definition.scss +104 -104
  61. package/styles/accordion/_layout.scss +447 -447
  62. package/styles/accordion/_material-dark-definition.scss +75 -75
  63. package/styles/accordion/_material-definition.scss +72 -72
  64. package/styles/accordion/_theme.scss +479 -479
  65. package/styles/accordion/icons/_bootstrap-dark.scss +17 -17
  66. package/styles/accordion/icons/_bootstrap.scss +17 -17
  67. package/styles/accordion/icons/_bootstrap4.scss +17 -17
  68. package/styles/accordion/icons/_fabric-dark.scss +17 -17
  69. package/styles/accordion/icons/_fabric.scss +17 -17
  70. package/styles/accordion/icons/_highcontrast-light.scss +17 -17
  71. package/styles/accordion/icons/_highcontrast.scss +17 -17
  72. package/styles/accordion/icons/_material-dark.scss +17 -17
  73. package/styles/accordion/icons/_material.scss +17 -17
  74. package/styles/accordion/material-dark.css +2 -2
  75. package/styles/bootstrap-dark.css +10 -9
  76. package/styles/bootstrap.css +10 -9
  77. package/styles/bootstrap4.css +10 -9
  78. package/styles/bootstrap5-dark.css +0 -0
  79. package/styles/bootstrap5-dark.scss +0 -0
  80. package/styles/bootstrap5.css +0 -0
  81. package/styles/bootstrap5.scss +0 -0
  82. package/styles/context-menu/_all.scss +2 -2
  83. package/styles/context-menu/_bootstrap-dark-definition.scss +54 -54
  84. package/styles/context-menu/_bootstrap-definition.scss +52 -52
  85. package/styles/context-menu/_bootstrap4-definition.scss +52 -52
  86. package/styles/context-menu/_fabric-dark-definition.scss +54 -54
  87. package/styles/context-menu/_fabric-definition.scss +52 -52
  88. package/styles/context-menu/_highcontrast-definition.scss +52 -52
  89. package/styles/context-menu/_highcontrast-light-definition.scss +54 -54
  90. package/styles/context-menu/_layout-mixin.scss +175 -174
  91. package/styles/context-menu/_layout.scss +70 -70
  92. package/styles/context-menu/_material-dark-definition.scss +54 -54
  93. package/styles/context-menu/_material-definition.scss +52 -52
  94. package/styles/context-menu/_theme-mixin.scss +59 -59
  95. package/styles/context-menu/_theme.scss +36 -36
  96. package/styles/context-menu/bootstrap-dark.css +1 -1
  97. package/styles/context-menu/bootstrap.css +1 -1
  98. package/styles/context-menu/bootstrap4.css +1 -1
  99. package/styles/context-menu/fabric-dark.css +1 -1
  100. package/styles/context-menu/fabric.css +1 -1
  101. package/styles/context-menu/highcontrast-light.css +1 -1
  102. package/styles/context-menu/highcontrast.css +1 -1
  103. package/styles/context-menu/icons/_bootstrap-dark.scss +30 -30
  104. package/styles/context-menu/icons/_bootstrap.scss +30 -30
  105. package/styles/context-menu/icons/_bootstrap4.scss +30 -30
  106. package/styles/context-menu/icons/_fabric-dark.scss +30 -30
  107. package/styles/context-menu/icons/_fabric.scss +30 -30
  108. package/styles/context-menu/icons/_highcontrast-light.scss +30 -30
  109. package/styles/context-menu/icons/_highcontrast.scss +30 -30
  110. package/styles/context-menu/icons/_material-dark.scss +30 -30
  111. package/styles/context-menu/icons/_material.scss +30 -30
  112. package/styles/context-menu/material-dark.css +1 -1
  113. package/styles/context-menu/material.css +4 -4
  114. package/styles/fabric-dark.css +10 -9
  115. package/styles/fabric.css +10 -9
  116. package/styles/h-scroll/_all.scss +2 -2
  117. package/styles/h-scroll/_bootstrap-dark-definition.scss +49 -49
  118. package/styles/h-scroll/_bootstrap-definition.scss +50 -50
  119. package/styles/h-scroll/_bootstrap4-definition.scss +49 -49
  120. package/styles/h-scroll/_fabric-dark-definition.scss +50 -50
  121. package/styles/h-scroll/_fabric-definition.scss +48 -48
  122. package/styles/h-scroll/_highcontrast-definition.scss +52 -52
  123. package/styles/h-scroll/_highcontrast-light-definition.scss +54 -54
  124. package/styles/h-scroll/_layout.scss +198 -198
  125. package/styles/h-scroll/_material-dark-definition.scss +77 -77
  126. package/styles/h-scroll/_material-definition.scss +77 -77
  127. package/styles/h-scroll/_theme.scss +157 -157
  128. package/styles/h-scroll/icons/_bootstrap-dark.scss +49 -49
  129. package/styles/h-scroll/icons/_bootstrap.scss +49 -49
  130. package/styles/h-scroll/icons/_bootstrap4.scss +49 -49
  131. package/styles/h-scroll/icons/_fabric-dark.scss +49 -49
  132. package/styles/h-scroll/icons/_fabric.scss +49 -49
  133. package/styles/h-scroll/icons/_highcontrast-light.scss +49 -49
  134. package/styles/h-scroll/icons/_highcontrast.scss +49 -49
  135. package/styles/h-scroll/icons/_material-dark.scss +49 -49
  136. package/styles/h-scroll/icons/_material.scss +49 -49
  137. package/styles/highcontrast-light.css +10 -9
  138. package/styles/highcontrast.css +10 -9
  139. package/styles/material-dark.css +12 -11
  140. package/styles/material.css +24 -14
  141. package/styles/menu/_all.scss +2 -2
  142. package/styles/menu/_bootstrap-dark-definition.scss +63 -63
  143. package/styles/menu/_bootstrap-definition.scss +65 -65
  144. package/styles/menu/_bootstrap4-definition.scss +64 -64
  145. package/styles/menu/_fabric-dark-definition.scss +63 -63
  146. package/styles/menu/_fabric-definition.scss +64 -64
  147. package/styles/menu/_highcontrast-definition.scss +65 -65
  148. package/styles/menu/_highcontrast-light-definition.scss +61 -61
  149. package/styles/menu/_layout.scss +638 -637
  150. package/styles/menu/_material-dark-definition.scss +63 -63
  151. package/styles/menu/_material-definition.scss +64 -64
  152. package/styles/menu/_theme.scss +243 -243
  153. package/styles/menu/bootstrap-dark.css +2 -1
  154. package/styles/menu/bootstrap.css +2 -1
  155. package/styles/menu/bootstrap.scss +1 -0
  156. package/styles/menu/bootstrap4.css +2 -1
  157. package/styles/menu/fabric-dark.css +2 -1
  158. package/styles/menu/fabric.css +2 -1
  159. package/styles/menu/fabric.scss +1 -0
  160. package/styles/menu/highcontrast-light.css +2 -1
  161. package/styles/menu/highcontrast.css +2 -1
  162. package/styles/menu/highcontrast.scss +1 -0
  163. package/styles/menu/icons/_bootstrap-dark.scss +127 -127
  164. package/styles/menu/icons/_bootstrap.scss +127 -127
  165. package/styles/menu/icons/_bootstrap4.scss +127 -127
  166. package/styles/menu/icons/_fabric-dark.scss +127 -127
  167. package/styles/menu/icons/_fabric.scss +127 -127
  168. package/styles/menu/icons/_highcontrast-light.scss +127 -127
  169. package/styles/menu/icons/_highcontrast.scss +127 -127
  170. package/styles/menu/icons/_material-dark.scss +127 -127
  171. package/styles/menu/icons/_material.scss +127 -127
  172. package/styles/menu/material-dark.css +2 -1
  173. package/styles/menu/material.css +4 -3
  174. package/styles/menu/material.scss +1 -0
  175. package/styles/sidebar/_all.scss +3 -3
  176. package/styles/sidebar/_bootstrap-dark-definition.scss +4 -4
  177. package/styles/sidebar/_bootstrap-definition.scss +4 -4
  178. package/styles/sidebar/_bootstrap4-definition.scss +4 -4
  179. package/styles/sidebar/_fabric-dark-definition.scss +4 -4
  180. package/styles/sidebar/_fabric-definition.scss +6 -6
  181. package/styles/sidebar/_highcontrast-definition.scss +4 -4
  182. package/styles/sidebar/_highcontrast-light-definition.scss +4 -4
  183. package/styles/sidebar/_icons.scss +1 -1
  184. package/styles/sidebar/_material-dark-definition.scss +4 -4
  185. package/styles/sidebar/_material-definition.scss +6 -6
  186. package/styles/sidebar/_theme.scss +168 -168
  187. package/styles/sidebar/bootstrap-dark.css +0 -1
  188. package/styles/sidebar/bootstrap.css +0 -1
  189. package/styles/sidebar/bootstrap4.css +0 -1
  190. package/styles/sidebar/fabric-dark.css +0 -1
  191. package/styles/sidebar/fabric.css +0 -1
  192. package/styles/sidebar/highcontrast-light.css +0 -1
  193. package/styles/sidebar/highcontrast.css +0 -1
  194. package/styles/sidebar/material-dark.css +0 -1
  195. package/styles/sidebar/material.css +0 -1
  196. package/styles/tab/_all.scss +2 -2
  197. package/styles/tab/_bootstrap-dark-definition.scss +386 -386
  198. package/styles/tab/_bootstrap-definition.scss +396 -396
  199. package/styles/tab/_bootstrap4-definition.scss +401 -401
  200. package/styles/tab/_fabric-dark-definition.scss +394 -394
  201. package/styles/tab/_fabric-definition.scss +410 -410
  202. package/styles/tab/_highcontrast-definition.scss +434 -434
  203. package/styles/tab/_highcontrast-light-definition.scss +423 -423
  204. package/styles/tab/_icons.scss +43 -43
  205. package/styles/tab/_layout.scss +3528 -3521
  206. package/styles/tab/_material-dark-definition.scss +407 -407
  207. package/styles/tab/_material-definition.scss +416 -416
  208. package/styles/tab/_theme.scss +1751 -1751
  209. package/styles/tab/bootstrap-dark.css +7 -2
  210. package/styles/tab/bootstrap.css +7 -2
  211. package/styles/tab/bootstrap4.css +7 -2
  212. package/styles/tab/fabric-dark.css +7 -2
  213. package/styles/tab/fabric.css +7 -2
  214. package/styles/tab/highcontrast-light.css +7 -2
  215. package/styles/tab/highcontrast.css +7 -2
  216. package/styles/tab/icons/_bootstrap-dark.scss +132 -132
  217. package/styles/tab/icons/_bootstrap.scss +132 -132
  218. package/styles/tab/icons/_bootstrap4.scss +132 -132
  219. package/styles/tab/icons/_fabric-dark.scss +132 -132
  220. package/styles/tab/icons/_fabric.scss +132 -132
  221. package/styles/tab/icons/_highcontrast-light.scss +132 -132
  222. package/styles/tab/icons/_highcontrast.scss +132 -132
  223. package/styles/tab/icons/_material-dark.scss +132 -132
  224. package/styles/tab/icons/_material.scss +132 -132
  225. package/styles/tab/material-dark.css +7 -2
  226. package/styles/tab/material.css +7 -2
  227. package/styles/tailwind-dark.css +0 -0
  228. package/styles/tailwind-dark.scss +0 -0
  229. package/styles/tailwind.css +0 -0
  230. package/styles/tailwind.scss +0 -0
  231. package/styles/toolbar/_all.scss +2 -2
  232. package/styles/toolbar/_bootstrap-dark-definition.scss +135 -135
  233. package/styles/toolbar/_bootstrap-definition.scss +134 -134
  234. package/styles/toolbar/_bootstrap4-definition.scss +139 -139
  235. package/styles/toolbar/_fabric-dark-definition.scss +155 -155
  236. package/styles/toolbar/_fabric-definition.scss +139 -139
  237. package/styles/toolbar/_highcontrast-definition.scss +149 -149
  238. package/styles/toolbar/_highcontrast-light-definition.scss +164 -164
  239. package/styles/toolbar/_layout.scss +1460 -1460
  240. package/styles/toolbar/_material-dark-definition.scss +180 -180
  241. package/styles/toolbar/_material-definition.scss +164 -164
  242. package/styles/toolbar/_theme.scss +451 -451
  243. package/styles/toolbar/bootstrap-dark.css +0 -1
  244. package/styles/toolbar/bootstrap.css +0 -1
  245. package/styles/toolbar/bootstrap.scss +1 -0
  246. package/styles/toolbar/bootstrap4.css +0 -1
  247. package/styles/toolbar/fabric-dark.css +0 -1
  248. package/styles/toolbar/fabric.css +0 -1
  249. package/styles/toolbar/fabric.scss +1 -0
  250. package/styles/toolbar/highcontrast-light.css +0 -1
  251. package/styles/toolbar/highcontrast.css +0 -1
  252. package/styles/toolbar/highcontrast.scss +1 -0
  253. package/styles/toolbar/icons/_bootstrap-dark.scss +16 -16
  254. package/styles/toolbar/icons/_bootstrap.scss +16 -16
  255. package/styles/toolbar/icons/_bootstrap4.scss +16 -16
  256. package/styles/toolbar/icons/_fabric-dark.scss +16 -16
  257. package/styles/toolbar/icons/_fabric.scss +16 -16
  258. package/styles/toolbar/icons/_highcontrast-light.scss +16 -16
  259. package/styles/toolbar/icons/_highcontrast.scss +16 -16
  260. package/styles/toolbar/icons/_material-dark.scss +16 -16
  261. package/styles/toolbar/icons/_material.scss +16 -16
  262. package/styles/toolbar/material-dark.css +0 -1
  263. package/styles/toolbar/material.css +0 -1
  264. package/styles/toolbar/material.scss +1 -0
  265. package/styles/treeview/_all.scss +2 -2
  266. package/styles/treeview/_bootstrap-dark-definition.scss +131 -131
  267. package/styles/treeview/_bootstrap-definition.scss +127 -127
  268. package/styles/treeview/_bootstrap4-definition.scss +153 -153
  269. package/styles/treeview/_fabric-dark-definition.scss +130 -130
  270. package/styles/treeview/_fabric-definition.scss +126 -126
  271. package/styles/treeview/_highcontrast-definition.scss +132 -132
  272. package/styles/treeview/_highcontrast-light-definition.scss +137 -137
  273. package/styles/treeview/_layout.scss +551 -551
  274. package/styles/treeview/_material-dark-definition.scss +126 -126
  275. package/styles/treeview/_material-definition.scss +126 -126
  276. package/styles/treeview/_theme.scss +331 -331
  277. package/styles/treeview/bootstrap-dark.css +0 -3
  278. package/styles/treeview/bootstrap.css +0 -3
  279. package/styles/treeview/bootstrap4.css +0 -3
  280. package/styles/treeview/fabric-dark.css +0 -3
  281. package/styles/treeview/fabric.css +0 -3
  282. package/styles/treeview/highcontrast-light.css +0 -3
  283. package/styles/treeview/highcontrast.css +0 -3
  284. package/styles/treeview/icons/_bootstrap-dark.scss +39 -39
  285. package/styles/treeview/icons/_bootstrap.scss +39 -39
  286. package/styles/treeview/icons/_bootstrap4.scss +39 -39
  287. package/styles/treeview/icons/_fabric-dark.scss +43 -43
  288. package/styles/treeview/icons/_fabric.scss +43 -43
  289. package/styles/treeview/icons/_highcontrast-light.scss +43 -43
  290. package/styles/treeview/icons/_highcontrast.scss +43 -43
  291. package/styles/treeview/icons/_material-dark.scss +43 -43
  292. package/styles/treeview/icons/_material.scss +43 -43
  293. package/styles/treeview/material-dark.css +0 -3
  294. package/styles/treeview/material.css +9 -3
  295. package/styles/v-scroll/_all.scss +2 -2
  296. package/styles/v-scroll/_bootstrap-dark-definition.scss +50 -50
  297. package/styles/v-scroll/_bootstrap-definition.scss +49 -49
  298. package/styles/v-scroll/_bootstrap4-definition.scss +49 -49
  299. package/styles/v-scroll/_fabric-dark-definition.scss +51 -51
  300. package/styles/v-scroll/_fabric-definition.scss +50 -50
  301. package/styles/v-scroll/_highcontrast-definition.scss +51 -51
  302. package/styles/v-scroll/_highcontrast-light-definition.scss +52 -52
  303. package/styles/v-scroll/_layout.scss +162 -162
  304. package/styles/v-scroll/_material-dark-definition.scss +78 -78
  305. package/styles/v-scroll/_material-definition.scss +77 -77
  306. package/styles/v-scroll/_theme.scss +133 -133
  307. package/styles/v-scroll/icons/_bootstrap-dark.scss +26 -26
  308. package/styles/v-scroll/icons/_bootstrap.scss +26 -26
  309. package/styles/v-scroll/icons/_bootstrap4.scss +26 -26
  310. package/styles/v-scroll/icons/_fabric-dark.scss +26 -26
  311. package/styles/v-scroll/icons/_fabric.scss +26 -26
  312. package/styles/v-scroll/icons/_highcontrast-light.scss +26 -26
  313. package/styles/v-scroll/icons/_highcontrast.scss +26 -26
  314. package/styles/v-scroll/icons/_material-dark.scss +26 -26
  315. package/styles/v-scroll/icons/_material.scss +26 -26
  316. package/tslint.json +111 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-navigations.umd.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","CLS_RTL","CLS_DISABLE","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","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","addOnPersist","getModuleName","destroy","remove","nav","selectAll","overlay","forEach","detach","_a","elem","removeAttribute","disable","value","navEles","el","concat","rightOverlayEle","clsRight","rightEle","navItem","leftEle","insertBefore","firstChild","eventBinding","clsLeft","navEle","navLeftItem","onKeyPress","e","_this","keyTimer","window","setTimeout","keyTimeout","eleScrolling","onKeyUp","click","clearTimeout","tapHold","tabHoldHandler","tapHoldThreshold","addEventListener","repeatScroll","preventDefault","clickEventHandler","clearInterval","timeout","trgt","originalEvent","contains","firstElementChild","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","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","offsetHeight","scrollCnt","buildTag","scrollBar","overflowY","removeClass","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","event","deltaY","swipeElement","distanceY","scrollTop","addDisableCls","removeDisableCls","height","navUpEle","navDownEle","upOverlay","downOverlay","scrollHeight","FOCUSED","HEADER","SELECTED","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","ITEM","DISABLED","HIDE","POPUP","TEMPLATE_PROPERTY","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","_loop_1","propName","fieldName","url","separator","field","cliWrapper","isInstLI","setLISelected","showSubMenu","cliIdx","culIdx","cIdx","classname","getItems","skipHdr","removeChild","_loop_2","prop","toggle","this_1","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_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARNAV","CLS_TBARCENTER","CLS_TBARPOS","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDEDPOPOPEN","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","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","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","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","toolbarTemplateID","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","setFlag","removeFlag","initELe","CLS_ACRDN_ROOT","CLS_ROOT","CLS_HEADER","CLS_HEADERCTN","CLS_CONTENT","CLS_CTENT","CLS_TOOGLEICN","CLS_CTNHIDE","CLS_SLCTED","CLS_ACTIVE","CLS_TOGANIMATE","CLS_EXPANDSTATE","CLS_CONTAINER","AccordionActionSettings","AccordionAnimationSettings","AccordionItem","Accordion","space","isDestroy","restoreContent","nested","isNested","templateEle","enablePersistence","expandedItems","initExpand","aria-multiselectable","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","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","ContextMenu","VMENU","HAMBURGER","Menu","tempItems","clearChanges","updateMenuItems","orientation","map","createMenuItems","pIdField","CLS_ICON_CLOSE","CLS_WRAP","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POPUP","CLS_PROGRESS","CLS_VRIGHT","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","TREEINPUT","DRAGGING","SIBLING","DROPNEXT","DROPOUT","FULLROW","EXPANDED","NODECOLLAPSED","CHECK","INDETERMINATE","CHECKBOXWRAP","CHECKBOXFRAME","FOCUS","ITEM_ANIMATION_ACTIVE","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","temp","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","TRASITION","RIGHT","OVER","PUSH","VISIBILITY","DISABLEANIMATION","CONTEXT","SIDEBARABSOLUTE","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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AAa,GACpCE,IACIqjB,WACDirB,EAASxuC,UAAW,eAAW,GAClCE,IACIqjB,WACDirB,EAASxuC,UAAW,iBAAa,GACpCE,IACIqjB,WACDirB,EAASxuC,UAAW,yBAAqB,GAC5CE,IACIqjB,WACDirB,EAASxuC,UAAW,gBAAY,GACnCE,IACIqjB,WACDirB,EAASxuC,UAAW,iBAAa,GACpCE,IACIqjB,WACDirB,EAASxuC,UAAW,gBAAY,GACnCE,IACIqjB,WACDirB,EAASxuC,UAAW,mBAAe,GACtCE,IACIqjB,WACDirB,EAASxuC,UAAW,oBAAgB,GACvCE,IACIqjB,WACDirB,EAASxuC,UAAW,mBAAe,GACtCE,IACIqjB,WACDirB,EAASxuC,UAAW,qBAAiB,GACxCE,IACIqjB,WACDirB,EAASxuC,UAAW,sBAAkB,GACzCE,IACIqjB,WACDirB,EAASxuC,UAAW,oBAAgB,GACvCE,IACIqjB,WACDirB,EAASxuC,UAAW,qBAAiB,GACxCE,IACIqjB,WACDirB,EAASxuC,UAAW,oBAAgB,GACvCE,IACIqjB,WACDirB,EAASxuC,UAAW,mBAAe,GACtCE,IACIqjB,WACDirB,EAASxuC,UAAW,kBAAc,GACrCE,IACIqjB,WACDirB,EAASxuC,UAAW,mBAAe,GACtCE,IACIqjB,WACDirB,EAASxuC,UAAW,oBAAgB,GACvCE,IACIqjB,WACDirB,EAASxuC,UAAW,qBAAiB,GACxCE,IACIqjB,WACDirB,EAASxuC,UAAW,oBAAgB,GACvCE,IACIqjB,WACDirB,EAASxuC,UAAW,qBAAiB,GACxCwuC,EAAWO,EAAa7uC,IACpB6K,yBACDyjC,IAELxjC,aCz2IE7L,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC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"}
1
+ {"version":3,"file":"ej2-navigations.umd.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","CLS_RTL","CLS_DISABLE","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","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","addOnPersist","getModuleName","destroy","remove","nav","selectAll","overlay","forEach","detach","_a","elem","removeAttribute","disable","value","navEles","el","concat","rightOverlayEle","clsRight","rightEle","navItem","leftEle","insertBefore","firstChild","eventBinding","clsLeft","navEle","navLeftItem","onKeyPress","e","_this","keyTimer","window","setTimeout","keyTimeout","eleScrolling","onKeyUp","click","clearTimeout","tapHold","tabHoldHandler","tapHoldThreshold","addEventListener","repeatScroll","preventDefault","clickEventHandler","clearInterval","timeout","trgt","originalEvent","contains","firstElementChild","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","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","offsetHeight","scrollCnt","buildTag","scrollBar","overflowY","removeClass","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","event","deltaY","swipeElement","distanceY","scrollTop","addDisableCls","removeDisableCls","height","navUpEle","navDownEle","upOverlay","downOverlay","scrollHeight","FOCUSED","HEADER","SELECTED","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","ITEM","DISABLED","HIDE","POPUP","TEMPLATE_PROPERTY","FieldSettings","apply","ChildProperty","REGX_IOS","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","_loop_1","propName","fieldName","url","separator","field","cliWrapper","isInstLI","cliWrapperId","setLISelected","showSubMenu","cliIdx","culIdx","cIdx","classname","getItems","setItems","newItems","splice","skipHdr","removeChild","_loop_2","prop","toggle","this_1","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_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARNAV","CLS_TBARCENTER","CLS_TBARPOS","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDEDPOPOPEN","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","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","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","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","toolbarTemplateID","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","setFlag","removeFlag","initELe","CLS_ACRDN_ROOT","CLS_ROOT","CLS_HEADER","CLS_HEADERCTN","CLS_CONTENT","CLS_CTENT","CLS_TOOGLEICN","CLS_CTNHIDE","CLS_SLCTED","CLS_ACTIVE","CLS_TOGANIMATE","CLS_EXPANDSTATE","CLS_CONTAINER","AccordionActionSettings","AccordionAnimationSettings","AccordionItem","Accordion","space","isDestroy","restoreContent","nested","isNested","templateEle","enablePersistence","expandedItems","initializeheaderTemplate","initializeItemTemplate","initExpand","aria-multiselectable","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","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","ContextMenu","VMENU","HAMBURGER","Menu","tempItems","clearChanges","updateMenuItems","orientation","map","createMenuItems","pIdField","CLS_ICON_CLOSE","CLS_WRAP","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POPUP","CLS_PROGRESS","CLS_VRIGHT","CLS_FILL","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","TREEINPUT","DRAGGING","SIBLING","DROPNEXT","DROPOUT","FULLROW","EXPANDED","NODECOLLAPSED","CHECK","INDETERMINATE","CHECKBOXWRAP","CHECKBOXFRAME","FOCUS","ITEM_ANIMATION_ACTIVE","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","temp","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","TRASITION","RIGHT","OVER","PUSH","VISIBILITY","DISABLEANIMATION","CONTEXT","SIDEBARABSOLUTE","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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,cACDymC,EAASvxC,UAAW,oBAAgB,GACvCE,IACI4K,cACDymC,EAASvxC,UAAW,qBAAiB,GACxCE,IACI4K,WAAS,SACVymC,EAASvxC,UAAW,iBAAa,GACpCE,IACI4K,YAAS,IACVymC,EAASvxC,UAAW,oBAAgB,GACvCE,IACI4K,YAAS,IACVymC,EAASvxC,UAAW,iBAAa,GACpCE,IACI6kB,WACDwsB,EAASvxC,UAAW,eAAW,GAClCE,IACI6kB,WACDwsB,EAASvxC,UAAW,iBAAa,GACpCE,IACI6kB,WACDwsB,EAASvxC,UAAW,yBAAqB,GAC5CE,IACI6kB,WACDwsB,EAASvxC,UAAW,gBAAY,GACnCE,IACI6kB,WACDwsB,EAASvxC,UAAW,iBAAa,GACpCE,IACI6kB,WACDwsB,EAASvxC,UAAW,gBAAY,GACnCE,IACI6kB,WACDwsB,EAASvxC,UAAW,mBAAe,GACtCE,IACI6kB,WACDwsB,EAASvxC,UAAW,oBAAgB,GACvCE,IACI6kB,WACDwsB,EAASvxC,UAAW,mBAAe,GACtCE,IACI6kB,WACDwsB,EAASvxC,UAAW,qBAAiB,GACxCE,IACI6kB,WACDwsB,EAASvxC,UAAW,sBAAkB,GACzCE,IACI6kB,WACDwsB,EAASvxC,UAAW,oBAAgB,GACvCE,IACI6kB,WACDwsB,EAASvxC,UAAW,qBAAiB,GACxCE,IACI6kB,WACDwsB,EAASvxC,UAAW,oBAAgB,GACvCE,IACI6kB,WACDwsB,EAASvxC,UAAW,mBAAe,GACtCE,IACI6kB,WACDwsB,EAASvxC,UAAW,kBAAc,GACrCE,IACI6kB,WACDwsB,EAASvxC,UAAW,mBAAe,GACtCE,IACI6kB,WACDwsB,EAASvxC,UAAW,oBAAgB,GACvCE,IACI6kB,WACDwsB,EAASvxC,UAAW,qBAAiB,GACxCE,IACI6kB,WACDwsB,EAASvxC,UAAW,oBAAgB,GACvCE,IACI6kB,WACDwsB,EAASvxC,UAAW,qBAAiB,GACxCuxC,EAAWQ,EAAa7xC,IACpB6K,yBACDwmC,IAELvmC,aC73IE7L,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B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"}