@syncfusion/ej2-navigations 16.4.47 → 16.4.52-46585

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 (910) hide show
  1. package/.eslintrc.json +259 -0
  2. package/.github/PULL_REQUEST_TEMPLATE/Bug.md +63 -0
  3. package/.github/PULL_REQUEST_TEMPLATE/feature.md +39 -0
  4. package/CHANGELOG.md +1419 -0
  5. package/README.md +226 -112
  6. package/appbar.d.ts +4 -0
  7. package/appbar.js +4 -0
  8. package/breadcrumb.d.ts +4 -0
  9. package/breadcrumb.js +4 -0
  10. package/carousel.d.ts +4 -0
  11. package/carousel.js +4 -0
  12. package/dist/ej2-navigations.min.js +1 -0
  13. package/dist/ej2-navigations.umd.min.js +1 -10
  14. package/dist/ej2-navigations.umd.min.js.map +1 -1
  15. package/dist/es6/ej2-navigations.es2015.js +8469 -2261
  16. package/dist/es6/ej2-navigations.es2015.js.map +1 -1
  17. package/dist/es6/ej2-navigations.es5.js +8157 -1833
  18. package/dist/es6/ej2-navigations.es5.js.map +1 -1
  19. package/dist/global/ej2-navigations.min.js +1 -10
  20. package/dist/global/ej2-navigations.min.js.map +1 -1
  21. package/dist/global/index.d.ts +0 -9
  22. package/helpers/e2e/accordionHelper.d.ts +56 -0
  23. package/helpers/e2e/accordionHelper.js +71 -0
  24. package/helpers/e2e/contextmenuHelper.d.ts +37 -0
  25. package/helpers/e2e/contextmenuHelper.js +53 -0
  26. package/helpers/e2e/index.d.ts +7 -0
  27. package/helpers/e2e/index.js +14 -0
  28. package/helpers/e2e/menuHelper.d.ts +37 -0
  29. package/helpers/e2e/menuHelper.js +53 -0
  30. package/helpers/e2e/sidebarHelper.d.ts +94 -0
  31. package/helpers/e2e/sidebarHelper.js +110 -0
  32. package/helpers/e2e/tabHelper.d.ts +60 -0
  33. package/helpers/e2e/tabHelper.js +74 -0
  34. package/helpers/e2e/toolbarHelper.d.ts +60 -0
  35. package/helpers/e2e/toolbarHelper.js +74 -0
  36. package/helpers/e2e/treeview.d.ts +50 -0
  37. package/helpers/e2e/treeview.js +80 -0
  38. package/package.json +105 -105
  39. package/src/accordion/accordion-model.d.ts +122 -45
  40. package/src/accordion/accordion.d.ts +169 -48
  41. package/src/accordion/accordion.js +530 -230
  42. package/src/appbar/appbar-model.d.ts +76 -0
  43. package/src/appbar/appbar.d.ts +115 -0
  44. package/src/appbar/appbar.js +220 -0
  45. package/src/appbar/index.d.ts +3 -0
  46. package/src/appbar/index.js +2 -0
  47. package/src/breadcrumb/breadcrumb-model.d.ts +161 -0
  48. package/src/breadcrumb/breadcrumb.d.ts +285 -0
  49. package/src/breadcrumb/breadcrumb.js +789 -0
  50. package/src/breadcrumb/index.d.ts +5 -0
  51. package/src/breadcrumb/index.js +4 -0
  52. package/src/carousel/carousel-model.d.ts +223 -0
  53. package/src/carousel/carousel.d.ts +344 -0
  54. package/src/carousel/carousel.js +1100 -0
  55. package/src/carousel/index.d.ts +3 -0
  56. package/src/carousel/index.js +2 -0
  57. package/src/common/h-scroll-model.d.ts +1 -0
  58. package/src/common/h-scroll.d.ts +21 -10
  59. package/src/common/h-scroll.js +58 -36
  60. package/src/common/index.d.ts +2 -0
  61. package/src/common/index.js +2 -0
  62. package/src/common/menu-base-model.d.ts +77 -22
  63. package/src/common/menu-base.d.ts +192 -41
  64. package/src/common/menu-base.js +1104 -366
  65. package/src/common/menu-scroll.d.ts +29 -0
  66. package/src/common/menu-scroll.js +103 -0
  67. package/src/common/v-scroll-model.d.ts +1 -0
  68. package/src/common/v-scroll.d.ts +20 -9
  69. package/src/common/v-scroll.js +47 -20
  70. package/src/context-menu/context-menu-model.d.ts +7 -3
  71. package/src/context-menu/context-menu.d.ts +25 -10
  72. package/src/context-menu/context-menu.js +27 -15
  73. package/src/index.d.ts +3 -0
  74. package/src/index.js +3 -0
  75. package/src/menu/menu-model.d.ts +34 -1
  76. package/src/menu/menu.d.ts +60 -6
  77. package/src/menu/menu.js +144 -18
  78. package/src/sidebar/sidebar-model.d.ts +54 -25
  79. package/src/sidebar/sidebar.d.ts +117 -22
  80. package/src/sidebar/sidebar.js +250 -120
  81. package/src/tab/tab-model.d.ts +156 -37
  82. package/src/tab/tab.d.ts +286 -61
  83. package/src/tab/tab.js +1136 -331
  84. package/src/toolbar/toolbar-model.d.ts +110 -29
  85. package/src/toolbar/toolbar.d.ts +185 -55
  86. package/src/toolbar/toolbar.js +595 -234
  87. package/src/treeview/treeview-model.d.ts +269 -83
  88. package/src/treeview/treeview.d.ts +497 -74
  89. package/src/treeview/treeview.js +2006 -409
  90. package/styles/accordion/_all.scss +0 -1
  91. package/styles/accordion/_bootstrap-dark-definition.scss +171 -67
  92. package/styles/accordion/_bootstrap-definition.scss +115 -11
  93. package/styles/accordion/_bootstrap4-definition.scss +182 -0
  94. package/styles/accordion/_bootstrap5-dark-definition.scss +1 -0
  95. package/styles/accordion/_bootstrap5-definition.scss +180 -0
  96. package/styles/accordion/_fabric-dark-definition.scss +171 -69
  97. package/styles/accordion/_fabric-definition.scss +119 -15
  98. package/styles/accordion/_fluent-dark-definition.scss +1 -0
  99. package/styles/accordion/_fluent-definition.scss +179 -0
  100. package/styles/accordion/_fusionnew-definition.scss +180 -0
  101. package/styles/accordion/_highcontrast-definition.scss +122 -23
  102. package/styles/accordion/_highcontrast-light-definition.scss +192 -95
  103. package/styles/accordion/_layout.scss +100 -162
  104. package/styles/accordion/_material-dark-definition.scss +173 -70
  105. package/styles/accordion/_material-definition.scss +115 -11
  106. package/styles/accordion/_tailwind-dark-definition.scss +1 -0
  107. package/styles/accordion/_tailwind-definition.scss +178 -0
  108. package/styles/accordion/_theme.scss +219 -224
  109. package/styles/accordion/bootstrap-dark.css +267 -181
  110. package/styles/accordion/bootstrap-dark.scss +1 -0
  111. package/styles/accordion/bootstrap.css +258 -172
  112. package/styles/accordion/bootstrap.scss +1 -0
  113. package/styles/accordion/bootstrap4.css +525 -0
  114. package/styles/accordion/bootstrap4.scss +4 -0
  115. package/styles/accordion/bootstrap5-dark.css +527 -0
  116. package/styles/accordion/bootstrap5-dark.scss +4 -0
  117. package/styles/accordion/bootstrap5.css +527 -0
  118. package/styles/accordion/bootstrap5.scss +4 -0
  119. package/styles/accordion/fabric-dark.css +266 -164
  120. package/styles/accordion/fabric-dark.scss +1 -0
  121. package/styles/accordion/fabric.css +266 -164
  122. package/styles/accordion/fabric.scss +1 -0
  123. package/styles/accordion/fluent-dark.css +526 -0
  124. package/styles/accordion/fluent-dark.scss +4 -0
  125. package/styles/accordion/fluent.css +526 -0
  126. package/styles/accordion/fluent.scss +4 -0
  127. package/styles/accordion/highcontrast-light.css +525 -0
  128. package/styles/accordion/highcontrast-light.scss +4 -0
  129. package/styles/accordion/highcontrast.css +243 -232
  130. package/styles/accordion/highcontrast.scss +1 -0
  131. package/styles/accordion/{_icons.scss → icons/_bootstrap-dark.scss} +3 -3
  132. package/styles/accordion/icons/_bootstrap.scss +17 -0
  133. package/styles/accordion/icons/_bootstrap4.scss +17 -0
  134. package/styles/accordion/icons/_bootstrap5-dark.scss +1 -0
  135. package/styles/accordion/icons/_bootstrap5.scss +17 -0
  136. package/styles/accordion/icons/_fabric-dark.scss +17 -0
  137. package/styles/accordion/icons/_fabric.scss +17 -0
  138. package/styles/accordion/icons/_fluent-dark.scss +1 -0
  139. package/styles/accordion/icons/_fluent.scss +17 -0
  140. package/styles/accordion/icons/_fusionnew.scss +17 -0
  141. package/styles/accordion/icons/_highcontrast-light.scss +17 -0
  142. package/styles/accordion/icons/_highcontrast.scss +17 -0
  143. package/styles/accordion/icons/_material-dark.scss +17 -0
  144. package/styles/accordion/icons/_material.scss +17 -0
  145. package/styles/accordion/icons/_material3.scss +17 -0
  146. package/styles/accordion/icons/_tailwind-dark.scss +1 -0
  147. package/styles/accordion/icons/_tailwind.scss +17 -0
  148. package/styles/accordion/material-dark.css +268 -173
  149. package/styles/accordion/material-dark.scss +1 -0
  150. package/styles/accordion/material.css +264 -169
  151. package/styles/accordion/material.scss +1 -0
  152. package/styles/accordion/tailwind-dark.css +527 -0
  153. package/styles/accordion/tailwind-dark.scss +4 -0
  154. package/styles/accordion/tailwind.css +527 -0
  155. package/styles/accordion/tailwind.scss +4 -0
  156. package/styles/appbar/_all.scss +2 -0
  157. package/styles/appbar/_bootstrap-dark-definition.scss +8 -0
  158. package/styles/appbar/_bootstrap-definition.scss +8 -0
  159. package/styles/appbar/_bootstrap4-definition.scss +8 -0
  160. package/styles/appbar/_bootstrap5-dark-definition.scss +1 -0
  161. package/styles/appbar/_bootstrap5-definition.scss +8 -0
  162. package/styles/appbar/_fabric-dark-definition.scss +8 -0
  163. package/styles/appbar/_fabric-definition.scss +8 -0
  164. package/styles/appbar/_fluent-dark-definition.scss +1 -0
  165. package/styles/appbar/_fluent-definition.scss +8 -0
  166. package/styles/appbar/_fusionnew-definition.scss +8 -0
  167. package/styles/appbar/_highcontrast-definition.scss +8 -0
  168. package/styles/appbar/_highcontrast-light-definition.scss +8 -0
  169. package/styles/appbar/_layout.scss +84 -0
  170. package/styles/appbar/_material-dark-definition.scss +8 -0
  171. package/styles/appbar/_material-definition.scss +8 -0
  172. package/styles/appbar/_tailwind-dark-definition.scss +1 -0
  173. package/styles/appbar/_tailwind-definition.scss +8 -0
  174. package/styles/appbar/_theme.scss +208 -0
  175. package/styles/appbar/bootstrap-dark.css +247 -0
  176. package/styles/appbar/bootstrap-dark.scss +3 -0
  177. package/styles/appbar/bootstrap.css +247 -0
  178. package/styles/appbar/bootstrap.scss +3 -0
  179. package/styles/appbar/bootstrap4.css +247 -0
  180. package/styles/appbar/bootstrap4.scss +3 -0
  181. package/styles/appbar/bootstrap5-dark.css +247 -0
  182. package/styles/appbar/bootstrap5-dark.scss +3 -0
  183. package/styles/appbar/bootstrap5.css +247 -0
  184. package/styles/appbar/bootstrap5.scss +3 -0
  185. package/styles/appbar/fabric-dark.css +247 -0
  186. package/styles/appbar/fabric-dark.scss +3 -0
  187. package/styles/appbar/fabric.css +247 -0
  188. package/styles/appbar/fabric.scss +3 -0
  189. package/styles/appbar/fluent-dark.css +247 -0
  190. package/styles/appbar/fluent-dark.scss +3 -0
  191. package/styles/appbar/fluent.css +247 -0
  192. package/styles/appbar/fluent.scss +3 -0
  193. package/styles/appbar/highcontrast-light.css +247 -0
  194. package/styles/appbar/highcontrast-light.scss +3 -0
  195. package/styles/appbar/highcontrast.css +247 -0
  196. package/styles/appbar/highcontrast.scss +3 -0
  197. package/styles/appbar/material-dark.css +248 -0
  198. package/styles/appbar/material-dark.scss +3 -0
  199. package/styles/appbar/material.css +248 -0
  200. package/styles/appbar/material.scss +3 -0
  201. package/styles/appbar/tailwind-dark.css +248 -0
  202. package/styles/appbar/tailwind-dark.scss +3 -0
  203. package/styles/appbar/tailwind.css +248 -0
  204. package/styles/appbar/tailwind.scss +3 -0
  205. package/styles/bootstrap-dark.css +5500 -3485
  206. package/styles/bootstrap-dark.scss +4 -0
  207. package/styles/bootstrap.css +5417 -3557
  208. package/styles/bootstrap.scss +4 -0
  209. package/styles/bootstrap4.css +10166 -0
  210. package/styles/bootstrap4.scss +13 -0
  211. package/styles/bootstrap5-dark.css +10207 -0
  212. package/styles/bootstrap5-dark.scss +13 -0
  213. package/styles/bootstrap5.css +10207 -0
  214. package/styles/bootstrap5.scss +13 -0
  215. package/styles/breadcrumb/_all.scss +3 -0
  216. package/styles/breadcrumb/_bootstrap-dark-definition.scss +54 -0
  217. package/styles/breadcrumb/_bootstrap-definition.scss +54 -0
  218. package/styles/breadcrumb/_bootstrap4-definition.scss +54 -0
  219. package/styles/breadcrumb/_bootstrap5-dark-definition.scss +1 -0
  220. package/styles/breadcrumb/_bootstrap5-definition.scss +59 -0
  221. package/styles/breadcrumb/_fabric-dark-definition.scss +59 -0
  222. package/styles/breadcrumb/_fabric-definition.scss +59 -0
  223. package/styles/breadcrumb/_fluent-dark-definition.scss +1 -0
  224. package/styles/breadcrumb/_fluent-definition.scss +62 -0
  225. package/styles/breadcrumb/_fusionnew-definition.scss +59 -0
  226. package/styles/breadcrumb/_highcontrast-definition.scss +61 -0
  227. package/styles/breadcrumb/_highcontrast-light-definition.scss +61 -0
  228. package/styles/breadcrumb/_layout.scss +491 -0
  229. package/styles/breadcrumb/_material-dark-definition.scss +50 -0
  230. package/styles/breadcrumb/_material-definition.scss +50 -0
  231. package/styles/breadcrumb/_tailwind-dark-definition.scss +1 -0
  232. package/styles/breadcrumb/_tailwind-definition.scss +60 -0
  233. package/styles/breadcrumb/_theme.scss +176 -0
  234. package/styles/breadcrumb/bootstrap-dark.css +395 -0
  235. package/styles/breadcrumb/bootstrap-dark.scss +4 -0
  236. package/styles/breadcrumb/bootstrap.css +395 -0
  237. package/styles/breadcrumb/bootstrap.scss +4 -0
  238. package/styles/breadcrumb/bootstrap4.css +395 -0
  239. package/styles/breadcrumb/bootstrap4.scss +4 -0
  240. package/styles/breadcrumb/bootstrap5-dark.css +409 -0
  241. package/styles/breadcrumb/bootstrap5-dark.scss +4 -0
  242. package/styles/breadcrumb/bootstrap5.css +409 -0
  243. package/styles/breadcrumb/bootstrap5.scss +4 -0
  244. package/styles/breadcrumb/fabric-dark.css +395 -0
  245. package/styles/breadcrumb/fabric-dark.scss +4 -0
  246. package/styles/breadcrumb/fabric.css +395 -0
  247. package/styles/breadcrumb/fabric.scss +4 -0
  248. package/styles/breadcrumb/fluent-dark.css +371 -0
  249. package/styles/breadcrumb/fluent-dark.scss +4 -0
  250. package/styles/breadcrumb/fluent.css +371 -0
  251. package/styles/breadcrumb/fluent.scss +4 -0
  252. package/styles/breadcrumb/highcontrast-light.css +402 -0
  253. package/styles/breadcrumb/highcontrast-light.scss +4 -0
  254. package/styles/breadcrumb/highcontrast.css +402 -0
  255. package/styles/breadcrumb/highcontrast.scss +4 -0
  256. package/styles/breadcrumb/icons/_bootstrap-dark.scss +14 -0
  257. package/styles/breadcrumb/icons/_bootstrap.scss +14 -0
  258. package/styles/breadcrumb/icons/_bootstrap4.scss +14 -0
  259. package/styles/breadcrumb/icons/_bootstrap5-dark.scss +1 -0
  260. package/styles/breadcrumb/icons/_bootstrap5.scss +25 -0
  261. package/styles/breadcrumb/icons/_fabric-dark.scss +14 -0
  262. package/styles/breadcrumb/icons/_fabric.scss +14 -0
  263. package/styles/breadcrumb/icons/_fluent-dark.scss +1 -0
  264. package/styles/breadcrumb/icons/_fluent.scss +25 -0
  265. package/styles/breadcrumb/icons/_fusionnew.scss +25 -0
  266. package/styles/breadcrumb/icons/_highcontrast-light.scss +14 -0
  267. package/styles/breadcrumb/icons/_highcontrast.scss +14 -0
  268. package/styles/breadcrumb/icons/_material-dark.scss +25 -0
  269. package/styles/breadcrumb/icons/_material.scss +25 -0
  270. package/styles/breadcrumb/icons/_material3.scss +25 -0
  271. package/styles/breadcrumb/icons/_tailwind-dark.scss +25 -0
  272. package/styles/breadcrumb/icons/_tailwind.scss +25 -0
  273. package/styles/breadcrumb/material-dark.css +379 -0
  274. package/styles/breadcrumb/material-dark.scss +4 -0
  275. package/styles/breadcrumb/material.css +379 -0
  276. package/styles/breadcrumb/material.scss +4 -0
  277. package/styles/breadcrumb/tailwind-dark.css +402 -0
  278. package/styles/breadcrumb/tailwind-dark.scss +4 -0
  279. package/styles/breadcrumb/tailwind.css +402 -0
  280. package/styles/breadcrumb/tailwind.scss +4 -0
  281. package/styles/carousel/_all.scss +2 -0
  282. package/styles/carousel/_bootstrap-dark-definition.scss +22 -0
  283. package/styles/carousel/_bootstrap-definition.scss +22 -0
  284. package/styles/carousel/_bootstrap4-definition.scss +22 -0
  285. package/styles/carousel/_bootstrap5-dark-definition.scss +1 -0
  286. package/styles/carousel/_bootstrap5-definition.scss +22 -0
  287. package/styles/carousel/_fabric-dark-definition.scss +22 -0
  288. package/styles/carousel/_fabric-definition.scss +22 -0
  289. package/styles/carousel/_fluent-dark-definition.scss +1 -0
  290. package/styles/carousel/_fluent-definition.scss +22 -0
  291. package/styles/carousel/_fusionnew-definition.scss +22 -0
  292. package/styles/carousel/_highcontrast-definition.scss +22 -0
  293. package/styles/carousel/_highcontrast-light-definition.scss +22 -0
  294. package/styles/carousel/_layout.scss +225 -0
  295. package/styles/carousel/_material-dark-definition.scss +22 -0
  296. package/styles/carousel/_material-definition.scss +22 -0
  297. package/styles/carousel/_tailwind-dark-definition.scss +1 -0
  298. package/styles/carousel/_tailwind-definition.scss +22 -0
  299. package/styles/carousel/_theme.scss +56 -0
  300. package/styles/carousel/bootstrap-dark.css +264 -0
  301. package/styles/carousel/bootstrap-dark.scss +5 -0
  302. package/styles/carousel/bootstrap.css +264 -0
  303. package/styles/carousel/bootstrap.scss +5 -0
  304. package/styles/carousel/bootstrap4.css +264 -0
  305. package/styles/carousel/bootstrap4.scss +5 -0
  306. package/styles/carousel/bootstrap5-dark.css +264 -0
  307. package/styles/carousel/bootstrap5-dark.scss +5 -0
  308. package/styles/carousel/bootstrap5.css +264 -0
  309. package/styles/carousel/bootstrap5.scss +5 -0
  310. package/styles/carousel/fabric-dark.css +264 -0
  311. package/styles/carousel/fabric-dark.scss +5 -0
  312. package/styles/carousel/fabric.css +264 -0
  313. package/styles/carousel/fabric.scss +5 -0
  314. package/styles/carousel/fluent-dark.css +264 -0
  315. package/styles/carousel/fluent-dark.scss +5 -0
  316. package/styles/carousel/fluent.css +264 -0
  317. package/styles/carousel/fluent.scss +5 -0
  318. package/styles/carousel/highcontrast-light.css +264 -0
  319. package/styles/carousel/highcontrast-light.scss +5 -0
  320. package/styles/carousel/highcontrast.css +264 -0
  321. package/styles/carousel/highcontrast.scss +5 -0
  322. package/styles/carousel/icons/_bootstrap-dark.scss +30 -0
  323. package/styles/carousel/icons/_bootstrap.scss +30 -0
  324. package/styles/carousel/icons/_bootstrap4.scss +30 -0
  325. package/styles/carousel/icons/_bootstrap5-dark.scss +1 -0
  326. package/styles/carousel/icons/_bootstrap5.scss +30 -0
  327. package/styles/carousel/icons/_fabric-dark.scss +30 -0
  328. package/styles/carousel/icons/_fabric.scss +30 -0
  329. package/styles/carousel/icons/_fluent-dark.scss +1 -0
  330. package/styles/carousel/icons/_fluent.scss +30 -0
  331. package/styles/carousel/icons/_fusionnew.scss +30 -0
  332. package/styles/carousel/icons/_highcontrast-light.scss +30 -0
  333. package/styles/carousel/icons/_highcontrast.scss +30 -0
  334. package/styles/carousel/icons/_material-dark.scss +30 -0
  335. package/styles/carousel/icons/_material.scss +30 -0
  336. package/styles/carousel/icons/_material3.scss +30 -0
  337. package/styles/carousel/icons/_tailwind-dark.scss +1 -0
  338. package/styles/carousel/icons/_tailwind.scss +30 -0
  339. package/styles/carousel/material-dark.css +265 -0
  340. package/styles/carousel/material-dark.scss +5 -0
  341. package/styles/carousel/material.css +265 -0
  342. package/styles/carousel/material.scss +5 -0
  343. package/styles/carousel/tailwind-dark.css +265 -0
  344. package/styles/carousel/tailwind-dark.scss +5 -0
  345. package/styles/carousel/tailwind.css +265 -0
  346. package/styles/carousel/tailwind.scss +5 -0
  347. package/styles/context-menu/_bootstrap-dark-definition.scss +49 -50
  348. package/styles/context-menu/_bootstrap-definition.scss +1 -3
  349. package/styles/context-menu/_bootstrap4-definition.scss +50 -0
  350. package/styles/context-menu/_bootstrap5-dark-definition.scss +1 -0
  351. package/styles/context-menu/_bootstrap5-definition.scss +52 -0
  352. package/styles/context-menu/_fabric-dark-definition.scss +49 -50
  353. package/styles/context-menu/_fabric-definition.scss +0 -2
  354. package/styles/context-menu/_fluent-dark-definition.scss +1 -0
  355. package/styles/context-menu/_fluent-definition.scss +52 -0
  356. package/styles/context-menu/_fusionnew-definition.scss +52 -0
  357. package/styles/context-menu/_highcontrast-definition.scss +0 -2
  358. package/styles/context-menu/_highcontrast-light-definition.scss +2 -3
  359. package/styles/context-menu/_layout-mixin.scss +19 -14
  360. package/styles/context-menu/_layout.scss +88 -5
  361. package/styles/context-menu/_material-dark-definition.scss +49 -50
  362. package/styles/context-menu/_material-definition.scss +3 -5
  363. package/styles/context-menu/_tailwind-dark-definition.scss +1 -0
  364. package/styles/context-menu/_tailwind-definition.scss +53 -0
  365. package/styles/context-menu/_theme-mixin.scss +16 -12
  366. package/styles/context-menu/_theme.scss +15 -1
  367. package/styles/context-menu/bootstrap-dark.css +203 -112
  368. package/styles/context-menu/bootstrap-dark.scss +3 -0
  369. package/styles/context-menu/bootstrap.css +203 -111
  370. package/styles/context-menu/bootstrap.scss +3 -0
  371. package/styles/context-menu/bootstrap4.css +367 -0
  372. package/styles/context-menu/bootstrap4.scss +7 -0
  373. package/styles/context-menu/bootstrap5-dark.css +355 -0
  374. package/styles/context-menu/bootstrap5-dark.scss +7 -0
  375. package/styles/context-menu/bootstrap5.css +355 -0
  376. package/styles/context-menu/bootstrap5.scss +7 -0
  377. package/styles/context-menu/fabric-dark.css +204 -113
  378. package/styles/context-menu/fabric-dark.scss +3 -0
  379. package/styles/context-menu/fabric.css +202 -110
  380. package/styles/context-menu/fabric.scss +3 -0
  381. package/styles/context-menu/fluent-dark.css +363 -0
  382. package/styles/context-menu/fluent-dark.scss +7 -0
  383. package/styles/context-menu/fluent.css +363 -0
  384. package/styles/context-menu/fluent.scss +7 -0
  385. package/styles/context-menu/highcontrast-light.css +366 -0
  386. package/styles/context-menu/highcontrast-light.scss +7 -0
  387. package/styles/context-menu/highcontrast.css +202 -110
  388. package/styles/context-menu/highcontrast.scss +3 -0
  389. package/styles/context-menu/icons/_bootstrap-dark.scss +5 -2
  390. package/styles/context-menu/icons/_bootstrap.scss +5 -2
  391. package/styles/context-menu/icons/_bootstrap4.scss +33 -0
  392. package/styles/context-menu/icons/_bootstrap5-dark.scss +1 -0
  393. package/styles/context-menu/icons/_bootstrap5.scss +33 -0
  394. package/styles/context-menu/icons/_fabric-dark.scss +5 -2
  395. package/styles/context-menu/icons/_fabric.scss +5 -2
  396. package/styles/context-menu/icons/_fluent-dark.scss +1 -0
  397. package/styles/context-menu/icons/_fluent.scss +33 -0
  398. package/styles/context-menu/icons/_fusionnew.scss +33 -0
  399. package/styles/context-menu/icons/_highcontrast-light.scss +5 -2
  400. package/styles/context-menu/icons/_highcontrast.scss +5 -2
  401. package/styles/context-menu/icons/_material-dark.scss +5 -2
  402. package/styles/context-menu/icons/_material.scss +5 -2
  403. package/styles/context-menu/icons/_material3.scss +33 -0
  404. package/styles/context-menu/icons/_tailwind-dark.scss +33 -0
  405. package/styles/context-menu/icons/_tailwind.scss +33 -0
  406. package/styles/context-menu/material-dark.css +221 -112
  407. package/styles/context-menu/material-dark.scss +3 -0
  408. package/styles/context-menu/material.css +225 -114
  409. package/styles/context-menu/material.scss +3 -0
  410. package/styles/context-menu/tailwind-dark.css +380 -0
  411. package/styles/context-menu/tailwind-dark.scss +7 -0
  412. package/styles/context-menu/tailwind.css +380 -0
  413. package/styles/context-menu/tailwind.scss +7 -0
  414. package/styles/fabric-dark.css +6281 -4215
  415. package/styles/fabric-dark.scss +4 -0
  416. package/styles/fabric.css +5956 -4045
  417. package/styles/fabric.scss +4 -0
  418. package/styles/fluent-dark.css +10172 -0
  419. package/styles/fluent-dark.scss +13 -0
  420. package/styles/fluent.css +10172 -0
  421. package/styles/fluent.scss +13 -0
  422. package/styles/h-scroll/_all.scss +1 -1
  423. package/styles/h-scroll/_bootstrap-dark-definition.scss +46 -40
  424. package/styles/h-scroll/_bootstrap-definition.scss +14 -7
  425. package/styles/h-scroll/_bootstrap4-definition.scss +56 -0
  426. package/styles/h-scroll/_bootstrap5-dark-definition.scss +1 -0
  427. package/styles/h-scroll/_bootstrap5-definition.scss +83 -0
  428. package/styles/h-scroll/_fabric-dark-definition.scss +48 -42
  429. package/styles/h-scroll/_fabric-definition.scss +17 -9
  430. package/styles/h-scroll/_fluent-dark-definition.scss +1 -0
  431. package/styles/h-scroll/_fluent-definition.scss +83 -0
  432. package/styles/h-scroll/_fusionnew-definition.scss +83 -0
  433. package/styles/h-scroll/_highcontrast-definition.scss +15 -17
  434. package/styles/h-scroll/_highcontrast-light-definition.scss +49 -46
  435. package/styles/h-scroll/_layout.scss +15 -15
  436. package/styles/h-scroll/_material-dark-definition.scss +56 -51
  437. package/styles/h-scroll/_material-definition.scss +21 -15
  438. package/styles/h-scroll/_tailwind-dark-definition.scss +1 -0
  439. package/styles/h-scroll/_tailwind-definition.scss +83 -0
  440. package/styles/h-scroll/_theme.scss +15 -29
  441. package/styles/h-scroll/bootstrap-dark.css +53 -66
  442. package/styles/h-scroll/bootstrap-dark.scss +1 -0
  443. package/styles/h-scroll/bootstrap.css +32 -80
  444. package/styles/h-scroll/bootstrap4.css +260 -0
  445. package/styles/h-scroll/bootstrap4.scss +4 -0
  446. package/styles/h-scroll/bootstrap5-dark.css +280 -0
  447. package/styles/h-scroll/bootstrap5-dark.scss +4 -0
  448. package/styles/h-scroll/bootstrap5.css +280 -0
  449. package/styles/h-scroll/bootstrap5.scss +4 -0
  450. package/styles/h-scroll/fabric-dark.css +54 -67
  451. package/styles/h-scroll/fabric-dark.scss +1 -0
  452. package/styles/h-scroll/fabric.css +32 -80
  453. package/styles/h-scroll/fluent-dark.css +280 -0
  454. package/styles/h-scroll/fluent-dark.scss +4 -0
  455. package/styles/h-scroll/fluent.css +280 -0
  456. package/styles/h-scroll/fluent.scss +4 -0
  457. package/styles/h-scroll/highcontrast-light.css +259 -0
  458. package/styles/h-scroll/highcontrast-light.scss +4 -0
  459. package/styles/h-scroll/highcontrast.css +26 -89
  460. package/styles/h-scroll/{_icons.scss → icons/_bootstrap-dark.scss} +13 -13
  461. package/styles/h-scroll/icons/_bootstrap.scss +3 -4
  462. package/styles/h-scroll/icons/_bootstrap4.scss +49 -0
  463. package/styles/h-scroll/icons/_bootstrap5-dark.scss +1 -0
  464. package/styles/h-scroll/icons/_bootstrap5.scss +49 -0
  465. package/styles/h-scroll/icons/_fabric-dark.scss +49 -0
  466. package/styles/h-scroll/icons/_fabric.scss +5 -5
  467. package/styles/h-scroll/icons/_fluent-dark.scss +1 -0
  468. package/styles/h-scroll/icons/_fluent.scss +49 -0
  469. package/styles/h-scroll/icons/_fusionnew.scss +49 -0
  470. package/styles/h-scroll/icons/_highcontrast-light.scss +49 -0
  471. package/styles/h-scroll/icons/_highcontrast.scss +5 -5
  472. package/styles/h-scroll/icons/_material-dark.scss +49 -0
  473. package/styles/h-scroll/icons/_material.scss +3 -3
  474. package/styles/h-scroll/icons/_material3.scss +49 -0
  475. package/styles/h-scroll/icons/_tailwind-dark.scss +1 -0
  476. package/styles/h-scroll/icons/_tailwind.scss +49 -0
  477. package/styles/h-scroll/material-dark.css +56 -70
  478. package/styles/h-scroll/material-dark.scss +1 -0
  479. package/styles/h-scroll/material.css +33 -82
  480. package/styles/h-scroll/tailwind-dark.css +281 -0
  481. package/styles/h-scroll/tailwind-dark.scss +4 -0
  482. package/styles/h-scroll/tailwind.css +281 -0
  483. package/styles/h-scroll/tailwind.scss +4 -0
  484. package/styles/highcontrast-light.css +10029 -0
  485. package/styles/highcontrast-light.scss +13 -0
  486. package/styles/highcontrast.css +6035 -4466
  487. package/styles/highcontrast.scss +4 -0
  488. package/styles/material-dark.css +7913 -5586
  489. package/styles/material-dark.scss +4 -0
  490. package/styles/material.css +5982 -3808
  491. package/styles/material.scss +4 -0
  492. package/styles/menu/_bootstrap-dark-definition.scss +29 -21
  493. package/styles/menu/_bootstrap-definition.scss +8 -1
  494. package/styles/menu/_bootstrap4-definition.scss +64 -0
  495. package/styles/menu/_bootstrap5-dark-definition.scss +1 -0
  496. package/styles/menu/_bootstrap5-definition.scss +67 -0
  497. package/styles/menu/_fabric-dark-definition.scss +30 -22
  498. package/styles/menu/_fabric-definition.scss +8 -1
  499. package/styles/menu/_fluent-dark-definition.scss +1 -0
  500. package/styles/menu/_fluent-definition.scss +67 -0
  501. package/styles/menu/_fusionnew-definition.scss +67 -0
  502. package/styles/menu/_highcontrast-definition.scss +9 -2
  503. package/styles/menu/_highcontrast-light-definition.scss +8 -1
  504. package/styles/menu/_layout.scss +360 -39
  505. package/styles/menu/_material-dark-definition.scss +27 -19
  506. package/styles/menu/_material-definition.scss +7 -0
  507. package/styles/menu/_tailwind-dark-definition.scss +1 -0
  508. package/styles/menu/_tailwind-definition.scss +66 -0
  509. package/styles/menu/_theme.scss +199 -15
  510. package/styles/menu/bootstrap-dark.css +715 -320
  511. package/styles/menu/bootstrap.css +696 -302
  512. package/styles/menu/bootstrap.scss +1 -0
  513. package/styles/menu/bootstrap4.css +1126 -0
  514. package/styles/menu/bootstrap4.scss +8 -0
  515. package/styles/menu/bootstrap5-dark.css +1083 -0
  516. package/styles/menu/bootstrap5-dark.scss +8 -0
  517. package/styles/menu/bootstrap5.css +1083 -0
  518. package/styles/menu/bootstrap5.scss +8 -0
  519. package/styles/menu/fabric-dark.css +714 -319
  520. package/styles/menu/fabric.css +694 -299
  521. package/styles/menu/fabric.scss +1 -0
  522. package/styles/menu/fluent-dark.css +1106 -0
  523. package/styles/menu/fluent-dark.scss +8 -0
  524. package/styles/menu/fluent.css +1106 -0
  525. package/styles/menu/fluent.scss +8 -0
  526. package/styles/menu/highcontrast-light.css +1088 -0
  527. package/styles/menu/highcontrast-light.scss +8 -0
  528. package/styles/menu/highcontrast.css +696 -301
  529. package/styles/menu/highcontrast.scss +1 -0
  530. package/styles/menu/icons/_bootstrap-dark.scss +58 -3
  531. package/styles/menu/icons/_bootstrap.scss +58 -3
  532. package/styles/menu/icons/_bootstrap4.scss +134 -0
  533. package/styles/menu/icons/_bootstrap5-dark.scss +1 -0
  534. package/styles/menu/icons/_bootstrap5.scss +134 -0
  535. package/styles/menu/icons/_fabric-dark.scss +62 -7
  536. package/styles/menu/icons/_fabric.scss +62 -7
  537. package/styles/menu/icons/_fluent-dark.scss +1 -0
  538. package/styles/menu/icons/_fluent.scss +134 -0
  539. package/styles/menu/icons/_fusionnew.scss +134 -0
  540. package/styles/menu/icons/_highcontrast-light.scss +58 -3
  541. package/styles/menu/icons/_highcontrast.scss +58 -3
  542. package/styles/menu/icons/_material-dark.scss +58 -3
  543. package/styles/menu/icons/_material.scss +58 -3
  544. package/styles/menu/icons/_material3.scss +134 -0
  545. package/styles/menu/icons/_tailwind-dark.scss +134 -0
  546. package/styles/menu/icons/_tailwind.scss +134 -0
  547. package/styles/menu/material-dark.css +713 -320
  548. package/styles/menu/material.css +697 -304
  549. package/styles/menu/material.scss +1 -0
  550. package/styles/menu/tailwind-dark.css +1102 -0
  551. package/styles/menu/tailwind-dark.scss +8 -0
  552. package/styles/menu/tailwind.css +1102 -0
  553. package/styles/menu/tailwind.scss +8 -0
  554. package/styles/pager/_all.scss +2 -0
  555. package/styles/pager/_bootstrap-dark-definition.scss +131 -0
  556. package/styles/pager/_bootstrap-definition.scss +131 -0
  557. package/styles/pager/_bootstrap4-definition.scss +131 -0
  558. package/styles/pager/_bootstrap5-dark-definition.scss +1 -0
  559. package/styles/pager/_bootstrap5-definition.scss +146 -0
  560. package/styles/pager/_fabric-dark-definition.scss +131 -0
  561. package/styles/pager/_fabric-definition.scss +129 -0
  562. package/styles/pager/_fluent-dark-definition.scss +1 -0
  563. package/styles/pager/_fluent-definition.scss +133 -0
  564. package/styles/pager/_fusionnew-definition.scss +146 -0
  565. package/styles/pager/_highcontrast-definition.scss +129 -0
  566. package/styles/pager/_highcontrast-light-definition.scss +131 -0
  567. package/styles/pager/_layout.scss +896 -0
  568. package/styles/pager/_material-dark-definition.scss +132 -0
  569. package/styles/pager/_material-definition.scss +130 -0
  570. package/styles/pager/_tailwind-dark-definition.scss +1 -0
  571. package/styles/pager/_tailwind-definition.scss +132 -0
  572. package/styles/pager/_theme.scss +152 -0
  573. package/styles/pager/bootstrap-dark.css +688 -0
  574. package/styles/pager/bootstrap-dark.scss +4 -0
  575. package/styles/pager/bootstrap.css +688 -0
  576. package/styles/pager/bootstrap.scss +4 -0
  577. package/styles/pager/bootstrap4.css +688 -0
  578. package/styles/pager/bootstrap4.scss +4 -0
  579. package/styles/pager/bootstrap5-dark.css +723 -0
  580. package/styles/pager/bootstrap5-dark.scss +4 -0
  581. package/styles/pager/bootstrap5.css +723 -0
  582. package/styles/pager/bootstrap5.scss +4 -0
  583. package/styles/pager/fabric-dark.css +688 -0
  584. package/styles/pager/fabric-dark.scss +4 -0
  585. package/styles/pager/fabric.css +688 -0
  586. package/styles/pager/fabric.scss +4 -0
  587. package/styles/pager/fluent-dark.css +690 -0
  588. package/styles/pager/fluent-dark.scss +4 -0
  589. package/styles/pager/fluent.css +690 -0
  590. package/styles/pager/fluent.scss +4 -0
  591. package/styles/pager/highcontrast-light.css +688 -0
  592. package/styles/pager/highcontrast-light.scss +4 -0
  593. package/styles/pager/highcontrast.css +688 -0
  594. package/styles/pager/highcontrast.scss +4 -0
  595. package/styles/pager/icons/_bootstrap-dark.scss +50 -0
  596. package/styles/pager/icons/_bootstrap.scss +50 -0
  597. package/styles/pager/icons/_bootstrap4.scss +50 -0
  598. package/styles/pager/icons/_bootstrap5-dark.scss +1 -0
  599. package/styles/pager/icons/_bootstrap5.scss +50 -0
  600. package/styles/pager/icons/_fabric-dark.scss +50 -0
  601. package/styles/pager/icons/_fabric.scss +50 -0
  602. package/styles/pager/icons/_fluent-dark.scss +1 -0
  603. package/styles/pager/icons/_fluent.scss +50 -0
  604. package/styles/pager/icons/_fusionnew.scss +50 -0
  605. package/styles/pager/icons/_highcontrast-light.scss +50 -0
  606. package/styles/pager/icons/_highcontrast.scss +46 -0
  607. package/styles/pager/icons/_material-dark.scss +50 -0
  608. package/styles/pager/icons/_material.scss +46 -0
  609. package/styles/pager/icons/_material3.scss +50 -0
  610. package/styles/pager/icons/_tailwind-dark.scss +1 -0
  611. package/styles/pager/icons/_tailwind.scss +50 -0
  612. package/styles/pager/material-dark.css +689 -0
  613. package/styles/pager/material-dark.scss +4 -0
  614. package/styles/pager/material.css +689 -0
  615. package/styles/pager/material.scss +4 -0
  616. package/styles/pager/tailwind-dark.css +815 -0
  617. package/styles/pager/tailwind-dark.scss +4 -0
  618. package/styles/pager/tailwind.css +815 -0
  619. package/styles/pager/tailwind.scss +4 -0
  620. package/styles/sidebar/_bootstrap4-definition.scss +4 -0
  621. package/styles/sidebar/_bootstrap5-dark-definition.scss +1 -0
  622. package/styles/sidebar/_bootstrap5-definition.scss +6 -0
  623. package/styles/sidebar/_fabric-definition.scss +0 -2
  624. package/styles/sidebar/_fluent-dark-definition.scss +1 -0
  625. package/styles/sidebar/_fluent-definition.scss +6 -0
  626. package/styles/sidebar/_fusionnew-definition.scss +6 -0
  627. package/styles/sidebar/_highcontrast-definition.scss +1 -1
  628. package/styles/sidebar/_icons.scss +1 -1
  629. package/styles/sidebar/_layout.scss +1 -0
  630. package/styles/sidebar/_tailwind-dark-definition.scss +1 -0
  631. package/styles/sidebar/_tailwind-definition.scss +6 -0
  632. package/styles/sidebar/_theme.scss +56 -34
  633. package/styles/sidebar/bootstrap-dark.css +29 -25
  634. package/styles/sidebar/bootstrap.css +29 -25
  635. package/styles/sidebar/bootstrap4.css +149 -0
  636. package/styles/sidebar/bootstrap4.scss +3 -0
  637. package/styles/sidebar/bootstrap5-dark.css +147 -0
  638. package/styles/sidebar/bootstrap5-dark.scss +3 -0
  639. package/styles/sidebar/bootstrap5.css +147 -0
  640. package/styles/sidebar/bootstrap5.scss +3 -0
  641. package/styles/sidebar/fabric-dark.css +29 -25
  642. package/styles/sidebar/fabric.css +29 -25
  643. package/styles/sidebar/fluent-dark.css +147 -0
  644. package/styles/sidebar/fluent-dark.scss +3 -0
  645. package/styles/sidebar/fluent.css +147 -0
  646. package/styles/sidebar/fluent.scss +3 -0
  647. package/styles/sidebar/highcontrast-light.css +149 -0
  648. package/styles/sidebar/highcontrast-light.scss +3 -0
  649. package/styles/sidebar/highcontrast.css +30 -26
  650. package/styles/sidebar/material-dark.css +29 -25
  651. package/styles/sidebar/material.css +29 -25
  652. package/styles/sidebar/tailwind-dark.css +148 -0
  653. package/styles/sidebar/tailwind-dark.scss +3 -0
  654. package/styles/sidebar/tailwind.css +148 -0
  655. package/styles/sidebar/tailwind.scss +3 -0
  656. package/styles/tab/_bootstrap-dark-definition.scss +632 -374
  657. package/styles/tab/_bootstrap-definition.scss +279 -13
  658. package/styles/tab/_bootstrap4-definition.scss +666 -0
  659. package/styles/tab/_bootstrap5-dark-definition.scss +1 -0
  660. package/styles/tab/_bootstrap5-definition.scss +656 -0
  661. package/styles/tab/_fabric-dark-definition.scss +644 -385
  662. package/styles/tab/_fabric-definition.scss +281 -15
  663. package/styles/tab/_fluent-dark-definition.scss +1 -0
  664. package/styles/tab/_fluent-definition.scss +664 -0
  665. package/styles/tab/_fusionnew-definition.scss +656 -0
  666. package/styles/tab/_highcontrast-definition.scss +283 -17
  667. package/styles/tab/_highcontrast-light-definition.scss +667 -411
  668. package/styles/tab/_icons.scss +1 -0
  669. package/styles/tab/_layout.scss +697 -753
  670. package/styles/tab/_material-dark-definition.scss +627 -370
  671. package/styles/tab/_material-definition.scss +277 -11
  672. package/styles/tab/_tailwind-dark-definition.scss +1 -0
  673. package/styles/tab/_tailwind-definition.scss +685 -0
  674. package/styles/tab/_theme.scss +402 -537
  675. package/styles/tab/bootstrap-dark.css +1226 -1067
  676. package/styles/tab/bootstrap-dark.scss +1 -0
  677. package/styles/tab/bootstrap.css +1173 -1106
  678. package/styles/tab/bootstrap4.css +4031 -0
  679. package/styles/tab/bootstrap4.scss +5 -0
  680. package/styles/tab/bootstrap5-dark.css +4029 -0
  681. package/styles/tab/bootstrap5-dark.scss +5 -0
  682. package/styles/tab/bootstrap5.css +4029 -0
  683. package/styles/tab/bootstrap5.scss +5 -0
  684. package/styles/tab/fabric-dark.css +1212 -1096
  685. package/styles/tab/fabric-dark.scss +1 -0
  686. package/styles/tab/fabric.css +1173 -1148
  687. package/styles/tab/fluent-dark.css +4031 -0
  688. package/styles/tab/fluent-dark.scss +5 -0
  689. package/styles/tab/fluent.css +4031 -0
  690. package/styles/tab/fluent.scss +5 -0
  691. package/styles/tab/highcontrast-light.css +4022 -0
  692. package/styles/tab/highcontrast-light.scss +5 -0
  693. package/styles/tab/highcontrast.css +1086 -1215
  694. package/styles/tab/icons/_bootstrap-dark.scss +108 -0
  695. package/styles/tab/icons/_bootstrap.scss +11 -35
  696. package/styles/tab/icons/_bootstrap4.scss +115 -0
  697. package/styles/tab/icons/_bootstrap5-dark.scss +1 -0
  698. package/styles/tab/icons/_bootstrap5.scss +104 -0
  699. package/styles/tab/icons/_fabric-dark.scss +108 -0
  700. package/styles/tab/icons/_fabric.scss +11 -35
  701. package/styles/tab/icons/_fluent-dark.scss +1 -0
  702. package/styles/tab/icons/_fluent.scss +108 -0
  703. package/styles/tab/icons/_fusionnew.scss +104 -0
  704. package/styles/tab/icons/_highcontrast-light.scss +104 -0
  705. package/styles/tab/icons/_highcontrast.scss +11 -28
  706. package/styles/tab/icons/_material-dark.scss +104 -0
  707. package/styles/tab/icons/_material.scss +9 -37
  708. package/styles/tab/icons/_material3.scss +104 -0
  709. package/styles/tab/icons/_tailwind-dark.scss +1 -0
  710. package/styles/tab/icons/_tailwind.scss +104 -0
  711. package/styles/tab/material-dark.css +1334 -955
  712. package/styles/tab/material-dark.scss +1 -0
  713. package/styles/tab/material.css +1280 -992
  714. package/styles/tab/tailwind-dark.css +4046 -0
  715. package/styles/tab/tailwind-dark.scss +5 -0
  716. package/styles/tab/tailwind.css +4046 -0
  717. package/styles/tab/tailwind.scss +5 -0
  718. package/styles/tailwind-dark.css +10351 -0
  719. package/styles/tailwind-dark.scss +13 -0
  720. package/styles/tailwind.css +10351 -0
  721. package/styles/tailwind.scss +13 -0
  722. package/styles/toolbar/_all.scss +1 -1
  723. package/styles/toolbar/_bootstrap-dark-definition.scss +193 -121
  724. package/styles/toolbar/_bootstrap-definition.scss +107 -34
  725. package/styles/toolbar/_bootstrap4-definition.scss +211 -0
  726. package/styles/toolbar/_bootstrap5-dark-definition.scss +1 -0
  727. package/styles/toolbar/_bootstrap5-definition.scss +220 -0
  728. package/styles/toolbar/_fabric-dark-definition.scss +208 -140
  729. package/styles/toolbar/_fabric-definition.scss +97 -28
  730. package/styles/toolbar/_fluent-dark-definition.scss +1 -0
  731. package/styles/toolbar/_fluent-definition.scss +210 -0
  732. package/styles/toolbar/_fusionnew-definition.scss +220 -0
  733. package/styles/toolbar/_highcontrast-definition.scss +99 -30
  734. package/styles/toolbar/_highcontrast-light-definition.scss +219 -149
  735. package/styles/toolbar/_layout.scss +690 -1087
  736. package/styles/toolbar/_material-dark-definition.scss +216 -148
  737. package/styles/toolbar/_material-definition.scss +117 -46
  738. package/styles/toolbar/_tailwind-dark-definition.scss +1 -0
  739. package/styles/toolbar/_tailwind-definition.scss +210 -0
  740. package/styles/toolbar/_theme.scss +246 -263
  741. package/styles/toolbar/bootstrap-dark.css +768 -1105
  742. package/styles/toolbar/bootstrap-dark.scss +1 -0
  743. package/styles/toolbar/bootstrap.css +761 -1111
  744. package/styles/toolbar/bootstrap.scss +1 -0
  745. package/styles/toolbar/bootstrap4.css +1071 -0
  746. package/styles/toolbar/bootstrap4.scss +8 -0
  747. package/styles/toolbar/bootstrap5-dark.css +1082 -0
  748. package/styles/toolbar/bootstrap5-dark.scss +8 -0
  749. package/styles/toolbar/bootstrap5.css +1082 -0
  750. package/styles/toolbar/bootstrap5.scss +8 -0
  751. package/styles/toolbar/fabric-dark.css +779 -1042
  752. package/styles/toolbar/fabric-dark.scss +1 -0
  753. package/styles/toolbar/fabric.css +767 -1041
  754. package/styles/toolbar/fabric.scss +1 -0
  755. package/styles/toolbar/fluent-dark.css +1081 -0
  756. package/styles/toolbar/fluent-dark.scss +8 -0
  757. package/styles/toolbar/fluent.css +1081 -0
  758. package/styles/toolbar/fluent.scss +8 -0
  759. package/styles/toolbar/highcontrast-light.css +1070 -0
  760. package/styles/toolbar/highcontrast-light.scss +8 -0
  761. package/styles/toolbar/highcontrast.css +744 -1089
  762. package/styles/toolbar/highcontrast.scss +1 -0
  763. package/styles/toolbar/icons/_bootstrap-dark.scss +16 -0
  764. package/styles/toolbar/icons/_bootstrap.scss +1 -1
  765. package/styles/toolbar/icons/_bootstrap4.scss +16 -0
  766. package/styles/toolbar/icons/_bootstrap5-dark.scss +1 -0
  767. package/styles/toolbar/icons/_bootstrap5.scss +16 -0
  768. package/styles/toolbar/icons/_fabric-dark.scss +16 -0
  769. package/styles/toolbar/icons/_fabric.scss +1 -1
  770. package/styles/toolbar/icons/_fluent-dark.scss +1 -0
  771. package/styles/toolbar/icons/_fluent.scss +16 -0
  772. package/styles/toolbar/icons/_fusionnew.scss +16 -0
  773. package/styles/toolbar/icons/_highcontrast-light.scss +16 -0
  774. package/styles/toolbar/icons/_highcontrast.scss +1 -1
  775. package/styles/toolbar/icons/_material-dark.scss +16 -0
  776. package/styles/toolbar/icons/_material.scss +1 -1
  777. package/styles/toolbar/icons/_material3.scss +16 -0
  778. package/styles/toolbar/icons/_tailwind-dark.scss +1 -0
  779. package/styles/toolbar/icons/_tailwind.scss +16 -0
  780. package/styles/toolbar/material-dark.css +747 -1010
  781. package/styles/toolbar/material-dark.scss +1 -0
  782. package/styles/toolbar/material.css +753 -1027
  783. package/styles/toolbar/material.scss +1 -0
  784. package/styles/toolbar/tailwind-dark.css +1082 -0
  785. package/styles/toolbar/tailwind-dark.scss +8 -0
  786. package/styles/toolbar/tailwind.css +1082 -0
  787. package/styles/toolbar/tailwind.scss +8 -0
  788. package/styles/treeview/_all.scss +1 -1
  789. package/styles/treeview/_bootstrap-dark-definition.scss +104 -117
  790. package/styles/treeview/_bootstrap-definition.scss +24 -38
  791. package/styles/treeview/_bootstrap4-definition.scss +141 -0
  792. package/styles/treeview/_bootstrap5-dark-definition.scss +1 -0
  793. package/styles/treeview/_bootstrap5-definition.scss +120 -0
  794. package/styles/treeview/_fabric-dark-definition.scss +102 -116
  795. package/styles/treeview/_fabric-definition.scss +24 -38
  796. package/styles/treeview/_fluent-dark-definition.scss +1 -0
  797. package/styles/treeview/_fluent-definition.scss +120 -0
  798. package/styles/treeview/_fusionnew-definition.scss +120 -0
  799. package/styles/treeview/_highcontrast-definition.scss +24 -38
  800. package/styles/treeview/_highcontrast-light-definition.scss +112 -126
  801. package/styles/treeview/_layout.scss +619 -28
  802. package/styles/treeview/_material-dark-definition.scss +104 -116
  803. package/styles/treeview/_material-definition.scss +25 -39
  804. package/styles/treeview/_tailwind-dark-definition.scss +1 -0
  805. package/styles/treeview/_tailwind-definition.scss +124 -0
  806. package/styles/treeview/_theme.scss +128 -27
  807. package/styles/treeview/bootstrap-dark.css +230 -172
  808. package/styles/treeview/bootstrap.css +230 -168
  809. package/styles/treeview/bootstrap4.css +829 -0
  810. package/styles/treeview/bootstrap4.scss +6 -0
  811. package/styles/treeview/bootstrap5-dark.css +847 -0
  812. package/styles/treeview/bootstrap5-dark.scss +6 -0
  813. package/styles/treeview/bootstrap5.css +847 -0
  814. package/styles/treeview/bootstrap5.scss +6 -0
  815. package/styles/treeview/fabric-dark.css +230 -168
  816. package/styles/treeview/fabric.css +230 -168
  817. package/styles/treeview/fluent-dark.css +852 -0
  818. package/styles/treeview/fluent-dark.scss +6 -0
  819. package/styles/treeview/fluent.css +852 -0
  820. package/styles/treeview/fluent.scss +6 -0
  821. package/styles/treeview/highcontrast-light.css +736 -0
  822. package/styles/treeview/highcontrast-light.scss +6 -0
  823. package/styles/treeview/highcontrast.css +230 -171
  824. package/styles/treeview/icons/_bootstrap-dark.scss +2 -2
  825. package/styles/treeview/icons/_bootstrap.scss +2 -2
  826. package/styles/treeview/icons/_bootstrap4.scss +39 -0
  827. package/styles/treeview/icons/_bootstrap5-dark.scss +1 -0
  828. package/styles/treeview/icons/_bootstrap5.scss +43 -0
  829. package/styles/treeview/icons/_fabric-dark.scss +2 -2
  830. package/styles/treeview/icons/_fabric.scss +2 -2
  831. package/styles/treeview/icons/_fluent-dark.scss +1 -0
  832. package/styles/treeview/icons/_fluent.scss +43 -0
  833. package/styles/treeview/icons/_fusionnew.scss +43 -0
  834. package/styles/treeview/icons/_highcontrast-light.scss +2 -2
  835. package/styles/treeview/icons/_highcontrast.scss +2 -2
  836. package/styles/treeview/icons/_material-dark.scss +2 -2
  837. package/styles/treeview/icons/_material.scss +2 -2
  838. package/styles/treeview/icons/_material3.scss +43 -0
  839. package/styles/treeview/icons/_tailwind-dark.scss +43 -0
  840. package/styles/treeview/icons/_tailwind.scss +43 -0
  841. package/styles/treeview/material-dark.css +242 -172
  842. package/styles/treeview/material.css +238 -167
  843. package/styles/treeview/tailwind-dark.css +840 -0
  844. package/styles/treeview/tailwind-dark.scss +6 -0
  845. package/styles/treeview/tailwind.css +840 -0
  846. package/styles/treeview/tailwind.scss +6 -0
  847. package/styles/v-scroll/_all.scss +1 -1
  848. package/styles/v-scroll/_bootstrap-dark-definition.scss +39 -38
  849. package/styles/v-scroll/_bootstrap-definition.scss +8 -8
  850. package/styles/v-scroll/_bootstrap4-definition.scss +49 -0
  851. package/styles/v-scroll/_bootstrap5-dark-definition.scss +1 -0
  852. package/styles/v-scroll/_bootstrap5-definition.scss +49 -0
  853. package/styles/v-scroll/_fabric-dark-definition.scss +41 -40
  854. package/styles/v-scroll/_fabric-definition.scss +10 -10
  855. package/styles/v-scroll/_fluent-dark-definition.scss +1 -0
  856. package/styles/v-scroll/_fluent-definition.scss +49 -0
  857. package/styles/v-scroll/_fusionnew-definition.scss +49 -0
  858. package/styles/v-scroll/_highcontrast-definition.scss +10 -11
  859. package/styles/v-scroll/_highcontrast-light-definition.scss +41 -41
  860. package/styles/v-scroll/_layout.scss +4 -4
  861. package/styles/v-scroll/_material-dark-definition.scss +46 -45
  862. package/styles/v-scroll/_material-definition.scss +10 -10
  863. package/styles/v-scroll/_tailwind-dark-definition.scss +1 -0
  864. package/styles/v-scroll/_tailwind-definition.scss +49 -0
  865. package/styles/v-scroll/_theme.scss +2 -27
  866. package/styles/v-scroll/bootstrap-dark.css +25 -51
  867. package/styles/v-scroll/bootstrap-dark.scss +1 -0
  868. package/styles/v-scroll/bootstrap.css +13 -58
  869. package/styles/v-scroll/bootstrap4.css +202 -0
  870. package/styles/v-scroll/bootstrap4.scss +4 -0
  871. package/styles/v-scroll/bootstrap5-dark.css +202 -0
  872. package/styles/v-scroll/bootstrap5-dark.scss +4 -0
  873. package/styles/v-scroll/bootstrap5.css +202 -0
  874. package/styles/v-scroll/bootstrap5.scss +4 -0
  875. package/styles/v-scroll/fabric-dark.css +26 -52
  876. package/styles/v-scroll/fabric-dark.scss +1 -0
  877. package/styles/v-scroll/fabric.css +14 -59
  878. package/styles/v-scroll/fluent-dark.css +202 -0
  879. package/styles/v-scroll/fluent-dark.scss +4 -0
  880. package/styles/v-scroll/fluent.css +202 -0
  881. package/styles/v-scroll/fluent.scss +4 -0
  882. package/styles/v-scroll/highcontrast-light.css +201 -0
  883. package/styles/v-scroll/highcontrast-light.scss +4 -0
  884. package/styles/v-scroll/highcontrast.css +14 -74
  885. package/styles/v-scroll/icons/_bootstrap-dark.scss +27 -0
  886. package/styles/v-scroll/icons/_bootstrap.scss +1 -1
  887. package/styles/v-scroll/icons/_bootstrap4.scss +27 -0
  888. package/styles/v-scroll/icons/_bootstrap5-dark.scss +1 -0
  889. package/styles/v-scroll/icons/_bootstrap5.scss +27 -0
  890. package/styles/v-scroll/icons/_fabric-dark.scss +27 -0
  891. package/styles/v-scroll/icons/_fabric.scss +3 -2
  892. package/styles/v-scroll/icons/_fluent-dark.scss +1 -0
  893. package/styles/v-scroll/icons/_fluent.scss +27 -0
  894. package/styles/v-scroll/icons/_fusionnew.scss +27 -0
  895. package/styles/v-scroll/icons/_highcontrast-light.scss +27 -0
  896. package/styles/v-scroll/icons/_highcontrast.scss +3 -2
  897. package/styles/v-scroll/{_icons.scss → icons/_material-dark.scss} +4 -3
  898. package/styles/v-scroll/icons/_material.scss +1 -0
  899. package/styles/v-scroll/icons/_material3.scss +27 -0
  900. package/styles/v-scroll/icons/_tailwind-dark.scss +1 -0
  901. package/styles/v-scroll/icons/_tailwind.scss +27 -0
  902. package/styles/v-scroll/material-dark.css +23 -50
  903. package/styles/v-scroll/material-dark.scss +1 -0
  904. package/styles/v-scroll/material.css +12 -58
  905. package/styles/v-scroll/tailwind-dark.css +203 -0
  906. package/styles/v-scroll/tailwind-dark.scss +4 -0
  907. package/styles/v-scroll/tailwind.css +203 -0
  908. package/styles/v-scroll/tailwind.scss +4 -0
  909. package/tslint.json +111 -0
  910. package/styles/toolbar/_icons.scss +0 -35
@@ -4,7 +4,7 @@ var __extends = (this && this.__extends) || (function () {
4
4
  ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
5
  function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
6
  return extendStatics(d, b);
7
- }
7
+ };
8
8
  return function (d, b) {
9
9
  extendStatics(d, b);
10
10
  function __() { this.constructor = d; }
@@ -17,14 +17,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
17
17
  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;
18
18
  return c > 3 && r && Object.defineProperty(target, key, r), r;
19
19
  };
20
- import { Component, isUndefined, Browser, compile } from '@syncfusion/ej2-base';
20
+ import { Component, isUndefined, Browser, compile, isNullOrUndefined } from '@syncfusion/ej2-base';
21
21
  import { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';
22
22
  import { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';
23
- import { rippleEffect, Animation } from '@syncfusion/ej2-base';
23
+ import { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';
24
24
  import { Draggable, Droppable } from '@syncfusion/ej2-base';
25
+ import { getElement } from '@syncfusion/ej2-base';
25
26
  import { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';
26
27
  import { DataManager, Query } from '@syncfusion/ej2-data';
27
- import { isNullOrUndefined as isNOU, Touch, getValue, setValue } from '@syncfusion/ej2-base';
28
+ import { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';
28
29
  import { ListBase } from '@syncfusion/ej2-lists';
29
30
  import { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';
30
31
  import { Input } from '@syncfusion/ej2-inputs';
@@ -35,6 +36,8 @@ var COLLAPSIBLE = 'e-icon-collapsible';
35
36
  var EXPANDABLE = 'e-icon-expandable';
36
37
  var LISTITEM = 'e-list-item';
37
38
  var LISTTEXT = 'e-list-text';
39
+ var LISTWRAP = 'e-text-wrap';
40
+ var IELISTWRAP = 'e-ie-wrap';
38
41
  var PARENTITEM = 'e-list-parent';
39
42
  var HOVER = 'e-hover';
40
43
  var ACTIVE = 'e-active';
@@ -47,6 +50,7 @@ var INPUTGROUP = 'e-input-group';
47
50
  var TREEINPUT = 'e-tree-input';
48
51
  var EDITING = 'e-editing';
49
52
  var RTL = 'e-rtl';
53
+ var INTERACTION = 'e-interaction';
50
54
  var DRAGITEM = 'e-drag-item';
51
55
  var DROPPABLE = 'e-droppable';
52
56
  var DRAGGING = 'e-dragging';
@@ -61,24 +65,28 @@ var SELECTED = 'e-selected';
61
65
  var EXPANDED = 'e-expanded';
62
66
  var NODECOLLAPSED = 'e-node-collapsed';
63
67
  var DISABLE = 'e-disable';
64
- var CONTENT = 'e-content';
65
- var DOWNTAIL = 'e-downtail';
66
68
  var DROPCOUNT = 'e-drop-count';
67
69
  var CHECK = 'e-check';
68
70
  var INDETERMINATE = 'e-stop';
69
71
  var CHECKBOXWRAP = 'e-checkbox-wrapper';
70
72
  var CHECKBOXFRAME = 'e-frame';
71
73
  var CHECKBOXRIPPLE = 'e-ripple-container';
74
+ var RIPPLE = 'e-ripple';
75
+ var RIPPLEELMENT = 'e-ripple-element';
72
76
  var FOCUS = 'e-node-focus';
73
77
  var IMAGE = 'e-list-img';
74
78
  var BIGGER = 'e-bigger';
75
79
  var SMALL = 'e-small';
80
+ var CHILD = 'e-has-child';
81
+ var ITEM_ANIMATION_ACTIVE = 'e-animation-active';
82
+ var DISABLED = 'e-disabled';
83
+ var PREVENTSELECT = 'e-prevent';
76
84
  var treeAriaAttr = {
77
- treeRole: 'tree',
85
+ treeRole: 'group',
78
86
  itemRole: 'treeitem',
79
87
  listRole: 'group',
80
88
  itemText: '',
81
- wrapperRole: '',
89
+ wrapperRole: ''
82
90
  };
83
91
  /**
84
92
  * Configures the fields to bind to the properties of node in the TreeView component.
@@ -121,6 +129,9 @@ var FieldsSettings = /** @class */ (function (_super) {
121
129
  __decorate([
122
130
  Property(null)
123
131
  ], FieldsSettings.prototype, "query", void 0);
132
+ __decorate([
133
+ Property('selectable')
134
+ ], FieldsSettings.prototype, "selectable", void 0);
124
135
  __decorate([
125
136
  Property('selected')
126
137
  ], FieldsSettings.prototype, "selected", void 0);
@@ -180,27 +191,41 @@ export { NodeAnimationSettings };
180
191
  * The TreeView component is used to represent hierarchical data in a tree like structure with advanced
181
192
  * functions to perform edit, drag and drop, selection with check-box, and more.
182
193
  * ```html
183
- * <div id="tree"></div>
194
+ * <div id="tree"></div>
184
195
  * ```
185
196
  * ```typescript
186
- * let treeObj: TreeView = new TreeView();
187
- * treeObj.appendTo('#tree');
197
+ * let treeObj: TreeView = new TreeView();
198
+ * treeObj.appendTo('#tree');
188
199
  * ```
189
200
  */
190
201
  var TreeView = /** @class */ (function (_super) {
191
202
  __extends(TreeView, _super);
192
203
  function TreeView(options, element) {
193
204
  var _this = _super.call(this, options, element) || this;
205
+ _this.isRefreshed = false;
194
206
  _this.preventExpand = false;
195
207
  _this.checkedElement = [];
196
208
  _this.disableNode = [];
209
+ // eslint-disable-next-line
210
+ _this.validArr = [];
211
+ _this.validNodes = [];
212
+ _this.expandChildren = [];
213
+ _this.isFieldChange = false;
214
+ _this.changeDataSource = false;
215
+ _this.hasTemplate = false;
216
+ _this.isFirstRender = false;
217
+ // Specifies whether the node is dropped or not
218
+ _this.isNodeDropped = false;
219
+ _this.isInteracted = false;
220
+ _this.isRightClick = false;
197
221
  _this.mouseDownStatus = false;
198
222
  return _this;
199
223
  }
200
224
  TreeView_1 = TreeView;
201
225
  /**
202
226
  * Get component name.
203
- * @returns string
227
+ *
228
+ * @returns {string} - returns module name.
204
229
  * @private
205
230
  */
206
231
  TreeView.prototype.getModuleName = function () {
@@ -208,10 +233,13 @@ var TreeView = /** @class */ (function (_super) {
208
233
  };
209
234
  /**
210
235
  * Initialize the event handler
236
+ *
237
+ * @returns {void}
211
238
  */
212
239
  TreeView.prototype.preRender = function () {
213
240
  var _this = this;
214
241
  this.checkActionNodes = [];
242
+ this.parentNodeCheck = [];
215
243
  this.dragStartAction = false;
216
244
  this.isAnimate = false;
217
245
  this.keyConfigs = {
@@ -241,6 +269,8 @@ var TreeView = /** @class */ (function (_super) {
241
269
  csHome: 'ctrl+shift+home',
242
270
  csEnd: 'ctrl+shift+end',
243
271
  space: 'space',
272
+ shiftSpace: 'shift+space',
273
+ ctrlSpace: 'ctrl+space'
244
274
  };
245
275
  this.listBaseOption = {
246
276
  expandCollapse: true,
@@ -251,12 +281,15 @@ var TreeView = /** @class */ (function (_super) {
251
281
  itemCreated: function (e) {
252
282
  _this.beforeNodeCreate(e);
253
283
  },
284
+ enableHtmlSanitizer: this.enableHtmlSanitizer,
285
+ itemNavigable: this.fullRowNavigable
254
286
  };
255
287
  this.updateListProp(this.fields);
256
288
  this.aniObj = new Animation({});
257
289
  this.treeList = [];
258
290
  this.isLoaded = false;
259
291
  this.isInitalExpand = false;
292
+ this.expandChildren = [];
260
293
  this.index = 0;
261
294
  this.setTouchClass();
262
295
  if (isNOU(this.selectedNodes)) {
@@ -274,7 +307,8 @@ var TreeView = /** @class */ (function (_super) {
274
307
  };
275
308
  /**
276
309
  * Get the properties to be maintained in the persisted state.
277
- * @returns string
310
+ *
311
+ * @returns {string} - returns the persisted data
278
312
  * @hidden
279
313
  */
280
314
  TreeView.prototype.getPersistData = function () {
@@ -283,30 +317,46 @@ var TreeView = /** @class */ (function (_super) {
283
317
  };
284
318
  /**
285
319
  * To Initialize the control rendering
320
+ *
286
321
  * @private
322
+ * @returns {void}
287
323
  */
288
324
  TreeView.prototype.render = function () {
289
325
  this.initialRender = true;
290
326
  this.initialize();
291
- this.setDataBinding();
327
+ this.setDataBinding(false);
328
+ this.setDisabledMode();
292
329
  this.setExpandOnType();
293
- this.setRipple();
330
+ if (!this.disabled) {
331
+ this.setRipple();
332
+ }
294
333
  this.wireEditingEvents(this.allowEditing);
295
334
  this.setDragAndDrop(this.allowDragAndDrop);
296
- this.wireEvents();
335
+ if (!this.disabled) {
336
+ this.wireEvents();
337
+ }
297
338
  this.initialRender = false;
339
+ this.renderComplete();
298
340
  };
299
341
  TreeView.prototype.initialize = function () {
300
342
  this.element.setAttribute('role', 'tree');
301
- this.element.setAttribute('tabindex', '0');
302
343
  this.element.setAttribute('aria-activedescendant', this.element.id + '_active');
303
344
  this.setCssClass(null, this.cssClass);
304
345
  this.setEnableRtl();
305
346
  this.setFullRow(this.fullRowSelect);
347
+ this.setTextWrap();
306
348
  this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);
307
349
  };
350
+ TreeView.prototype.setDisabledMode = function () {
351
+ if (this.disabled) {
352
+ this.element.classList.add(DISABLED);
353
+ }
354
+ else {
355
+ this.element.classList.remove(DISABLED);
356
+ }
357
+ };
308
358
  TreeView.prototype.setEnableRtl = function () {
309
- this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);
359
+ (this.enableRtl ? addClass : removeClass)([this.element], RTL);
310
360
  };
311
361
  TreeView.prototype.setRipple = function () {
312
362
  var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;
@@ -317,12 +367,12 @@ var TreeView = /** @class */ (function (_super) {
317
367
  this.rippleFn = rippleEffect(this.element, rippleModel);
318
368
  var iconModel = {
319
369
  selector: '.' + TEXTWRAP + ' > .' + ICON,
320
- isCenterRipple: true,
370
+ isCenterRipple: true
321
371
  };
322
372
  this.rippleIconFn = rippleEffect(this.element, iconModel);
323
373
  };
324
374
  TreeView.prototype.setFullRow = function (isEnabled) {
325
- isEnabled ? addClass([this.element], FULLROWWRAP) : removeClass([this.element], FULLROWWRAP);
375
+ (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);
326
376
  };
327
377
  TreeView.prototype.setMultiSelect = function (isEnabled) {
328
378
  var firstUl = select('.' + PARENTITEM, this.element);
@@ -333,27 +383,39 @@ var TreeView = /** @class */ (function (_super) {
333
383
  firstUl.removeAttribute('aria-multiselectable');
334
384
  }
335
385
  };
386
+ // eslint-disable-next-line
336
387
  TreeView.prototype.templateComplier = function (template) {
337
388
  if (template) {
389
+ this.hasTemplate = true;
390
+ // eslint-disable-next-line
338
391
  var e = void 0;
392
+ this.element.classList.add(INTERACTION);
339
393
  try {
340
394
  if (document.querySelectorAll(template).length) {
341
395
  return compile(document.querySelector(template).innerHTML.trim());
342
396
  }
397
+ else {
398
+ return compile(template);
399
+ }
343
400
  }
344
401
  catch (e) {
345
402
  return compile(template);
346
403
  }
347
404
  }
405
+ this.element.classList.remove(INTERACTION);
348
406
  return undefined;
349
407
  };
350
- TreeView.prototype.setDataBinding = function () {
408
+ TreeView.prototype.setDataBinding = function (changeDataSource) {
351
409
  var _this = this;
352
410
  this.treeList.push('false');
353
411
  if (this.fields.dataSource instanceof DataManager) {
412
+ /* eslint-disable */
413
+ this.isOffline = this.fields.dataSource.dataSource.offline;
354
414
  if (this.fields.dataSource.ready) {
355
415
  this.fields.dataSource.ready.then(function (e) {
356
- if (_this.fields.dataSource instanceof DataManager && _this.fields.dataSource.dataSource.offline) {
416
+ /* eslint-disable */
417
+ _this.isOffline = _this.fields.dataSource.dataSource.offline;
418
+ if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {
357
419
  _this.treeList.pop();
358
420
  _this.treeData = e.result;
359
421
  _this.isNumberTypeId = _this.getType();
@@ -363,6 +425,8 @@ var TreeView = /** @class */ (function (_super) {
363
425
  _this.finalize();
364
426
  }
365
427
  }
428
+ }).catch(function (e) {
429
+ _this.trigger('actionFailure', { error: e });
366
430
  });
367
431
  }
368
432
  else {
@@ -371,10 +435,16 @@ var TreeView = /** @class */ (function (_super) {
371
435
  _this.treeData = e.result;
372
436
  _this.isNumberTypeId = _this.getType();
373
437
  _this.setRootData();
438
+ if (changeDataSource) {
439
+ _this.changeDataSource = true;
440
+ }
374
441
  _this.renderItems(true);
442
+ _this.changeDataSource = false;
375
443
  if (_this.treeList.length === 0 && !_this.isLoaded) {
376
444
  _this.finalize();
377
445
  }
446
+ }).catch(function (e) {
447
+ _this.trigger('actionFailure', { error: e });
378
448
  });
379
449
  }
380
450
  }
@@ -404,7 +474,7 @@ var TreeView = /** @class */ (function (_super) {
404
474
  for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {
405
475
  var col = _a[_i];
406
476
  if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]
407
- && columns.indexOf(mapper[col]) === -1) {
477
+ && col !== 'url' && columns.indexOf(mapper[col]) === -1) {
408
478
  columns.push(mapper[col]);
409
479
  }
410
480
  }
@@ -442,24 +512,244 @@ var TreeView = /** @class */ (function (_super) {
442
512
  }
443
513
  };
444
514
  TreeView.prototype.renderItems = function (isSorted) {
515
+ /* eslint-disable */
445
516
  this.listBaseOption.ariaAttributes.level = 1;
446
- this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : this.getSortedData(this.rootData), this.listBaseOption);
517
+ var sortedData = this.getSortedData(this.rootData);
518
+ this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);
447
519
  this.element.appendChild(this.ulElement);
520
+ var rootNodes = this.ulElement.querySelectorAll('.e-list-item');
448
521
  if (this.loadOnDemand === false) {
449
- var rootNodes = this.ulElement.querySelectorAll('.e-list-item');
450
522
  var i = 0;
451
523
  while (i < rootNodes.length) {
452
524
  this.renderChildNodes(rootNodes[i], true, null, true);
453
525
  i++;
454
526
  }
455
527
  }
456
- else {
528
+ var parentEle = selectAll('.' + PARENTITEM, this.element);
529
+ if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {
457
530
  this.finalizeNode(this.element);
458
531
  }
532
+ this.parentNodeCheck = [];
533
+ this.parentCheckData = [];
534
+ this.updateCheckedStateFromDS();
535
+ if (this.autoCheck && this.showCheckBox && !this.isLoaded) {
536
+ this.updateParentCheckState();
537
+ }
538
+ };
539
+ /**
540
+ * Update the checkedNodes from datasource at initial rendering
541
+ */
542
+ TreeView.prototype.updateCheckedStateFromDS = function (id) {
543
+ this.validNodes = [];
544
+ if (this.treeData && this.showCheckBox) {
545
+ if (this.dataType === 1) {
546
+ var mapper = this.fields;
547
+ var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));
548
+ for (var i = 0; i < resultData.length; i++) {
549
+ var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;
550
+ var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;
551
+ if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {
552
+ this.checkedNodes.push(resultId);
553
+ }
554
+ if (resultData[i][this.fields.hasChildren]) {
555
+ var id_1 = resultData[i][this.fields.id];
556
+ var childData = new DataManager(this.treeData).
557
+ executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));
558
+ for (var child = 0; child < childData.length; child++) {
559
+ var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;
560
+ if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {
561
+ this.checkedNodes.push(childId);
562
+ }
563
+ }
564
+ }
565
+ }
566
+ for (var i = 0; i < this.checkedNodes.length; i++) {
567
+ var mapper_1 = this.fields;
568
+ var checkState = new DataManager(this.treeData).
569
+ executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));
570
+ if (checkState[0] && this.autoCheck) {
571
+ this.getCheckedNodeDetails(mapper_1, checkState);
572
+ this.checkIndeterminateState(checkState[0]);
573
+ }
574
+ if (checkState.length > 0) {
575
+ var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;
576
+ if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {
577
+ this.validNodes.push(checkedId);
578
+ }
579
+ }
580
+ var checkedData = new DataManager(this.treeData).
581
+ executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));
582
+ for (var index = 0; index < checkedData.length; index++) {
583
+ var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;
584
+ if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {
585
+ this.checkedNodes.push(checkedId);
586
+ }
587
+ if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {
588
+ this.validNodes.push(checkedId);
589
+ }
590
+ }
591
+ }
592
+ }
593
+ else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&
594
+ this.isOffline)) {
595
+ for (var index = 0; index < this.treeData.length; index++) {
596
+ var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';
597
+ if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {
598
+ this.checkedNodes.push(fieldId);
599
+ }
600
+ if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {
601
+ this.validNodes.push(fieldId);
602
+ }
603
+ var childItems = getValue(this.fields.child.toString(), this.treeData[index]);
604
+ if (childItems) {
605
+ this.updateChildCheckState(childItems, this.treeData[index]);
606
+ }
607
+ }
608
+ this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;
609
+ }
610
+ this.setProperties({ checkedNodes: this.validNodes }, true);
611
+ }
612
+ };
613
+ /**
614
+ * To check whether the list data has sub child and to change the parent check state accordingly
615
+ */
616
+ TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {
617
+ var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;
618
+ var count = 0;
619
+ var element = this.element.querySelector('[data-uid="' + checkNodes[0][this.fields.id] + '"]');
620
+ var parentEle = this.element.querySelector('[data-uid="' + checkNodes[0][this.fields.parentID] + '"]');
621
+ if (!element && !parentEle) {
622
+ var len = this.parentNodeCheck.length;
623
+ if (this.parentNodeCheck.indexOf(id) === -1) {
624
+ this.parentNodeCheck.push(id);
625
+ }
626
+ var childNodes = this.getChildNodes(this.treeData, id);
627
+ for (var i = 0; i < childNodes.length; i++) {
628
+ var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;
629
+ if (this.checkedNodes.indexOf(childId) !== -1) {
630
+ count++;
631
+ }
632
+ if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {
633
+ this.checkedNodes.push(id);
634
+ }
635
+ }
636
+ var preElement = new DataManager(this.treeData).
637
+ executeLocal(new Query().where(mapper.id, 'equal', id, true));
638
+ this.getCheckedNodeDetails(mapper, preElement);
639
+ }
640
+ else if (parentEle) {
641
+ var check = select('.' + CHECK, parentEle);
642
+ if (!check) {
643
+ this.changeState(parentEle, 'indeterminate', null, true, true);
644
+ }
645
+ }
646
+ };
647
+ /**
648
+ * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering
649
+ */
650
+ TreeView.prototype.updateParentCheckState = function () {
651
+ var indeterminate = selectAll('.' + INDETERMINATE, this.element);
652
+ var childCheckedElement;
653
+ for (var i = 0; i < indeterminate.length; i++) {
654
+ var node = closest(indeterminate[i], '.' + LISTITEM);
655
+ var nodeId = node.getAttribute('data-uid').toString();
656
+ if (this.dataType === 1) {
657
+ childCheckedElement = new DataManager(this.treeData).
658
+ executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));
659
+ }
660
+ else {
661
+ childCheckedElement = this.getChildNodes(this.treeData, nodeId);
662
+ }
663
+ var count = 0;
664
+ if (childCheckedElement) {
665
+ for (var j = 0; j < childCheckedElement.length; j++) {
666
+ var childId = childCheckedElement[j][this.fields.id].toString();
667
+ if (this.checkedNodes.indexOf(childId) !== -1) {
668
+ count++;
669
+ }
670
+ }
671
+ if (count === childCheckedElement.length) {
672
+ var nodeCheck = node.getAttribute('data-uid');
673
+ if (this.checkedNodes.indexOf(nodeCheck) === -1) {
674
+ this.checkedNodes.push(nodeCheck);
675
+ }
676
+ this.changeState(node, 'check', null, true, true);
677
+ }
678
+ else if (count === 0 && this.checkedNodes.length === 0) {
679
+ this.changeState(node, 'uncheck', null, true, true);
680
+ }
681
+ }
682
+ }
683
+ };
684
+ /**
685
+ * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM
686
+ */
687
+ TreeView.prototype.checkIndeterminateState = function (data) {
688
+ var element;
689
+ if (this.dataType === 1) {
690
+ element = this.element.querySelector('[data-uid="' + data[this.fields.parentID] + '"]');
691
+ }
692
+ else {
693
+ element = this.element.querySelector('[data-uid="' + data[this.fields.id] + '"]');
694
+ }
695
+ if (element) {
696
+ var ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');
697
+ if (ariaChecked !== 'true') {
698
+ this.changeState(element, 'indeterminate', null, true, true);
699
+ }
700
+ }
701
+ else if (this.dataType === 2) {
702
+ var len = this.parentNodeCheck.length;
703
+ if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {
704
+ this.parentNodeCheck.push(data[this.fields.id].toString());
705
+ }
706
+ }
707
+ };
708
+ /**
709
+ * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering
710
+ */
711
+ TreeView.prototype.updateChildCheckState = function (childItems, treeData) {
712
+ var count = 0;
713
+ var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';
714
+ for (var index = 0; index < childItems.length; index++) {
715
+ var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';
716
+ if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {
717
+ this.checkedNodes.push(checkedChild);
718
+ }
719
+ if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {
720
+ this.checkedNodes.push(checkedChild);
721
+ }
722
+ if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {
723
+ count++;
724
+ }
725
+ if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {
726
+ this.validNodes.push(checkedChild);
727
+ }
728
+ var subChildItems = getValue(this.fields.child.toString(), childItems[index]);
729
+ if (subChildItems && subChildItems.length) {
730
+ if (this.parentCheckData.indexOf(treeData) === -1)
731
+ this.parentCheckData.push(treeData);
732
+ this.updateChildCheckState(subChildItems, childItems[index]);
733
+ }
734
+ if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {
735
+ this.checkedNodes.push(checkedParent);
736
+ }
737
+ }
738
+ if (count !== 0 && this.autoCheck) {
739
+ this.checkIndeterminateState(treeData);
740
+ for (var len = 0; len < this.parentCheckData.length; len++) {
741
+ if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {
742
+ this.checkIndeterminateState(this.parentCheckData[len]);
743
+ }
744
+ }
745
+ }
746
+ this.parentCheckData = [];
459
747
  };
460
748
  TreeView.prototype.beforeNodeCreate = function (e) {
461
749
  if (this.showCheckBox) {
462
750
  var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });
751
+ checkboxEle.setAttribute('role', 'checkbox');
752
+ checkboxEle.setAttribute('aria-label', 'checkbox');
463
753
  var icon = select('div.' + ICON, e.item);
464
754
  var id = e.item.getAttribute('data-uid');
465
755
  e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);
@@ -490,17 +780,26 @@ var TreeView = /** @class */ (function (_super) {
490
780
  var fields = e.fields;
491
781
  this.addActionClass(e, fields.selected, SELECTED);
492
782
  this.addActionClass(e, fields.expanded, EXPANDED);
783
+ e.item.setAttribute("tabindex", "-1");
784
+ EventHandler.add(e.item, 'focus', this.focusIn, this);
493
785
  if (!isNOU(this.nodeTemplateFn)) {
494
786
  var textEle = e.item.querySelector('.' + LISTTEXT);
787
+ var dataId = e.item.getAttribute('data-uid');
495
788
  textEle.innerHTML = '';
496
- append(this.nodeTemplateFn(e.curData), textEle);
789
+ this.renderNodeTemplate(e.curData, textEle, dataId);
497
790
  }
498
791
  var eventArgs = {
499
792
  node: e.item,
500
793
  nodeData: e.curData,
501
794
  text: e.text,
502
795
  };
503
- this.trigger('drawNode', eventArgs);
796
+ if (!this.isRefreshed) {
797
+ this.trigger('drawNode', eventArgs);
798
+ if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {
799
+ e.item.classList.add(PREVENTSELECT);
800
+ e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');
801
+ }
802
+ }
504
803
  };
505
804
  TreeView.prototype.frameMouseHandler = function (e) {
506
805
  var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);
@@ -516,7 +815,12 @@ var TreeView = /** @class */ (function (_super) {
516
815
  TreeView.prototype.getDataType = function (ds, mapper) {
517
816
  if (this.fields.dataSource instanceof DataManager) {
518
817
  for (var i = 0; i < ds.length; i++) {
519
- if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {
818
+ if (this.isOffline) {
819
+ if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i])) && !isNOU(getValue(mapper.parentID, ds[i]))) {
820
+ return 1;
821
+ }
822
+ }
823
+ else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {
520
824
  return 1;
521
825
  }
522
826
  }
@@ -581,16 +885,9 @@ var TreeView = /** @class */ (function (_super) {
581
885
  }
582
886
  };
583
887
  TreeView.prototype.updateCheckedProp = function () {
584
- var _this = this;
585
888
  if (this.showCheckBox) {
586
- var nodes_1 = [].concat([], this.checkedNodes);
587
- this.checkedNodes.forEach(function (value, index) {
588
- var checkBox = _this.element.querySelector('[data-uid="' + value + '"]');
589
- if (isNOU(checkBox)) {
590
- nodes_1 = nodes_1.filter(function (e) { return e !== value; });
591
- }
592
- });
593
- this.setProperties({ checkedNodes: nodes_1 }, true);
889
+ var nodes = [].concat([], this.checkedNodes);
890
+ this.setProperties({ checkedNodes: nodes }, true);
594
891
  }
595
892
  };
596
893
  TreeView.prototype.ensureIndeterminate = function () {
@@ -626,12 +923,13 @@ var TreeView = /** @class */ (function (_super) {
626
923
  ulElement = select('.' + PARENTITEM, element);
627
924
  }
628
925
  var checkedNodes = selectAll('.' + CHECK, ulElement);
926
+ var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);
629
927
  var nodes = selectAll('.' + LISTITEM, ulElement);
630
928
  var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];
631
929
  if (nodes.length === checkedNodes.length) {
632
930
  this.changeState(checkBoxEle, 'check', null, true, true);
633
931
  }
634
- else if (checkedNodes.length > 0) {
932
+ else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {
635
933
  this.changeState(checkBoxEle, 'indeterminate', null, true, true);
636
934
  }
637
935
  else if (checkedNodes.length === 0) {
@@ -651,28 +949,97 @@ var TreeView = /** @class */ (function (_super) {
651
949
  if (!isNOU(childElement)) {
652
950
  checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);
653
951
  var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);
952
+ var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);
953
+ var childCheck = childElement.querySelectorAll('li');
954
+ var expandState = childElement.parentElement.getAttribute('aria-expanded');
654
955
  var checkedState = void 0;
655
956
  for (var index = 0; index < checkBoxes.length; index++) {
957
+ var childId = childCheck[index].getAttribute('data-uid');
656
958
  if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {
657
959
  checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';
658
960
  if (this.ele !== -1) {
659
961
  checkedState = isChecked ? 'check' : 'uncheck';
660
962
  }
963
+ if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck
964
+ && this.parentNodeCheck.indexOf(childId) !== -1)) {
965
+ this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);
966
+ checkedState = 'indeterminate';
967
+ }
661
968
  }
662
969
  else {
663
970
  var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);
664
- checkedState = (!this.isLoaded && isNodeChecked) ? 'check' : (isChecked ? 'check' : 'uncheck');
971
+ if (isChecked) {
972
+ checkedState = 'check';
973
+ }
974
+ else if (isNodeChecked && !this.isLoaded) {
975
+ checkedState = 'check';
976
+ }
977
+ else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {
978
+ checkedState = 'check';
979
+ }
980
+ else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck
981
+ && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {
982
+ checkedState = 'indeterminate';
983
+ this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);
984
+ }
985
+ else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&
986
+ (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {
987
+ checkedState = 'indeterminate';
988
+ this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);
989
+ }
990
+ else {
991
+ checkedState = 'uncheck';
992
+ }
665
993
  }
666
994
  this.changeState(checkBoxes[index], checkedState, e, true, true);
667
995
  }
668
996
  }
997
+ if (this.autoCheck && this.isLoaded) {
998
+ this.updateParentCheckState();
999
+ }
669
1000
  }
670
1001
  };
671
1002
  TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {
1003
+ var li = selectAll('.' + LISTITEM, this.element);
672
1004
  if (!isNOU(nodes)) {
673
- for (var i = 0, len = nodes.length; i < len; i++) {
674
- var liEle = this.getElement(nodes[i]);
1005
+ for (var len = nodes.length; len >= 0; len--) {
1006
+ var liEle = void 0;
1007
+ if (nodes.length === 1) {
1008
+ liEle = this.getElement(nodes[len - 1]);
1009
+ }
1010
+ else {
1011
+ liEle = this.getElement(nodes[len]);
1012
+ }
675
1013
  if (isNOU(liEle)) {
1014
+ var node = void 0;
1015
+ node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[len] ? nodes[len].toString() : null;
1016
+ if (node !== '' && doCheck && node) {
1017
+ this.setValidCheckedNode(node);
1018
+ this.dynamicCheckState(node, doCheck);
1019
+ }
1020
+ else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {
1021
+ this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);
1022
+ var childItems = this.getChildNodes(this.treeData, node);
1023
+ if (childItems) {
1024
+ for (var i = 0; i < childItems.length; i++) {
1025
+ var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;
1026
+ if (this.checkedNodes.indexOf(id) !== -1) {
1027
+ this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);
1028
+ var ele = this.element.querySelector('[data-uid="' + id + '"]');
1029
+ if (ele) {
1030
+ this.changeState(ele, 'uncheck', null);
1031
+ }
1032
+ }
1033
+ }
1034
+ if (this.parentNodeCheck.indexOf(node) !== -1) {
1035
+ this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);
1036
+ }
1037
+ }
1038
+ if (node) {
1039
+ this.dynamicCheckState(node, doCheck);
1040
+ }
1041
+ this.updateField(this.treeData, this.fields, node, 'isChecked', null);
1042
+ }
676
1043
  continue;
677
1044
  }
678
1045
  var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);
@@ -681,23 +1048,236 @@ var TreeView = /** @class */ (function (_super) {
681
1048
  }
682
1049
  else {
683
1050
  var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);
684
- for (var index = 0; index < checkBoxes.length; index++) {
685
- this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');
1051
+ if (this.loadOnDemand) {
1052
+ for (var index = 0; index < checkBoxes.length; index++) {
1053
+ this.updateFieldChecked(checkBoxes[index], doCheck);
1054
+ this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);
1055
+ }
1056
+ }
1057
+ else {
1058
+ for (var index = 0; index < checkBoxes.length; index++) {
1059
+ this.updateFieldChecked(checkBoxes[index], doCheck);
1060
+ this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');
1061
+ }
686
1062
  }
687
1063
  }
1064
+ if (nodes) {
1065
+ for (var j = 0; j < nodes.length; j++) {
1066
+ var node = nodes[j] ? nodes[j].toString() : '';
1067
+ if (!doCheck) {
1068
+ this.updateField(this.treeData, this.fields, node, 'isChecked', null);
1069
+ }
1070
+ }
1071
+ }
1072
+ if (this.autoCheck) {
1073
+ this.updateParentCheckState();
1074
+ }
688
1075
  };
689
- TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd) {
690
- var ariaState;
1076
+ TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {
1077
+ var currLi = closest(checkbox, '.' + LISTITEM);
1078
+ var id = currLi.getAttribute('data-uid');
1079
+ var nodeDetails = this.getNodeData(currLi);
1080
+ if (nodeDetails.isChecked === 'true' && !doCheck) {
1081
+ this.updateField(this.treeData, this.fields, id, 'isChecked', null);
1082
+ }
1083
+ };
1084
+ /**
1085
+ * Changes the parent and child check state while changing the checkedNodes via setmodel
1086
+ */
1087
+ TreeView.prototype.dynamicCheckState = function (node, doCheck) {
1088
+ if (this.dataType === 1) {
1089
+ var count = 0;
1090
+ var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));
1091
+ if (resultId[0]) {
1092
+ var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;
1093
+ var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;
1094
+ var parentElement = this.element.querySelector('[data-uid="' + parent_1 + '"]');
1095
+ var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;
1096
+ var check = parentElement ? select('.' + CHECK, parentElement) : null;
1097
+ var element = this.element.querySelector('[data-uid="' + id + '"]');
1098
+ var childNodes = this.getChildNodes(this.treeData, parent_1);
1099
+ if (childNodes) {
1100
+ for (var i = 0; i < childNodes.length; i++) {
1101
+ var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;
1102
+ if (this.checkedNodes.indexOf(childId) !== -1) {
1103
+ count++;
1104
+ }
1105
+ }
1106
+ }
1107
+ if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {
1108
+ this.changeState(parentElement, 'indeterminate', null);
1109
+ }
1110
+ else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {
1111
+ this.changeState(element, 'uncheck', null);
1112
+ }
1113
+ else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {
1114
+ this.changeState(element, 'check', null);
1115
+ }
1116
+ else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck
1117
+ && count !== 0) {
1118
+ this.changeState(parentElement, 'indeterminate', null);
1119
+ }
1120
+ else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck
1121
+ && count === 0) {
1122
+ this.changeState(parentElement, 'uncheck', null);
1123
+ }
1124
+ else if (!element && !parentElement && (id === node) && this.autoCheck) {
1125
+ this.updateIndeterminate(node, doCheck);
1126
+ }
1127
+ }
1128
+ }
1129
+ else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&
1130
+ this.isOffline)) {
1131
+ var id = void 0;
1132
+ var parentElement = void 0;
1133
+ var check = void 0;
1134
+ for (var i = 0; i < this.treeData.length; i++) {
1135
+ id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';
1136
+ parentElement = this.element.querySelector('[data-uid="' + id + '"]');
1137
+ check = parentElement ? select('.' + CHECK, parentElement) : null;
1138
+ if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {
1139
+ this.changeState(parentElement, 'uncheck', null);
1140
+ }
1141
+ var subChild = getValue(this.fields.child.toString(), this.treeData[i]);
1142
+ if (subChild) {
1143
+ this.updateChildIndeterminate(subChild, id, node, doCheck, id);
1144
+ }
1145
+ }
1146
+ }
1147
+ };
1148
+ /**
1149
+ * updates the parent and child check state while changing the checkedNodes via setmodel for listData
1150
+ */
1151
+ TreeView.prototype.updateIndeterminate = function (node, doCheck) {
1152
+ var indeterminateData = this.getTreeData(node);
1153
+ var count = 0;
1154
+ var parent;
1155
+ if (this.dataType === 1) {
1156
+ parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;
1157
+ }
1158
+ var childNodes = this.getChildNodes(this.treeData, parent);
1159
+ if (childNodes) {
1160
+ for (var i = 0; i < childNodes.length; i++) {
1161
+ var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;
1162
+ if (this.checkedNodes.indexOf(childId) !== -1) {
1163
+ count++;
1164
+ }
1165
+ }
1166
+ }
1167
+ var parentElement = this.element.querySelector('[data-uid="' + parent + '"]');
1168
+ if (parentElement && doCheck) {
1169
+ this.changeState(parentElement, 'indeterminate', null);
1170
+ }
1171
+ else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {
1172
+ this.changeState(parentElement, 'indeterminate', null);
1173
+ }
1174
+ else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {
1175
+ this.changeState(parentElement, 'uncheck', null);
1176
+ }
1177
+ else if (!parentElement) {
1178
+ if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {
1179
+ this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);
1180
+ }
1181
+ else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {
1182
+ this.parentNodeCheck.push(parent);
1183
+ }
1184
+ else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1
1185
+ && count !== 0) {
1186
+ this.parentNodeCheck.push(parent);
1187
+ }
1188
+ this.updateIndeterminate(parent, doCheck);
1189
+ if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {
1190
+ this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);
1191
+ }
1192
+ }
1193
+ };
1194
+ /**
1195
+ * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data
1196
+ */
1197
+ TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {
1198
+ var count = 0;
1199
+ for (var j = 0; j < subChild.length; j++) {
1200
+ var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';
1201
+ if (this.checkedNodes.indexOf(subId) !== -1) {
1202
+ count++;
1203
+ }
1204
+ var parentElement = this.element.querySelector('[data-uid="' + parent + '"]');
1205
+ var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;
1206
+ var check = parentElement ? select('.' + CHECK, parentElement) : null;
1207
+ var element = this.element.querySelector('[data-uid="' + subId + '"]');
1208
+ var childElementCheck = element ? select('.' + CHECK, element) : null;
1209
+ if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {
1210
+ this.changeState(parentElement, 'indeterminate', null);
1211
+ }
1212
+ else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {
1213
+ if (this.autoCheck) {
1214
+ this.changeState(parentElement, 'uncheck', null);
1215
+ }
1216
+ else {
1217
+ if (count !== 0) {
1218
+ this.changeState(parentElement, 'indeterminate', null);
1219
+ }
1220
+ else {
1221
+ this.changeState(parentElement, 'uncheck', null);
1222
+ }
1223
+ }
1224
+ }
1225
+ else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {
1226
+ this.changeState(element, 'uncheck', null);
1227
+ }
1228
+ else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0
1229
+ && !doCheck) {
1230
+ indeterminate.classList.remove(INDETERMINATE);
1231
+ }
1232
+ else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {
1233
+ this.changeState(parentElement, 'uncheck', null);
1234
+ }
1235
+ else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {
1236
+ this.changeState(element, 'uncheck', null);
1237
+ }
1238
+ else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {
1239
+ var childElement = this.element.querySelector('[data-uid="' + child + '"]');
1240
+ if (doCheck && count !== 0) {
1241
+ this.changeState(childElement, 'indeterminate', null);
1242
+ }
1243
+ else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {
1244
+ this.checkedNodes.push(parent);
1245
+ }
1246
+ else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {
1247
+ this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));
1248
+ }
1249
+ if (this.parentNodeCheck.indexOf(parent) === -1) {
1250
+ this.parentNodeCheck.push(parent);
1251
+ }
1252
+ }
1253
+ var innerChild = getValue(this.fields.child.toString(), subChild[j]);
1254
+ if (innerChild) {
1255
+ this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);
1256
+ }
1257
+ }
1258
+ };
1259
+ TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {
1260
+ var _this = this;
691
1261
  var eventArgs;
692
1262
  var currLi = closest(wrapper, '.' + LISTITEM);
1263
+ if (wrapper === currLi) {
1264
+ wrapper = select('.' + CHECKBOXWRAP, currLi);
1265
+ }
693
1266
  if (!isPrevent) {
694
1267
  this.checkActionNodes = [];
695
1268
  eventArgs = this.getCheckEvent(currLi, state, e);
696
- this.trigger('nodeChecking', eventArgs);
697
- if (eventArgs.cancel) {
698
- return;
699
- }
1269
+ this.trigger('nodeChecking', eventArgs, function (observedArgs) {
1270
+ if (!observedArgs.cancel) {
1271
+ _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);
1272
+ }
1273
+ });
1274
+ }
1275
+ else {
1276
+ this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);
700
1277
  }
1278
+ };
1279
+ TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {
1280
+ var ariaState;
701
1281
  var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];
702
1282
  if (state === 'check' && !frameSpan.classList.contains(CHECK)) {
703
1283
  frameSpan.classList.remove(INDETERMINATE);
@@ -710,7 +1290,7 @@ var TreeView = /** @class */ (function (_super) {
710
1290
  this.removeCheck(currLi);
711
1291
  ariaState = 'false';
712
1292
  }
713
- else if (state === 'indeterminate' && !frameSpan.classList.contains(INDETERMINATE) && this.autoCheck) {
1293
+ else if (state === 'indeterminate' && this.autoCheck) {
714
1294
  frameSpan.classList.remove(CHECK);
715
1295
  frameSpan.classList.add(INDETERMINATE);
716
1296
  this.removeCheck(currLi);
@@ -727,6 +1307,9 @@ var TreeView = /** @class */ (function (_super) {
727
1307
  eventArgs.data = data;
728
1308
  }
729
1309
  }
1310
+ if (doCheck !== undefined) {
1311
+ this.ensureStateChange(currLi, doCheck);
1312
+ }
730
1313
  if (!isPrevent) {
731
1314
  if (!isNOU(ariaState)) {
732
1315
  wrapper.setAttribute('aria-checked', ariaState);
@@ -755,20 +1338,49 @@ var TreeView = /** @class */ (function (_super) {
755
1338
  };
756
1339
  TreeView.prototype.finalize = function () {
757
1340
  var firstUl = select('.' + PARENTITEM, this.element);
758
- firstUl.setAttribute('role', treeAriaAttr.treeRole);
759
- this.setMultiSelect(this.allowMultiSelection);
760
- var firstNode = select('.' + LISTITEM, this.element);
761
- if (firstNode) {
762
- addClass([firstNode], FOCUS);
763
- this.updateIdAttr(null, firstNode);
1341
+ if (!isNullOrUndefined(firstUl)) {
1342
+ firstUl.setAttribute('role', treeAriaAttr.treeRole);
1343
+ this.setMultiSelect(this.allowMultiSelection);
1344
+ var firstNode = select('.' + LISTITEM, this.element);
1345
+ if (firstNode) {
1346
+ firstNode.setAttribute('tabindex', '0');
1347
+ this.updateIdAttr(null, firstNode);
1348
+ }
1349
+ if (this.allowTextWrap) {
1350
+ this.updateWrap();
1351
+ }
1352
+ this.renderReactTemplates();
1353
+ this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;
1354
+ this.doExpandAction();
1355
+ }
1356
+ };
1357
+ TreeView.prototype.setTextWrap = function () {
1358
+ (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);
1359
+ if (Browser.isIE) {
1360
+ (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);
1361
+ }
1362
+ };
1363
+ TreeView.prototype.updateWrap = function (ulEle) {
1364
+ if (!this.fullRowSelect) {
1365
+ return;
1366
+ }
1367
+ var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;
1368
+ var length = liEle.length;
1369
+ for (var i = 0; i < length; i++) {
1370
+ this.calculateWrap(liEle[i]);
1371
+ }
1372
+ };
1373
+ TreeView.prototype.calculateWrap = function (liEle) {
1374
+ var element = select('.' + FULLROW, liEle);
1375
+ if (element && element.nextElementSibling) {
1376
+ element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';
764
1377
  }
765
- this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;
766
- this.doExpandAction();
767
1378
  };
768
1379
  TreeView.prototype.doExpandAction = function () {
769
1380
  var eUids = this.expandedNodes;
770
1381
  if (this.isInitalExpand && eUids.length > 0) {
771
1382
  this.setProperties({ expandedNodes: [] }, true);
1383
+ /* eslint-disable */
772
1384
  if (this.fields.dataSource instanceof DataManager) {
773
1385
  this.expandGivenNodes(eUids);
774
1386
  }
@@ -781,6 +1393,12 @@ var TreeView = /** @class */ (function (_super) {
781
1393
  this.expandAction(eNode, icon, null);
782
1394
  }
783
1395
  }
1396
+ else {
1397
+ if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {
1398
+ this.expandChildren.push(eUids[i].toString());
1399
+ }
1400
+ continue;
1401
+ }
784
1402
  }
785
1403
  this.afterFinalized();
786
1404
  }
@@ -819,11 +1437,14 @@ var TreeView = /** @class */ (function (_super) {
819
1437
  TreeView.prototype.afterFinalized = function () {
820
1438
  this.doSelectionAction();
821
1439
  this.updateCheckedProp();
822
- this.isLoaded = true;
823
1440
  this.isAnimate = true;
824
1441
  this.isInitalExpand = false;
825
- var eventArgs = { data: this.treeData };
826
- this.trigger('dataBound', eventArgs);
1442
+ if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {
1443
+ var eventArgs = { data: this.treeData };
1444
+ this.trigger('dataBound', eventArgs);
1445
+ }
1446
+ this.isLoaded = true;
1447
+ this.isNodeDropped = false;
827
1448
  };
828
1449
  TreeView.prototype.doSelectionAction = function () {
829
1450
  var sNodes = selectAll('.' + SELECTED, this.element);
@@ -832,7 +1453,12 @@ var TreeView = /** @class */ (function (_super) {
832
1453
  this.setProperties({ selectedNodes: [] }, true);
833
1454
  for (var i = 0; i < sUids.length; i++) {
834
1455
  var sNode = select('[data-uid="' + sUids[i] + '"]', this.element);
835
- this.selectNode(sNode, null, true);
1456
+ if (sNode && !(sNode.classList.contains('e-active'))) {
1457
+ this.selectNode(sNode, null, true);
1458
+ }
1459
+ else {
1460
+ this.selectedNodes.push(sUids[i]);
1461
+ }
836
1462
  if (!this.allowMultiSelection) {
837
1463
  break;
838
1464
  }
@@ -854,7 +1480,7 @@ var TreeView = /** @class */ (function (_super) {
854
1480
  }
855
1481
  };
856
1482
  TreeView.prototype.clickHandler = function (event) {
857
- var target = event.originalEvent.target;
1483
+ var target = Browser.isDevice && !Browser.isIos ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY) : event.originalEvent.target;
858
1484
  EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);
859
1485
  if (!target || this.dragStartAction) {
860
1486
  return;
@@ -862,10 +1488,12 @@ var TreeView = /** @class */ (function (_super) {
862
1488
  else {
863
1489
  var classList = target.classList;
864
1490
  var li = closest(target, '.' + LISTITEM);
865
- if (!li) {
1491
+ if (!li || (li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE)))) {
866
1492
  return;
867
1493
  }
868
- else {
1494
+ else if (event.originalEvent.which !== 3) {
1495
+ var rippleElement = select('.' + RIPPLEELMENT, li);
1496
+ var rippleIcons = select('.' + ICON, li);
869
1497
  this.removeHover();
870
1498
  this.setFocusElement(li);
871
1499
  if (this.showCheckBox && !li.classList.contains('e-disable')) {
@@ -883,26 +1511,29 @@ var TreeView = /** @class */ (function (_super) {
883
1511
  else if (classList.contains(COLLAPSIBLE)) {
884
1512
  this.collapseNode(li, target, event);
885
1513
  }
1514
+ else if (rippleElement && rippleIcons) {
1515
+ if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {
1516
+ this.expandAction(li, rippleIcons, event);
1517
+ }
1518
+ else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {
1519
+ this.collapseNode(li, rippleIcons, event);
1520
+ }
1521
+ else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {
1522
+ this.toggleSelect(li, event.originalEvent, false);
1523
+ }
1524
+ }
886
1525
  else {
887
1526
  if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {
888
1527
  this.toggleSelect(li, event.originalEvent, false);
889
1528
  }
890
1529
  }
891
- this.triggerClickEvent(event.originalEvent, li);
892
1530
  }
1531
+ if (event.originalEvent.which === 3) {
1532
+ this.isRightClick = true;
1533
+ }
1534
+ this.triggerClickEvent(event.originalEvent, li);
893
1535
  }
894
1536
  };
895
- TreeView.prototype.nodeCheckingEvent = function (wrapper, isCheck, e) {
896
- var currLi = closest(wrapper, '.' + LISTITEM);
897
- this.checkActionNodes = [];
898
- var ariaState = !isCheck ? 'true' : 'false';
899
- if (!isNOU(ariaState)) {
900
- wrapper.setAttribute('aria-checked', ariaState);
901
- }
902
- var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);
903
- this.trigger('nodeChecking', eventArgs);
904
- return eventArgs;
905
- };
906
1537
  TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {
907
1538
  var currLi = closest(wrapper, '.' + LISTITEM);
908
1539
  var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);
@@ -918,6 +1549,7 @@ var TreeView = /** @class */ (function (_super) {
918
1549
  };
919
1550
  TreeView.prototype.expandNode = function (currLi, icon, loaded) {
920
1551
  var _this = this;
1552
+ this.renderReactTemplates();
921
1553
  if (icon.classList.contains(LOAD)) {
922
1554
  this.hideSpinner(icon);
923
1555
  }
@@ -934,13 +1566,17 @@ var TreeView = /** @class */ (function (_super) {
934
1566
  var ul_1 = select('.' + PARENTITEM, currLi);
935
1567
  var liEle_1 = currLi;
936
1568
  this.setHeight(liEle_1, ul_1);
937
- if (this.isAnimate) {
1569
+ var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);
1570
+ if (this.isAnimate && !this.isRefreshed) {
938
1571
  this.aniObj.animate(ul_1, {
939
1572
  name: this.animation.expand.effect,
940
1573
  duration: this.animation.expand.duration,
941
1574
  timingFunction: this.animation.expand.easing,
942
1575
  begin: function (args) {
943
1576
  liEle_1.style.overflow = 'hidden';
1577
+ if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {
1578
+ activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);
1579
+ }
944
1580
  start_1 = liEle_1.offsetHeight;
945
1581
  end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;
946
1582
  },
@@ -950,6 +1586,9 @@ var TreeView = /** @class */ (function (_super) {
950
1586
  },
951
1587
  end: function (args) {
952
1588
  args.element.style.display = 'block';
1589
+ if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {
1590
+ activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);
1591
+ }
953
1592
  _this.expandedNode(liEle_1, ul_1, icon);
954
1593
  }
955
1594
  });
@@ -977,8 +1616,13 @@ var TreeView = /** @class */ (function (_super) {
977
1616
  currLi.style.height = '';
978
1617
  removeClass([icon], PROCESS);
979
1618
  this.addExpand(currLi);
980
- if (this.isLoaded && this.expandArgs) {
1619
+ if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {
1620
+ this.updateWrap(currLi);
1621
+ this.isFirstRender = false;
1622
+ }
1623
+ if (this.isLoaded && this.expandArgs && !this.isRefreshed) {
981
1624
  this.expandArgs = this.getExpandEvent(currLi, null);
1625
+ this.expandArgs.isInteracted = this.isInteracted;
982
1626
  this.trigger('nodeExpanded', this.expandArgs);
983
1627
  }
984
1628
  };
@@ -1001,12 +1645,22 @@ var TreeView = /** @class */ (function (_super) {
1001
1645
  var colArgs;
1002
1646
  if (this.isLoaded) {
1003
1647
  colArgs = this.getExpandEvent(currLi, e);
1004
- this.trigger('nodeCollapsing', colArgs);
1005
- if (colArgs.cancel) {
1006
- removeClass([icon], PROCESS);
1007
- return;
1008
- }
1648
+ this.isInteracted = colArgs.isInteracted;
1649
+ this.trigger('nodeCollapsing', colArgs, function (observedArgs) {
1650
+ if (observedArgs.cancel) {
1651
+ removeClass([icon], PROCESS);
1652
+ }
1653
+ else {
1654
+ _this.nodeCollapseAction(currLi, icon, observedArgs);
1655
+ }
1656
+ });
1657
+ }
1658
+ else {
1659
+ this.nodeCollapseAction(currLi, icon, colArgs);
1009
1660
  }
1661
+ };
1662
+ TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {
1663
+ var _this = this;
1010
1664
  removeClass([icon], COLLAPSIBLE);
1011
1665
  addClass([icon], EXPANDABLE);
1012
1666
  var start = 0;
@@ -1014,6 +1668,7 @@ var TreeView = /** @class */ (function (_super) {
1014
1668
  var proxy = this;
1015
1669
  var ul = select('.' + PARENTITEM, currLi);
1016
1670
  var liEle = currLi;
1671
+ var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);
1017
1672
  if (this.isAnimate) {
1018
1673
  this.aniObj.animate(ul, {
1019
1674
  name: this.animation.collapse.effect,
@@ -1021,6 +1676,9 @@ var TreeView = /** @class */ (function (_super) {
1021
1676
  timingFunction: this.animation.collapse.easing,
1022
1677
  begin: function (args) {
1023
1678
  liEle.style.overflow = 'hidden';
1679
+ if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {
1680
+ activeElement.classList.add(ITEM_ANIMATION_ACTIVE);
1681
+ }
1024
1682
  start = select('.' + TEXTWRAP, currLi).offsetHeight;
1025
1683
  end = liEle.offsetHeight;
1026
1684
  },
@@ -1029,6 +1687,9 @@ var TreeView = /** @class */ (function (_super) {
1029
1687
  },
1030
1688
  end: function (args) {
1031
1689
  args.element.style.display = 'none';
1690
+ if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {
1691
+ activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);
1692
+ }
1032
1693
  _this.collapsedNode(liEle, ul, icon, colArgs);
1033
1694
  }
1034
1695
  });
@@ -1044,6 +1705,8 @@ var TreeView = /** @class */ (function (_super) {
1044
1705
  removeClass([icon], PROCESS);
1045
1706
  this.removeExpand(liEle);
1046
1707
  if (this.isLoaded) {
1708
+ colArgs = this.getExpandEvent(liEle, null);
1709
+ colArgs.isInteracted = this.isInteracted;
1047
1710
  this.trigger('nodeCollapsed', colArgs);
1048
1711
  }
1049
1712
  };
@@ -1083,31 +1746,37 @@ var TreeView = /** @class */ (function (_super) {
1083
1746
  }
1084
1747
  this.showSpinner(eicon);
1085
1748
  var childItems;
1749
+ /* eslint-disable */
1086
1750
  if (this.fields.dataSource instanceof DataManager) {
1087
1751
  var level = this.parents(parentLi, '.' + PARENTITEM).length;
1088
- var mapper_1 = this.getChildFields(this.fields, level, 1);
1089
- if (isNOU(mapper_1) || isNOU(mapper_1.dataSource)) {
1752
+ var mapper_2 = this.getChildFields(this.fields, level, 1);
1753
+ if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {
1090
1754
  detach(eicon);
1091
1755
  this.removeExpand(parentLi, true);
1092
1756
  return;
1093
1757
  }
1094
1758
  this.treeList.push('false');
1095
- if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.dataSource.offline)) {
1759
+ if (this.fields.dataSource instanceof DataManager && this.isOffline) {
1096
1760
  this.treeList.pop();
1097
1761
  childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));
1098
- this.loadChild(childItems, mapper_1, eicon, parentLi, expandChild, callback, loaded);
1762
+ this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);
1099
1763
  }
1100
1764
  else {
1101
- mapper_1.dataSource.executeQuery(this.getQuery(mapper_1, parentLi.getAttribute('data-uid'))).then(function (e) {
1765
+ mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {
1102
1766
  _this.treeList.pop();
1103
1767
  childItems = e.result;
1104
- _this.loadChild(childItems, mapper_1, eicon, parentLi, expandChild, callback, loaded);
1768
+ if (_this.dataType === 1) {
1769
+ _this.dataType = 2;
1770
+ }
1771
+ _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);
1772
+ }).catch(function (e) {
1773
+ _this.trigger('actionFailure', { error: e });
1105
1774
  });
1106
1775
  }
1107
1776
  }
1108
1777
  else {
1109
1778
  childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));
1110
- this.currentLoadData = childItems;
1779
+ this.currentLoadData = this.getSortedData(childItems);
1111
1780
  if (isNOU(childItems) || childItems.length === 0) {
1112
1781
  detach(eicon);
1113
1782
  this.removeExpand(parentLi, true);
@@ -1115,8 +1784,9 @@ var TreeView = /** @class */ (function (_super) {
1115
1784
  }
1116
1785
  else {
1117
1786
  this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;
1118
- parentLi.appendChild(ListBase.createList(this.createElement, this.getSortedData(childItems), this.listBaseOption));
1787
+ parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));
1119
1788
  this.expandNode(parentLi, eicon, loaded);
1789
+ this.setSelectionForChildNodes(childItems);
1120
1790
  this.ensureCheckNode(parentLi);
1121
1791
  this.finalizeNode(parentLi);
1122
1792
  this.disableTreeNodes(childItems);
@@ -1132,7 +1802,7 @@ var TreeView = /** @class */ (function (_super) {
1132
1802
  }
1133
1803
  else {
1134
1804
  this.updateListProp(mapper);
1135
- if (this.fields.dataSource instanceof DataManager && !this.fields.dataSource.dataSource.offline) {
1805
+ if (this.fields.dataSource instanceof DataManager && !this.isOffline) {
1136
1806
  var id = parentLi.getAttribute('data-uid');
1137
1807
  var nodeData = this.getNodeObject(id);
1138
1808
  setValue('child', childItems, nodeData);
@@ -1140,6 +1810,7 @@ var TreeView = /** @class */ (function (_super) {
1140
1810
  this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;
1141
1811
  parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));
1142
1812
  this.expandNode(parentLi, eicon, loaded);
1813
+ this.setSelectionForChildNodes(childItems);
1143
1814
  this.ensureCheckNode(parentLi);
1144
1815
  this.finalizeNode(parentLi);
1145
1816
  this.disableTreeNodes(childItems);
@@ -1155,13 +1826,25 @@ var TreeView = /** @class */ (function (_super) {
1155
1826
  TreeView.prototype.disableTreeNodes = function (childItems) {
1156
1827
  var i = 0;
1157
1828
  while (i < childItems.length) {
1158
- var id = childItems[i][this.fields.id].toString();
1829
+ var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;
1159
1830
  if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {
1160
1831
  this.doDisableAction([id]);
1161
1832
  }
1162
1833
  i++;
1163
1834
  }
1164
1835
  };
1836
+ /**
1837
+ * Sets the child Item in selectedState while rendering the child node
1838
+ */
1839
+ TreeView.prototype.setSelectionForChildNodes = function (nodes) {
1840
+ var i;
1841
+ for (i = 0; i < nodes.length; i++) {
1842
+ var id = nodes[i][this.fields.id] ? nodes[i][this.fields.id].toString() : null;
1843
+ if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {
1844
+ this.doSelectionAction();
1845
+ }
1846
+ }
1847
+ };
1165
1848
  TreeView.prototype.ensureCheckNode = function (element) {
1166
1849
  if (this.showCheckBox) {
1167
1850
  this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;
@@ -1193,6 +1876,7 @@ var TreeView = /** @class */ (function (_super) {
1193
1876
  return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;
1194
1877
  };
1195
1878
  TreeView.prototype.getChildNodes = function (obj, parentId, isRoot) {
1879
+ var _this = this;
1196
1880
  if (isRoot === void 0) { isRoot = false; }
1197
1881
  var childNodes;
1198
1882
  if (isNOU(obj)) {
@@ -1203,15 +1887,22 @@ var TreeView = /** @class */ (function (_super) {
1203
1887
  }
1204
1888
  else {
1205
1889
  if (typeof this.fields.child === 'string') {
1206
- for (var i = 0, objlen = obj.length; i < objlen; i++) {
1207
- var dataId = getValue(this.fields.id, obj[i]);
1208
- if (dataId && dataId.toString() === parentId) {
1209
- return getValue(this.fields.child, obj[i]);
1210
- }
1211
- else if (!isNOU(getValue(this.fields.child, obj[i]))) {
1212
- childNodes = this.getChildNodes(getValue(this.fields.child, obj[i]), parentId);
1213
- if (childNodes !== undefined) {
1214
- break;
1890
+ var index = obj.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === parentId; });
1891
+ if (index !== -1) {
1892
+ return getValue(this.fields.child, obj[index]);
1893
+ }
1894
+ if (index === -1) {
1895
+ for (var i = 0, objlen = obj.length; i < objlen; i++) {
1896
+ var tempArray = getValue(this.fields.child, obj[i]);
1897
+ var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === parentId; }) : -1;
1898
+ if (childIndex !== -1) {
1899
+ return getValue(this.fields.child, tempArray[childIndex]);
1900
+ }
1901
+ else if (!isNOU(tempArray)) {
1902
+ childNodes = this.getChildNodes(tempArray, parentId);
1903
+ if (childNodes !== undefined) {
1904
+ break;
1905
+ }
1215
1906
  }
1216
1907
  }
1217
1908
  }
@@ -1269,6 +1960,7 @@ var TreeView = /** @class */ (function (_super) {
1269
1960
  return li.classList.contains(ACTIVE) ? true : false;
1270
1961
  };
1271
1962
  TreeView.prototype.selectNode = function (li, e, multiSelect) {
1963
+ var _this = this;
1272
1964
  if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {
1273
1965
  this.setFocusElement(li);
1274
1966
  return;
@@ -1276,11 +1968,17 @@ var TreeView = /** @class */ (function (_super) {
1276
1968
  var eventArgs;
1277
1969
  if (this.isLoaded) {
1278
1970
  eventArgs = this.getSelectEvent(li, 'select', e);
1279
- this.trigger('nodeSelecting', eventArgs);
1280
- if (eventArgs.cancel) {
1281
- return;
1282
- }
1971
+ this.trigger('nodeSelecting', eventArgs, function (observedArgs) {
1972
+ if ((!observedArgs.cancel) && !observedArgs.node.classList.contains(PREVENTSELECT)) {
1973
+ _this.nodeSelectAction(li, e, observedArgs, multiSelect);
1974
+ }
1975
+ });
1976
+ }
1977
+ else {
1978
+ this.nodeSelectAction(li, e, eventArgs, multiSelect);
1283
1979
  }
1980
+ };
1981
+ TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {
1284
1982
  if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !e.ctrlKey)))) {
1285
1983
  this.removeSelectAll();
1286
1984
  }
@@ -1306,21 +2004,29 @@ var TreeView = /** @class */ (function (_super) {
1306
2004
  this.startNode = li;
1307
2005
  this.addSelect(li);
1308
2006
  }
1309
- this.setFocusElement(li);
1310
2007
  if (this.isLoaded) {
1311
2008
  eventArgs.nodeData = this.getNodeData(li);
1312
2009
  this.trigger('nodeSelected', eventArgs);
2010
+ this.isRightClick = false;
1313
2011
  }
2012
+ this.isRightClick = false;
1314
2013
  };
1315
2014
  TreeView.prototype.unselectNode = function (li, e) {
2015
+ var _this = this;
1316
2016
  var eventArgs;
1317
2017
  if (this.isLoaded) {
1318
2018
  eventArgs = this.getSelectEvent(li, 'un-select', e);
1319
- this.trigger('nodeSelecting', eventArgs);
1320
- if (eventArgs.cancel) {
1321
- return;
1322
- }
2019
+ this.trigger('nodeSelecting', eventArgs, function (observedArgs) {
2020
+ if (!observedArgs.cancel) {
2021
+ _this.nodeUnselectAction(li, observedArgs);
2022
+ }
2023
+ });
2024
+ }
2025
+ else {
2026
+ this.nodeUnselectAction(li, eventArgs);
1323
2027
  }
2028
+ };
2029
+ TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {
1324
2030
  this.removeSelect(li);
1325
2031
  this.setFocusElement(li);
1326
2032
  if (this.isLoaded) {
@@ -1333,8 +2039,11 @@ var TreeView = /** @class */ (function (_super) {
1333
2039
  var focusedNode = this.getFocusedNode();
1334
2040
  if (focusedNode) {
1335
2041
  removeClass([focusedNode], FOCUS);
2042
+ focusedNode.setAttribute("tabindex", "-1");
1336
2043
  }
1337
2044
  addClass([li], FOCUS);
2045
+ li.setAttribute('tabindex', '0');
2046
+ EventHandler.add(li, 'blur', this.focusOut, this);
1338
2047
  this.updateIdAttr(focusedNode, li);
1339
2048
  }
1340
2049
  };
@@ -1401,49 +2110,68 @@ var TreeView = /** @class */ (function (_super) {
1401
2110
  if (classList.contains(EXPANDABLE)) {
1402
2111
  this.expandAction(currLi, icon, e);
1403
2112
  }
1404
- else {
2113
+ else if (classList.contains(COLLAPSIBLE)) {
1405
2114
  this.collapseNode(currLi, icon, e);
1406
2115
  }
1407
2116
  }
1408
2117
  };
1409
2118
  TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {
2119
+ var _this = this;
1410
2120
  if (icon.classList.contains(PROCESS)) {
1411
2121
  return;
1412
2122
  }
1413
2123
  else {
1414
2124
  addClass([icon], PROCESS);
1415
2125
  }
1416
- if (this.isLoaded) {
2126
+ if (this.isLoaded && !this.isRefreshed) {
1417
2127
  this.expandArgs = this.getExpandEvent(currLi, e);
1418
- this.trigger('nodeExpanding', this.expandArgs);
1419
- if (this.expandArgs.cancel) {
1420
- removeClass([icon], PROCESS);
1421
- return;
1422
- }
2128
+ this.isInteracted = this.expandArgs.isInteracted;
2129
+ this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {
2130
+ if (observedArgs.cancel) {
2131
+ removeClass([icon], PROCESS);
2132
+ }
2133
+ else {
2134
+ _this.nodeExpandAction(currLi, icon, expandChild, callback);
2135
+ }
2136
+ });
2137
+ }
2138
+ else {
2139
+ this.nodeExpandAction(currLi, icon, expandChild, callback);
1423
2140
  }
2141
+ };
2142
+ TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {
1424
2143
  var ul = select('.' + PARENTITEM, currLi);
1425
2144
  if (ul && ul.nodeName === 'UL') {
1426
2145
  this.expandNode(currLi, icon);
1427
2146
  }
1428
2147
  else {
2148
+ this.isFirstRender = true;
1429
2149
  this.renderChildNodes(currLi, expandChild, callback);
2150
+ var liEles = selectAll('.' + LISTITEM, currLi);
2151
+ for (var i = 0; i < liEles.length; i++) {
2152
+ var id = this.getId(liEles[i]);
2153
+ if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {
2154
+ var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));
2155
+ if (!isNOU(icon_1)) {
2156
+ this.expandAction(liEles[i], icon_1, null);
2157
+ }
2158
+ this.expandChildren.splice(this.expandChildren.indexOf(id), 1);
2159
+ }
2160
+ }
1430
2161
  }
1431
2162
  };
1432
2163
  TreeView.prototype.keyActionHandler = function (e) {
2164
+ var _this = this;
1433
2165
  var target = e.target;
1434
2166
  var focusedNode = this.getFocusedNode();
1435
2167
  if (target && target.classList.contains(INPUT)) {
1436
2168
  var inpEle = target;
1437
2169
  if (e.action === 'enter') {
1438
2170
  inpEle.blur();
1439
- this.element.focus();
1440
- addClass([focusedNode], HOVER);
1441
2171
  }
1442
2172
  else if (e.action === 'escape') {
1443
2173
  inpEle.value = this.oldText;
1444
2174
  inpEle.blur();
1445
- this.element.focus();
1446
- addClass([focusedNode], HOVER);
1447
2175
  }
1448
2176
  return;
1449
2177
  }
@@ -1453,68 +2181,73 @@ var TreeView = /** @class */ (function (_super) {
1453
2181
  event: e,
1454
2182
  node: focusedNode,
1455
2183
  };
1456
- this.trigger('keyPress', eventArgs);
1457
- if (eventArgs.cancel) {
1458
- return;
1459
- }
1460
- switch (e.action) {
1461
- case 'space':
1462
- if (this.showCheckBox) {
1463
- this.checkNode(e);
1464
- }
1465
- break;
1466
- case 'moveRight':
1467
- this.openNode(this.enableRtl ? false : true, e);
1468
- break;
1469
- case 'moveLeft':
1470
- this.openNode(this.enableRtl ? true : false, e);
1471
- break;
1472
- case 'shiftDown':
1473
- this.shiftKeySelect(true, e);
1474
- break;
1475
- case 'moveDown':
1476
- case 'ctrlDown':
1477
- case 'csDown':
1478
- this.navigateNode(true);
1479
- break;
1480
- case 'shiftUp':
1481
- this.shiftKeySelect(false, e);
1482
- break;
1483
- case 'moveUp':
1484
- case 'ctrlUp':
1485
- case 'csUp':
1486
- this.navigateNode(false);
1487
- break;
1488
- case 'home':
1489
- case 'shiftHome':
1490
- case 'ctrlHome':
1491
- case 'csHome':
1492
- this.navigateRootNode(true);
1493
- break;
1494
- case 'end':
1495
- case 'shiftEnd':
1496
- case 'ctrlEnd':
1497
- case 'csEnd':
1498
- this.navigateRootNode(false);
1499
- break;
1500
- case 'enter':
1501
- case 'ctrlEnter':
1502
- case 'shiftEnter':
1503
- case 'csEnter':
1504
- this.toggleSelect(focusedNode, e);
1505
- break;
1506
- case 'f2':
1507
- if (this.allowEditing && !focusedNode.classList.contains('e-disable')) {
1508
- this.createTextbox(focusedNode, e);
1509
- }
1510
- break;
1511
- case 'ctrlA':
1512
- if (this.allowMultiSelection) {
1513
- var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', this.element);
1514
- this.selectGivenNodes(sNodes);
2184
+ this.trigger('keyPress', eventArgs, function (observedArgs) {
2185
+ if (!observedArgs.cancel) {
2186
+ switch (e.action) {
2187
+ case 'space':
2188
+ if (_this.showCheckBox) {
2189
+ _this.checkNode(e);
2190
+ }
2191
+ else {
2192
+ _this.toggleSelect(focusedNode, e);
2193
+ }
2194
+ break;
2195
+ case 'moveRight':
2196
+ _this.openNode(_this.enableRtl ? false : true, e);
2197
+ break;
2198
+ case 'moveLeft':
2199
+ _this.openNode(_this.enableRtl ? true : false, e);
2200
+ break;
2201
+ case 'shiftDown':
2202
+ _this.shiftKeySelect(true, e);
2203
+ break;
2204
+ case 'moveDown':
2205
+ case 'ctrlDown':
2206
+ case 'csDown':
2207
+ _this.navigateNode(true);
2208
+ break;
2209
+ case 'shiftUp':
2210
+ _this.shiftKeySelect(false, e);
2211
+ break;
2212
+ case 'moveUp':
2213
+ case 'ctrlUp':
2214
+ case 'csUp':
2215
+ _this.navigateNode(false);
2216
+ break;
2217
+ case 'home':
2218
+ case 'shiftHome':
2219
+ case 'ctrlHome':
2220
+ case 'csHome':
2221
+ _this.navigateRootNode(true);
2222
+ break;
2223
+ case 'end':
2224
+ case 'shiftEnd':
2225
+ case 'ctrlEnd':
2226
+ case 'csEnd':
2227
+ _this.navigateRootNode(false);
2228
+ break;
2229
+ case 'enter':
2230
+ case 'ctrlEnter':
2231
+ case 'shiftEnter':
2232
+ case 'csEnter':
2233
+ case 'shiftSpace':
2234
+ case 'ctrlSpace':
2235
+ _this.toggleSelect(focusedNode, e);
2236
+ break;
2237
+ case 'f2':
2238
+ if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {
2239
+ _this.createTextbox(focusedNode, e);
2240
+ }
2241
+ break;
2242
+ case 'ctrlA':
2243
+ if (_this.allowMultiSelection) {
2244
+ var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);
2245
+ _this.selectGivenNodes(sNodes);
2246
+ }
2247
+ break;
1515
2248
  }
1516
- break;
1517
- }
2249
+ }
2250
+ });
1518
2251
  };
1519
2252
  TreeView.prototype.navigateToFocus = function (isUp) {
1520
2253
  var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);
@@ -1563,26 +2296,179 @@ var TreeView = /** @class */ (function (_super) {
1563
2296
  var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);
1564
2297
  var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);
1565
2298
  if (!focusedNode.classList.contains('e-disable')) {
1566
- this.validateCheckNode(checkWrap, isChecked, focusedNode, e);
2299
+ if (focusedNode.getElementsByClassName("e-checkbox-disabled").length == 0) {
2300
+ this.validateCheckNode(checkWrap, isChecked, focusedNode, e);
2301
+ }
1567
2302
  }
1568
2303
  };
1569
2304
  TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {
1570
- var eventArgs = this.nodeCheckingEvent(checkWrap, isCheck, e);
1571
- if (eventArgs.cancel) {
1572
- return;
2305
+ var _this = this;
2306
+ var currLi = closest(checkWrap, '.' + LISTITEM);
2307
+ this.checkActionNodes = [];
2308
+ var ariaState = !isCheck ? 'true' : 'false';
2309
+ if (!isNOU(ariaState)) {
2310
+ checkWrap.setAttribute('aria-checked', ariaState);
1573
2311
  }
2312
+ var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);
2313
+ this.trigger('nodeChecking', eventArgs, function (observedArgs) {
2314
+ if (!observedArgs.cancel) {
2315
+ _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);
2316
+ }
2317
+ });
2318
+ };
2319
+ TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {
1574
2320
  if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {
1575
2321
  this.checkedElement.push(li.getAttribute('data-uid'));
1576
- var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));
1577
- (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;
2322
+ if (this.autoCheck) {
2323
+ var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));
2324
+ (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;
2325
+ }
1578
2326
  }
1579
2327
  this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);
1580
2328
  if (this.autoCheck) {
1581
2329
  this.ensureChildCheckState(li);
1582
2330
  this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));
2331
+ var doCheck = void 0;
2332
+ if (eventArgs.action === 'check') {
2333
+ doCheck = true;
2334
+ }
2335
+ else if (eventArgs.action === 'uncheck') {
2336
+ doCheck = false;
2337
+ }
2338
+ this.ensureStateChange(li, doCheck);
1583
2339
  }
1584
2340
  this.nodeCheckedEvent(checkWrap, isCheck, e);
1585
2341
  };
2342
+ /**
2343
+ * Update checkedNodes when UI interaction happens before the child node renders in DOM
2344
+ */
2345
+ TreeView.prototype.ensureStateChange = function (li, doCheck) {
2346
+ var childElement = select('.' + PARENTITEM, li);
2347
+ var parentIndex = li.getAttribute('data-uid');
2348
+ var mapper = this.fields;
2349
+ if (this.dataType === 1 && this.autoCheck) {
2350
+ var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));
2351
+ for (var i = 0; i < resultData.length; i++) {
2352
+ var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;
2353
+ var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;
2354
+ if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {
2355
+ this.checkedNodes.push(resultId);
2356
+ var childItems = this.getChildNodes(this.treeData, resultId);
2357
+ this.getChildItems(childItems, doCheck);
2358
+ if (this.parentNodeCheck.indexOf(resultId) !== -1) {
2359
+ this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);
2360
+ }
2361
+ }
2362
+ else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&
2363
+ this.checkedNodes.indexOf(resultId) !== -1) {
2364
+ this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);
2365
+ if (isCheck === 'true') {
2366
+ this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);
2367
+ }
2368
+ if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||
2369
+ this.parentNodeCheck.indexOf(resultId) !== -1) {
2370
+ var childNodes = this.getChildNodes(this.treeData, resultId);
2371
+ this.getChildItems(childNodes, doCheck);
2372
+ if (this.parentNodeCheck.indexOf(resultId) !== -1) {
2373
+ this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);
2374
+ }
2375
+ }
2376
+ }
2377
+ else {
2378
+ var childItems = this.getChildNodes(this.treeData, resultId);
2379
+ this.getChildItems(childItems, doCheck);
2380
+ }
2381
+ }
2382
+ }
2383
+ else if (this.dataType === 1 && !this.autoCheck) {
2384
+ if (!doCheck) {
2385
+ var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));
2386
+ for (var i = 0; i < checkedData.length; i++) {
2387
+ var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;
2388
+ if (this.checkedNodes.indexOf(id) !== -1) {
2389
+ this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);
2390
+ }
2391
+ this.updateField(this.treeData, this.fields, id, 'isChecked', null);
2392
+ }
2393
+ this.checkedNodes = [];
2394
+ }
2395
+ else {
2396
+ for (var i = 0; i < this.treeData.length; i++) {
2397
+ var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;
2398
+ if (this.checkedNodes.indexOf(checkedId) === -1) {
2399
+ this.checkedNodes.push(checkedId);
2400
+ }
2401
+ }
2402
+ }
2403
+ }
2404
+ else {
2405
+ var childItems = this.getChildNodes(this.treeData, parentIndex);
2406
+ if (childItems) {
2407
+ this.childStateChange(childItems, parentIndex, childElement, doCheck);
2408
+ }
2409
+ }
2410
+ };
2411
+ TreeView.prototype.getChildItems = function (childItems, doCheck) {
2412
+ for (var i = 0; i < childItems.length; i++) {
2413
+ var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;
2414
+ var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :
2415
+ null;
2416
+ if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {
2417
+ this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);
2418
+ }
2419
+ if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {
2420
+ this.checkedNodes.push(childId);
2421
+ }
2422
+ if (childIsCheck === 'true' && !doCheck) {
2423
+ this.updateField(this.treeData, this.fields, childId, 'isChecked', null);
2424
+ }
2425
+ var subChildItems = this.getChildNodes(this.treeData, childId);
2426
+ if (subChildItems.length > 0) {
2427
+ this.getChildItems(subChildItems, doCheck);
2428
+ }
2429
+ }
2430
+ };
2431
+ /**
2432
+ * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS
2433
+ */
2434
+ TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {
2435
+ for (var i = 0; i < childItems.length; i++) {
2436
+ var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';
2437
+ var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;
2438
+ if (this.autoCheck) {
2439
+ if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {
2440
+ this.checkedNodes.push(checkedChild);
2441
+ if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {
2442
+ this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);
2443
+ }
2444
+ }
2445
+ else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {
2446
+ this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);
2447
+ if (isCheck === 'true') {
2448
+ this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);
2449
+ }
2450
+ }
2451
+ }
2452
+ else if (!this.autoCheck) {
2453
+ if (!doCheck) {
2454
+ if (this.checkedNodes.indexOf(checkedChild) !== -1) {
2455
+ this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);
2456
+ }
2457
+ this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);
2458
+ this.checkedNodes = [];
2459
+ }
2460
+ else {
2461
+ if (this.checkedNodes.indexOf(checkedChild) === -1) {
2462
+ this.checkedNodes.push(checkedChild);
2463
+ }
2464
+ }
2465
+ }
2466
+ var subChild = this.getChildNodes([childItems[i]], checkedChild);
2467
+ if (subChild) {
2468
+ this.childStateChange(subChild, parent, childElement, doCheck);
2469
+ }
2470
+ }
2471
+ };
1586
2472
  //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
1587
2473
  TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {
1588
2474
  if (child) {
@@ -1602,11 +2488,17 @@ var TreeView = /** @class */ (function (_super) {
1602
2488
  if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {
1603
2489
  newCheck.push(childId.toString());
1604
2490
  }
2491
+ var hierChildId = getValue(this.fields.child.toString(), child[length_1]);
1605
2492
  //Gets if any next level children are available for child nodes
1606
- if (getValue(this.fields.hasChildren, child[length_1]) === true ||
1607
- getValue(this.fields.child.toString(), child[length_1])) {
2493
+ if (getValue(this.fields.hasChildren, child[length_1]) === true || hierChildId) {
1608
2494
  var id = getValue(this.fields.id, child[length_1]);
1609
- var childId_1 = this.getChildNodes(this.treeData, id.toString());
2495
+ var childId_1 = void 0;
2496
+ if (this.dataType === 1) {
2497
+ childId_1 = this.getChildNodes(this.treeData, id.toString());
2498
+ }
2499
+ else {
2500
+ childId_1 = hierChildId;
2501
+ }
1610
2502
  if (childId_1) {
1611
2503
  (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :
1612
2504
  this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);
@@ -1663,7 +2555,7 @@ var TreeView = /** @class */ (function (_super) {
1663
2555
  };
1664
2556
  TreeView.prototype.getFocusedNode = function () {
1665
2557
  var selectedItem;
1666
- var fNode = select('.' + LISTITEM + '.' + FOCUS, this.element);
2558
+ var fNode = select('.' + LISTITEM + '[tabindex="0"]', this.element);
1667
2559
  if (isNOU(fNode)) {
1668
2560
  selectedItem = select('.' + LISTITEM, this.element);
1669
2561
  }
@@ -1681,7 +2573,7 @@ var TreeView = /** @class */ (function (_super) {
1681
2573
  else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {
1682
2574
  this.focusNextNode(nextNode, false);
1683
2575
  }
1684
- else if (nextNode.nextSibling == null && lastChild.classList.contains('e-text-content')) {
2576
+ else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {
1685
2577
  this.focusNextNode(nextNode, false);
1686
2578
  }
1687
2579
  else {
@@ -1733,8 +2625,12 @@ var TreeView = /** @class */ (function (_super) {
1733
2625
  };
1734
2626
  TreeView.prototype.setFocus = function (preNode, nextNode) {
1735
2627
  removeClass([preNode], [HOVER, FOCUS]);
1736
- if (!nextNode.classList.contains('e-disable')) {
2628
+ preNode.setAttribute("tabindex", "-1");
2629
+ if (!nextNode.classList.contains('e-disable') && !nextNode.classList.contains(PREVENTSELECT)) {
1737
2630
  addClass([nextNode], [HOVER, FOCUS]);
2631
+ nextNode.setAttribute('tabindex', '0');
2632
+ nextNode.focus();
2633
+ EventHandler.add(nextNode, 'blur', this.focusOut, this);
1738
2634
  this.updateIdAttr(preNode, nextNode);
1739
2635
  }
1740
2636
  };
@@ -1748,12 +2644,19 @@ var TreeView = /** @class */ (function (_super) {
1748
2644
  };
1749
2645
  TreeView.prototype.focusIn = function () {
1750
2646
  if (!this.mouseDownStatus) {
1751
- addClass([this.getFocusedNode()], HOVER);
2647
+ var focusedElement = this.getFocusedNode();
2648
+ focusedElement.setAttribute("tabindex", "0");
2649
+ addClass([focusedElement], [HOVER, FOCUS]);
2650
+ EventHandler.add(focusedElement, 'blur', this.focusOut, this);
1752
2651
  }
1753
2652
  this.mouseDownStatus = false;
1754
2653
  };
1755
- TreeView.prototype.focusOut = function () {
1756
- removeClass([this.getFocusedNode()], HOVER);
2654
+ TreeView.prototype.focusOut = function (event) {
2655
+ var focusedElement = this.getFocusedNode();
2656
+ if (event.target == focusedElement) {
2657
+ removeClass([focusedElement], [HOVER, FOCUS]);
2658
+ EventHandler.remove(focusedElement, 'blur', this.focusOut);
2659
+ }
1757
2660
  };
1758
2661
  TreeView.prototype.onMouseOver = function (e) {
1759
2662
  var target = e.target;
@@ -1770,7 +2673,7 @@ var TreeView = /** @class */ (function (_super) {
1770
2673
  }
1771
2674
  };
1772
2675
  TreeView.prototype.setHover = function (li) {
1773
- if (!li.classList.contains(HOVER)) {
2676
+ if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {
1774
2677
  this.removeHover();
1775
2678
  addClass([li], HOVER);
1776
2679
  }
@@ -1794,14 +2697,20 @@ var TreeView = /** @class */ (function (_super) {
1794
2697
  var pNode = closest(currLi.parentNode, '.' + LISTITEM);
1795
2698
  var pid = pNode ? pNode.getAttribute('data-uid') : null;
1796
2699
  var selected = currLi.classList.contains(ACTIVE);
2700
+ var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;
1797
2701
  var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;
2702
+ var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;
1798
2703
  var checked = null;
1799
- if (this.showCheckBox) {
1800
- checked = select('.' + CHECKBOXWRAP, currLi).getAttribute('aria-checked');
2704
+ var checkboxElement = select('.' + CHECKBOXWRAP, currLi);
2705
+ if (this.showCheckBox && checkboxElement) {
2706
+ checked = checkboxElement.getAttribute('aria-checked');
1801
2707
  }
1802
- return { id: id, text: text, parentID: pid, selected: selected, expanded: expanded, isChecked: checked };
2708
+ return {
2709
+ id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,
2710
+ isChecked: checked, hasChildren: hasChildren
2711
+ };
1803
2712
  }
1804
- return { id: '', text: '', parentID: '', selected: '', expanded: '', isChecked: '' };
2713
+ return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };
1805
2714
  };
1806
2715
  TreeView.prototype.getText = function (currLi, fromDS) {
1807
2716
  if (fromDS) {
@@ -1816,12 +2725,33 @@ var TreeView = /** @class */ (function (_super) {
1816
2725
  var nodeData = this.getNodeData(currLi);
1817
2726
  return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };
1818
2727
  };
2728
+ TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {
2729
+ var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);
2730
+ if (tempArr) {
2731
+ tempArr = Array.prototype.slice.call(tempArr);
2732
+ append(tempArr, textEle);
2733
+ }
2734
+ };
2735
+ TreeView.prototype.destroyTemplate = function (liEle) {
2736
+ this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);
2737
+ };
1819
2738
  TreeView.prototype.reRenderNodes = function () {
1820
- this.element.innerHTML = '';
2739
+ this.updateListProp(this.fields);
2740
+ if (Browser.isIE) {
2741
+ this.ulElement = this.element.querySelector('.e-list-parent.e-ul');
2742
+ this.ulElement.parentElement.removeChild(this.ulElement);
2743
+ }
2744
+ else {
2745
+ this.element.innerHTML = '';
2746
+ }
2747
+ if (!isNOU(this.nodeTemplateFn)) {
2748
+ this.clearTemplate();
2749
+ }
1821
2750
  this.setTouchClass();
1822
2751
  this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);
2752
+ this.checkedElement = [];
1823
2753
  this.isLoaded = false;
1824
- this.setDataBinding();
2754
+ this.setDataBinding(true);
1825
2755
  };
1826
2756
  TreeView.prototype.setCssClass = function (oldClass, newClass) {
1827
2757
  if (!isNOU(oldClass) && oldClass !== '') {
@@ -1844,6 +2774,7 @@ var TreeView = /** @class */ (function (_super) {
1844
2774
  }
1845
2775
  };
1846
2776
  TreeView.prototype.createTextbox = function (liEle, e) {
2777
+ var _this = this;
1847
2778
  var oldInpEle = select('.' + TREEINPUT, this.element);
1848
2779
  if (oldInpEle) {
1849
2780
  oldInpEle.blur();
@@ -1852,13 +2783,26 @@ var TreeView = /** @class */ (function (_super) {
1852
2783
  this.updateOldText(liEle);
1853
2784
  var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });
1854
2785
  var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);
1855
- this.trigger('nodeEditing', eventArgs);
1856
- if (eventArgs.cancel) {
1857
- return;
1858
- }
1859
- var inpWidth = textEle.offsetWidth + 5;
1860
- var style = 'width:' + inpWidth + 'px';
1861
- addClass([liEle], EDITING);
2786
+ this.trigger('nodeEditing', eventArgs, function (observedArgs) {
2787
+ if (!observedArgs.cancel) {
2788
+ var inpWidth = textEle.offsetWidth + 5;
2789
+ var style_1 = 'width:' + inpWidth + 'px';
2790
+ addClass([liEle], EDITING);
2791
+ if (!isNOU(_this.nodeTemplateFn)) {
2792
+ _this.destroyTemplate(liEle);
2793
+ }
2794
+ if (_this.isReact) {
2795
+ setTimeout(function () {
2796
+ _this.renderTextBox(eventArgs, textEle, style_1);
2797
+ }, 5);
2798
+ }
2799
+ else {
2800
+ _this.renderTextBox(eventArgs, textEle, style_1);
2801
+ }
2802
+ }
2803
+ });
2804
+ };
2805
+ TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {
1862
2806
  textEle.innerHTML = eventArgs.innerHtml;
1863
2807
  var inpEle = select('.' + TREEINPUT, textEle);
1864
2808
  this.inputObj = Input.createInput({
@@ -1889,26 +2833,43 @@ var TreeView = /** @class */ (function (_super) {
1889
2833
  var txtEle = closest(target, '.' + LISTTEXT);
1890
2834
  var liEle = closest(target, '.' + LISTITEM);
1891
2835
  detach(this.inputObj.container);
1892
- this.appendNewText(liEle, txtEle, newText, true);
2836
+ if (this.fields.dataSource instanceof DataManager && !this.isOffline) {
2837
+ this.crudOperation('update', null, liEle, newText, null, null, true);
2838
+ }
2839
+ else {
2840
+ this.appendNewText(liEle, txtEle, newText, true);
2841
+ }
1893
2842
  };
1894
2843
  TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {
2844
+ var _this = this;
1895
2845
  var eventArgs = this.getEditEvent(liEle, newText, null);
1896
- this.trigger('nodeEdited', eventArgs);
1897
- newText = eventArgs.cancel ? eventArgs.oldText : eventArgs.newText;
2846
+ this.trigger('nodeEdited', eventArgs, function (observedArgs) {
2847
+ newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;
2848
+ _this.updateText(liEle, txtEle, newText, isInput);
2849
+ if (observedArgs.oldText !== newText) {
2850
+ _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);
2851
+ }
2852
+ });
2853
+ };
2854
+ TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {
1898
2855
  var newData = setValue(this.editFields.text, newText, this.editData);
1899
2856
  if (!isNOU(this.nodeTemplateFn)) {
1900
- txtEle.innerHTML = '';
1901
- append(this.nodeTemplateFn(newData), txtEle);
2857
+ txtEle.innerText = '';
2858
+ var dataId = liEle.getAttribute('data-uid');
2859
+ this.renderNodeTemplate(newData, txtEle, dataId);
2860
+ this.renderReactTemplates();
1902
2861
  }
1903
2862
  else {
1904
- txtEle.innerHTML = newText;
2863
+ this.enableHtmlSanitizer ? txtEle.innerText = newText : txtEle.innerHTML = newText;
1905
2864
  }
1906
2865
  if (isInput) {
1907
2866
  removeClass([liEle], EDITING);
1908
- txtEle.focus();
2867
+ liEle.focus();
2868
+ EventHandler.add(liEle, 'blur', this.focusOut, this);
2869
+ addClass([liEle], HOVER);
1909
2870
  }
1910
- if (eventArgs.oldText !== newText) {
1911
- this.triggerEvent();
2871
+ if (this.allowTextWrap) {
2872
+ this.calculateWrap(liEle);
1912
2873
  }
1913
2874
  };
1914
2875
  TreeView.prototype.getElement = function (ele) {
@@ -1919,7 +2880,7 @@ var TreeView = /** @class */ (function (_super) {
1919
2880
  return this.element.querySelector('[data-uid="' + ele + '"]');
1920
2881
  }
1921
2882
  else if (typeof ele === 'object') {
1922
- return ele;
2883
+ return getElement(ele);
1923
2884
  }
1924
2885
  else {
1925
2886
  return null;
@@ -1933,7 +2894,7 @@ var TreeView = /** @class */ (function (_super) {
1933
2894
  return ele;
1934
2895
  }
1935
2896
  else if (typeof ele === 'object') {
1936
- return ele.getAttribute('data-uid');
2897
+ return (getElement(ele)).getAttribute('data-uid');
1937
2898
  }
1938
2899
  else {
1939
2900
  return null;
@@ -1989,7 +2950,7 @@ var TreeView = /** @class */ (function (_super) {
1989
2950
  return newList;
1990
2951
  };
1991
2952
  TreeView.prototype.setDragAndDrop = function (toBind) {
1992
- if (toBind) {
2953
+ if (toBind && !this.disabled) {
1993
2954
  this.initializeDrag();
1994
2955
  }
1995
2956
  else {
@@ -2001,8 +2962,8 @@ var TreeView = /** @class */ (function (_super) {
2001
2962
  var virtualEle;
2002
2963
  var proxy = this;
2003
2964
  this.dragObj = new Draggable(this.element, {
2004
- enableTailMode: true,
2005
- enableAutoScroll: true,
2965
+ enableTailMode: true, enableAutoScroll: true,
2966
+ dragArea: this.dragArea,
2006
2967
  dragTarget: '.' + TEXTWRAP,
2007
2968
  helper: function (e) {
2008
2969
  _this.dragTarget = e.sender.target;
@@ -2044,18 +3005,19 @@ var TreeView = /** @class */ (function (_super) {
2044
3005
  }
2045
3006
  var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);
2046
3007
  if (eventArgs.draggedNode.classList.contains(EDITING)) {
2047
- eventArgs.cancel = true;
3008
+ _this.dragObj.intDestroy(e.event);
3009
+ _this.dragCancelAction(virtualEle);
2048
3010
  }
2049
3011
  else {
2050
- _this.trigger('nodeDragStart', eventArgs);
2051
- }
2052
- if (eventArgs.cancel) {
2053
- detach(virtualEle);
2054
- removeClass([_this.element], DRAGGING);
2055
- _this.dragStartAction = false;
2056
- }
2057
- else {
2058
- _this.dragStartAction = true;
3012
+ _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {
3013
+ if (observedArgs.cancel) {
3014
+ _this.dragObj.intDestroy(e.event);
3015
+ _this.dragCancelAction(virtualEle);
3016
+ }
3017
+ else {
3018
+ _this.dragStartAction = true;
3019
+ }
3020
+ });
2059
3021
  }
2060
3022
  },
2061
3023
  drag: function (e) {
@@ -2068,9 +3030,11 @@ var TreeView = /** @class */ (function (_super) {
2068
3030
  var dropTarget = e.target;
2069
3031
  var preventTargetExpand = false;
2070
3032
  var dropRoot = (closest(dropTarget, '.' + DROPPABLE));
3033
+ var isHelperElement = true;
2071
3034
  if (!dropTarget || !dropRoot) {
2072
3035
  detach(e.helper);
2073
3036
  document.body.style.cursor = '';
3037
+ isHelperElement = false;
2074
3038
  }
2075
3039
  var listItem = closest(dropTarget, '.e-list-item');
2076
3040
  var level;
@@ -2079,21 +3043,23 @@ var TreeView = /** @class */ (function (_super) {
2079
3043
  }
2080
3044
  var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);
2081
3045
  eventArgs.preventTargetExpand = preventTargetExpand;
2082
- _this.trigger('nodeDragStop', eventArgs);
2083
- _this.dragParent = eventArgs.draggedParentNode;
2084
- _this.preventExpand = eventArgs.preventTargetExpand;
2085
- if (eventArgs.cancel) {
2086
- if (e.helper.parentNode) {
2087
- detach(e.helper);
3046
+ _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {
3047
+ _this.dragParent = observedArgs.draggedParentNode;
3048
+ _this.preventExpand = observedArgs.preventTargetExpand;
3049
+ if (observedArgs.cancel) {
3050
+ if (e.helper.parentNode) {
3051
+ detach(e.helper);
3052
+ }
3053
+ document.body.style.cursor = '';
3054
+ isHelperElement = false;
2088
3055
  }
2089
- document.body.style.cursor = '';
2090
- }
2091
- _this.dragStartAction = false;
3056
+ _this.dragStartAction = false;
3057
+ });
2092
3058
  }
2093
3059
  });
2094
3060
  this.dropObj = new Droppable(this.element, {
2095
3061
  out: function (e) {
2096
- if (!isNOU(e) && !e.target.classList.contains(SIBLING)) {
3062
+ if (!isNOU(e) && !e.target.classList.contains(SIBLING) && (_this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT))) {
2097
3063
  document.body.style.cursor = 'not-allowed';
2098
3064
  }
2099
3065
  },
@@ -2105,6 +3071,11 @@ var TreeView = /** @class */ (function (_super) {
2105
3071
  }
2106
3072
  });
2107
3073
  };
3074
+ TreeView.prototype.dragCancelAction = function (virtualEle) {
3075
+ detach(virtualEle);
3076
+ removeClass([this.element], DRAGGING);
3077
+ this.dragStartAction = false;
3078
+ };
2108
3079
  TreeView.prototype.dragAction = function (e, virtualEle) {
2109
3080
  var dropRoot = closest(e.target, '.' + DROPPABLE);
2110
3081
  var dropWrap = closest(e.target, '.' + TEXTWRAP);
@@ -2118,22 +3089,37 @@ var TreeView = /** @class */ (function (_super) {
2118
3089
  }
2119
3090
  if (dropRoot) {
2120
3091
  var dropLi = closest(e.target, '.' + LISTITEM);
3092
+ var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);
3093
+ var collapse = closest(e.target, '.' + COLLAPSIBLE);
3094
+ var expand = closest(e.target, '.' + EXPANDABLE);
2121
3095
  if (!dropRoot.classList.contains(ROOT) || (dropWrap &&
2122
3096
  (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {
2123
- if (dropLi && e && (e.event.offsetY < 7)) {
2124
- addClass([icon], DROPNEXT);
2125
- var virEle = this.createElement('div', { className: SIBLING });
2126
- var index = this.fullRowSelect ? (1) : (0);
2127
- dropLi.insertBefore(virEle, dropLi.children[index]);
2128
- }
2129
- else if (dropLi && e && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10))) {
2130
- addClass([icon], DROPNEXT);
2131
- var virEle = this.createElement('div', { className: SIBLING });
2132
- var index = this.fullRowSelect ? (2) : (1);
2133
- dropLi.insertBefore(virEle, dropLi.children[index]);
3097
+ if (this.hasTemplate && dropLi) {
3098
+ var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);
3099
+ if ((e && (!expand && !collapse) && e.event.offsetY < 7 && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {
3100
+ var index = this.fullRowSelect ? (1) : (0);
3101
+ this.appendIndicator(dropLi, icon, index);
3102
+ }
3103
+ else if ((e && (!expand && !collapse) && !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) || ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {
3104
+ var index = this.fullRowSelect ? (2) : (1);
3105
+ this.appendIndicator(dropLi, icon, index);
3106
+ }
3107
+ else {
3108
+ addClass([icon], DROPIN);
3109
+ }
2134
3110
  }
2135
3111
  else {
2136
- addClass([icon], DROPIN);
3112
+ if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {
3113
+ var index = this.fullRowSelect ? (1) : (0);
3114
+ this.appendIndicator(dropLi, icon, index);
3115
+ }
3116
+ 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)))) {
3117
+ var index = this.fullRowSelect ? (2) : (1);
3118
+ this.appendIndicator(dropLi, icon, index);
3119
+ }
3120
+ else {
3121
+ addClass([icon], DROPIN);
3122
+ }
2137
3123
  }
2138
3124
  }
2139
3125
  else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {
@@ -2165,16 +3151,25 @@ var TreeView = /** @class */ (function (_super) {
2165
3151
  addClass([icon], eventArgs.dropIndicator);
2166
3152
  }
2167
3153
  };
3154
+ TreeView.prototype.appendIndicator = function (dropLi, icon, index) {
3155
+ addClass([icon], DROPNEXT);
3156
+ var virEle = this.createElement('div', { className: SIBLING });
3157
+ dropLi.insertBefore(virEle, dropLi.children[index]);
3158
+ };
3159
+ /* eslint-disable */
2168
3160
  TreeView.prototype.dropAction = function (e) {
2169
3161
  var offsetY = e.event.offsetY;
2170
3162
  var dropTarget = e.target;
2171
3163
  var dragObj;
2172
3164
  var level;
2173
3165
  var drop = false;
2174
- var dragInstance = e.dragData.draggable;
2175
- for (var i = 0; i < dragInstance.ej2_instances.length; i++) {
2176
- if (dragInstance.ej2_instances[i] instanceof TreeView_1) {
2177
- dragObj = dragInstance.ej2_instances[i];
3166
+ var dragInstance;
3167
+ var nodeData = [];
3168
+ var liArray = [];
3169
+ dragInstance = e.dragData.draggable;
3170
+ for (var i_1 = 0; i_1 < dragInstance.ej2_instances.length; i_1++) {
3171
+ if (dragInstance.ej2_instances[i_1] instanceof TreeView_1) {
3172
+ dragObj = dragInstance.ej2_instances[i_1];
2178
3173
  break;
2179
3174
  }
2180
3175
  }
@@ -2182,6 +3177,7 @@ var TreeView = /** @class */ (function (_super) {
2182
3177
  var dragTarget = dragObj.dragTarget;
2183
3178
  var dragLi = (closest(dragTarget, '.' + LISTITEM));
2184
3179
  var dropLi = (closest(dropTarget, '.' + LISTITEM));
3180
+ liArray.push(dragLi);
2185
3181
  if (dropLi == null && dropTarget.classList.contains(ROOT)) {
2186
3182
  dropLi = dropTarget.firstElementChild;
2187
3183
  }
@@ -2195,11 +3191,22 @@ var TreeView = /** @class */ (function (_super) {
2195
3191
  }
2196
3192
  if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {
2197
3193
  var sNodes = selectAll('.' + ACTIVE, dragObj.element);
2198
- for (var i = 0; i < sNodes.length; i++) {
2199
- if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {
2200
- continue;
3194
+ liArray = sNodes;
3195
+ if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {
3196
+ for (var i_2 = sNodes.length - 1; i_2 >= 0; i_2--) {
3197
+ if (dropLi.isSameNode(sNodes[i_2]) || this.isDescendant(sNodes[i_2], dropLi)) {
3198
+ continue;
3199
+ }
3200
+ this.appendNode(dropTarget, sNodes[i_2], dropLi, e, dragObj, offsetY);
3201
+ }
3202
+ }
3203
+ else {
3204
+ for (var i_3 = 0; i_3 < sNodes.length; i_3++) {
3205
+ if (dropLi.isSameNode(sNodes[i_3]) || this.isDescendant(sNodes[i_3], dropLi)) {
3206
+ continue;
3207
+ }
3208
+ this.appendNode(dropTarget, sNodes[i_3], dropLi, e, dragObj, offsetY);
2201
3209
  }
2202
- this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);
2203
3210
  }
2204
3211
  }
2205
3212
  else {
@@ -2211,11 +3218,22 @@ var TreeView = /** @class */ (function (_super) {
2211
3218
  if (this.fields.dataSource instanceof DataManager === false) {
2212
3219
  this.preventExpand = false;
2213
3220
  }
3221
+ for (var i = 0; i < liArray.length; i++) {
3222
+ nodeData.push(this.getNode(liArray[i]));
3223
+ }
2214
3224
  this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));
2215
- this.triggerEvent();
3225
+ if (dragObj.element.id !== this.element.id) {
3226
+ dragObj.triggerEvent('nodeDropped', nodeData);
3227
+ this.isNodeDropped = true;
3228
+ this.fields.dataSource = this.treeData;
3229
+ }
3230
+ this.triggerEvent('nodeDropped', nodeData);
2216
3231
  };
2217
3232
  TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {
2218
- if (!dragLi.classList.contains('e-disable') && !dropLi.classList.contains('e-disable')) {
3233
+ var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);
3234
+ var collapse = closest(e.target, '.' + COLLAPSIBLE);
3235
+ var expand = closest(e.target, '.' + EXPANDABLE);
3236
+ 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))) {
2219
3237
  if (dropTarget.nodeName === 'LI') {
2220
3238
  this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);
2221
3239
  }
@@ -2224,10 +3242,16 @@ var TreeView = /** @class */ (function (_super) {
2224
3242
  this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);
2225
3243
  }
2226
3244
  }
3245
+ else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {
3246
+ this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);
3247
+ }
2227
3248
  else {
2228
3249
  this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);
2229
3250
  }
2230
3251
  }
3252
+ else {
3253
+ this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);
3254
+ }
2231
3255
  };
2232
3256
  TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {
2233
3257
  var dropUl = closest(dropLi, '.' + PARENTITEM);
@@ -2240,7 +3264,21 @@ var TreeView = /** @class */ (function (_super) {
2240
3264
  else if (e.event.offsetY < 2) {
2241
3265
  pre = true;
2242
3266
  }
2243
- dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);
3267
+ else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {
3268
+ if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {
3269
+ pre = true;
3270
+ }
3271
+ else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {
3272
+ pre = false;
3273
+ }
3274
+ }
3275
+ if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {
3276
+ var target = e.target.closest('li');
3277
+ dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);
3278
+ }
3279
+ else {
3280
+ dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);
3281
+ }
2244
3282
  this.moveData(dragLi, dropLi, dropUl, pre, dragObj);
2245
3283
  this.updateElement(dragParentUl, dragParentLi);
2246
3284
  this.updateAriaLevel(dragLi);
@@ -2252,15 +3290,23 @@ var TreeView = /** @class */ (function (_super) {
2252
3290
  this.updateInstance();
2253
3291
  }
2254
3292
  };
2255
- TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos) {
3293
+ TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {
2256
3294
  var dragParentUl = closest(dragLi, '.' + PARENTITEM);
2257
3295
  var dragParentLi = closest(dragParentUl, '.' + LISTITEM);
2258
3296
  var dropParentUl = closest(dropLi, '.' + PARENTITEM);
2259
- if (e && (pos < 7)) {
3297
+ var templateTarget;
3298
+ if (e && e.target) {
3299
+ templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);
3300
+ }
3301
+ if (e && (pos < 7) && !isCheck) {
2260
3302
  dropParentUl.insertBefore(dragLi, dropLi);
2261
3303
  this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);
2262
3304
  }
2263
- else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10))) {
3305
+ else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {
3306
+ dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);
3307
+ this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);
3308
+ }
3309
+ else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {
2264
3310
  dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);
2265
3311
  this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);
2266
3312
  }
@@ -2375,7 +3421,7 @@ var TreeView = /** @class */ (function (_super) {
2375
3421
  detach(dragParentUl);
2376
3422
  detach(dragIcon);
2377
3423
  var parentId = this.getId(dragParentLi);
2378
- this.updateField(this.treeData, this.fields, parentId, 'hasChildren', null);
3424
+ this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);
2379
3425
  this.removeExpand(dragParentLi, true);
2380
3426
  }
2381
3427
  };
@@ -2433,6 +3479,7 @@ var TreeView = /** @class */ (function (_super) {
2433
3479
  var node = (drop === true) ? draggedNode : dropLi;
2434
3480
  var index = node ? closest(node, '.e-list-parent') : null;
2435
3481
  var i = 0;
3482
+ var position = null;
2436
3483
  dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;
2437
3484
  dragParent = (drop === true) ? this.dragParent : dragParent;
2438
3485
  if (cloneEle) {
@@ -2458,6 +3505,7 @@ var TreeView = /** @class */ (function (_super) {
2458
3505
  }
2459
3506
  }
2460
3507
  indexValue = (dropTar !== 0) ? --indexValue : indexValue;
3508
+ position = (iconClass == "e-drop-in") ? "Inside" : ((event.offsetY < 7) ? "Before" : "After");
2461
3509
  }
2462
3510
  if (dropTarget) {
2463
3511
  if (newParent.length === 0) {
@@ -2477,12 +3525,12 @@ var TreeView = /** @class */ (function (_super) {
2477
3525
  targetParent = dropLi;
2478
3526
  if (drop !== true) {
2479
3527
  level = ++level;
2480
- var parent_1 = targetParent ? select('.e-list-parent', targetParent) : null;
2481
- indexValue = (parent_1) ? parent_1.children.length : 0;
2482
- if (!(this.fields.dataSource instanceof DataManager) && parent_1 === null && targetParent) {
2483
- var parent_2 = targetParent.hasAttribute('data-uid') ?
3528
+ var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;
3529
+ indexValue = (parent_2) ? parent_2.children.length : 0;
3530
+ if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {
3531
+ var parent_3 = targetParent.hasAttribute('data-uid') ?
2484
3532
  this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;
2485
- indexValue = (parent_2) ? parent_2.length : 0;
3533
+ indexValue = (parent_3) ? parent_3.length : 0;
2486
3534
  }
2487
3535
  }
2488
3536
  }
@@ -2500,6 +3548,7 @@ var TreeView = /** @class */ (function (_super) {
2500
3548
  dropTarget: targetParent,
2501
3549
  dropIndicator: iconClass,
2502
3550
  target: target,
3551
+ position: position,
2503
3552
  };
2504
3553
  };
2505
3554
  TreeView.prototype.addFullRow = function (toAdd) {
@@ -2593,9 +3642,11 @@ var TreeView = /** @class */ (function (_super) {
2593
3642
  TreeView.prototype.removeNode = function (node) {
2594
3643
  var dragParentUl = closest(node, '.' + PARENTITEM);
2595
3644
  var dragParentLi = closest(dragParentUl, '.' + LISTITEM);
3645
+ if (!isNOU(this.nodeTemplateFn)) {
3646
+ this.destroyTemplate(node);
3647
+ }
2596
3648
  detach(node);
2597
3649
  this.updateElement(dragParentUl, dragParentLi);
2598
- this.updateInstance();
2599
3650
  this.removeData(node);
2600
3651
  };
2601
3652
  TreeView.prototype.updateInstance = function () {
@@ -2672,6 +3723,19 @@ var TreeView = /** @class */ (function (_super) {
2672
3723
  this.updateMapper(level);
2673
3724
  }
2674
3725
  var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);
3726
+ var id = this.getId(dropLi);
3727
+ var refNode;
3728
+ var dropIcon1;
3729
+ if (!isNullOrUndefined(dropLi)) {
3730
+ dropIcon1 = select('div.' + ICON, dropLi);
3731
+ }
3732
+ if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {
3733
+ this.preventExpand = true;
3734
+ }
3735
+ if (this.dataType !== 1) {
3736
+ this.addChildData(this.treeData, this.fields, id, nodes, index);
3737
+ this.isFirstRender = false;
3738
+ }
2675
3739
  var dropUl;
2676
3740
  if (!dropEle) {
2677
3741
  dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);
@@ -2679,11 +3743,48 @@ var TreeView = /** @class */ (function (_super) {
2679
3743
  else {
2680
3744
  dropUl = dropEle;
2681
3745
  }
2682
- var refNode = dropUl.childNodes[index];
2683
- for (var i = 0; i < li.length; i++) {
2684
- dropUl.insertBefore(li[i], refNode);
3746
+ refNode = dropUl.childNodes[index];
3747
+ if (!this.isFirstRender || this.dataType === 1) {
3748
+ if (refNode || this.sortOrder === 'None') {
3749
+ for (var i = 0; i < li.length; i++) {
3750
+ dropUl.insertBefore(li[i], refNode);
3751
+ }
3752
+ if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {
3753
+ this.preventExpand = false;
3754
+ var dropIcon = select('div.' + ICON, dropLi);
3755
+ if (dropIcon && dropIcon.classList.contains(EXPANDABLE)) {
3756
+ this.expandAction(dropLi, dropIcon, null);
3757
+ }
3758
+ }
3759
+ }
3760
+ if (!refNode && ((this.sortOrder === 'Ascending') || (this.sortOrder === 'Descending'))) {
3761
+ if (dropUl.childNodes.length === 0) {
3762
+ for (var i = 0; i < li.length; i++) {
3763
+ dropUl.insertBefore(li[i], refNode);
3764
+ }
3765
+ if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {
3766
+ this.preventExpand = false;
3767
+ var dropIcon = select('div.' + ICON, dropLi);
3768
+ if (dropIcon && dropIcon.classList.contains(EXPANDABLE)) {
3769
+ this.expandAction(dropLi, dropIcon, null);
3770
+ }
3771
+ }
3772
+ }
3773
+ else {
3774
+ var cNodes = dropUl.childNodes;
3775
+ for (var i = 0; i < li.length; i++) {
3776
+ for (var j = 0; j < cNodes.length; j++) {
3777
+ var returnValue = (this.sortOrder === 'Ascending') ? cNodes[j].textContent.toUpperCase() > li[i].innerText.toUpperCase() : cNodes[j].textContent.toUpperCase() < li[i].innerText.toUpperCase();
3778
+ if (returnValue) {
3779
+ dropUl.insertBefore(li[i], cNodes[j]);
3780
+ break;
3781
+ }
3782
+ dropUl.insertBefore(li[i], cNodes[cNodes.length]);
3783
+ }
3784
+ }
3785
+ }
3786
+ }
2685
3787
  }
2686
- var id = this.getId(dropLi);
2687
3788
  if (this.dataType === 1) {
2688
3789
  this.updateField(this.treeData, this.fields, id, 'hasChildren', true);
2689
3790
  var refId = this.getId(refNode);
@@ -2697,9 +3798,6 @@ var TreeView = /** @class */ (function (_super) {
2697
3798
  pos++;
2698
3799
  }
2699
3800
  }
2700
- else {
2701
- this.addChildData(this.treeData, this.fields, id, nodes, index);
2702
- }
2703
3801
  this.finalizeNode(dropUl);
2704
3802
  };
2705
3803
  TreeView.prototype.updateMapper = function (level) {
@@ -2748,10 +3846,13 @@ var TreeView = /** @class */ (function (_super) {
2748
3846
  for (var i = 0, objlen = obj.length; i < objlen; i++) {
2749
3847
  var nodeId = getValue(mapper.id, obj[i]);
2750
3848
  if (obj[i] && nodeId && nodeId.toString() === id) {
2751
- if ((typeof mapper.child === 'string' && obj[i].hasOwnProperty(mapper.child)) ||
2752
- (this.fields.dataSource instanceof DataManager && obj[i].hasOwnProperty('child'))) {
3849
+ if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||
3850
+ ((this.fields.dataSource instanceof DataManager) && obj[i].hasOwnProperty('child'))) {
2753
3851
  var key = (typeof mapper.child === 'string') ? mapper.child : 'child';
2754
3852
  var childData = getValue(key, obj[i]);
3853
+ if (isNOU(childData)) {
3854
+ childData = [];
3855
+ }
2755
3856
  index = isNOU(index) ? childData.length : index;
2756
3857
  for (var k = 0, len = data.length; k < len; k++) {
2757
3858
  childData.splice(index, 0, data[k]);
@@ -2771,7 +3872,7 @@ var TreeView = /** @class */ (function (_super) {
2771
3872
  break;
2772
3873
  }
2773
3874
  }
2774
- else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {
3875
+ else if ((this.fields.dataSource instanceof DataManager) && !isNOU(getValue('child', obj[i]))) {
2775
3876
  var childData = getValue('child', obj[i]);
2776
3877
  updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);
2777
3878
  if (updated !== undefined) {
@@ -2782,32 +3883,82 @@ var TreeView = /** @class */ (function (_super) {
2782
3883
  return updated;
2783
3884
  };
2784
3885
  TreeView.prototype.doDisableAction = function (nodes) {
2785
- for (var i = 0, len = nodes.length; i < len; i++) {
2786
- var liEle = this.getElement(nodes[i]);
2787
- if (isNOU(liEle)) {
2788
- var id = void 0;
2789
- id = (nodes[i]) ? nodes[i].toString() : null;
2790
- if (id && this.disableNode.indexOf(nodes[i].toString()) === -1) {
2791
- this.disableNode.push(nodes[i].toString());
2792
- }
2793
- continue;
3886
+ var validNodes = this.nodeType(nodes);
3887
+ var validID = this.checkValidId(validNodes);
3888
+ this.validArr = [];
3889
+ for (var i = 0, len = validID.length; i < len; i++) {
3890
+ var id = validID[i][this.fields.id].toString();
3891
+ if (id && this.disableNode.indexOf(id) === -1) {
3892
+ this.disableNode.push(id);
3893
+ }
3894
+ var liEle = this.getElement(id);
3895
+ if (liEle) {
3896
+ liEle.setAttribute('aria-disabled', 'true');
3897
+ addClass([liEle], DISABLE);
2794
3898
  }
2795
- liEle.setAttribute('aria-disabled', 'true');
2796
- addClass([liEle], DISABLE);
2797
3899
  }
2798
3900
  };
2799
3901
  TreeView.prototype.doEnableAction = function (nodes) {
3902
+ var strNodes = this.nodeType(nodes);
3903
+ for (var i = 0, len = strNodes.length; i < len; i++) {
3904
+ var liEle = this.getElement(strNodes[i]);
3905
+ var id = strNodes[i];
3906
+ if (id && this.disableNode.indexOf(id) !== -1) {
3907
+ this.disableNode.splice(this.disableNode.indexOf(id), 1);
3908
+ }
3909
+ if (liEle) {
3910
+ liEle.removeAttribute('aria-disabled');
3911
+ removeClass([liEle], DISABLE);
3912
+ }
3913
+ }
3914
+ };
3915
+ TreeView.prototype.nodeType = function (nodes) {
3916
+ var validID = [];
2800
3917
  for (var i = 0, len = nodes.length; i < len; i++) {
2801
- var liEle = this.getElement(nodes[i]);
2802
- if (isNOU(liEle)) {
2803
- var id = (nodes[i]) ? nodes[i].toString() : null;
2804
- if (id && this.disableNode.indexOf(id) !== -1) {
2805
- this.disableNode.splice(this.disableNode.indexOf(id), 1);
3918
+ var id = void 0;
3919
+ if (typeof nodes[i] == "string") {
3920
+ id = (nodes[i]) ? nodes[i].toString() : null;
3921
+ }
3922
+ else if (typeof nodes[i] === "object") {
3923
+ id = nodes[i] ? nodes[i].getAttribute("data-uid").toString() : null;
3924
+ }
3925
+ if (validID.indexOf(id) == -1) {
3926
+ validID.push(id);
3927
+ }
3928
+ }
3929
+ return validID;
3930
+ };
3931
+ TreeView.prototype.checkValidId = function (node) {
3932
+ var _this = this;
3933
+ if (this.dataType === 1) {
3934
+ this.validArr = this.treeData.filter(function (data) {
3935
+ return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;
3936
+ });
3937
+ }
3938
+ else if (this.dataType === 2) {
3939
+ for (var k = 0; k < this.treeData.length; k++) {
3940
+ var id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;
3941
+ if (node.indexOf(id) !== -1) {
3942
+ this.validArr.push(this.treeData[k]);
2806
3943
  }
2807
- continue;
3944
+ var childItems = getValue(this.fields.child.toString(), this.treeData[k]);
3945
+ if (childItems) {
3946
+ this.filterNestedChild(childItems, node);
3947
+ }
3948
+ }
3949
+ }
3950
+ return this.validArr;
3951
+ };
3952
+ TreeView.prototype.filterNestedChild = function (treeData, nodes) {
3953
+ for (var k = 0; k < treeData.length; k++) {
3954
+ var id = treeData[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;
3955
+ if (nodes.indexOf(id) !== -1) {
3956
+ this.validArr.push(treeData[k]);
3957
+ }
3958
+ var childItems = getValue(this.fields.child.toString(), treeData[k]);
3959
+ if (childItems) {
3960
+ this.filterNestedChild(childItems, nodes);
2808
3961
  }
2809
- liEle.removeAttribute('aria-disabled');
2810
- removeClass([liEle], DISABLE);
2811
3962
  }
2812
3963
  };
2813
3964
  TreeView.prototype.setTouchClass = function () {
@@ -2913,19 +4064,28 @@ var TreeView = /** @class */ (function (_super) {
2913
4064
  }
2914
4065
  return removedData;
2915
4066
  };
2916
- TreeView.prototype.triggerEvent = function () {
2917
- var eventArgs = { data: this.treeData };
4067
+ TreeView.prototype.triggerEvent = function (action, node) {
4068
+ this.renderReactTemplates();
4069
+ if (action === 'addNodes') {
4070
+ var nodeData = [];
4071
+ for (var i = 0; i < node.length; i++) {
4072
+ nodeData.push(this.getNode(this.getElement(isNOU(node[i][this.fields.id]) ? getValue(this.fields.id, node[i]).toString() : null)));
4073
+ }
4074
+ node = nodeData;
4075
+ }
4076
+ var eventArgs = { data: this.treeData, action: action, nodeData: node };
2918
4077
  this.trigger('dataSourceChanged', eventArgs);
2919
4078
  };
2920
4079
  TreeView.prototype.wireInputEvents = function (inpEle) {
2921
4080
  EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);
2922
4081
  };
2923
4082
  TreeView.prototype.wireEditingEvents = function (toBind) {
2924
- if (toBind) {
4083
+ var _this = this;
4084
+ if (toBind && !this.disabled) {
2925
4085
  var proxy_2 = this;
2926
4086
  this.touchEditObj = new Touch(this.element, {
2927
4087
  tap: function (e) {
2928
- if (e.tapCount === 2) {
4088
+ if (_this.isDoubleTapped(e) && e.tapCount === 2) {
2929
4089
  e.originalEvent.preventDefault();
2930
4090
  proxy_2.editingHandler(e.originalEvent);
2931
4091
  }
@@ -2943,7 +4103,6 @@ var TreeView = /** @class */ (function (_super) {
2943
4103
  var proxy_3 = this;
2944
4104
  this.touchClickObj = new Touch(this.element, {
2945
4105
  tap: function (e) {
2946
- e.originalEvent.preventDefault();
2947
4106
  proxy_3.clickHandler(e);
2948
4107
  }
2949
4108
  });
@@ -2960,7 +4119,8 @@ var TreeView = /** @class */ (function (_super) {
2960
4119
  var proxy_4 = this;
2961
4120
  this.touchExpandObj = new Touch(this.element, {
2962
4121
  tap: function (e) {
2963
- if (_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && e.tapCount === 2)) {
4122
+ if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))
4123
+ && e.originalEvent.which !== 3) {
2964
4124
  proxy_4.expandHandler(e);
2965
4125
  }
2966
4126
  }
@@ -2991,8 +4151,6 @@ var TreeView = /** @class */ (function (_super) {
2991
4151
  if (this.expandOnType !== 'None') {
2992
4152
  this.wireExpandOnEvent(true);
2993
4153
  }
2994
- EventHandler.add(this.element, 'focus', this.focusIn, this);
2995
- EventHandler.add(this.element, 'blur', this.focusOut, this);
2996
4154
  EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);
2997
4155
  EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);
2998
4156
  this.keyboardModule = new KeyboardEvents(this.element, {
@@ -3005,11 +4163,11 @@ var TreeView = /** @class */ (function (_super) {
3005
4163
  EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);
3006
4164
  this.wireClickEvent(false);
3007
4165
  this.wireExpandOnEvent(false);
3008
- EventHandler.remove(this.element, 'focus', this.focusIn);
3009
- EventHandler.remove(this.element, 'blur', this.focusOut);
3010
4166
  EventHandler.remove(this.element, 'mouseover', this.onMouseOver);
3011
4167
  EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);
3012
- this.keyboardModule.destroy();
4168
+ if (!this.disabled) {
4169
+ this.keyboardModule.destroy();
4170
+ }
3013
4171
  };
3014
4172
  TreeView.prototype.parents = function (element, selector) {
3015
4173
  var matched = [];
@@ -3022,6 +4180,19 @@ var TreeView = /** @class */ (function (_super) {
3022
4180
  }
3023
4181
  return matched;
3024
4182
  };
4183
+ TreeView.prototype.isDoubleTapped = function (e) {
4184
+ var target = e.originalEvent.target;
4185
+ var secondTap;
4186
+ if (target && e.tapCount) {
4187
+ if (e.tapCount === 1) {
4188
+ this.firstTap = closest(target, '.' + LISTITEM);
4189
+ }
4190
+ else if (e.tapCount === 2) {
4191
+ secondTap = closest(target, '.' + LISTITEM);
4192
+ }
4193
+ }
4194
+ return (this.firstTap === secondTap);
4195
+ };
3025
4196
  TreeView.prototype.isDescendant = function (parent, child) {
3026
4197
  var node = child.parentNode;
3027
4198
  while (!isNOU(node)) {
@@ -3048,10 +4219,303 @@ var TreeView = /** @class */ (function (_super) {
3048
4219
  TreeView.prototype.setCheckedNodes = function (nodes) {
3049
4220
  nodes = JSON.parse(JSON.stringify(nodes));
3050
4221
  this.uncheckAll(this.checkedNodes);
4222
+ this.setIndeterminate(nodes);
3051
4223
  if (nodes.length > 0) {
3052
4224
  this.checkAll(nodes);
3053
4225
  }
3054
4226
  };
4227
+ /**
4228
+ * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel
4229
+ */
4230
+ TreeView.prototype.setValidCheckedNode = function (node) {
4231
+ if (this.dataType === 1) {
4232
+ var mapper = this.fields;
4233
+ var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));
4234
+ if (resultData[0]) {
4235
+ this.setChildCheckState(resultData, node, resultData[0]);
4236
+ if (this.autoCheck) {
4237
+ var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;
4238
+ var childNodes = this.getChildNodes(this.treeData, parent_4);
4239
+ var count = 0;
4240
+ for (var len = 0; len < childNodes.length; len++) {
4241
+ var childId = childNodes[len][this.fields.id].toString();
4242
+ if (this.checkedNodes.indexOf(childId) !== -1) {
4243
+ count++;
4244
+ }
4245
+ }
4246
+ if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {
4247
+ this.checkedNodes.push(parent_4);
4248
+ }
4249
+ }
4250
+ }
4251
+ }
4252
+ else if (this.dataType === 2) {
4253
+ for (var a = 0; a < this.treeData.length; a++) {
4254
+ var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';
4255
+ if (index === node && this.checkedNodes.indexOf(node) === -1) {
4256
+ this.checkedNodes.push(node);
4257
+ break;
4258
+ }
4259
+ var childItems = getValue(this.fields.child.toString(), this.treeData[a]);
4260
+ if (childItems) {
4261
+ this.setChildCheckState(childItems, node, this.treeData[a]);
4262
+ }
4263
+ }
4264
+ }
4265
+ };
4266
+ /**
4267
+ * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)
4268
+ */
4269
+ TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {
4270
+ var checkedParent;
4271
+ var count = 0;
4272
+ if (this.dataType === 1) {
4273
+ if (treeData) {
4274
+ checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;
4275
+ }
4276
+ for (var index = 0; index < childItems.length; index++) {
4277
+ var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;
4278
+ if (treeData && checkedParent && this.autoCheck) {
4279
+ if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {
4280
+ this.checkedNodes.push(checkNode);
4281
+ }
4282
+ }
4283
+ if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {
4284
+ this.checkedNodes.push(node);
4285
+ }
4286
+ var subChildItems = this.getChildNodes(this.treeData, checkNode);
4287
+ if (subChildItems) {
4288
+ this.setChildCheckState(subChildItems, node, treeData);
4289
+ }
4290
+ }
4291
+ }
4292
+ else {
4293
+ if (treeData) {
4294
+ checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';
4295
+ }
4296
+ for (var index = 0; index < childItems.length; index++) {
4297
+ var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';
4298
+ if (treeData && checkedParent && this.autoCheck) {
4299
+ if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {
4300
+ this.checkedNodes.push(checkedChild);
4301
+ }
4302
+ }
4303
+ if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {
4304
+ this.checkedNodes.push(node);
4305
+ }
4306
+ var subChildItems = getValue(this.fields.child.toString(), childItems[index]);
4307
+ if (subChildItems) {
4308
+ this.setChildCheckState(subChildItems, node, childItems[index]);
4309
+ }
4310
+ if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {
4311
+ count++;
4312
+ }
4313
+ if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {
4314
+ this.checkedNodes.push(checkedParent);
4315
+ }
4316
+ }
4317
+ }
4318
+ };
4319
+ TreeView.prototype.setIndeterminate = function (nodes) {
4320
+ for (var i = 0; i < nodes.length; i++) {
4321
+ this.setValidCheckedNode(nodes[i]);
4322
+ }
4323
+ };
4324
+ TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {
4325
+ if (this.dataType === 1) {
4326
+ var pos = this.getDataPos(this.treeData, this.fields, id);
4327
+ this.treeData.splice(pos, 1, newData);
4328
+ if (isRefreshChild) {
4329
+ this.removeChildNodes(id);
4330
+ for (var j = 0; j < childValue.length; j++) {
4331
+ this.treeData.splice(pos, 0, childValue[j]);
4332
+ pos++;
4333
+ }
4334
+ }
4335
+ this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);
4336
+ }
4337
+ else {
4338
+ this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);
4339
+ }
4340
+ };
4341
+ TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {
4342
+ var found;
4343
+ for (var i = 0, objlen = treeData.length; i < objlen; i++) {
4344
+ var nodeId = getValue(mapper.id, treeData[i]);
4345
+ if (treeData[i] && nodeId && nodeId.toString() === currID) {
4346
+ treeData[i] = newData[0];
4347
+ return true;
4348
+ }
4349
+ else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[i]))) {
4350
+ var childObj = getValue(mapper.child, treeData[i]);
4351
+ found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);
4352
+ if (found !== undefined) {
4353
+ break;
4354
+ }
4355
+ }
4356
+ else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[i]))) {
4357
+ var childData = getValue('child', treeData[i]);
4358
+ found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);
4359
+ if (found !== undefined) {
4360
+ break;
4361
+ }
4362
+ }
4363
+ }
4364
+ return found;
4365
+ };
4366
+ TreeView.prototype.dynamicState = function () {
4367
+ this.setDragAndDrop(this.allowDragAndDrop);
4368
+ this.wireEditingEvents(this.allowEditing);
4369
+ if (!this.disabled) {
4370
+ this.wireEvents();
4371
+ this.setRipple();
4372
+ }
4373
+ else {
4374
+ this.unWireEvents();
4375
+ this.rippleFn();
4376
+ this.rippleIconFn();
4377
+ }
4378
+ };
4379
+ TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {
4380
+ var _this = this;
4381
+ var data = this.fields.dataSource;
4382
+ var matchedArr = [];
4383
+ var query = this.getQuery(this.fields);
4384
+ var key = this.fields.id;
4385
+ var crud;
4386
+ var changes = {
4387
+ addedRecords: [],
4388
+ deletedRecords: [],
4389
+ changedRecords: []
4390
+ };
4391
+ var nodesID = [];
4392
+ if (nodes) {
4393
+ nodesID = this.nodeType(nodes);
4394
+ }
4395
+ else if (target) {
4396
+ if (typeof target == "string") {
4397
+ nodesID[0] = target.toString();
4398
+ }
4399
+ else if (typeof target === "object") {
4400
+ nodesID[0] = target.getAttribute("data-uid").toString();
4401
+ }
4402
+ }
4403
+ for (var i = 0, len = nodesID.length; i < len; i++) {
4404
+ var liEle = this.getElement(nodesID[i]);
4405
+ if (isNullOrUndefined(liEle)) {
4406
+ continue;
4407
+ }
4408
+ var removedData = this.getNodeObject(nodesID[i]);
4409
+ matchedArr.push(removedData);
4410
+ }
4411
+ switch (operation) {
4412
+ case 'delete':
4413
+ if (nodes.length == 1) {
4414
+ crud = data.remove(key, matchedArr[0], query.fromTable, query);
4415
+ }
4416
+ else {
4417
+ changes.deletedRecords = matchedArr;
4418
+ crud = data.saveChanges(changes, key, query.fromTable, query);
4419
+ }
4420
+ crud.then(function (e) { return _this.deleteSuccess(nodesID); })
4421
+ .catch(function (e) { return _this.dmFailure(e); });
4422
+ break;
4423
+ case 'update':
4424
+ matchedArr[0][this.fields.text] = newText;
4425
+ crud = data.update(key, matchedArr[0], query.fromTable, query);
4426
+ crud.then(function (e) { return _this.editSucess(target, newText, prevent); })
4427
+ .catch(function (e) { return _this.dmFailure(e, target, prevent); });
4428
+ break;
4429
+ case 'insert':
4430
+ if (newNode.length == 1) {
4431
+ crud = data.insert(newNode[0], query.fromTable, query);
4432
+ }
4433
+ else {
4434
+ var arr = [];
4435
+ for (var i = 0, len = newNode.length; i < len; i++) {
4436
+ arr.push(newNode[i]);
4437
+ }
4438
+ changes.addedRecords = arr;
4439
+ crud = data.saveChanges(changes, key, query.fromTable, query);
4440
+ }
4441
+ crud.then(function (e) {
4442
+ var dropLi = _this.getElement(target);
4443
+ _this.addSuccess(newNode, dropLi, index);
4444
+ _this.preventExpand = false;
4445
+ }).catch(function (e) { return _this.dmFailure(e); });
4446
+ break;
4447
+ }
4448
+ };
4449
+ TreeView.prototype.deleteSuccess = function (nodes) {
4450
+ var nodeData = [];
4451
+ for (var i = 0, len = nodes.length; i < len; i++) {
4452
+ var liEle = this.getElement(nodes[i]);
4453
+ nodeData.push(this.getNode(liEle));
4454
+ if (isNOU(liEle)) {
4455
+ continue;
4456
+ }
4457
+ this.removeNode(liEle);
4458
+ }
4459
+ this.updateInstance();
4460
+ if (this.dataType === 1) {
4461
+ this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);
4462
+ }
4463
+ this.triggerEvent('removeNode', nodeData);
4464
+ };
4465
+ TreeView.prototype.editSucess = function (target, newText, prevent) {
4466
+ var liEle = this.getElement(target);
4467
+ var txtEle = select('.' + LISTTEXT, liEle);
4468
+ this.appendNewText(liEle, txtEle, newText, prevent);
4469
+ };
4470
+ TreeView.prototype.addSuccess = function (nodes, dropLi, index) {
4471
+ var dropUl;
4472
+ var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;
4473
+ var proxy = this;
4474
+ if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&
4475
+ dropLi.querySelector('.' + PARENTITEM) === null) {
4476
+ proxy.renderChildNodes(dropLi, null, function () {
4477
+ dropUl = dropLi.querySelector('.' + PARENTITEM);
4478
+ proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);
4479
+ proxy.triggerEvent('addNodes', nodes);
4480
+ });
4481
+ }
4482
+ else {
4483
+ this.addGivenNodes(nodes, dropLi, index, true);
4484
+ this.triggerEvent('addNodes', nodes);
4485
+ }
4486
+ };
4487
+ TreeView.prototype.dmFailure = function (e, target, prevent) {
4488
+ if (target) {
4489
+ this.updatePreviousText(target, prevent);
4490
+ }
4491
+ this.trigger('actionFailure', { error: e });
4492
+ };
4493
+ TreeView.prototype.updatePreviousText = function (target, prevent) {
4494
+ var liEle = this.getElement(target);
4495
+ var txtEle = select('.' + LISTTEXT, liEle);
4496
+ this.updateText(liEle, txtEle, this.oldText, prevent);
4497
+ };
4498
+ TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {
4499
+ var _this = this;
4500
+ var index = data.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });
4501
+ if (index == -1) {
4502
+ for (var i = 0; i < data.length; i++) {
4503
+ var childItems = getValue(this.fields.child.toString(), data[i]);
4504
+ if (!isNOU(childItems)) {
4505
+ index = childItems.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });
4506
+ if (index == -1) {
4507
+ this.getHierarchicalParentId(node, childItems, parentsID);
4508
+ }
4509
+ else {
4510
+ parentsID.push(data[i][this.fields.id].toString());
4511
+ this.getHierarchicalParentId(data[i][this.fields.id].toString(), this.treeData, parentsID);
4512
+ break;
4513
+ }
4514
+ }
4515
+ }
4516
+ }
4517
+ return parentsID;
4518
+ };
3055
4519
  /**
3056
4520
  * Called internally if any of the property value changed.
3057
4521
  * @param {TreeView} newProp
@@ -3066,6 +4530,11 @@ var TreeView = /** @class */ (function (_super) {
3066
4530
  case 'allowDragAndDrop':
3067
4531
  this.setDragAndDrop(this.allowDragAndDrop);
3068
4532
  break;
4533
+ case 'dragArea':
4534
+ if (this.allowDragAndDrop) {
4535
+ this.dragObj.dragArea = this.dragArea;
4536
+ }
4537
+ break;
3069
4538
  case 'allowEditing':
3070
4539
  this.wireEditingEvents(this.allowEditing);
3071
4540
  break;
@@ -3080,6 +4549,10 @@ var TreeView = /** @class */ (function (_super) {
3080
4549
  this.setMultiSelect(this.allowMultiSelection);
3081
4550
  this.addMultiSelect(this.allowMultiSelection);
3082
4551
  break;
4552
+ case 'allowTextWrap':
4553
+ this.setTextWrap();
4554
+ this.updateWrap();
4555
+ break;
3083
4556
  case 'checkedNodes':
3084
4557
  if (this.showCheckBox) {
3085
4558
  this.checkedNodes = oldProp.checkedNodes;
@@ -3111,34 +4584,46 @@ var TreeView = /** @class */ (function (_super) {
3111
4584
  case 'expandOn':
3112
4585
  this.wireExpandOnEvent(false);
3113
4586
  this.setExpandOnType();
3114
- if (this.expandOnType !== 'None') {
4587
+ if (this.expandOnType !== 'None' && !this.disabled) {
3115
4588
  this.wireExpandOnEvent(true);
3116
4589
  }
3117
4590
  break;
4591
+ case 'disabled':
4592
+ this.setDisabledMode();
4593
+ this.dynamicState();
4594
+ break;
3118
4595
  case 'fields':
3119
4596
  this.isAnimate = false;
4597
+ this.isFieldChange = true;
3120
4598
  this.initialRender = true;
3121
- this.updateListProp(this.fields);
3122
4599
  this.reRenderNodes();
3123
4600
  this.initialRender = false;
3124
4601
  this.isAnimate = true;
4602
+ this.isFieldChange = false;
3125
4603
  break;
3126
4604
  case 'fullRowSelect':
3127
4605
  this.setFullRow(this.fullRowSelect);
3128
4606
  this.addFullRow(this.fullRowSelect);
4607
+ if (this.allowTextWrap) {
4608
+ this.setTextWrap();
4609
+ this.updateWrap();
4610
+ }
3129
4611
  break;
3130
4612
  case 'loadOnDemand':
3131
4613
  if (this.loadOnDemand === false && !this.onLoaded) {
3132
4614
  var nodes = this.element.querySelectorAll('li');
3133
4615
  var i = 0;
3134
4616
  while (i < nodes.length) {
3135
- this.renderChildNodes(nodes[i], true, null, true);
4617
+ if (nodes[i].getAttribute('aria-expanded') !== 'true') {
4618
+ this.renderChildNodes(nodes[i], true, null, true);
4619
+ }
3136
4620
  i++;
3137
4621
  }
3138
4622
  this.onLoaded = true;
3139
4623
  }
3140
4624
  break;
3141
4625
  case 'nodeTemplate':
4626
+ this.hasTemplate = false;
3142
4627
  this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);
3143
4628
  this.reRenderNodes();
3144
4629
  break;
@@ -3153,6 +4638,11 @@ var TreeView = /** @class */ (function (_super) {
3153
4638
  case 'sortOrder':
3154
4639
  this.reRenderNodes();
3155
4640
  break;
4641
+ case 'fullRowNavigable':
4642
+ this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);
4643
+ this.listBaseOption.itemNavigable = newProp.fullRowNavigable;
4644
+ this.reRenderNodes();
4645
+ break;
3156
4646
  }
3157
4647
  }
3158
4648
  };
@@ -3160,16 +4650,20 @@ var TreeView = /** @class */ (function (_super) {
3160
4650
  * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.
3161
4651
  */
3162
4652
  TreeView.prototype.destroy = function () {
4653
+ this.clearTemplate();
3163
4654
  this.element.removeAttribute('aria-activedescendant');
3164
- this.element.removeAttribute('tabindex');
3165
4655
  this.unWireEvents();
3166
4656
  this.wireEditingEvents(false);
3167
- this.rippleFn();
3168
- this.rippleIconFn();
4657
+ if (!this.disabled) {
4658
+ this.rippleFn();
4659
+ this.rippleIconFn();
4660
+ }
3169
4661
  this.setCssClass(this.cssClass, null);
3170
4662
  this.setDragAndDrop(false);
3171
4663
  this.setFullRow(false);
3172
- this.element.innerHTML = '';
4664
+ if (this.ulElement && this.ulElement.parentElement) {
4665
+ this.ulElement.parentElement.removeChild(this.ulElement);
4666
+ }
3173
4667
  _super.prototype.destroy.call(this);
3174
4668
  };
3175
4669
  /**
@@ -3188,20 +4682,11 @@ var TreeView = /** @class */ (function (_super) {
3188
4682
  var dropLi = this.getElement(target);
3189
4683
  this.preventExpand = preventTargetExpand;
3190
4684
  if (this.fields.dataSource instanceof DataManager) {
3191
- var dropUl_1;
3192
- var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;
3193
- var proxy_5 = this;
3194
- if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&
3195
- dropLi.querySelector('.' + PARENTITEM) === null) {
3196
- proxy_5.renderChildNodes(dropLi, null, function () {
3197
- dropUl_1 = dropLi.querySelector('.' + PARENTITEM);
3198
- proxy_5.addGivenNodes(nodes, dropLi, index, true, dropUl_1);
3199
- proxy_5.triggerEvent();
3200
- });
4685
+ if (!this.isOffline) {
4686
+ this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);
3201
4687
  }
3202
4688
  else {
3203
- this.addGivenNodes(nodes, dropLi, index, true);
3204
- this.triggerEvent();
4689
+ this.addSuccess(nodes, dropLi, index);
3205
4690
  }
3206
4691
  }
3207
4692
  else if (this.dataType === 2) {
@@ -3221,22 +4706,27 @@ var TreeView = /** @class */ (function (_super) {
3221
4706
  }
3222
4707
  this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);
3223
4708
  }
3224
- if (this.fields.dataSource instanceof DataManager === false) {
4709
+ this.updateCheckedStateFromDS();
4710
+ if (this.showCheckBox && dropLi) {
4711
+ this.ensureParentCheckState(dropLi);
4712
+ }
4713
+ if ((this.fields.dataSource instanceof DataManager === false)) {
3225
4714
  this.preventExpand = false;
3226
- this.triggerEvent();
4715
+ this.triggerEvent('addNodes', nodes);
3227
4716
  }
3228
4717
  };
3229
4718
  /**
3230
- * Instead of clicking on the TreeView node for editing, we can enable it by using
3231
- * `beginEdit` property. On passing the node ID or element through this property, the edit textBox
4719
+ * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the
4720
+ * TreeView node. On passing the node ID or element through this property, the edit textBox
3232
4721
  * will be created for the particular node thus allowing us to edit it.
3233
4722
  * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.
3234
4723
  */
3235
4724
  TreeView.prototype.beginEdit = function (node) {
3236
4725
  var ele = this.getElement(node);
3237
- if (!isNOU(ele)) {
3238
- this.createTextbox(ele, null);
4726
+ if (isNOU(ele) || this.disabled) {
4727
+ return;
3239
4728
  }
4729
+ this.createTextbox(ele, null);
3240
4730
  };
3241
4731
  /**
3242
4732
  * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes
@@ -3294,13 +4784,26 @@ var TreeView = /** @class */ (function (_super) {
3294
4784
  * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.
3295
4785
  */
3296
4786
  TreeView.prototype.ensureVisible = function (node) {
4787
+ var parentsId = [];
4788
+ if (this.dataType == 1) {
4789
+ var nodeData = this.getTreeData(node);
4790
+ while (nodeData.length != 0 && !isNOU(nodeData[0][this.fields.parentID])) {
4791
+ parentsId.push(nodeData[0][this.fields.parentID].toString());
4792
+ nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());
4793
+ }
4794
+ }
4795
+ else if (this.dataType == 2) {
4796
+ parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId).reverse();
4797
+ }
4798
+ this.expandAll(parentsId);
3297
4799
  var liEle = this.getElement(node);
3298
- if (isNOU(liEle)) {
3299
- return;
4800
+ if (!isNOU(liEle)) {
4801
+ if (typeof node == 'object') {
4802
+ var parents = this.parents(liEle, '.' + LISTITEM);
4803
+ this.expandAll(parents);
4804
+ }
4805
+ setTimeout(function () { liEle.scrollIntoView({ behavior: "smooth" }); }, 450);
3300
4806
  }
3301
- var parents = this.parents(liEle, '.' + LISTITEM);
3302
- this.expandAll(parents);
3303
- setTimeout(function () { liEle.scrollIntoView(true); }, 450);
3304
4807
  };
3305
4808
  /**
3306
4809
  * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes
@@ -3328,49 +4831,17 @@ var TreeView = /** @class */ (function (_super) {
3328
4831
  */
3329
4832
  TreeView.prototype.getAllCheckedNodes = function () {
3330
4833
  var checkNodes = this.checkedNodes;
3331
- var newCheck = [];
3332
- var i = 0;
3333
- var id = this.fields.id;
3334
- for (i; i < this.treeData.length; i++) {
3335
- //Checks if isChecked is enabled while node is not loaded in DOM
3336
- var checked = null;
3337
- var childNode = null;
3338
- var isLoaded = this.element.querySelector('[data-uid="' + this.treeData[i][id].toString() + '"]');
3339
- if (isLoaded && isLoaded.querySelector('.e-list-item') === null) {
3340
- //Checks if isChecked is enabled for parent
3341
- if (this.treeData[i][this.fields.isChecked] === true
3342
- && this.checkedElement.indexOf(this.treeData[i][id].toString()) === -1) {
3343
- newCheck.push(this.treeData[i][id].toString());
3344
- checked = 2;
3345
- }
3346
- //Checks for child nodes with isChecked enabled
3347
- if (checked !== 2) {
3348
- checked = 1;
3349
- }
3350
- childNode = this.getChildNodes(this.treeData, this.treeData[i][id].toString());
3351
- (childNode !== null) ? this.allCheckNode(childNode, newCheck, checked) : childNode = null;
3352
- }
3353
- }
3354
- i = 0;
3355
- //Gets checked nodes based on UI interaction
3356
- while (i < checkNodes.length) {
3357
- if (newCheck.indexOf(checkNodes[i]) !== -1) {
3358
- i++;
3359
- continue;
3360
- }
3361
- newCheck.push(checkNodes[i]);
3362
- //Gets all child which is not loaded while parent is checked
3363
- var parentNode = this.element.querySelector('[data-uid="' + checkNodes[i] + '"]');
3364
- if (parentNode && parentNode.querySelector('.e-list-item') === null) {
3365
- var child = this.getChildNodes(this.treeData, checkNodes[i].toString());
3366
- (child && this.autoCheck) ? this.allCheckNode(child, newCheck) : child = null;
3367
- }
3368
- i++;
3369
- }
3370
- return newCheck;
4834
+ return checkNodes;
4835
+ };
4836
+ /**
4837
+ * Gets all the disabled nodes including child, whether it is loaded or not.
4838
+ */
4839
+ TreeView.prototype.getDisabledNodes = function () {
4840
+ var disabledNodes = this.disableNode;
4841
+ return disabledNodes;
3371
4842
  };
3372
4843
  /**
3373
- * Get the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.
4844
+ * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.
3374
4845
  * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.
3375
4846
  */
3376
4847
  TreeView.prototype.getNode = function (node) {
@@ -3384,6 +4855,7 @@ var TreeView = /** @class */ (function (_super) {
3384
4855
  * of the corresponding node otherwise it will return the entire updated data source of TreeView.
3385
4856
  * * The updated data source also contains custom attributes if you specified in data source.
3386
4857
  * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.
4858
+ * @isGenericType true
3387
4859
  */
3388
4860
  TreeView.prototype.getTreeData = function (node) {
3389
4861
  var id = this.getId(node);
@@ -3405,11 +4877,13 @@ var TreeView = /** @class */ (function (_super) {
3405
4877
  */
3406
4878
  TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {
3407
4879
  var dropLi = this.getElement(target);
4880
+ var nodeData = [];
3408
4881
  if (isNOU(dropLi)) {
3409
4882
  return;
3410
4883
  }
3411
4884
  for (var i = 0; i < sourceNodes.length; i++) {
3412
4885
  var dragLi = this.getElement(sourceNodes[i]);
4886
+ nodeData.push(this.getNode(dragLi));
3413
4887
  if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {
3414
4888
  continue;
3415
4889
  }
@@ -3419,7 +4893,111 @@ var TreeView = /** @class */ (function (_super) {
3419
4893
  if (this.fields.dataSource instanceof DataManager === false) {
3420
4894
  this.preventExpand = false;
3421
4895
  }
3422
- this.triggerEvent();
4896
+ this.triggerEvent('moveNodes', nodeData);
4897
+ };
4898
+ /**
4899
+ * Refreshes a particular node of the TreeView.
4900
+ * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.
4901
+ * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.
4902
+ */
4903
+ TreeView.prototype.refreshNode = function (target, newData) {
4904
+ if (isNOU(target) || isNOU(newData)) {
4905
+ return;
4906
+ }
4907
+ var id;
4908
+ var isRefreshChild = false;
4909
+ if (this.dataType == 1 && newData.length > 1) {
4910
+ isRefreshChild = true;
4911
+ }
4912
+ else if (this.dataType == 2 && newData.length === 1) {
4913
+ var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);
4914
+ if (!isNOU(updatedChildValue)) {
4915
+ isRefreshChild = true;
4916
+ }
4917
+ }
4918
+ var liEle = this.getElement(target);
4919
+ id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);
4920
+ this.refreshData = this.getNodeObject(id);
4921
+ newData = JSON.parse(JSON.stringify(newData));
4922
+ /* eslint-disable */
4923
+ var newNodeData;
4924
+ var parentData;
4925
+ if (this.dataType == 1 && isRefreshChild) {
4926
+ for (var k = 0; k < newData.length; k++) {
4927
+ if (isNOU(newData[k][this.fields.parentID])) {
4928
+ parentData = newData[k];
4929
+ newData.splice(k, 1);
4930
+ break;
4931
+ }
4932
+ }
4933
+ newNodeData = extend({}, this.refreshData, parentData);
4934
+ }
4935
+ else {
4936
+ newNodeData = extend({}, this.refreshData, newData[0]);
4937
+ }
4938
+ if (isNOU(liEle)) {
4939
+ this.updatePosition(id, newNodeData, isRefreshChild, newData);
4940
+ return;
4941
+ }
4942
+ this.isRefreshed = true;
4943
+ var level = parseFloat(liEle.getAttribute('aria-level'));
4944
+ var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);
4945
+ var ul = select('.' + PARENTITEM, liEle);
4946
+ var childItems = getValue(this.fields.child.toString(), newNodeData);
4947
+ if ((isRefreshChild && ul) || (isRefreshChild && !isNOU(childItems))) {
4948
+ var parentEle = liEle.parentElement;
4949
+ var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);
4950
+ remove(liEle);
4951
+ parentEle.insertBefore(newliEle[0], parentEle.childNodes[index]);
4952
+ this.updatePosition(id, newNodeData, isRefreshChild, newData);
4953
+ if (isRefreshChild && ul) {
4954
+ this.expandAll([id]);
4955
+ }
4956
+ }
4957
+ else {
4958
+ var txtEle = select('.' + TEXTWRAP, liEle);
4959
+ var newTextEle = select('.' + TEXTWRAP, newliEle[0]);
4960
+ var icon = select('div.' + ICON, txtEle);
4961
+ var newIcon = select('div.' + ICON, newTextEle);
4962
+ if (icon && newIcon) {
4963
+ if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {
4964
+ removeClass([newIcon], EXPANDABLE);
4965
+ addClass([newIcon], COLLAPSIBLE);
4966
+ }
4967
+ else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {
4968
+ removeClass([newIcon], COLLAPSIBLE);
4969
+ addClass([newIcon], EXPANDABLE);
4970
+ }
4971
+ else if (icon.classList.contains('interaction')) {
4972
+ addClass([newIcon], 'interaction');
4973
+ }
4974
+ }
4975
+ remove(txtEle);
4976
+ var fullEle = select('.' + FULLROW, liEle);
4977
+ fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);
4978
+ this.updatePosition(id, newNodeData, isRefreshChild, newData);
4979
+ }
4980
+ liEle = this.getElement(target);
4981
+ if (newNodeData[this.fields.tooltip]) {
4982
+ liEle.setAttribute("title", newNodeData[this.fields.tooltip]);
4983
+ }
4984
+ if (newNodeData.hasOwnProperty(this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {
4985
+ var attr = {};
4986
+ merge(attr, newNodeData[this.fields.htmlAttributes]);
4987
+ if (attr.class) {
4988
+ addClass([liEle], attr.class.split(' '));
4989
+ delete attr.class;
4990
+ }
4991
+ else {
4992
+ attributes(liEle, attr);
4993
+ }
4994
+ }
4995
+ if (this.selectedNodes.indexOf(id) !== -1) {
4996
+ liEle.setAttribute('aria-selected', 'true');
4997
+ addClass([liEle], ACTIVE);
4998
+ }
4999
+ this.isRefreshed = false;
5000
+ this.triggerEvent('refreshNode', [this.getNode(liEle)]);
3423
5001
  };
3424
5002
  /**
3425
5003
  * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.
@@ -3427,17 +5005,12 @@ var TreeView = /** @class */ (function (_super) {
3427
5005
  */
3428
5006
  TreeView.prototype.removeNodes = function (nodes) {
3429
5007
  if (!isNOU(nodes)) {
3430
- for (var i = 0, len = nodes.length; i < len; i++) {
3431
- var liEle = this.getElement(nodes[i]);
3432
- if (isNOU(liEle)) {
3433
- continue;
3434
- }
3435
- this.removeNode(liEle);
5008
+ if (this.fields.dataSource instanceof DataManager && !this.isOffline) {
5009
+ this.crudOperation('delete', nodes);
3436
5010
  }
3437
- if (this.dataType === 1) {
3438
- this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);
5011
+ else {
5012
+ this.deleteSuccess(nodes);
3439
5013
  }
3440
- this.triggerEvent();
3441
5014
  }
3442
5015
  };
3443
5016
  /**
@@ -3446,6 +5019,7 @@ var TreeView = /** @class */ (function (_super) {
3446
5019
  * @param {string} newText - Specifies the new text of TreeView node.
3447
5020
  */
3448
5021
  TreeView.prototype.updateNode = function (target, newText) {
5022
+ var _this = this;
3449
5023
  if (isNOU(target) || isNOU(newText) || !this.allowEditing) {
3450
5024
  return;
3451
5025
  }
@@ -3456,11 +5030,16 @@ var TreeView = /** @class */ (function (_super) {
3456
5030
  var txtEle = select('.' + LISTTEXT, liEle);
3457
5031
  this.updateOldText(liEle);
3458
5032
  var eventArgs = this.getEditEvent(liEle, null, null);
3459
- this.trigger('nodeEditing', eventArgs);
3460
- if (eventArgs.cancel) {
3461
- return;
3462
- }
3463
- this.appendNewText(liEle, txtEle, newText, false);
5033
+ this.trigger('nodeEditing', eventArgs, function (observedArgs) {
5034
+ if (!observedArgs.cancel) {
5035
+ if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {
5036
+ _this.crudOperation('update', null, target, newText, null, null, false);
5037
+ }
5038
+ else {
5039
+ _this.appendNewText(liEle, txtEle, newText, false);
5040
+ }
5041
+ }
5042
+ });
3464
5043
  };
3465
5044
  /**
3466
5045
  * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes
@@ -3482,6 +5061,9 @@ var TreeView = /** @class */ (function (_super) {
3482
5061
  __decorate([
3483
5062
  Property(false)
3484
5063
  ], TreeView.prototype, "allowMultiSelection", void 0);
5064
+ __decorate([
5065
+ Property(false)
5066
+ ], TreeView.prototype, "allowTextWrap", void 0);
3485
5067
  __decorate([
3486
5068
  Complex({}, NodeAnimationSettings)
3487
5069
  ], TreeView.prototype, "animation", void 0);
@@ -3493,10 +5075,16 @@ var TreeView = /** @class */ (function (_super) {
3493
5075
  ], TreeView.prototype, "cssClass", void 0);
3494
5076
  __decorate([
3495
5077
  Property(false)
3496
- ], TreeView.prototype, "enablePersistence", void 0);
5078
+ ], TreeView.prototype, "disabled", void 0);
5079
+ __decorate([
5080
+ Property(null)
5081
+ ], TreeView.prototype, "dragArea", void 0);
5082
+ __decorate([
5083
+ Property(false)
5084
+ ], TreeView.prototype, "enableHtmlSanitizer", void 0);
3497
5085
  __decorate([
3498
5086
  Property(false)
3499
- ], TreeView.prototype, "enableRtl", void 0);
5087
+ ], TreeView.prototype, "enablePersistence", void 0);
3500
5088
  __decorate([
3501
5089
  Property()
3502
5090
  ], TreeView.prototype, "expandedNodes", void 0);
@@ -3512,6 +5100,9 @@ var TreeView = /** @class */ (function (_super) {
3512
5100
  __decorate([
3513
5101
  Property(true)
3514
5102
  ], TreeView.prototype, "loadOnDemand", void 0);
5103
+ __decorate([
5104
+ Property()
5105
+ ], TreeView.prototype, "locale", void 0);
3515
5106
  __decorate([
3516
5107
  Property()
3517
5108
  ], TreeView.prototype, "nodeTemplate", void 0);
@@ -3527,6 +5118,12 @@ var TreeView = /** @class */ (function (_super) {
3527
5118
  __decorate([
3528
5119
  Property(true)
3529
5120
  ], TreeView.prototype, "autoCheck", void 0);
5121
+ __decorate([
5122
+ Property(false)
5123
+ ], TreeView.prototype, "fullRowNavigable", void 0);
5124
+ __decorate([
5125
+ Event()
5126
+ ], TreeView.prototype, "actionFailure", void 0);
3530
5127
  __decorate([
3531
5128
  Event()
3532
5129
  ], TreeView.prototype, "created", void 0);