primeng 16.4.2 → 16.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/api/treenode.d.ts +1 -0
  2. package/contextmenu/contextmenu.d.ts +11 -1
  3. package/esm2022/accordion/accordion.mjs +10 -10
  4. package/esm2022/animate/animate.mjs +7 -7
  5. package/esm2022/api/confirmationservice.mjs +3 -3
  6. package/esm2022/api/contextmenuservice.mjs +3 -3
  7. package/esm2022/api/filterservice.mjs +3 -3
  8. package/esm2022/api/messageservice.mjs +3 -3
  9. package/esm2022/api/overlayservice.mjs +3 -3
  10. package/esm2022/api/primengconfig.mjs +3 -3
  11. package/esm2022/api/shared.mjs +13 -13
  12. package/esm2022/api/treedragdropservice.mjs +3 -3
  13. package/esm2022/api/treenode.mjs +1 -1
  14. package/esm2022/autocomplete/autocomplete.mjs +7 -7
  15. package/esm2022/autofocus/autofocus.mjs +7 -7
  16. package/esm2022/avatar/avatar.mjs +7 -7
  17. package/esm2022/avatargroup/avatargroup.mjs +7 -7
  18. package/esm2022/badge/badge.mjs +10 -10
  19. package/esm2022/baseicon/baseicon.mjs +3 -3
  20. package/esm2022/blockui/blockui.mjs +7 -7
  21. package/esm2022/breadcrumb/breadcrumb.mjs +7 -7
  22. package/esm2022/button/button.mjs +10 -10
  23. package/esm2022/calendar/calendar.mjs +7 -7
  24. package/esm2022/card/card.mjs +7 -7
  25. package/esm2022/carousel/carousel.mjs +7 -7
  26. package/esm2022/cascadeselect/cascadeselect.mjs +10 -10
  27. package/esm2022/chart/chart.mjs +7 -7
  28. package/esm2022/checkbox/checkbox.mjs +7 -7
  29. package/esm2022/chip/chip.mjs +7 -7
  30. package/esm2022/chips/chips.mjs +7 -7
  31. package/esm2022/colorpicker/colorpicker.mjs +7 -7
  32. package/esm2022/confirmdialog/confirmdialog.mjs +7 -7
  33. package/esm2022/confirmpopup/confirmpopup.mjs +7 -7
  34. package/esm2022/contextmenu/contextmenu.mjs +55 -19
  35. package/esm2022/dataview/dataview.mjs +10 -10
  36. package/esm2022/defer/defer.mjs +7 -7
  37. package/esm2022/dialog/dialog.mjs +7 -7
  38. package/esm2022/divider/divider.mjs +7 -7
  39. package/esm2022/dock/dock.mjs +7 -7
  40. package/esm2022/dragdrop/dragdrop.mjs +10 -10
  41. package/esm2022/dropdown/dropdown.mjs +10 -10
  42. package/esm2022/dynamicdialog/dialogservice.mjs +3 -3
  43. package/esm2022/dynamicdialog/dynamicdialog.mjs +7 -7
  44. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +3 -3
  45. package/esm2022/editor/editor.mjs +7 -7
  46. package/esm2022/fieldset/fieldset.mjs +7 -7
  47. package/esm2022/fileupload/fileupload.mjs +7 -7
  48. package/esm2022/focustrap/focustrap.mjs +7 -7
  49. package/esm2022/galleria/galleria.mjs +19 -19
  50. package/esm2022/icons/angledoubledown/angledoubledown.mjs +3 -3
  51. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +3 -3
  52. package/esm2022/icons/angledoubleright/angledoubleright.mjs +3 -3
  53. package/esm2022/icons/angledoubleup/angledoubleup.mjs +3 -3
  54. package/esm2022/icons/angledown/angledown.mjs +3 -3
  55. package/esm2022/icons/angleleft/angleleft.mjs +3 -3
  56. package/esm2022/icons/angleright/angleright.mjs +3 -3
  57. package/esm2022/icons/angleup/angleup.mjs +3 -3
  58. package/esm2022/icons/arrowdown/arrowdown.mjs +3 -3
  59. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +3 -3
  60. package/esm2022/icons/arrowdownright/arrowdownright.mjs +3 -3
  61. package/esm2022/icons/arrowleft/arrowleft.mjs +3 -3
  62. package/esm2022/icons/arrowright/arrowright.mjs +3 -3
  63. package/esm2022/icons/arrowup/arrowup.mjs +3 -3
  64. package/esm2022/icons/ban/ban.mjs +3 -3
  65. package/esm2022/icons/bars/bars.mjs +3 -3
  66. package/esm2022/icons/calendar/calendar.mjs +3 -3
  67. package/esm2022/icons/caretleft/caretleft.mjs +3 -3
  68. package/esm2022/icons/caretright/caretright.mjs +3 -3
  69. package/esm2022/icons/check/check.mjs +3 -3
  70. package/esm2022/icons/chevrondown/chevrondown.mjs +3 -3
  71. package/esm2022/icons/chevronleft/chevronleft.mjs +3 -3
  72. package/esm2022/icons/chevronright/chevronright.mjs +3 -3
  73. package/esm2022/icons/chevronup/chevronup.mjs +3 -3
  74. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +3 -3
  75. package/esm2022/icons/eye/eye.mjs +3 -3
  76. package/esm2022/icons/eyeslash/eyeslash.mjs +3 -3
  77. package/esm2022/icons/filter/filter.mjs +3 -3
  78. package/esm2022/icons/filterslash/filterslash.mjs +3 -3
  79. package/esm2022/icons/home/home.mjs +3 -3
  80. package/esm2022/icons/infocircle/infocircle.mjs +3 -3
  81. package/esm2022/icons/minus/minus.mjs +3 -3
  82. package/esm2022/icons/pencil/pencil.mjs +3 -3
  83. package/esm2022/icons/plus/plus.mjs +3 -3
  84. package/esm2022/icons/refresh/refresh.mjs +3 -3
  85. package/esm2022/icons/search/search.mjs +3 -3
  86. package/esm2022/icons/searchminus/searchminus.mjs +3 -3
  87. package/esm2022/icons/searchplus/searchplus.mjs +3 -3
  88. package/esm2022/icons/sortalt/sortalt.mjs +3 -3
  89. package/esm2022/icons/sortamountdown/sortamountdown.mjs +3 -3
  90. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +3 -3
  91. package/esm2022/icons/spinner/spinner.mjs +3 -3
  92. package/esm2022/icons/star/star.mjs +3 -3
  93. package/esm2022/icons/starfill/starfill.mjs +3 -3
  94. package/esm2022/icons/thlarge/thlarge.mjs +3 -3
  95. package/esm2022/icons/times/times.mjs +3 -3
  96. package/esm2022/icons/timescircle/timescircle.mjs +3 -3
  97. package/esm2022/icons/trash/trash.mjs +3 -3
  98. package/esm2022/icons/undo/undo.mjs +3 -3
  99. package/esm2022/icons/upload/upload.mjs +3 -3
  100. package/esm2022/icons/windowmaximize/windowmaximize.mjs +3 -3
  101. package/esm2022/icons/windowminimize/windowminimize.mjs +3 -3
  102. package/esm2022/image/image.mjs +7 -7
  103. package/esm2022/inplace/inplace.mjs +13 -13
  104. package/esm2022/inputmask/inputmask.mjs +7 -7
  105. package/esm2022/inputnumber/inputnumber.mjs +7 -7
  106. package/esm2022/inputswitch/inputswitch.mjs +7 -7
  107. package/esm2022/inputtext/inputtext.mjs +7 -7
  108. package/esm2022/inputtextarea/inputtextarea.mjs +7 -7
  109. package/esm2022/keyfilter/keyfilter.mjs +7 -7
  110. package/esm2022/knob/knob.mjs +7 -7
  111. package/esm2022/listbox/listbox.mjs +7 -7
  112. package/esm2022/megamenu/megamenu.mjs +10 -10
  113. package/esm2022/menu/menu.mjs +13 -13
  114. package/esm2022/menubar/menubar.mjs +13 -13
  115. package/esm2022/message/message.mjs +7 -7
  116. package/esm2022/messages/messages.mjs +7 -7
  117. package/esm2022/multiselect/multiselect.mjs +10 -10
  118. package/esm2022/orderlist/orderlist.mjs +7 -7
  119. package/esm2022/organizationchart/organizationchart.mjs +10 -10
  120. package/esm2022/overlay/overlay.mjs +7 -7
  121. package/esm2022/overlaypanel/overlaypanel.mjs +7 -7
  122. package/esm2022/paginator/paginator.mjs +7 -7
  123. package/esm2022/panel/panel.mjs +7 -7
  124. package/esm2022/panelmenu/panelmenu.mjs +13 -13
  125. package/esm2022/password/password.mjs +13 -13
  126. package/esm2022/picklist/picklist.mjs +7 -7
  127. package/esm2022/progressbar/progressbar.mjs +7 -7
  128. package/esm2022/progressspinner/progressspinner.mjs +7 -7
  129. package/esm2022/radiobutton/radiobutton.mjs +10 -10
  130. package/esm2022/rating/rating.mjs +7 -7
  131. package/esm2022/ripple/ripple.mjs +7 -7
  132. package/esm2022/scroller/scroller.mjs +7 -7
  133. package/esm2022/scrollpanel/scrollpanel.mjs +7 -7
  134. package/esm2022/scrolltop/scrolltop.mjs +7 -7
  135. package/esm2022/selectbutton/selectbutton.mjs +7 -7
  136. package/esm2022/sidebar/sidebar.mjs +7 -7
  137. package/esm2022/skeleton/skeleton.mjs +7 -7
  138. package/esm2022/slidemenu/slidemenu.mjs +10 -10
  139. package/esm2022/slider/slider.mjs +7 -7
  140. package/esm2022/speeddial/speeddial.mjs +7 -7
  141. package/esm2022/spinner/spinner.mjs +7 -7
  142. package/esm2022/splitbutton/splitbutton.mjs +7 -7
  143. package/esm2022/splitter/splitter.mjs +7 -7
  144. package/esm2022/steps/steps.mjs +7 -7
  145. package/esm2022/styleclass/styleclass.mjs +7 -7
  146. package/esm2022/table/table.mjs +82 -82
  147. package/esm2022/tabmenu/tabmenu.mjs +7 -7
  148. package/esm2022/tabview/tabview.mjs +10 -10
  149. package/esm2022/tag/tag.mjs +7 -7
  150. package/esm2022/terminal/terminal.mjs +7 -7
  151. package/esm2022/terminal/terminalservice.mjs +3 -3
  152. package/esm2022/tieredmenu/tieredmenu.mjs +10 -10
  153. package/esm2022/timeline/timeline.mjs +9 -9
  154. package/esm2022/toast/toast.mjs +10 -10
  155. package/esm2022/togglebutton/togglebutton.mjs +7 -7
  156. package/esm2022/toolbar/toolbar.mjs +7 -7
  157. package/esm2022/tooltip/tooltip.mjs +7 -7
  158. package/esm2022/tree/tree.mjs +10 -10
  159. package/esm2022/treeselect/treeselect.mjs +7 -7
  160. package/esm2022/treetable/treetable.mjs +555 -241
  161. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +7 -7
  162. package/esm2022/virtualscroller/virtualscroller.mjs +7 -7
  163. package/fesm2022/primeng-accordion.mjs +10 -10
  164. package/fesm2022/primeng-animate.mjs +7 -7
  165. package/fesm2022/primeng-api.mjs +34 -34
  166. package/fesm2022/primeng-autocomplete.mjs +7 -7
  167. package/fesm2022/primeng-autofocus.mjs +7 -7
  168. package/fesm2022/primeng-avatar.mjs +7 -7
  169. package/fesm2022/primeng-avatargroup.mjs +7 -7
  170. package/fesm2022/primeng-badge.mjs +10 -10
  171. package/fesm2022/primeng-baseicon.mjs +3 -3
  172. package/fesm2022/primeng-blockui.mjs +7 -7
  173. package/fesm2022/primeng-breadcrumb.mjs +7 -7
  174. package/fesm2022/primeng-button.mjs +10 -10
  175. package/fesm2022/primeng-calendar.mjs +7 -7
  176. package/fesm2022/primeng-card.mjs +7 -7
  177. package/fesm2022/primeng-carousel.mjs +7 -7
  178. package/fesm2022/primeng-cascadeselect.mjs +10 -10
  179. package/fesm2022/primeng-chart.mjs +7 -7
  180. package/fesm2022/primeng-checkbox.mjs +7 -7
  181. package/fesm2022/primeng-chip.mjs +7 -7
  182. package/fesm2022/primeng-chips.mjs +7 -7
  183. package/fesm2022/primeng-colorpicker.mjs +7 -7
  184. package/fesm2022/primeng-confirmdialog.mjs +7 -7
  185. package/fesm2022/primeng-confirmpopup.mjs +7 -7
  186. package/fesm2022/primeng-contextmenu.mjs +54 -18
  187. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  188. package/fesm2022/primeng-dataview.mjs +10 -10
  189. package/fesm2022/primeng-defer.mjs +7 -7
  190. package/fesm2022/primeng-dialog.mjs +7 -7
  191. package/fesm2022/primeng-divider.mjs +7 -7
  192. package/fesm2022/primeng-dock.mjs +7 -7
  193. package/fesm2022/primeng-dragdrop.mjs +10 -10
  194. package/fesm2022/primeng-dropdown.mjs +10 -10
  195. package/fesm2022/primeng-dynamicdialog.mjs +13 -13
  196. package/fesm2022/primeng-editor.mjs +7 -7
  197. package/fesm2022/primeng-fieldset.mjs +7 -7
  198. package/fesm2022/primeng-fileupload.mjs +7 -7
  199. package/fesm2022/primeng-focustrap.mjs +7 -7
  200. package/fesm2022/primeng-galleria.mjs +19 -19
  201. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -3
  202. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -3
  203. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -3
  204. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -3
  205. package/fesm2022/primeng-icons-angledown.mjs +3 -3
  206. package/fesm2022/primeng-icons-angleleft.mjs +3 -3
  207. package/fesm2022/primeng-icons-angleright.mjs +3 -3
  208. package/fesm2022/primeng-icons-angleup.mjs +3 -3
  209. package/fesm2022/primeng-icons-arrowdown.mjs +3 -3
  210. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -3
  211. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -3
  212. package/fesm2022/primeng-icons-arrowleft.mjs +3 -3
  213. package/fesm2022/primeng-icons-arrowright.mjs +3 -3
  214. package/fesm2022/primeng-icons-arrowup.mjs +3 -3
  215. package/fesm2022/primeng-icons-ban.mjs +3 -3
  216. package/fesm2022/primeng-icons-bars.mjs +3 -3
  217. package/fesm2022/primeng-icons-calendar.mjs +3 -3
  218. package/fesm2022/primeng-icons-caretleft.mjs +3 -3
  219. package/fesm2022/primeng-icons-caretright.mjs +3 -3
  220. package/fesm2022/primeng-icons-check.mjs +3 -3
  221. package/fesm2022/primeng-icons-chevrondown.mjs +3 -3
  222. package/fesm2022/primeng-icons-chevronleft.mjs +3 -3
  223. package/fesm2022/primeng-icons-chevronright.mjs +3 -3
  224. package/fesm2022/primeng-icons-chevronup.mjs +3 -3
  225. package/fesm2022/primeng-icons-exclamationtriangle.mjs +3 -3
  226. package/fesm2022/primeng-icons-eye.mjs +3 -3
  227. package/fesm2022/primeng-icons-eyeslash.mjs +3 -3
  228. package/fesm2022/primeng-icons-filter.mjs +3 -3
  229. package/fesm2022/primeng-icons-filterslash.mjs +3 -3
  230. package/fesm2022/primeng-icons-home.mjs +3 -3
  231. package/fesm2022/primeng-icons-infocircle.mjs +3 -3
  232. package/fesm2022/primeng-icons-minus.mjs +3 -3
  233. package/fesm2022/primeng-icons-pencil.mjs +3 -3
  234. package/fesm2022/primeng-icons-plus.mjs +3 -3
  235. package/fesm2022/primeng-icons-refresh.mjs +3 -3
  236. package/fesm2022/primeng-icons-search.mjs +3 -3
  237. package/fesm2022/primeng-icons-searchminus.mjs +3 -3
  238. package/fesm2022/primeng-icons-searchplus.mjs +3 -3
  239. package/fesm2022/primeng-icons-sortalt.mjs +3 -3
  240. package/fesm2022/primeng-icons-sortamountdown.mjs +3 -3
  241. package/fesm2022/primeng-icons-sortamountupalt.mjs +3 -3
  242. package/fesm2022/primeng-icons-spinner.mjs +3 -3
  243. package/fesm2022/primeng-icons-star.mjs +3 -3
  244. package/fesm2022/primeng-icons-starfill.mjs +3 -3
  245. package/fesm2022/primeng-icons-thlarge.mjs +3 -3
  246. package/fesm2022/primeng-icons-times.mjs +3 -3
  247. package/fesm2022/primeng-icons-timescircle.mjs +3 -3
  248. package/fesm2022/primeng-icons-trash.mjs +3 -3
  249. package/fesm2022/primeng-icons-undo.mjs +3 -3
  250. package/fesm2022/primeng-icons-upload.mjs +3 -3
  251. package/fesm2022/primeng-icons-windowmaximize.mjs +3 -3
  252. package/fesm2022/primeng-icons-windowminimize.mjs +3 -3
  253. package/fesm2022/primeng-image.mjs +7 -7
  254. package/fesm2022/primeng-inplace.mjs +13 -13
  255. package/fesm2022/primeng-inputmask.mjs +7 -7
  256. package/fesm2022/primeng-inputnumber.mjs +7 -7
  257. package/fesm2022/primeng-inputswitch.mjs +7 -7
  258. package/fesm2022/primeng-inputtext.mjs +7 -7
  259. package/fesm2022/primeng-inputtextarea.mjs +7 -7
  260. package/fesm2022/primeng-keyfilter.mjs +7 -7
  261. package/fesm2022/primeng-knob.mjs +7 -7
  262. package/fesm2022/primeng-listbox.mjs +7 -7
  263. package/fesm2022/primeng-megamenu.mjs +10 -10
  264. package/fesm2022/primeng-menu.mjs +13 -13
  265. package/fesm2022/primeng-menubar.mjs +13 -13
  266. package/fesm2022/primeng-message.mjs +7 -7
  267. package/fesm2022/primeng-messages.mjs +7 -7
  268. package/fesm2022/primeng-multiselect.mjs +10 -10
  269. package/fesm2022/primeng-orderlist.mjs +7 -7
  270. package/fesm2022/primeng-organizationchart.mjs +10 -10
  271. package/fesm2022/primeng-overlay.mjs +7 -7
  272. package/fesm2022/primeng-overlaypanel.mjs +7 -7
  273. package/fesm2022/primeng-paginator.mjs +7 -7
  274. package/fesm2022/primeng-panel.mjs +7 -7
  275. package/fesm2022/primeng-panelmenu.mjs +13 -13
  276. package/fesm2022/primeng-password.mjs +13 -13
  277. package/fesm2022/primeng-picklist.mjs +7 -7
  278. package/fesm2022/primeng-progressbar.mjs +7 -7
  279. package/fesm2022/primeng-progressspinner.mjs +7 -7
  280. package/fesm2022/primeng-radiobutton.mjs +10 -10
  281. package/fesm2022/primeng-rating.mjs +7 -7
  282. package/fesm2022/primeng-ripple.mjs +7 -7
  283. package/fesm2022/primeng-scroller.mjs +7 -7
  284. package/fesm2022/primeng-scrollpanel.mjs +7 -7
  285. package/fesm2022/primeng-scrolltop.mjs +7 -7
  286. package/fesm2022/primeng-selectbutton.mjs +7 -7
  287. package/fesm2022/primeng-sidebar.mjs +7 -7
  288. package/fesm2022/primeng-skeleton.mjs +7 -7
  289. package/fesm2022/primeng-slidemenu.mjs +10 -10
  290. package/fesm2022/primeng-slider.mjs +7 -7
  291. package/fesm2022/primeng-speeddial.mjs +7 -7
  292. package/fesm2022/primeng-spinner.mjs +7 -7
  293. package/fesm2022/primeng-splitbutton.mjs +7 -7
  294. package/fesm2022/primeng-splitter.mjs +7 -7
  295. package/fesm2022/primeng-steps.mjs +7 -7
  296. package/fesm2022/primeng-styleclass.mjs +7 -7
  297. package/fesm2022/primeng-table.mjs +82 -82
  298. package/fesm2022/primeng-tabmenu.mjs +7 -7
  299. package/fesm2022/primeng-tabview.mjs +10 -10
  300. package/fesm2022/primeng-tag.mjs +7 -7
  301. package/fesm2022/primeng-terminal.mjs +10 -10
  302. package/fesm2022/primeng-tieredmenu.mjs +10 -10
  303. package/fesm2022/primeng-timeline.mjs +9 -9
  304. package/fesm2022/primeng-timeline.mjs.map +1 -1
  305. package/fesm2022/primeng-toast.mjs +10 -10
  306. package/fesm2022/primeng-togglebutton.mjs +7 -7
  307. package/fesm2022/primeng-toolbar.mjs +7 -7
  308. package/fesm2022/primeng-tooltip.mjs +7 -7
  309. package/fesm2022/primeng-tree.mjs +10 -10
  310. package/fesm2022/primeng-treeselect.mjs +7 -7
  311. package/fesm2022/primeng-treetable.mjs +554 -240
  312. package/fesm2022/primeng-treetable.mjs.map +1 -1
  313. package/fesm2022/primeng-tristatecheckbox.mjs +7 -7
  314. package/fesm2022/primeng-virtualscroller.mjs +7 -7
  315. package/package.json +80 -80
  316. package/treetable/treetable.d.ts +84 -10
@@ -1,7 +1,7 @@
1
1
  import * as i2 from '@angular/common';
2
2
  import { DOCUMENT, isPlatformBrowser, CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, EventEmitter, Component, ViewEncapsulation, Inject, Input, Output, ViewChild, ContentChildren, PLATFORM_ID, Directive, HostListener, ChangeDetectionStrategy, NgModule } from '@angular/core';
4
+ import { Injectable, EventEmitter, booleanAttribute, numberAttribute, Component, ViewEncapsulation, Inject, Input, Output, ViewChild, ContentChildren, PLATFORM_ID, Directive, HostListener, ChangeDetectionStrategy, NgModule } from '@angular/core';
5
5
  import * as i1 from 'primeng/api';
6
6
  import { PrimeTemplate, SharedModule } from 'primeng/api';
7
7
  import { DomHandler } from 'primeng/dom';
@@ -50,10 +50,10 @@ class TreeTableService {
50
50
  onTotalRecordsChange(value) {
51
51
  this.totalRecordsSource.next(value);
52
52
  }
53
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
54
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTableService });
53
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
54
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTableService });
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTableService, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTableService, decorators: [{
57
57
  type: Injectable
58
58
  }] });
59
59
  /**
@@ -222,7 +222,7 @@ class TreeTable {
222
222
  * Defines whether metaKey is should be considered for the selection. On touch enabled devices, metaKeySelection is turned off automatically.
223
223
  * @group Props
224
224
  */
225
- metaKeySelection;
225
+ metaKeySelection = false;
226
226
  /**
227
227
  * Algorithm to define if a row is selected, valid values are "equals" that compares by reference and "deepEquals" that compares all fields.
228
228
  * @group Props
@@ -421,7 +421,17 @@ class TreeTable {
421
421
  this._virtualRowHeight = val;
422
422
  console.warn('The virtualRowHeight property is deprecated, use virtualScrollItemSize property instead.');
423
423
  }
424
- _virtualRowHeight = 28;
424
+ /**
425
+ * A map of keys to control the selection state.
426
+ * @group Props
427
+ */
428
+ get selectionKeys() {
429
+ return this._selectionKeys;
430
+ }
431
+ set selectionKeys(value) {
432
+ this._selectionKeys = value;
433
+ this.selectionKeysChange.emit(this._selectionKeys);
434
+ }
425
435
  /**
426
436
  * Callback to invoke on selected node change.
427
437
  * @param {TreeTableNode} object - Node instance.
@@ -442,7 +452,7 @@ class TreeTable {
442
452
  onFilter = new EventEmitter();
443
453
  /**
444
454
  * Callback to invoke when a node is expanded.
445
- * @param {TreeTableNode} object - Node instance.
455
+ * @param {TreeTableNodeExpandEvent} event - Node expand event.
446
456
  * @group Emits
447
457
  */
448
458
  onNodeExpand = new EventEmitter();
@@ -530,6 +540,12 @@ class TreeTable {
530
540
  * @group Emits
531
541
  */
532
542
  onEditCancel = new EventEmitter();
543
+ /**
544
+ * Callback to invoke when selectionKeys are changed.
545
+ * @param {Object} object - updated value of the selectionKeys.
546
+ * @group Emits
547
+ */
548
+ selectionKeysChange = new EventEmitter();
533
549
  containerViewChild;
534
550
  resizeHelperViewChild;
535
551
  reorderIndicatorUpViewChild;
@@ -539,6 +555,8 @@ class TreeTable {
539
555
  scrollableFrozenViewChild;
540
556
  templates;
541
557
  _value = [];
558
+ _virtualRowHeight = 28;
559
+ _selectionKeys;
542
560
  serializedValue;
543
561
  _totalRecords = 0;
544
562
  _multiSortMeta;
@@ -578,7 +596,7 @@ class TreeTable {
578
596
  dropPosition;
579
597
  preventSelectionSetterPropagation;
580
598
  _selection;
581
- selectionKeys = {};
599
+ selectedKeys = {};
582
600
  rowTouched;
583
601
  editingCell;
584
602
  editingCellData;
@@ -726,7 +744,7 @@ class TreeTable {
726
744
  if (simpleChange.selection) {
727
745
  this._selection = simpleChange.selection.currentValue;
728
746
  if (!this.preventSelectionSetterPropagation) {
729
- this.updateSelectionKeys();
747
+ this.updateselectedKeys();
730
748
  this.tableService.onSelectionChange();
731
749
  }
732
750
  this.preventSelectionSetterPropagation = false;
@@ -775,16 +793,16 @@ class TreeTable {
775
793
  }
776
794
  }
777
795
  }
778
- updateSelectionKeys() {
796
+ updateselectedKeys() {
779
797
  if (this.dataKey && this._selection) {
780
- this.selectionKeys = {};
798
+ this.selectedKeys = {};
781
799
  if (Array.isArray(this._selection)) {
782
800
  for (let node of this._selection) {
783
- this.selectionKeys[String(ObjectUtils.resolveFieldData(node.data, this.dataKey))] = 1;
801
+ this.selectedKeys[String(ObjectUtils.resolveFieldData(node.data, this.dataKey))] = 1;
784
802
  }
785
803
  }
786
804
  else {
787
- this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection.data, this.dataKey))] = 1;
805
+ this.selectedKeys[String(ObjectUtils.resolveFieldData(this._selection.data, this.dataKey))] = 1;
788
806
  }
789
807
  }
790
808
  }
@@ -1257,7 +1275,7 @@ class TreeTable {
1257
1275
  if (selected && metaKey) {
1258
1276
  if (this.isSingleSelectionMode()) {
1259
1277
  this._selection = null;
1260
- this.selectionKeys = {};
1278
+ this.selectedKeys = {};
1261
1279
  this.selectionChange.emit(null);
1262
1280
  }
1263
1281
  else {
@@ -1265,7 +1283,7 @@ class TreeTable {
1265
1283
  this._selection = this.selection.filter((val, i) => i != selectionIndex);
1266
1284
  this.selectionChange.emit(this.selection);
1267
1285
  if (dataKeyValue) {
1268
- delete this.selectionKeys[dataKeyValue];
1286
+ delete this.selectedKeys[dataKeyValue];
1269
1287
  }
1270
1288
  }
1271
1289
  this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
@@ -1275,8 +1293,8 @@ class TreeTable {
1275
1293
  this._selection = rowNode.node;
1276
1294
  this.selectionChange.emit(rowNode.node);
1277
1295
  if (dataKeyValue) {
1278
- this.selectionKeys = {};
1279
- this.selectionKeys[dataKeyValue] = 1;
1296
+ this.selectedKeys = {};
1297
+ this.selectedKeys[dataKeyValue] = 1;
1280
1298
  }
1281
1299
  }
1282
1300
  else if (this.isMultipleSelectionMode()) {
@@ -1285,12 +1303,12 @@ class TreeTable {
1285
1303
  }
1286
1304
  else {
1287
1305
  this._selection = [];
1288
- this.selectionKeys = {};
1306
+ this.selectedKeys = {};
1289
1307
  }
1290
1308
  this._selection = [...this.selection, rowNode.node];
1291
1309
  this.selectionChange.emit(this.selection);
1292
1310
  if (dataKeyValue) {
1293
- this.selectionKeys[dataKeyValue] = 1;
1311
+ this.selectedKeys[dataKeyValue] = 1;
1294
1312
  }
1295
1313
  }
1296
1314
  this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
@@ -1300,7 +1318,7 @@ class TreeTable {
1300
1318
  if (this.selectionMode === 'single') {
1301
1319
  if (selected) {
1302
1320
  this._selection = null;
1303
- this.selectionKeys = {};
1321
+ this.selectedKeys = {};
1304
1322
  this.selectionChange.emit(this.selection);
1305
1323
  this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
1306
1324
  }
@@ -1309,8 +1327,8 @@ class TreeTable {
1309
1327
  this.selectionChange.emit(this.selection);
1310
1328
  this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
1311
1329
  if (dataKeyValue) {
1312
- this.selectionKeys = {};
1313
- this.selectionKeys[dataKeyValue] = 1;
1330
+ this.selectedKeys = {};
1331
+ this.selectedKeys[dataKeyValue] = 1;
1314
1332
  }
1315
1333
  }
1316
1334
  }
@@ -1321,7 +1339,7 @@ class TreeTable {
1321
1339
  this.selectionChange.emit(this.selection);
1322
1340
  this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
1323
1341
  if (dataKeyValue) {
1324
- delete this.selectionKeys[dataKeyValue];
1342
+ delete this.selectedKeys[dataKeyValue];
1325
1343
  }
1326
1344
  }
1327
1345
  else {
@@ -1329,7 +1347,7 @@ class TreeTable {
1329
1347
  this.selectionChange.emit(this.selection);
1330
1348
  this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
1331
1349
  if (dataKeyValue) {
1332
- this.selectionKeys[dataKeyValue] = 1;
1350
+ this.selectedKeys[dataKeyValue] = 1;
1333
1351
  }
1334
1352
  }
1335
1353
  }
@@ -1365,7 +1383,7 @@ class TreeTable {
1365
1383
  this.selectionChange.emit(this.selection);
1366
1384
  }
1367
1385
  if (dataKeyValue) {
1368
- this.selectionKeys[dataKeyValue] = 1;
1386
+ this.selectedKeys[dataKeyValue] = 1;
1369
1387
  }
1370
1388
  }
1371
1389
  this.contextMenu.show(event.originalEvent);
@@ -1374,6 +1392,7 @@ class TreeTable {
1374
1392
  }
1375
1393
  }
1376
1394
  toggleNodeWithCheckbox(event) {
1395
+ // legacy selection support, will be removed in v18
1377
1396
  this.selection = this.selection || [];
1378
1397
  this.preventSelectionSetterPropagation = true;
1379
1398
  let node = event.rowNode.node;
@@ -1397,25 +1416,40 @@ class TreeTable {
1397
1416
  this.tableService.onSelectionChange();
1398
1417
  }
1399
1418
  toggleNodesWithCheckbox(event, check) {
1419
+ // legacy selection support, will be removed in v18
1400
1420
  let data = this.filteredNodes || this.value;
1401
1421
  this._selection = check && data ? data.slice() : [];
1402
- if (check) {
1422
+ this.toggleAll(check);
1423
+ if (!check) {
1424
+ this._selection = [];
1425
+ this.selectedKeys = {};
1426
+ }
1427
+ this.preventSelectionSetterPropagation = true;
1428
+ this.selectionChange.emit(this._selection);
1429
+ this.tableService.onSelectionChange();
1430
+ this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });
1431
+ }
1432
+ toggleAll(checked) {
1433
+ let data = this.filteredNodes || this.value;
1434
+ if (!this.selectionKeys) {
1403
1435
  if (data && data.length) {
1404
1436
  for (let node of data) {
1405
- this.propagateSelectionDown(node, true);
1437
+ this.propagateSelectionDown(node, checked);
1406
1438
  }
1407
1439
  }
1408
1440
  }
1409
1441
  else {
1410
- this._selection = [];
1411
- this.selectionKeys = {};
1442
+ // legacy selection support, will be removed in v18
1443
+ if (data && data.length) {
1444
+ for (let node of data) {
1445
+ this.propagateDown(node, checked);
1446
+ }
1447
+ this.selectionKeysChange.emit(this.selectionKeys);
1448
+ }
1412
1449
  }
1413
- this.preventSelectionSetterPropagation = true;
1414
- this.selectionChange.emit(this._selection);
1415
- this.tableService.onSelectionChange();
1416
- this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });
1417
1450
  }
1418
1451
  propagateSelectionUp(node, select) {
1452
+ // legacy selection support, will be removed in v18
1419
1453
  if (node.children && node.children.length) {
1420
1454
  let selectedChildCount = 0;
1421
1455
  let childPartialSelected = false;
@@ -1430,7 +1464,7 @@ class TreeTable {
1430
1464
  this._selection = [...(this.selection || []), node];
1431
1465
  node.partialSelected = false;
1432
1466
  if (dataKeyValue) {
1433
- this.selectionKeys[dataKeyValue] = 1;
1467
+ this.selectedKeys[dataKeyValue] = 1;
1434
1468
  }
1435
1469
  }
1436
1470
  else {
@@ -1439,7 +1473,7 @@ class TreeTable {
1439
1473
  if (index >= 0) {
1440
1474
  this._selection = this.selection.filter((val, i) => i != index);
1441
1475
  if (dataKeyValue) {
1442
- delete this.selectionKeys[dataKeyValue];
1476
+ delete this.selectedKeys[dataKeyValue];
1443
1477
  }
1444
1478
  }
1445
1479
  }
@@ -1450,26 +1484,29 @@ class TreeTable {
1450
1484
  }
1451
1485
  }
1452
1486
  let parent = node.parent;
1487
+ node.checked = select;
1453
1488
  if (parent) {
1454
1489
  this.propagateSelectionUp(parent, select);
1455
1490
  }
1456
1491
  }
1457
1492
  propagateSelectionDown(node, select) {
1493
+ // legacy selection support, will be removed in v18
1458
1494
  let index = this.findIndexInSelection(node);
1459
1495
  let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;
1460
1496
  if (select && index == -1) {
1461
1497
  this._selection = [...(this.selection || []), node];
1462
1498
  if (dataKeyValue) {
1463
- this.selectionKeys[dataKeyValue] = 1;
1499
+ this.selectedKeys[dataKeyValue] = 1;
1464
1500
  }
1465
1501
  }
1466
1502
  else if (!select && index > -1) {
1467
1503
  this._selection = this.selection.filter((val, i) => i != index);
1468
1504
  if (dataKeyValue) {
1469
- delete this.selectionKeys[dataKeyValue];
1505
+ delete this.selectedKeys[dataKeyValue];
1470
1506
  }
1471
1507
  }
1472
1508
  node.partialSelected = false;
1509
+ node.checked = select;
1473
1510
  if (node.children && node.children.length) {
1474
1511
  for (let child of node.children) {
1475
1512
  this.propagateSelectionDown(child, select);
@@ -1477,9 +1514,15 @@ class TreeTable {
1477
1514
  }
1478
1515
  }
1479
1516
  isSelected(node) {
1517
+ // legacy selection support, will be removed in v18
1480
1518
  if (node && this.selection) {
1481
1519
  if (this.dataKey) {
1482
- return this.selectionKeys[ObjectUtils.resolveFieldData(node.data, this.dataKey)] !== undefined;
1520
+ if (node.hasOwnProperty('checked')) {
1521
+ return node['checked'];
1522
+ }
1523
+ else {
1524
+ return this.selectedKeys[ObjectUtils.resolveFieldData(node.data, this.dataKey)] !== undefined;
1525
+ }
1483
1526
  }
1484
1527
  else {
1485
1528
  if (Array.isArray(this.selection))
@@ -1490,6 +1533,69 @@ class TreeTable {
1490
1533
  }
1491
1534
  return false;
1492
1535
  }
1536
+ isNodeSelected(node) {
1537
+ return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.nodeKey(node)]?.checked === true : false;
1538
+ }
1539
+ isNodePartialSelected(node) {
1540
+ return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.nodeKey(node)]?.partialChecked === true : false;
1541
+ }
1542
+ nodeKey(node) {
1543
+ return ObjectUtils.resolveFieldData(node, this.dataKey) || ObjectUtils.resolveFieldData(node?.data, this.dataKey);
1544
+ }
1545
+ toggleCheckbox(event) {
1546
+ let { rowNode, check, originalEvent } = event;
1547
+ let node = rowNode.node;
1548
+ if (this.selectionKeys) {
1549
+ this.propagateDown(node, check);
1550
+ if (node.parent) {
1551
+ this.propagateUp(node.parent, check);
1552
+ }
1553
+ this.selectionKeysChange.emit(this.selectionKeys);
1554
+ }
1555
+ else {
1556
+ this.toggleNodeWithCheckbox({ originalEvent, rowNode });
1557
+ }
1558
+ this.tableService.onSelectionChange();
1559
+ }
1560
+ propagateDown(node, check) {
1561
+ if (check) {
1562
+ this.selectionKeys[this.nodeKey(node)] = { checked: true, partialChecked: false };
1563
+ }
1564
+ else {
1565
+ delete this.selectionKeys[this.nodeKey(node)];
1566
+ }
1567
+ if (node.children && node.children.length) {
1568
+ for (let child of node.children) {
1569
+ this.propagateDown(child, check);
1570
+ }
1571
+ }
1572
+ }
1573
+ propagateUp(node, check) {
1574
+ let checkedChildCount = 0;
1575
+ let childPartialSelected = false;
1576
+ for (let child of node.children) {
1577
+ if (this.selectionKeys[this.nodeKey(child)] && this.selectionKeys[this.nodeKey(child)].checked)
1578
+ checkedChildCount++;
1579
+ else if (this.selectionKeys[this.nodeKey(child)] && this.selectionKeys[this.nodeKey(child)].partialChecked)
1580
+ childPartialSelected = true;
1581
+ }
1582
+ if (check && checkedChildCount === node.children.length) {
1583
+ this.selectionKeys[this.nodeKey(node)] = { checked: true, partialChecked: false };
1584
+ }
1585
+ else {
1586
+ if (!check) {
1587
+ delete this.selectionKeys[this.nodeKey(node)];
1588
+ }
1589
+ if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== node.children.length))
1590
+ this.selectionKeys[this.nodeKey(node)] = { checked: false, partialChecked: true };
1591
+ else
1592
+ this.selectionKeys[this.nodeKey(node)] = { checked: false, partialChecked: false };
1593
+ }
1594
+ let parent = node.parent;
1595
+ if (parent) {
1596
+ this.propagateUp(parent, check);
1597
+ }
1598
+ }
1493
1599
  findIndexInSelection(node) {
1494
1600
  let index = -1;
1495
1601
  if (this.selection && this.selection.length) {
@@ -1509,7 +1615,7 @@ class TreeTable {
1509
1615
  return this.selectionMode === 'multiple';
1510
1616
  }
1511
1617
  equals(node1, node2) {
1512
- return this.compareSelectionBy === 'equals' ? node1 === node2 : ObjectUtils.equals(node1.data, node2.data, this.dataKey);
1618
+ return this.compareSelectionBy === 'equals' ? ObjectUtils.equals(node1, node2) : ObjectUtils.equals(node1.data, node2.data, this.dataKey);
1513
1619
  }
1514
1620
  filter(value, field, matchMode) {
1515
1621
  if (this.filterTimeout) {
@@ -1613,6 +1719,7 @@ class TreeTable {
1613
1719
  this.totalRecords = this.filteredNodes ? this.filteredNodes.length : this.value ? this.value.length : 0;
1614
1720
  }
1615
1721
  }
1722
+ this.cd.markForCheck();
1616
1723
  }
1617
1724
  this.first = 0;
1618
1725
  const filteredValue = this.filteredNodes || this.value;
@@ -1724,8 +1831,8 @@ class TreeTable {
1724
1831
  this.editingCellData = null;
1725
1832
  this.initialized = null;
1726
1833
  }
1727
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTable, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: TreeTableService }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
1728
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: TreeTable, selector: "p-treeTable", inputs: { columns: "columns", style: "style", styleClass: "styleClass", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", autoLayout: "autoLayout", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", paginator: "paginator", rows: "rows", first: "first", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", alwaysShowPaginator: "alwaysShowPaginator", paginatorPosition: "paginatorPosition", paginatorStyleClass: "paginatorStyleClass", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", defaultSortOrder: "defaultSortOrder", sortMode: "sortMode", resetPageOnSort: "resetPageOnSort", customSort: "customSort", selectionMode: "selectionMode", contextMenuSelection: "contextMenuSelection", contextMenuSelectionMode: "contextMenuSelectionMode", dataKey: "dataKey", metaKeySelection: "metaKeySelection", compareSelectionBy: "compareSelectionBy", rowHover: "rowHover", loading: "loading", loadingIcon: "loadingIcon", showLoader: "showLoader", scrollable: "scrollable", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualScrollItemSize: "virtualScrollItemSize", virtualScrollOptions: "virtualScrollOptions", virtualScrollDelay: "virtualScrollDelay", frozenWidth: "frozenWidth", frozenColumns: "frozenColumns", resizableColumns: "resizableColumns", columnResizeMode: "columnResizeMode", reorderableColumns: "reorderableColumns", contextMenu: "contextMenu", rowTrackBy: "rowTrackBy", filters: "filters", globalFilterFields: "globalFilterFields", filterDelay: "filterDelay", filterMode: "filterMode", filterLocale: "filterLocale", paginatorLocale: "paginatorLocale", totalRecords: "totalRecords", sortField: "sortField", sortOrder: "sortOrder", multiSortMeta: "multiSortMeta", selection: "selection", value: "value", virtualRowHeight: "virtualRowHeight" }, outputs: { selectionChange: "selectionChange", contextMenuSelectionChange: "contextMenuSelectionChange", onFilter: "onFilter", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onPage: "onPage", onSort: "onSort", onLazyLoad: "onLazyLoad", sortFunction: "sortFunction", onColResize: "onColResize", onColReorder: "onColReorder", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onContextMenuSelect: "onContextMenuSelect", onHeaderCheckboxToggle: "onHeaderCheckboxToggle", onEditInit: "onEditInit", onEditComplete: "onEditComplete", onEditCancel: "onEditCancel" }, host: { classAttribute: "p-element" }, providers: [TreeTableService], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "resizeHelperViewChild", first: true, predicate: ["resizeHelper"], descendants: true }, { propertyName: "reorderIndicatorUpViewChild", first: true, predicate: ["reorderIndicatorUp"], descendants: true }, { propertyName: "reorderIndicatorDownViewChild", first: true, predicate: ["reorderIndicatorDown"], descendants: true }, { propertyName: "tableViewChild", first: true, predicate: ["table"], descendants: true }, { propertyName: "scrollableViewChild", first: true, predicate: ["scrollableView"], descendants: true }, { propertyName: "scrollableFrozenViewChild", first: true, predicate: ["scrollableFrozenView"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
1834
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTable, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: TreeTableService }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
1835
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: TreeTable, selector: "p-treeTable", inputs: { columns: "columns", style: "style", styleClass: "styleClass", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", autoLayout: ["autoLayout", "autoLayout", booleanAttribute], lazy: ["lazy", "lazy", booleanAttribute], lazyLoadOnInit: ["lazyLoadOnInit", "lazyLoadOnInit", booleanAttribute], paginator: ["paginator", "paginator", booleanAttribute], rows: ["rows", "rows", numberAttribute], first: ["first", "first", numberAttribute], pageLinks: ["pageLinks", "pageLinks", numberAttribute], rowsPerPageOptions: "rowsPerPageOptions", alwaysShowPaginator: ["alwaysShowPaginator", "alwaysShowPaginator", booleanAttribute], paginatorPosition: "paginatorPosition", paginatorStyleClass: "paginatorStyleClass", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: ["showCurrentPageReport", "showCurrentPageReport", booleanAttribute], showJumpToPageDropdown: ["showJumpToPageDropdown", "showJumpToPageDropdown", booleanAttribute], showFirstLastIcon: ["showFirstLastIcon", "showFirstLastIcon", booleanAttribute], showPageLinks: ["showPageLinks", "showPageLinks", booleanAttribute], defaultSortOrder: ["defaultSortOrder", "defaultSortOrder", numberAttribute], sortMode: "sortMode", resetPageOnSort: ["resetPageOnSort", "resetPageOnSort", booleanAttribute], customSort: ["customSort", "customSort", booleanAttribute], selectionMode: "selectionMode", contextMenuSelection: "contextMenuSelection", contextMenuSelectionMode: "contextMenuSelectionMode", dataKey: "dataKey", metaKeySelection: ["metaKeySelection", "metaKeySelection", booleanAttribute], compareSelectionBy: "compareSelectionBy", rowHover: ["rowHover", "rowHover", booleanAttribute], loading: ["loading", "loading", booleanAttribute], loadingIcon: "loadingIcon", showLoader: ["showLoader", "showLoader", booleanAttribute], scrollable: ["scrollable", "scrollable", booleanAttribute], scrollHeight: "scrollHeight", virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], virtualScrollItemSize: ["virtualScrollItemSize", "virtualScrollItemSize", numberAttribute], virtualScrollOptions: "virtualScrollOptions", virtualScrollDelay: ["virtualScrollDelay", "virtualScrollDelay", numberAttribute], frozenWidth: "frozenWidth", frozenColumns: "frozenColumns", resizableColumns: ["resizableColumns", "resizableColumns", booleanAttribute], columnResizeMode: "columnResizeMode", reorderableColumns: ["reorderableColumns", "reorderableColumns", booleanAttribute], contextMenu: "contextMenu", rowTrackBy: "rowTrackBy", filters: "filters", globalFilterFields: "globalFilterFields", filterDelay: ["filterDelay", "filterDelay", numberAttribute], filterMode: "filterMode", filterLocale: "filterLocale", paginatorLocale: "paginatorLocale", totalRecords: "totalRecords", sortField: "sortField", sortOrder: "sortOrder", multiSortMeta: "multiSortMeta", selection: "selection", value: "value", virtualRowHeight: "virtualRowHeight", selectionKeys: "selectionKeys" }, outputs: { selectionChange: "selectionChange", contextMenuSelectionChange: "contextMenuSelectionChange", onFilter: "onFilter", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onPage: "onPage", onSort: "onSort", onLazyLoad: "onLazyLoad", sortFunction: "sortFunction", onColResize: "onColResize", onColReorder: "onColReorder", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onContextMenuSelect: "onContextMenuSelect", onHeaderCheckboxToggle: "onHeaderCheckboxToggle", onEditInit: "onEditInit", onEditComplete: "onEditComplete", onEditCancel: "onEditCancel", selectionKeysChange: "selectionKeysChange" }, host: { classAttribute: "p-element" }, providers: [TreeTableService], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "resizeHelperViewChild", first: true, predicate: ["resizeHelper"], descendants: true }, { propertyName: "reorderIndicatorUpViewChild", first: true, predicate: ["reorderIndicatorUp"], descendants: true }, { propertyName: "reorderIndicatorDownViewChild", first: true, predicate: ["reorderIndicatorDown"], descendants: true }, { propertyName: "tableViewChild", first: true, predicate: ["table"], descendants: true }, { propertyName: "scrollableViewChild", first: true, predicate: ["scrollableView"], descendants: true }, { propertyName: "scrollableFrozenViewChild", first: true, predicate: ["scrollableFrozenView"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
1729
1836
  <div
1730
1837
  #container
1731
1838
  [ngStyle]="style"
@@ -1794,13 +1901,13 @@ class TreeTable {
1794
1901
  </p-paginator>
1795
1902
 
1796
1903
  <div class="p-treetable-wrapper" *ngIf="!scrollable">
1797
- <table #table [ngClass]="tableStyleClass" [ngStyle]="tableStyle">
1904
+ <table role="table" #table [ngClass]="tableStyleClass" [ngStyle]="tableStyle">
1798
1905
  <ng-container *ngTemplateOutlet="colGroupTemplate; context: { $implicit: columns }"></ng-container>
1799
- <thead class="p-treetable-thead">
1906
+ <thead role="rowgroup" class="p-treetable-thead">
1800
1907
  <ng-container *ngTemplateOutlet="headerTemplate; context: { $implicit: columns }"></ng-container>
1801
1908
  </thead>
1802
- <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="bodyTemplate"></tbody>
1803
- <tfoot class="p-treetable-tfoot">
1909
+ <tbody class="p-treetable-tbody" role="rowgroup" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="bodyTemplate"></tbody>
1910
+ <tfoot class="p-treetable-tfoot" role="rowgroup">
1804
1911
  <ng-container *ngTemplateOutlet="footerTemplate; context: { $implicit: columns }"></ng-container>
1805
1912
  </tfoot>
1806
1913
  </table>
@@ -1873,7 +1980,7 @@ class TreeTable {
1873
1980
  </div>
1874
1981
  `, isInline: true, styles: ["@layer primeng{.p-treetable{position:relative}.p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}.p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}.p-treetable .p-sortable-column .p-column-title,.p-treetable .p-sortable-column .p-sortable-column-icon,.p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-treetable-auto-layout>.p-treetable-wrapper{overflow-x:auto}.p-treetable-auto-layout>.p-treetable-wrapper>table{table-layout:auto}.p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:pointer}.p-treetable-toggler{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}p-treetabletoggler+p-treetablecheckbox .p-checkbox{vertical-align:middle}p-treetabletoggler+p-treetablecheckbox+span{vertical-align:middle}.p-treetable-scrollable-wrapper{position:relative}.p-treetable-scrollable-header,.p-treetable-scrollable-footer{overflow:hidden}.p-treetable-scrollable-body{overflow:auto;position:relative}.p-treetable-scrollable-body>table>.p-treetable-tbody>tr:first-child>td{border-top:0 none}.p-treetable-virtual-table{position:absolute}.p-treetable-frozen-view .p-treetable-scrollable-body{overflow:hidden}.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child{border-right:0 none}.p-treetable-unfrozen-view{position:absolute;top:0}.p-treetable-flex-scrollable,.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,.p-treetable-flex-scrollable .p-treetable-scrollable-view{display:flex;flex-direction:column;flex:1;height:100%}.p-treetable-flex-scrollable .p-treetable-virtual-scrollable-body{flex:1}.p-treetable-resizable>.p-treetable-wrapper{overflow-x:auto}.p-treetable-resizable .p-treetable-thead>tr>th,.p-treetable-resizable .p-treetable-tfoot>tr>td,.p-treetable-resizable .p-treetable-tbody>tr>td{overflow:hidden}.p-treetable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-treetable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-treetable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-treetable .p-row-editor-init,.p-treetable .p-row-editor-save,.p-treetable .p-row-editor-cancel,.p-treetable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treetable-reorder-indicator-up,.p-treetable-reorder-indicator-down{position:absolute;display:none}[ttReorderableColumn]{cursor:move}.p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-treetable .p-scroller-loading{transform:none!important;min-height:0;position:sticky;top:0;left:0}}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(function () { return i3.Paginator; }), selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.PrimeTemplate; }), selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i0.forwardRef(function () { return SpinnerIcon; }), selector: "SpinnerIcon" }, { kind: "component", type: i0.forwardRef(function () { return ArrowDownIcon; }), selector: "ArrowDownIcon" }, { kind: "component", type: i0.forwardRef(function () { return ArrowUpIcon; }), selector: "ArrowUpIcon" }, { kind: "component", type: i0.forwardRef(function () { return TTScrollableView; }), selector: "[ttScrollableView]", inputs: ["ttScrollableView", "frozen", "scrollHeight"] }, { kind: "component", type: i0.forwardRef(function () { return TTBody; }), selector: "[pTreeTableBody]", inputs: ["pTreeTableBody", "pTreeTableBodyTemplate", "frozen", "serializedNodes", "scrollerOptions"] }], encapsulation: i0.ViewEncapsulation.None });
1875
1982
  }
1876
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTable, decorators: [{
1983
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTable, decorators: [{
1877
1984
  type: Component,
1878
1985
  args: [{ selector: 'p-treeTable', template: `
1879
1986
  <div
@@ -1944,13 +2051,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
1944
2051
  </p-paginator>
1945
2052
 
1946
2053
  <div class="p-treetable-wrapper" *ngIf="!scrollable">
1947
- <table #table [ngClass]="tableStyleClass" [ngStyle]="tableStyle">
2054
+ <table role="table" #table [ngClass]="tableStyleClass" [ngStyle]="tableStyle">
1948
2055
  <ng-container *ngTemplateOutlet="colGroupTemplate; context: { $implicit: columns }"></ng-container>
1949
- <thead class="p-treetable-thead">
2056
+ <thead role="rowgroup" class="p-treetable-thead">
1950
2057
  <ng-container *ngTemplateOutlet="headerTemplate; context: { $implicit: columns }"></ng-container>
1951
2058
  </thead>
1952
- <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="bodyTemplate"></tbody>
1953
- <tfoot class="p-treetable-tfoot">
2059
+ <tbody class="p-treetable-tbody" role="rowgroup" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="bodyTemplate"></tbody>
2060
+ <tfoot class="p-treetable-tfoot" role="rowgroup">
1954
2061
  <ng-container *ngTemplateOutlet="footerTemplate; context: { $implicit: columns }"></ng-container>
1955
2062
  </tfoot>
1956
2063
  </table>
@@ -2038,23 +2145,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2038
2145
  }], tableStyleClass: [{
2039
2146
  type: Input
2040
2147
  }], autoLayout: [{
2041
- type: Input
2148
+ type: Input,
2149
+ args: [{ transform: booleanAttribute }]
2042
2150
  }], lazy: [{
2043
- type: Input
2151
+ type: Input,
2152
+ args: [{ transform: booleanAttribute }]
2044
2153
  }], lazyLoadOnInit: [{
2045
- type: Input
2154
+ type: Input,
2155
+ args: [{ transform: booleanAttribute }]
2046
2156
  }], paginator: [{
2047
- type: Input
2157
+ type: Input,
2158
+ args: [{ transform: booleanAttribute }]
2048
2159
  }], rows: [{
2049
- type: Input
2160
+ type: Input,
2161
+ args: [{ transform: numberAttribute }]
2050
2162
  }], first: [{
2051
- type: Input
2163
+ type: Input,
2164
+ args: [{ transform: numberAttribute }]
2052
2165
  }], pageLinks: [{
2053
- type: Input
2166
+ type: Input,
2167
+ args: [{ transform: numberAttribute }]
2054
2168
  }], rowsPerPageOptions: [{
2055
2169
  type: Input
2056
2170
  }], alwaysShowPaginator: [{
2057
- type: Input
2171
+ type: Input,
2172
+ args: [{ transform: booleanAttribute }]
2058
2173
  }], paginatorPosition: [{
2059
2174
  type: Input
2060
2175
  }], paginatorStyleClass: [{
@@ -2064,21 +2179,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2064
2179
  }], currentPageReportTemplate: [{
2065
2180
  type: Input
2066
2181
  }], showCurrentPageReport: [{
2067
- type: Input
2182
+ type: Input,
2183
+ args: [{ transform: booleanAttribute }]
2068
2184
  }], showJumpToPageDropdown: [{
2069
- type: Input
2185
+ type: Input,
2186
+ args: [{ transform: booleanAttribute }]
2070
2187
  }], showFirstLastIcon: [{
2071
- type: Input
2188
+ type: Input,
2189
+ args: [{ transform: booleanAttribute }]
2072
2190
  }], showPageLinks: [{
2073
- type: Input
2191
+ type: Input,
2192
+ args: [{ transform: booleanAttribute }]
2074
2193
  }], defaultSortOrder: [{
2075
- type: Input
2194
+ type: Input,
2195
+ args: [{ transform: numberAttribute }]
2076
2196
  }], sortMode: [{
2077
2197
  type: Input
2078
2198
  }], resetPageOnSort: [{
2079
- type: Input
2199
+ type: Input,
2200
+ args: [{ transform: booleanAttribute }]
2080
2201
  }], customSort: [{
2081
- type: Input
2202
+ type: Input,
2203
+ args: [{ transform: booleanAttribute }]
2082
2204
  }], selectionMode: [{
2083
2205
  type: Input
2084
2206
  }], contextMenuSelection: [{
@@ -2088,39 +2210,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2088
2210
  }], dataKey: [{
2089
2211
  type: Input
2090
2212
  }], metaKeySelection: [{
2091
- type: Input
2213
+ type: Input,
2214
+ args: [{ transform: booleanAttribute }]
2092
2215
  }], compareSelectionBy: [{
2093
2216
  type: Input
2094
2217
  }], rowHover: [{
2095
- type: Input
2218
+ type: Input,
2219
+ args: [{ transform: booleanAttribute }]
2096
2220
  }], loading: [{
2097
- type: Input
2221
+ type: Input,
2222
+ args: [{ transform: booleanAttribute }]
2098
2223
  }], loadingIcon: [{
2099
2224
  type: Input
2100
2225
  }], showLoader: [{
2101
- type: Input
2226
+ type: Input,
2227
+ args: [{ transform: booleanAttribute }]
2102
2228
  }], scrollable: [{
2103
- type: Input
2229
+ type: Input,
2230
+ args: [{ transform: booleanAttribute }]
2104
2231
  }], scrollHeight: [{
2105
2232
  type: Input
2106
2233
  }], virtualScroll: [{
2107
- type: Input
2234
+ type: Input,
2235
+ args: [{ transform: booleanAttribute }]
2108
2236
  }], virtualScrollItemSize: [{
2109
- type: Input
2237
+ type: Input,
2238
+ args: [{ transform: numberAttribute }]
2110
2239
  }], virtualScrollOptions: [{
2111
2240
  type: Input
2112
2241
  }], virtualScrollDelay: [{
2113
- type: Input
2242
+ type: Input,
2243
+ args: [{ transform: numberAttribute }]
2114
2244
  }], frozenWidth: [{
2115
2245
  type: Input
2116
2246
  }], frozenColumns: [{
2117
2247
  type: Input
2118
2248
  }], resizableColumns: [{
2119
- type: Input
2249
+ type: Input,
2250
+ args: [{ transform: booleanAttribute }]
2120
2251
  }], columnResizeMode: [{
2121
2252
  type: Input
2122
2253
  }], reorderableColumns: [{
2123
- type: Input
2254
+ type: Input,
2255
+ args: [{ transform: booleanAttribute }]
2124
2256
  }], contextMenu: [{
2125
2257
  type: Input
2126
2258
  }], rowTrackBy: [{
@@ -2130,7 +2262,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2130
2262
  }], globalFilterFields: [{
2131
2263
  type: Input
2132
2264
  }], filterDelay: [{
2133
- type: Input
2265
+ type: Input,
2266
+ args: [{ transform: numberAttribute }]
2134
2267
  }], filterMode: [{
2135
2268
  type: Input
2136
2269
  }], filterLocale: [{
@@ -2151,6 +2284,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2151
2284
  type: Input
2152
2285
  }], virtualRowHeight: [{
2153
2286
  type: Input
2287
+ }], selectionKeys: [{
2288
+ type: Input
2154
2289
  }], selectionChange: [{
2155
2290
  type: Output
2156
2291
  }], contextMenuSelectionChange: [{
@@ -2187,6 +2322,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2187
2322
  type: Output
2188
2323
  }], onEditCancel: [{
2189
2324
  type: Output
2325
+ }], selectionKeysChange: [{
2326
+ type: Output
2190
2327
  }], containerViewChild: [{
2191
2328
  type: ViewChild,
2192
2329
  args: ['container']
@@ -2248,8 +2385,8 @@ class TTBody {
2248
2385
  this.subscription.unsubscribe();
2249
2386
  }
2250
2387
  }
2251
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTBody, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2252
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: TTBody, selector: "[pTreeTableBody]", inputs: { columns: ["pTreeTableBody", "columns"], template: ["pTreeTableBodyTemplate", "template"], frozen: "frozen", serializedNodes: "serializedNodes", scrollerOptions: "scrollerOptions" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
2388
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTBody, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2389
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: TTBody, selector: "[pTreeTableBody]", inputs: { columns: ["pTreeTableBody", "columns"], template: ["pTreeTableBodyTemplate", "template"], frozen: ["frozen", "frozen", booleanAttribute], serializedNodes: "serializedNodes", scrollerOptions: "scrollerOptions" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
2253
2390
  <ng-template ngFor let-serializedNode let-rowIndex="index" [ngForOf]="serializedNodes || tt.serializedValue" [ngForTrackBy]="tt.rowTrackBy">
2254
2391
  <ng-container *ngIf="serializedNode.visible">
2255
2392
  <ng-container *ngTemplateOutlet="template; context: { $implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns }"></ng-container>
@@ -2260,7 +2397,7 @@ class TTBody {
2260
2397
  </ng-container>
2261
2398
  `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
2262
2399
  }
2263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTBody, decorators: [{
2400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTBody, decorators: [{
2264
2401
  type: Component,
2265
2402
  args: [{
2266
2403
  selector: '[pTreeTableBody]',
@@ -2286,7 +2423,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2286
2423
  type: Input,
2287
2424
  args: ['pTreeTableBodyTemplate']
2288
2425
  }], frozen: [{
2289
- type: Input
2426
+ type: Input,
2427
+ args: [{ transform: booleanAttribute }]
2290
2428
  }], serializedNodes: [{
2291
2429
  type: Input
2292
2430
  }], scrollerOptions: [{
@@ -2333,29 +2471,31 @@ class TTScrollableView {
2333
2471
  this.zone = zone;
2334
2472
  }
2335
2473
  ngAfterViewInit() {
2336
- if (!this.frozen) {
2337
- if (this.tt.frozenColumns || this.tt.frozenBodyTemplate) {
2338
- DomHandler.addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');
2339
- }
2340
- let frozenView = this.el.nativeElement.previousElementSibling;
2341
- if (frozenView) {
2342
- if (this.tt.virtualScroll)
2343
- this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-scroller-viewport');
2344
- else
2345
- this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-scrollable-body');
2346
- }
2347
- let scrollBarWidth = DomHandler.calculateScrollbarWidth();
2348
- this.scrollHeaderBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';
2349
- if (this.scrollFooterBoxViewChild && this.scrollFooterBoxViewChild.nativeElement) {
2350
- this.scrollFooterBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';
2474
+ if (isPlatformBrowser(this.platformId)) {
2475
+ if (!this.frozen) {
2476
+ if (this.tt.frozenColumns || this.tt.frozenBodyTemplate) {
2477
+ DomHandler.addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');
2478
+ }
2479
+ let frozenView = this.el.nativeElement.previousElementSibling;
2480
+ if (frozenView) {
2481
+ if (this.tt.virtualScroll)
2482
+ this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-scroller-viewport');
2483
+ else
2484
+ this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-scrollable-body');
2485
+ }
2486
+ let scrollBarWidth = DomHandler.calculateScrollbarWidth();
2487
+ this.scrollHeaderBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';
2488
+ if (this.scrollFooterBoxViewChild && this.scrollFooterBoxViewChild.nativeElement) {
2489
+ this.scrollFooterBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';
2490
+ }
2351
2491
  }
2352
- }
2353
- else {
2354
- if (this.scrollableAlignerViewChild && this.scrollableAlignerViewChild.nativeElement) {
2355
- this.scrollableAlignerViewChild.nativeElement.style.height = DomHandler.calculateScrollbarHeight() + 'px';
2492
+ else {
2493
+ if (this.scrollableAlignerViewChild && this.scrollableAlignerViewChild.nativeElement) {
2494
+ this.scrollableAlignerViewChild.nativeElement.style.height = DomHandler.calculateScrollbarHeight() + 'px';
2495
+ }
2356
2496
  }
2497
+ this.bindEvents();
2357
2498
  }
2358
- this.bindEvents();
2359
2499
  }
2360
2500
  bindEvents() {
2361
2501
  if (isPlatformBrowser(this.platformId)) {
@@ -2459,13 +2599,13 @@ class TTScrollableView {
2459
2599
  this.unbindEvents();
2460
2600
  this.frozenSiblingBody = null;
2461
2601
  }
2462
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTScrollableView, deps: [{ token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2463
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: TTScrollableView, selector: "[ttScrollableView]", inputs: { columns: ["ttScrollableView", "columns"], frozen: "frozen", scrollHeight: "scrollHeight" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "scrollHeaderViewChild", first: true, predicate: ["scrollHeader"], descendants: true }, { propertyName: "scrollHeaderBoxViewChild", first: true, predicate: ["scrollHeaderBox"], descendants: true }, { propertyName: "scrollBodyViewChild", first: true, predicate: ["scrollBody"], descendants: true }, { propertyName: "scrollTableViewChild", first: true, predicate: ["scrollTable"], descendants: true }, { propertyName: "scrollLoadingTableViewChild", first: true, predicate: ["loadingTable"], descendants: true }, { propertyName: "scrollFooterViewChild", first: true, predicate: ["scrollFooter"], descendants: true }, { propertyName: "scrollFooterBoxViewChild", first: true, predicate: ["scrollFooterBox"], descendants: true }, { propertyName: "scrollableAlignerViewChild", first: true, predicate: ["scrollableAligner"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }], ngImport: i0, template: `
2602
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTScrollableView, deps: [{ token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2603
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: TTScrollableView, selector: "[ttScrollableView]", inputs: { columns: ["ttScrollableView", "columns"], frozen: ["frozen", "frozen", booleanAttribute], scrollHeight: "scrollHeight" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "scrollHeaderViewChild", first: true, predicate: ["scrollHeader"], descendants: true }, { propertyName: "scrollHeaderBoxViewChild", first: true, predicate: ["scrollHeaderBox"], descendants: true }, { propertyName: "scrollBodyViewChild", first: true, predicate: ["scrollBody"], descendants: true }, { propertyName: "scrollTableViewChild", first: true, predicate: ["scrollTable"], descendants: true }, { propertyName: "scrollLoadingTableViewChild", first: true, predicate: ["loadingTable"], descendants: true }, { propertyName: "scrollFooterViewChild", first: true, predicate: ["scrollFooter"], descendants: true }, { propertyName: "scrollFooterBoxViewChild", first: true, predicate: ["scrollFooterBox"], descendants: true }, { propertyName: "scrollableAlignerViewChild", first: true, predicate: ["scrollableAligner"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }], ngImport: i0, template: `
2464
2604
  <div #scrollHeader class="p-treetable-scrollable-header">
2465
2605
  <div #scrollHeaderBox class="p-treetable-scrollable-header-box">
2466
2606
  <table class="p-treetable-scrollable-header-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
2467
2607
  <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate || tt.colGroupTemplate : tt.colGroupTemplate; context: { $implicit: columns }"></ng-container>
2468
- <thead class="p-treetable-thead">
2608
+ <thead role="rowgroup" class="p-treetable-thead">
2469
2609
  <ng-container *ngTemplateOutlet="frozen ? tt.frozenHeaderTemplate || tt.headerTemplate : tt.headerTemplate; context: { $implicit: columns }"></ng-container>
2470
2610
  </thead>
2471
2611
  </table>
@@ -2500,9 +2640,9 @@ class TTScrollableView {
2500
2640
  </ng-container>
2501
2641
 
2502
2642
  <ng-template #buildInItems let-items let-scrollerOptions="options">
2503
- <table #scrollTable [class]="tt.tableStyleClass" [ngClass]="scrollerOptions.contentStyleClass" [ngStyle]="tt.tableStyle" [style]="scrollerOptions.contentStyle">
2643
+ <table role="table" #scrollTable [class]="tt.tableStyleClass" [ngClass]="scrollerOptions.contentStyleClass" [ngStyle]="tt.tableStyle" [style]="scrollerOptions.contentStyle">
2504
2644
  <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate || tt.colGroupTemplate : tt.colGroupTemplate; context: { $implicit: columns }"></ng-container>
2505
- <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate || tt.bodyTemplate : tt.bodyTemplate" [serializedNodes]="items" [frozen]="frozen"></tbody>
2645
+ <tbody role="rowgroup" class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate || tt.bodyTemplate : tt.bodyTemplate" [serializedNodes]="items" [frozen]="frozen"></tbody>
2506
2646
  </table>
2507
2647
  <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
2508
2648
  </ng-template>
@@ -2511,7 +2651,7 @@ class TTScrollableView {
2511
2651
  <div #scrollFooterBox class="p-treetable-scrollable-footer-box">
2512
2652
  <table class="p-treetable-scrollable-footer-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
2513
2653
  <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate || tt.colGroupTemplate : tt.colGroupTemplate; context: { $implicit: columns }"></ng-container>
2514
- <tfoot class="p-treetable-tfoot">
2654
+ <tfoot role="rowgroup" class="p-treetable-tfoot">
2515
2655
  <ng-container *ngTemplateOutlet="frozen ? tt.frozenFooterTemplate || tt.footerTemplate : tt.footerTemplate; context: { $implicit: columns }"></ng-container>
2516
2656
  </tfoot>
2517
2657
  </table>
@@ -2519,7 +2659,7 @@ class TTScrollableView {
2519
2659
  </div>
2520
2660
  `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4.Scroller, selector: "p-scroller", inputs: ["id", "style", "styleClass", "tabindex", "items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "step", "delay", "resizeDelay", "appendOnly", "inline", "lazy", "disabled", "loaderDisabled", "columns", "showSpacer", "showLoader", "numToleratedItems", "loading", "autoSize", "trackBy", "options"], outputs: ["onLazyLoad", "onScroll", "onScrollIndexChange"] }, { kind: "component", type: TTBody, selector: "[pTreeTableBody]", inputs: ["pTreeTableBody", "pTreeTableBodyTemplate", "frozen", "serializedNodes", "scrollerOptions"] }], encapsulation: i0.ViewEncapsulation.None });
2521
2661
  }
2522
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTScrollableView, decorators: [{
2662
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTScrollableView, decorators: [{
2523
2663
  type: Component,
2524
2664
  args: [{
2525
2665
  selector: '[ttScrollableView]',
@@ -2528,7 +2668,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2528
2668
  <div #scrollHeaderBox class="p-treetable-scrollable-header-box">
2529
2669
  <table class="p-treetable-scrollable-header-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
2530
2670
  <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate || tt.colGroupTemplate : tt.colGroupTemplate; context: { $implicit: columns }"></ng-container>
2531
- <thead class="p-treetable-thead">
2671
+ <thead role="rowgroup" class="p-treetable-thead">
2532
2672
  <ng-container *ngTemplateOutlet="frozen ? tt.frozenHeaderTemplate || tt.headerTemplate : tt.headerTemplate; context: { $implicit: columns }"></ng-container>
2533
2673
  </thead>
2534
2674
  </table>
@@ -2563,9 +2703,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2563
2703
  </ng-container>
2564
2704
 
2565
2705
  <ng-template #buildInItems let-items let-scrollerOptions="options">
2566
- <table #scrollTable [class]="tt.tableStyleClass" [ngClass]="scrollerOptions.contentStyleClass" [ngStyle]="tt.tableStyle" [style]="scrollerOptions.contentStyle">
2706
+ <table role="table" #scrollTable [class]="tt.tableStyleClass" [ngClass]="scrollerOptions.contentStyleClass" [ngStyle]="tt.tableStyle" [style]="scrollerOptions.contentStyle">
2567
2707
  <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate || tt.colGroupTemplate : tt.colGroupTemplate; context: { $implicit: columns }"></ng-container>
2568
- <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate || tt.bodyTemplate : tt.bodyTemplate" [serializedNodes]="items" [frozen]="frozen"></tbody>
2708
+ <tbody role="rowgroup" class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate || tt.bodyTemplate : tt.bodyTemplate" [serializedNodes]="items" [frozen]="frozen"></tbody>
2569
2709
  </table>
2570
2710
  <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
2571
2711
  </ng-template>
@@ -2574,7 +2714,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2574
2714
  <div #scrollFooterBox class="p-treetable-scrollable-footer-box">
2575
2715
  <table class="p-treetable-scrollable-footer-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
2576
2716
  <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate || tt.colGroupTemplate : tt.colGroupTemplate; context: { $implicit: columns }"></ng-container>
2577
- <tfoot class="p-treetable-tfoot">
2717
+ <tfoot role="rowgroup" class="p-treetable-tfoot">
2578
2718
  <ng-container *ngTemplateOutlet="frozen ? tt.frozenFooterTemplate || tt.footerTemplate : tt.footerTemplate; context: { $implicit: columns }"></ng-container>
2579
2719
  </tfoot>
2580
2720
  </table>
@@ -2593,7 +2733,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2593
2733
  type: Input,
2594
2734
  args: ['ttScrollableView']
2595
2735
  }], frozen: [{
2596
- type: Input
2736
+ type: Input,
2737
+ args: [{ transform: booleanAttribute }]
2597
2738
  }], scrollHeaderViewChild: [{
2598
2739
  type: ViewChild,
2599
2740
  args: ['scrollHeader']
@@ -2630,6 +2771,14 @@ class TTSortableColumn {
2630
2771
  ttSortableColumnDisabled;
2631
2772
  sorted;
2632
2773
  subscription;
2774
+ get ariaSorted() {
2775
+ if (this.sorted && this.tt.sortOrder < 0)
2776
+ return 'descending';
2777
+ else if (this.sorted && this.tt.sortOrder > 0)
2778
+ return 'ascending';
2779
+ else
2780
+ return 'none';
2781
+ }
2633
2782
  constructor(tt) {
2634
2783
  this.tt = tt;
2635
2784
  if (this.isEnabled()) {
@@ -2667,10 +2816,10 @@ class TTSortableColumn {
2667
2816
  this.subscription.unsubscribe();
2668
2817
  }
2669
2818
  }
2670
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTSortableColumn, deps: [{ token: TreeTable }], target: i0.ɵɵFactoryTarget.Directive });
2671
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: TTSortableColumn, selector: "[ttSortableColumn]", inputs: { field: ["ttSortableColumn", "field"], ttSortableColumnDisabled: "ttSortableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKey($event)" }, properties: { "class.p-sortable-column": "isEnabled()", "class.p-highlight": "sorted", "attr.tabindex": "isEnabled() ? \"0\" : null", "attr.role": "\"columnheader\"" }, classAttribute: "p-element" }, ngImport: i0 });
2819
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTSortableColumn, deps: [{ token: TreeTable }], target: i0.ɵɵFactoryTarget.Directive });
2820
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.0", type: TTSortableColumn, selector: "[ttSortableColumn]", inputs: { field: ["ttSortableColumn", "field"], ttSortableColumnDisabled: ["ttSortableColumnDisabled", "ttSortableColumnDisabled", booleanAttribute] }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKey($event)" }, properties: { "class.p-sortable-column": "isEnabled()", "class.p-highlight": "sorted", "attr.tabindex": "isEnabled() ? \"0\" : null", "attr.role": "\"columnheader\"", "attr.aria-sort": "ariaSorted" }, classAttribute: "p-element" }, ngImport: i0 });
2672
2821
  }
2673
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTSortableColumn, decorators: [{
2822
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTSortableColumn, decorators: [{
2674
2823
  type: Directive,
2675
2824
  args: [{
2676
2825
  selector: '[ttSortableColumn]',
@@ -2679,14 +2828,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2679
2828
  '[class.p-sortable-column]': 'isEnabled()',
2680
2829
  '[class.p-highlight]': 'sorted',
2681
2830
  '[attr.tabindex]': 'isEnabled() ? "0" : null',
2682
- '[attr.role]': '"columnheader"'
2831
+ '[attr.role]': '"columnheader"',
2832
+ '[attr.aria-sort]': 'ariaSorted'
2683
2833
  }
2684
2834
  }]
2685
2835
  }], ctorParameters: function () { return [{ type: TreeTable }]; }, propDecorators: { field: [{
2686
2836
  type: Input,
2687
2837
  args: ['ttSortableColumn']
2688
2838
  }], ttSortableColumnDisabled: [{
2689
- type: Input
2839
+ type: Input,
2840
+ args: [{ transform: booleanAttribute }]
2690
2841
  }], onClick: [{
2691
2842
  type: HostListener,
2692
2843
  args: ['click', ['$event']]
@@ -2730,8 +2881,8 @@ class TTSortIcon {
2730
2881
  this.subscription.unsubscribe();
2731
2882
  }
2732
2883
  }
2733
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTSortIcon, deps: [{ token: TreeTable }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2734
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: TTSortIcon, selector: "p-treeTableSortIcon", inputs: { field: "field", ariaLabelDesc: "ariaLabelDesc", ariaLabelAsc: "ariaLabelAsc" }, host: { classAttribute: "p-element" }, ngImport: i0, template: ` <ng-container *ngIf="!tt.sortIconTemplate">
2884
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTSortIcon, deps: [{ token: TreeTable }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2885
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: TTSortIcon, selector: "p-treeTableSortIcon", inputs: { field: "field", ariaLabelDesc: "ariaLabelDesc", ariaLabelAsc: "ariaLabelAsc" }, host: { classAttribute: "p-element" }, ngImport: i0, template: ` <ng-container *ngIf="!tt.sortIconTemplate">
2735
2886
  <SortAltIcon [styleClass]="'p-sortable-column-icon'" *ngIf="sortOrder === 0" />
2736
2887
  <SortAmountUpAltIcon [styleClass]="'p-sortable-column-icon'" *ngIf="sortOrder === 1" />
2737
2888
  <SortAmountDownIcon [styleClass]="'p-sortable-column-icon'" *ngIf="sortOrder === -1" />
@@ -2740,7 +2891,7 @@ class TTSortIcon {
2740
2891
  <ng-template *ngTemplateOutlet="tt.sortIconTemplate; context: { $implicit: sortOrder }"></ng-template>
2741
2892
  </span>`, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(function () { return SortAltIcon; }), selector: "SortAltIcon" }, { kind: "component", type: i0.forwardRef(function () { return SortAmountUpAltIcon; }), selector: "SortAmountUpAltIcon" }, { kind: "component", type: i0.forwardRef(function () { return SortAmountDownIcon; }), selector: "SortAmountDownIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2742
2893
  }
2743
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTSortIcon, decorators: [{
2894
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTSortIcon, decorators: [{
2744
2895
  type: Component,
2745
2896
  args: [{
2746
2897
  selector: 'p-treeTableSortIcon',
@@ -2835,10 +2986,10 @@ class TTResizableColumn {
2835
2986
  }
2836
2987
  this.unbindDocumentEvents();
2837
2988
  }
2838
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTResizableColumn, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
2839
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: TTResizableColumn, selector: "[ttResizableColumn]", inputs: { ttResizableColumnDisabled: "ttResizableColumnDisabled" }, host: { classAttribute: "p-element" }, ngImport: i0 });
2989
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTResizableColumn, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
2990
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.0", type: TTResizableColumn, selector: "[ttResizableColumn]", inputs: { ttResizableColumnDisabled: ["ttResizableColumnDisabled", "ttResizableColumnDisabled", booleanAttribute] }, host: { classAttribute: "p-element" }, ngImport: i0 });
2840
2991
  }
2841
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTResizableColumn, decorators: [{
2992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTResizableColumn, decorators: [{
2842
2993
  type: Directive,
2843
2994
  args: [{
2844
2995
  selector: '[ttResizableColumn]',
@@ -2853,7 +3004,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2853
3004
  type: Inject,
2854
3005
  args: [PLATFORM_ID]
2855
3006
  }] }, { type: i0.Renderer2 }, { type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { ttResizableColumnDisabled: [{
2856
- type: Input
3007
+ type: Input,
3008
+ args: [{ transform: booleanAttribute }]
2857
3009
  }] } });
2858
3010
  class TTReorderableColumn {
2859
3011
  document;
@@ -2941,10 +3093,10 @@ class TTReorderableColumn {
2941
3093
  ngOnDestroy() {
2942
3094
  this.unbindEvents();
2943
3095
  }
2944
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTReorderableColumn, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
2945
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: TTReorderableColumn, selector: "[ttReorderableColumn]", inputs: { ttReorderableColumnDisabled: "ttReorderableColumnDisabled" }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
3096
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTReorderableColumn, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
3097
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.0", type: TTReorderableColumn, selector: "[ttReorderableColumn]", inputs: { ttReorderableColumnDisabled: ["ttReorderableColumnDisabled", "ttReorderableColumnDisabled", booleanAttribute] }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
2946
3098
  }
2947
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTReorderableColumn, decorators: [{
3099
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTReorderableColumn, decorators: [{
2948
3100
  type: Directive,
2949
3101
  args: [{
2950
3102
  selector: '[ttReorderableColumn]',
@@ -2959,7 +3111,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
2959
3111
  type: Inject,
2960
3112
  args: [PLATFORM_ID]
2961
3113
  }] }, { type: i0.Renderer2 }, { type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { ttReorderableColumnDisabled: [{
2962
- type: Input
3114
+ type: Input,
3115
+ args: [{ transform: booleanAttribute }]
2963
3116
  }], onDrop: [{
2964
3117
  type: HostListener,
2965
3118
  args: ['drop', ['$event']]
@@ -2993,9 +3146,14 @@ class TTSelectableRow {
2993
3146
  });
2994
3147
  }
2995
3148
  }
2996
- onEnterKey(event) {
2997
- if (event.which === 13) {
2998
- this.onClick(event);
3149
+ onKeyDown(event) {
3150
+ switch (event.code) {
3151
+ case 'Enter':
3152
+ case 'Space':
3153
+ this.onEnterKey(event);
3154
+ break;
3155
+ default:
3156
+ break;
2999
3157
  }
3000
3158
  }
3001
3159
  onTouchEnd(event) {
@@ -3003,6 +3161,18 @@ class TTSelectableRow {
3003
3161
  this.tt.handleRowTouchEnd(event);
3004
3162
  }
3005
3163
  }
3164
+ onEnterKey(event) {
3165
+ if (this.tt.selectionMode === 'checkbox') {
3166
+ this.tt.toggleNodeWithCheckbox({
3167
+ originalEvent: event,
3168
+ rowNode: this.rowNode
3169
+ });
3170
+ }
3171
+ else {
3172
+ this.onClick(event);
3173
+ }
3174
+ event.preventDefault();
3175
+ }
3006
3176
  isEnabled() {
3007
3177
  return this.ttSelectableRowDisabled !== true;
3008
3178
  }
@@ -3011,27 +3181,30 @@ class TTSelectableRow {
3011
3181
  this.subscription.unsubscribe();
3012
3182
  }
3013
3183
  }
3014
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTSelectableRow, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });
3015
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: TTSelectableRow, selector: "[ttSelectableRow]", inputs: { rowNode: ["ttSelectableRow", "rowNode"], ttSelectableRowDisabled: "ttSelectableRowDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown": "onEnterKey($event)", "touchend": "onTouchEnd($event)" }, properties: { "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
3184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTSelectableRow, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });
3185
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.0", type: TTSelectableRow, selector: "[ttSelectableRow]", inputs: { rowNode: ["ttSelectableRow", "rowNode"], ttSelectableRowDisabled: ["ttSelectableRowDisabled", "ttSelectableRowDisabled", booleanAttribute] }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)", "touchend": "onTouchEnd($event)" }, properties: { "class.p-highlight": "selected", "attr.data-p-highlight": "selected", "attr.aria-checked": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
3016
3186
  }
3017
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTSelectableRow, decorators: [{
3187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTSelectableRow, decorators: [{
3018
3188
  type: Directive,
3019
3189
  args: [{
3020
3190
  selector: '[ttSelectableRow]',
3021
3191
  host: {
3022
3192
  class: 'p-element',
3023
- '[class.p-highlight]': 'selected'
3193
+ '[class.p-highlight]': 'selected',
3194
+ '[attr.data-p-highlight]': 'selected',
3195
+ '[attr.aria-checked]': 'selected'
3024
3196
  }
3025
3197
  }]
3026
3198
  }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }]; }, propDecorators: { rowNode: [{
3027
3199
  type: Input,
3028
3200
  args: ['ttSelectableRow']
3029
3201
  }], ttSelectableRowDisabled: [{
3030
- type: Input
3202
+ type: Input,
3203
+ args: [{ transform: booleanAttribute }]
3031
3204
  }], onClick: [{
3032
3205
  type: HostListener,
3033
3206
  args: ['click', ['$event']]
3034
- }], onEnterKey: [{
3207
+ }], onKeyDown: [{
3035
3208
  type: HostListener,
3036
3209
  args: ['keydown', ['$event']]
3037
3210
  }], onTouchEnd: [{
@@ -3075,10 +3248,10 @@ class TTSelectableRowDblClick {
3075
3248
  this.subscription.unsubscribe();
3076
3249
  }
3077
3250
  }
3078
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTSelectableRowDblClick, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });
3079
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: TTSelectableRowDblClick, selector: "[ttSelectableRowDblClick]", inputs: { rowNode: ["ttSelectableRowDblClick", "rowNode"], ttSelectableRowDisabled: "ttSelectableRowDisabled" }, host: { listeners: { "dblclick": "onClick($event)" }, properties: { "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
3251
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTSelectableRowDblClick, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });
3252
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.0", type: TTSelectableRowDblClick, selector: "[ttSelectableRowDblClick]", inputs: { rowNode: ["ttSelectableRowDblClick", "rowNode"], ttSelectableRowDisabled: ["ttSelectableRowDisabled", "ttSelectableRowDisabled", booleanAttribute] }, host: { listeners: { "dblclick": "onClick($event)" }, properties: { "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
3080
3253
  }
3081
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTSelectableRowDblClick, decorators: [{
3254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTSelectableRowDblClick, decorators: [{
3082
3255
  type: Directive,
3083
3256
  args: [{
3084
3257
  selector: '[ttSelectableRowDblClick]',
@@ -3091,7 +3264,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
3091
3264
  type: Input,
3092
3265
  args: ['ttSelectableRowDblClick']
3093
3266
  }], ttSelectableRowDisabled: [{
3094
- type: Input
3267
+ type: Input,
3268
+ args: [{ transform: booleanAttribute }]
3095
3269
  }], onClick: [{
3096
3270
  type: HostListener,
3097
3271
  args: ['dblclick', ['$event']]
@@ -3132,10 +3306,10 @@ class TTContextMenuRow {
3132
3306
  this.subscription.unsubscribe();
3133
3307
  }
3134
3308
  }
3135
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTContextMenuRow, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
3136
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: TTContextMenuRow, selector: "[ttContextMenuRow]", inputs: { rowNode: ["ttContextMenuRow", "rowNode"], ttContextMenuRowDisabled: "ttContextMenuRowDisabled" }, host: { listeners: { "contextmenu": "onContextMenu($event)" }, properties: { "class.p-highlight-contextmenu": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
3309
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTContextMenuRow, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
3310
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.0", type: TTContextMenuRow, selector: "[ttContextMenuRow]", inputs: { rowNode: ["ttContextMenuRow", "rowNode"], ttContextMenuRowDisabled: ["ttContextMenuRowDisabled", "ttContextMenuRowDisabled", booleanAttribute] }, host: { listeners: { "contextmenu": "onContextMenu($event)" }, properties: { "class.p-highlight-contextmenu": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
3137
3311
  }
3138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTContextMenuRow, decorators: [{
3312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTContextMenuRow, decorators: [{
3139
3313
  type: Directive,
3140
3314
  args: [{
3141
3315
  selector: '[ttContextMenuRow]',
@@ -3149,7 +3323,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
3149
3323
  type: Input,
3150
3324
  args: ['ttContextMenuRow']
3151
3325
  }], ttContextMenuRowDisabled: [{
3152
- type: Input
3326
+ type: Input,
3327
+ args: [{ transform: booleanAttribute }]
3153
3328
  }], onContextMenu: [{
3154
3329
  type: HostListener,
3155
3330
  args: ['contextmenu', ['$event']]
@@ -3161,6 +3336,7 @@ class TTCheckbox {
3161
3336
  disabled;
3162
3337
  rowNode;
3163
3338
  checked;
3339
+ partialChecked;
3164
3340
  focused;
3165
3341
  subscription;
3166
3342
  constructor(tt, tableService, cd) {
@@ -3168,19 +3344,44 @@ class TTCheckbox {
3168
3344
  this.tableService = tableService;
3169
3345
  this.cd = cd;
3170
3346
  this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {
3171
- this.checked = this.tt.isSelected(this.rowNode.node);
3347
+ if (this.tt.selectionKeys) {
3348
+ this.checked = this.tt.isNodeSelected(this.rowNode.node);
3349
+ this.partialChecked = this.tt.isNodePartialSelected(this.rowNode.node);
3350
+ }
3351
+ else {
3352
+ this.checked = this.tt.isSelected(this.rowNode.node);
3353
+ this.partialChecked = this.rowNode.node.partialSelected;
3354
+ }
3172
3355
  this.cd.markForCheck();
3173
3356
  });
3174
3357
  }
3175
3358
  ngOnInit() {
3176
- this.checked = this.tt.isSelected(this.rowNode.node);
3359
+ if (this.tt.selectionKeys) {
3360
+ this.checked = this.tt.isNodeSelected(this.rowNode.node);
3361
+ this.partialChecked = this.tt.isNodePartialSelected(this.rowNode.node);
3362
+ }
3363
+ else {
3364
+ // for backward compatibility
3365
+ this.checked = this.tt.isSelected(this.rowNode.node);
3366
+ this.partialChecked = this.rowNode.node.partialSelected;
3367
+ }
3177
3368
  }
3178
3369
  onClick(event) {
3179
3370
  if (!this.disabled) {
3180
- this.tt.toggleNodeWithCheckbox({
3181
- originalEvent: event,
3182
- rowNode: this.rowNode
3183
- });
3371
+ if (this.tt.selectionKeys) {
3372
+ const _check = !this.checked;
3373
+ this.tt.toggleCheckbox({
3374
+ originalEvent: event,
3375
+ check: _check,
3376
+ rowNode: this.rowNode
3377
+ });
3378
+ }
3379
+ else {
3380
+ this.tt.toggleNodeWithCheckbox({
3381
+ originalEvent: event,
3382
+ rowNode: this.rowNode
3383
+ });
3384
+ }
3184
3385
  }
3185
3386
  DomHandler.clearSelection();
3186
3387
  }
@@ -3195,40 +3396,40 @@ class TTCheckbox {
3195
3396
  this.subscription.unsubscribe();
3196
3397
  }
3197
3398
  }
3198
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3199
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: TTCheckbox, selector: "p-treeTableCheckbox", inputs: { disabled: "disabled", rowNode: ["value", "rowNode"] }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
3399
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3400
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: TTCheckbox, selector: "p-treeTableCheckbox", inputs: { disabled: ["disabled", "disabled", booleanAttribute], rowNode: ["value", "rowNode"] }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
3200
3401
  <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused }" (click)="onClick($event)">
3201
3402
  <div class="p-hidden-accessible">
3202
- <input type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" />
3403
+ <input type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" tabindex="-1" />
3203
3404
  </div>
3204
- <div #box [ngClass]="{ 'p-checkbox-box': true, 'p-highlight': checked, 'p-focus': focused, 'p-indeterminate': rowNode.node.partialSelected, 'p-disabled': disabled }" role="checkbox" [attr.aria-checked]="checked">
3405
+ <div #box [ngClass]="{ 'p-checkbox-box': true, 'p-highlight': checked, 'p-focus': focused, 'p-indeterminate': partialChecked, 'p-disabled': disabled }" role="checkbox" [attr.aria-checked]="checked">
3205
3406
  <ng-container *ngIf="!tt.checkboxIconTemplate">
3206
3407
  <CheckIcon [styleClass]="'p-checkbox-icon'" *ngIf="checked" />
3207
- <MinusIcon [styleClass]="'p-checkbox-icon'" *ngIf="rowNode.node.partialSelected" />
3408
+ <MinusIcon [styleClass]="'p-checkbox-icon'" *ngIf="partialChecked" />
3208
3409
  </ng-container>
3209
3410
  <span *ngIf="tt.checkboxIconTemplate">
3210
- <ng-template *ngTemplateOutlet="tt.checkboxIconTemplate; context: { $implicit: checked, partialSelected: rowNode.node.partialSelected }"></ng-template>
3411
+ <ng-template *ngTemplateOutlet="tt.checkboxIconTemplate; context: { $implicit: checked, partialSelected: partialChecked }"></ng-template>
3211
3412
  </span>
3212
3413
  </div>
3213
3414
  </div>
3214
3415
  `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(function () { return CheckIcon; }), selector: "CheckIcon" }, { kind: "component", type: i0.forwardRef(function () { return MinusIcon; }), selector: "MinusIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3215
3416
  }
3216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTCheckbox, decorators: [{
3417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTCheckbox, decorators: [{
3217
3418
  type: Component,
3218
3419
  args: [{
3219
3420
  selector: 'p-treeTableCheckbox',
3220
3421
  template: `
3221
3422
  <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused }" (click)="onClick($event)">
3222
3423
  <div class="p-hidden-accessible">
3223
- <input type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" />
3424
+ <input type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" tabindex="-1" />
3224
3425
  </div>
3225
- <div #box [ngClass]="{ 'p-checkbox-box': true, 'p-highlight': checked, 'p-focus': focused, 'p-indeterminate': rowNode.node.partialSelected, 'p-disabled': disabled }" role="checkbox" [attr.aria-checked]="checked">
3426
+ <div #box [ngClass]="{ 'p-checkbox-box': true, 'p-highlight': checked, 'p-focus': focused, 'p-indeterminate': partialChecked, 'p-disabled': disabled }" role="checkbox" [attr.aria-checked]="checked">
3226
3427
  <ng-container *ngIf="!tt.checkboxIconTemplate">
3227
3428
  <CheckIcon [styleClass]="'p-checkbox-icon'" *ngIf="checked" />
3228
- <MinusIcon [styleClass]="'p-checkbox-icon'" *ngIf="rowNode.node.partialSelected" />
3429
+ <MinusIcon [styleClass]="'p-checkbox-icon'" *ngIf="partialChecked" />
3229
3430
  </ng-container>
3230
3431
  <span *ngIf="tt.checkboxIconTemplate">
3231
- <ng-template *ngTemplateOutlet="tt.checkboxIconTemplate; context: { $implicit: checked, partialSelected: rowNode.node.partialSelected }"></ng-template>
3432
+ <ng-template *ngTemplateOutlet="tt.checkboxIconTemplate; context: { $implicit: checked, partialSelected: partialChecked }"></ng-template>
3232
3433
  </span>
3233
3434
  </div>
3234
3435
  </div>
@@ -3240,7 +3441,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
3240
3441
  }
3241
3442
  }]
3242
3443
  }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
3243
- type: Input
3444
+ type: Input,
3445
+ args: [{ transform: booleanAttribute }]
3244
3446
  }], rowNode: [{
3245
3447
  type: Input,
3246
3448
  args: ['value']
@@ -3270,7 +3472,7 @@ class TTHeaderCheckbox {
3270
3472
  this.checked = this.updateCheckedState();
3271
3473
  }
3272
3474
  onClick(event, checked) {
3273
- if (this.tt.value && this.tt.value.length > 0) {
3475
+ if ((this.tt.value || this.tt.filteredNodes) && (this.tt.value.length > 0 || this.tt.filteredNodes.length > 0)) {
3274
3476
  this.tt.toggleNodesWithCheckbox(event, !checked);
3275
3477
  }
3276
3478
  DomHandler.clearSelection();
@@ -3294,13 +3496,27 @@ class TTHeaderCheckbox {
3294
3496
  let checked;
3295
3497
  const data = this.tt.filteredNodes || this.tt.value;
3296
3498
  if (data) {
3297
- for (let node of data) {
3298
- if (this.tt.isSelected(node)) {
3299
- checked = true;
3499
+ if (this.tt.selectionKeys) {
3500
+ for (let node of data) {
3501
+ if (this.tt.isNodeSelected(node)) {
3502
+ checked = true;
3503
+ }
3504
+ else {
3505
+ checked = false;
3506
+ break;
3507
+ }
3300
3508
  }
3301
- else {
3302
- checked = false;
3303
- break;
3509
+ }
3510
+ if (!this.tt.selectionKeys) {
3511
+ // legacy selection support, will be removed in v18
3512
+ for (let node of data) {
3513
+ if (this.tt.isSelected(node)) {
3514
+ checked = true;
3515
+ }
3516
+ else {
3517
+ checked = false;
3518
+ break;
3519
+ }
3304
3520
  }
3305
3521
  }
3306
3522
  }
@@ -3309,8 +3525,8 @@ class TTHeaderCheckbox {
3309
3525
  }
3310
3526
  return checked;
3311
3527
  }
3312
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTHeaderCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3313
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox", host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
3528
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTHeaderCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3529
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox", host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
3314
3530
  <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused }" (click)="onClick($event, cb.checked)">
3315
3531
  <div class="p-hidden-accessible">
3316
3532
  <input #cb type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="!tt.value || tt.value.length === 0" />
@@ -3326,7 +3542,7 @@ class TTHeaderCheckbox {
3326
3542
  </div>
3327
3543
  `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(function () { return CheckIcon; }), selector: "CheckIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3328
3544
  }
3329
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTHeaderCheckbox, decorators: [{
3545
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTHeaderCheckbox, decorators: [{
3330
3546
  type: Component,
3331
3547
  args: [{
3332
3548
  selector: 'p-treeTableHeaderCheckbox',
@@ -3507,10 +3723,10 @@ class TTEditableColumn {
3507
3723
  isEnabled() {
3508
3724
  return this.ttEditableColumnDisabled !== true;
3509
3725
  }
3510
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTEditableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
3511
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: TTEditableColumn, selector: "[ttEditableColumn]", inputs: { data: ["ttEditableColumn", "data"], field: ["ttEditableColumnField", "field"], ttEditableColumnDisabled: "ttEditableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" }, classAttribute: "p-element" }, ngImport: i0 });
3726
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTEditableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
3727
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.0", type: TTEditableColumn, selector: "[ttEditableColumn]", inputs: { data: ["ttEditableColumn", "data"], field: ["ttEditableColumnField", "field"], ttEditableColumnDisabled: ["ttEditableColumnDisabled", "ttEditableColumnDisabled", booleanAttribute] }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" }, classAttribute: "p-element" }, ngImport: i0 });
3512
3728
  }
3513
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTEditableColumn, decorators: [{
3729
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTEditableColumn, decorators: [{
3514
3730
  type: Directive,
3515
3731
  args: [{
3516
3732
  selector: '[ttEditableColumn]',
@@ -3525,7 +3741,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
3525
3741
  type: Input,
3526
3742
  args: ['ttEditableColumnField']
3527
3743
  }], ttEditableColumnDisabled: [{
3528
- type: Input
3744
+ type: Input,
3745
+ args: [{ transform: booleanAttribute }]
3529
3746
  }], onClick: [{
3530
3747
  type: HostListener,
3531
3748
  args: ['click', ['$event']]
@@ -3555,8 +3772,8 @@ class TreeTableCellEditor {
3555
3772
  }
3556
3773
  });
3557
3774
  }
3558
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTableCellEditor, deps: [{ token: TreeTable }, { token: TTEditableColumn }], target: i0.ɵɵFactoryTarget.Component });
3559
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: TreeTableCellEditor, selector: "p-treeTableCellEditor", host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
3775
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTableCellEditor, deps: [{ token: TreeTable }, { token: TTEditableColumn }], target: i0.ɵɵFactoryTarget.Component });
3776
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: TreeTableCellEditor, selector: "p-treeTableCellEditor", host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
3560
3777
  <ng-container *ngIf="tt.editingCell === editableColumn.el.nativeElement">
3561
3778
  <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
3562
3779
  </ng-container>
@@ -3565,7 +3782,7 @@ class TreeTableCellEditor {
3565
3782
  </ng-container>
3566
3783
  `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
3567
3784
  }
3568
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTableCellEditor, decorators: [{
3785
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTableCellEditor, decorators: [{
3569
3786
  type: Component,
3570
3787
  args: [{
3571
3788
  selector: 'p-treeTableCellEditor',
@@ -3590,6 +3807,15 @@ class TTRow {
3590
3807
  tt;
3591
3808
  el;
3592
3809
  zone;
3810
+ get level() {
3811
+ return this.rowNode?.['level'] + 1;
3812
+ }
3813
+ get styleClass() {
3814
+ return this.rowNode?.node['styleClass'] || '';
3815
+ }
3816
+ get expanded() {
3817
+ return this.rowNode?.node['expanded'];
3818
+ }
3593
3819
  rowNode;
3594
3820
  constructor(tt, el, zone) {
3595
3821
  this.tt = tt;
@@ -3597,73 +3823,150 @@ class TTRow {
3597
3823
  this.zone = zone;
3598
3824
  }
3599
3825
  onKeyDown(event) {
3600
- switch (event.which) {
3601
- //down arrow
3602
- case 40:
3603
- let nextRow = this.el.nativeElement.nextElementSibling;
3604
- if (nextRow) {
3605
- nextRow.focus();
3606
- }
3607
- event.preventDefault();
3826
+ switch (event.code) {
3827
+ case 'ArrowDown':
3828
+ this.onArrowDownKey(event);
3608
3829
  break;
3609
- //down arrow
3610
- case 38:
3611
- let prevRow = this.el.nativeElement.previousElementSibling;
3612
- if (prevRow) {
3613
- prevRow.focus();
3614
- }
3615
- event.preventDefault();
3830
+ case 'ArrowUp':
3831
+ this.onArrowUpKey(event);
3616
3832
  break;
3617
- //left arrow
3618
- case 37:
3619
- if (this.rowNode.node.expanded) {
3620
- this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);
3621
- this.rowNode.node.expanded = false;
3622
- this.tt.onNodeCollapse.emit({
3623
- originalEvent: event,
3624
- node: this.rowNode.node
3625
- });
3626
- this.tt.updateSerializedValue();
3627
- this.tt.tableService.onUIUpdate(this.tt.value);
3628
- this.restoreFocus();
3629
- }
3833
+ case 'ArrowRight':
3834
+ this.onArrowRightKey(event);
3630
3835
  break;
3631
- //right arrow
3632
- case 39:
3633
- if (!this.rowNode.node.expanded) {
3634
- this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);
3635
- this.rowNode.node.expanded = true;
3636
- this.tt.onNodeExpand.emit({
3637
- originalEvent: event,
3638
- node: this.rowNode.node
3639
- });
3640
- this.tt.updateSerializedValue();
3641
- this.tt.tableService.onUIUpdate(this.tt.value);
3642
- this.restoreFocus();
3643
- }
3836
+ case 'ArrowLeft':
3837
+ this.onArrowLeftKey(event);
3838
+ break;
3839
+ case 'Tab':
3840
+ this.onTabKey(event);
3841
+ break;
3842
+ case 'Home':
3843
+ this.onHomeKey(event);
3844
+ break;
3845
+ case 'End':
3846
+ this.onEndKey(event);
3847
+ break;
3848
+ default:
3644
3849
  break;
3645
3850
  }
3646
3851
  }
3647
- restoreFocus() {
3852
+ onArrowDownKey(event) {
3853
+ let nextRow = this.el?.nativeElement?.nextElementSibling;
3854
+ if (nextRow) {
3855
+ this.focusRowChange(event.currentTarget, nextRow);
3856
+ }
3857
+ event.preventDefault();
3858
+ }
3859
+ onArrowUpKey(event) {
3860
+ let prevRow = this.el?.nativeElement?.previousElementSibling;
3861
+ if (prevRow) {
3862
+ this.focusRowChange(event.currentTarget, prevRow);
3863
+ }
3864
+ event.preventDefault();
3865
+ }
3866
+ onArrowRightKey(event) {
3867
+ const currentTarget = event.currentTarget;
3868
+ const isHiddenIcon = DomHandler.findSingle(currentTarget, 'button').style.visibility === 'hidden';
3869
+ if (!isHiddenIcon && !this.expanded && this.rowNode.node['children']) {
3870
+ this.expand(event);
3871
+ currentTarget.tabIndex = -1;
3872
+ }
3873
+ event.preventDefault();
3874
+ }
3875
+ onArrowLeftKey(event) {
3876
+ const container = this.tt.containerViewChild?.nativeElement;
3877
+ const expandedRows = DomHandler.find(container, '[aria-expanded="true"]');
3878
+ const lastExpandedRow = expandedRows[expandedRows.length - 1];
3879
+ if (this.expanded) {
3880
+ this.collapse(event);
3881
+ }
3882
+ if (lastExpandedRow) {
3883
+ this.tt.toggleRowIndex = DomHandler.index(lastExpandedRow);
3884
+ }
3885
+ this.restoreFocus();
3886
+ event.preventDefault();
3887
+ }
3888
+ onHomeKey(event) {
3889
+ const firstElement = DomHandler.findSingle(this.tt.containerViewChild?.nativeElement, `tr[aria-level="${this.level}"]`);
3890
+ firstElement && DomHandler.focus(firstElement);
3891
+ event.preventDefault();
3892
+ }
3893
+ onEndKey(event) {
3894
+ const nodes = DomHandler.find(this.tt.containerViewChild?.nativeElement, `tr[aria-level="${this.level}"]`);
3895
+ const lastElement = nodes[nodes.length - 1];
3896
+ DomHandler.focus(lastElement);
3897
+ event.preventDefault();
3898
+ }
3899
+ onTabKey(event) {
3900
+ const rows = this.el.nativeElement ? [...DomHandler.find(this.el.nativeElement.parentNode, 'tr')] : undefined;
3901
+ if (rows && ObjectUtils.isNotEmpty(rows)) {
3902
+ const hasSelectedRow = rows.some((row) => DomHandler.getAttribute(row, 'data-p-highlight') || row.getAttribute('aria-checked') === 'true');
3903
+ rows.forEach((row) => {
3904
+ row.tabIndex = -1;
3905
+ });
3906
+ if (hasSelectedRow) {
3907
+ const selectedNodes = rows.filter((node) => DomHandler.getAttribute(node, 'data-p-highlight') || node.getAttribute('aria-checked') === 'true');
3908
+ selectedNodes[0].tabIndex = 0;
3909
+ return;
3910
+ }
3911
+ rows[0].tabIndex = 0;
3912
+ }
3913
+ }
3914
+ expand(event) {
3915
+ this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);
3916
+ this.rowNode.node['expanded'] = true;
3917
+ this.tt.updateSerializedValue();
3918
+ this.tt.tableService.onUIUpdate(this.tt.value);
3919
+ this.rowNode.node['children'] ? this.restoreFocus(this.tt.toggleRowIndex + 1) : this.restoreFocus();
3920
+ this.tt.onNodeExpand.emit({
3921
+ originalEvent: event,
3922
+ node: this.rowNode.node
3923
+ });
3924
+ }
3925
+ collapse(event) {
3926
+ this.rowNode.node['expanded'] = false;
3927
+ this.tt.updateSerializedValue();
3928
+ this.tt.tableService.onUIUpdate(this.tt.value);
3929
+ this.tt.onNodeCollapse.emit({ originalEvent: event, node: this.rowNode.node });
3930
+ }
3931
+ focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant) {
3932
+ firstFocusableRow.tabIndex = '-1';
3933
+ currentFocusedRow.tabIndex = '0';
3934
+ DomHandler.focus(currentFocusedRow);
3935
+ }
3936
+ restoreFocus(index) {
3648
3937
  this.zone.runOutsideAngular(() => {
3649
3938
  setTimeout(() => {
3650
- let row = DomHandler.findSingle(this.tt.containerViewChild?.nativeElement, '.p-treetable-tbody').children[this.tt.toggleRowIndex];
3939
+ const container = this.tt.containerViewChild?.nativeElement;
3940
+ const row = DomHandler.findSingle(container, '.p-treetable-tbody').children[index || this.tt.toggleRowIndex];
3941
+ const rows = [...DomHandler.find(container, 'tr')];
3942
+ rows &&
3943
+ rows.forEach((r) => {
3944
+ if (!row.isSameNode(r)) {
3945
+ r.tabIndex = -1;
3946
+ }
3947
+ });
3651
3948
  if (row) {
3949
+ row.tabIndex = 0;
3652
3950
  row.focus();
3653
3951
  }
3654
3952
  }, 25);
3655
3953
  });
3656
3954
  }
3657
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTRow, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
3658
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: TTRow, selector: "[ttRow]", inputs: { rowNode: ["ttRow", "rowNode"] }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "\"0\"" }, classAttribute: "p-element" }, ngImport: i0 });
3955
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTRow, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
3956
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.0", type: TTRow, selector: "[ttRow]", inputs: { rowNode: ["ttRow", "rowNode"] }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class": "'p-element ' + styleClass", "attr.tabindex": "'0'", "attr.aria-expanded": "expanded", "attr.aria-level": "level", "attr.data-pc-section": "row", "attr.role": "row" }, classAttribute: "p-element" }, ngImport: i0 });
3659
3957
  }
3660
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TTRow, decorators: [{
3958
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TTRow, decorators: [{
3661
3959
  type: Directive,
3662
3960
  args: [{
3663
3961
  selector: '[ttRow]',
3664
3962
  host: {
3665
3963
  class: 'p-element',
3666
- '[attr.tabindex]': '"0"'
3964
+ '[class]': `'p-element ' + styleClass`,
3965
+ '[attr.tabindex]': "'0'",
3966
+ '[attr.aria-expanded]': 'expanded',
3967
+ '[attr.aria-level]': 'level',
3968
+ '[attr.data-pc-section]': 'row',
3969
+ '[attr.role]': 'row'
3667
3970
  }
3668
3971
  }]
3669
3972
  }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rowNode: [{
@@ -3675,9 +3978,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
3675
3978
  }] } });
3676
3979
  class TreeTableToggler {
3677
3980
  tt;
3981
+ config;
3678
3982
  rowNode;
3679
- constructor(tt) {
3983
+ constructor(tt, config) {
3680
3984
  this.tt = tt;
3985
+ this.config = config;
3986
+ }
3987
+ get toggleButtonAriaLabel() {
3988
+ return this.config.translation ? (this.rowNode.expanded ? this.config.translation.aria.collapseRow : this.config.translation.aria.expandRow) : undefined;
3681
3989
  }
3682
3990
  onClick(event) {
3683
3991
  this.rowNode.node.expanded = !this.rowNode.node.expanded;
@@ -3697,8 +4005,8 @@ class TreeTableToggler {
3697
4005
  this.tt.tableService.onUIUpdate(this.tt.value);
3698
4006
  event.preventDefault();
3699
4007
  }
3700
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTableToggler, deps: [{ token: TreeTable }], target: i0.ɵɵFactoryTarget.Component });
3701
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: TreeTableToggler, selector: "p-treeTableToggler", inputs: { rowNode: "rowNode" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
4008
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTableToggler, deps: [{ token: TreeTable }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
4009
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: TreeTableToggler, selector: "p-treeTableToggler", inputs: { rowNode: "rowNode" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
3702
4010
  <button
3703
4011
  type="button"
3704
4012
  class="p-treetable-toggler p-link"
@@ -3707,16 +4015,19 @@ class TreeTableToggler {
3707
4015
  pRipple
3708
4016
  [style.visibility]="rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'"
3709
4017
  [style.marginLeft]="rowNode.level * 16 + 'px'"
4018
+ [attr.data-pc-section]="'rowtoggler'"
4019
+ [attr.data-pc-group-section]="'rowactionbutton'"
4020
+ [attr.aria-label]="toggleButtonAriaLabel"
3710
4021
  >
3711
4022
  <ng-container *ngIf="!tt.togglerIconTemplate">
3712
- <ChevronDownIcon *ngIf="rowNode.node.expanded" />
3713
- <ChevronRightIcon *ngIf="!rowNode.node.expanded" />
4023
+ <ChevronDownIcon *ngIf="rowNode.node.expanded" [attr.aria-hidden]="true" />
4024
+ <ChevronRightIcon *ngIf="!rowNode.node.expanded" [attr.aria-hidden]="true" />
3714
4025
  </ng-container>
3715
4026
  <ng-template *ngTemplateOutlet="tt.togglerIconTemplate; context: { $implicit: rowNode.node.expanded }"></ng-template>
3716
4027
  </button>
3717
4028
  `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i5.Ripple; }), selector: "[pRipple]" }, { kind: "component", type: i0.forwardRef(function () { return ChevronDownIcon; }), selector: "ChevronDownIcon" }, { kind: "component", type: i0.forwardRef(function () { return ChevronRightIcon; }), selector: "ChevronRightIcon" }], encapsulation: i0.ViewEncapsulation.None });
3718
4029
  }
3719
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTableToggler, decorators: [{
4030
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTableToggler, decorators: [{
3720
4031
  type: Component,
3721
4032
  args: [{
3722
4033
  selector: 'p-treeTableToggler',
@@ -3729,10 +4040,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
3729
4040
  pRipple
3730
4041
  [style.visibility]="rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'"
3731
4042
  [style.marginLeft]="rowNode.level * 16 + 'px'"
4043
+ [attr.data-pc-section]="'rowtoggler'"
4044
+ [attr.data-pc-group-section]="'rowactionbutton'"
4045
+ [attr.aria-label]="toggleButtonAriaLabel"
3732
4046
  >
3733
4047
  <ng-container *ngIf="!tt.togglerIconTemplate">
3734
- <ChevronDownIcon *ngIf="rowNode.node.expanded" />
3735
- <ChevronRightIcon *ngIf="!rowNode.node.expanded" />
4048
+ <ChevronDownIcon *ngIf="rowNode.node.expanded" [attr.aria-hidden]="true" />
4049
+ <ChevronRightIcon *ngIf="!rowNode.node.expanded" [attr.aria-hidden]="true" />
3736
4050
  </ng-container>
3737
4051
  <ng-template *ngTemplateOutlet="tt.togglerIconTemplate; context: { $implicit: rowNode.node.expanded }"></ng-template>
3738
4052
  </button>
@@ -3742,16 +4056,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
3742
4056
  class: 'p-element'
3743
4057
  }
3744
4058
  }]
3745
- }], ctorParameters: function () { return [{ type: TreeTable }]; }, propDecorators: { rowNode: [{
4059
+ }], ctorParameters: function () { return [{ type: TreeTable }, { type: i1.PrimeNGConfig }]; }, propDecorators: { rowNode: [{
3746
4060
  type: Input
3747
4061
  }] } });
3748
4062
  class TreeTableModule {
3749
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3750
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.2", ngImport: i0, type: TreeTableModule, declarations: [TreeTable, TreeTableToggler, TTScrollableView, TTBody, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor], imports: [CommonModule, PaginatorModule, RippleModule, ScrollerModule, SpinnerIcon, ArrowDownIcon, ArrowUpIcon, SortAltIcon, SortAmountUpAltIcon, SortAmountDownIcon, CheckIcon, MinusIcon, ChevronDownIcon, ChevronRightIcon], exports: [TreeTable, SharedModule, TreeTableToggler, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor, ScrollerModule] });
3751
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTableModule, imports: [CommonModule, PaginatorModule, RippleModule, ScrollerModule, SpinnerIcon, ArrowDownIcon, ArrowUpIcon, SortAltIcon, SortAmountUpAltIcon, SortAmountDownIcon, CheckIcon, MinusIcon, ChevronDownIcon, ChevronRightIcon, SharedModule,
4063
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4064
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.0", ngImport: i0, type: TreeTableModule, declarations: [TreeTable, TreeTableToggler, TTScrollableView, TTBody, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor], imports: [CommonModule, PaginatorModule, RippleModule, ScrollerModule, SpinnerIcon, ArrowDownIcon, ArrowUpIcon, SortAltIcon, SortAmountUpAltIcon, SortAmountDownIcon, CheckIcon, MinusIcon, ChevronDownIcon, ChevronRightIcon], exports: [TreeTable, SharedModule, TreeTableToggler, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor, ScrollerModule] });
4065
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTableModule, imports: [CommonModule, PaginatorModule, RippleModule, ScrollerModule, SpinnerIcon, ArrowDownIcon, ArrowUpIcon, SortAltIcon, SortAmountUpAltIcon, SortAmountDownIcon, CheckIcon, MinusIcon, ChevronDownIcon, ChevronRightIcon, SharedModule,
3752
4066
  ScrollerModule] });
3753
4067
  }
3754
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: TreeTableModule, decorators: [{
4068
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: TreeTableModule, decorators: [{
3755
4069
  type: NgModule,
3756
4070
  args: [{
3757
4071
  imports: [CommonModule, PaginatorModule, RippleModule, ScrollerModule, SpinnerIcon, ArrowDownIcon, ArrowUpIcon, SortAltIcon, SortAmountUpAltIcon, SortAmountDownIcon, CheckIcon, MinusIcon, ChevronDownIcon, ChevronRightIcon],