primeng 21.0.0-beta.1 → 21.0.0-rc.1

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 (378) hide show
  1. package/fesm2022/primeng-accordion.mjs +37 -37
  2. package/fesm2022/primeng-accordion.mjs.map +1 -1
  3. package/fesm2022/primeng-animateonscroll.mjs +7 -7
  4. package/fesm2022/primeng-api.mjs +31 -31
  5. package/fesm2022/primeng-autocomplete.mjs +51 -49
  6. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  7. package/fesm2022/primeng-autofocus.mjs +7 -7
  8. package/fesm2022/primeng-avatar.mjs +26 -10
  9. package/fesm2022/primeng-avatar.mjs.map +1 -1
  10. package/fesm2022/primeng-avatargroup.mjs +10 -10
  11. package/fesm2022/primeng-badge.mjs +25 -25
  12. package/fesm2022/primeng-badge.mjs.map +1 -1
  13. package/fesm2022/primeng-base.mjs +3 -3
  14. package/fesm2022/primeng-basecomponent.mjs +14 -14
  15. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  16. package/fesm2022/primeng-baseeditableholder.mjs +9 -9
  17. package/fesm2022/primeng-baseeditableholder.mjs.map +1 -1
  18. package/fesm2022/primeng-baseinput.mjs +14 -14
  19. package/fesm2022/primeng-baseinput.mjs.map +1 -1
  20. package/fesm2022/primeng-basemodelholder.mjs +5 -5
  21. package/fesm2022/primeng-basemodelholder.mjs.map +1 -1
  22. package/fesm2022/primeng-bind.mjs +12 -12
  23. package/fesm2022/primeng-bind.mjs.map +1 -1
  24. package/fesm2022/primeng-blockui.mjs +14 -14
  25. package/fesm2022/primeng-blockui.mjs.map +1 -1
  26. package/fesm2022/primeng-breadcrumb.mjs +95 -54
  27. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  28. package/fesm2022/primeng-button.mjs +53 -53
  29. package/fesm2022/primeng-button.mjs.map +1 -1
  30. package/fesm2022/primeng-buttongroup.mjs +10 -10
  31. package/fesm2022/primeng-card.mjs +31 -11
  32. package/fesm2022/primeng-card.mjs.map +1 -1
  33. package/fesm2022/primeng-carousel.mjs +15 -15
  34. package/fesm2022/primeng-carousel.mjs.map +1 -1
  35. package/fesm2022/primeng-cascadeselect.mjs +35 -35
  36. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  37. package/fesm2022/primeng-chart.mjs +10 -10
  38. package/fesm2022/primeng-checkbox.mjs +15 -15
  39. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  40. package/fesm2022/primeng-chip.mjs +14 -10
  41. package/fesm2022/primeng-chip.mjs.map +1 -1
  42. package/fesm2022/primeng-classnames.mjs +9 -9
  43. package/fesm2022/primeng-classnames.mjs.map +1 -1
  44. package/fesm2022/primeng-colorpicker.mjs +14 -14
  45. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  46. package/fesm2022/primeng-config.mjs +16 -16
  47. package/fesm2022/primeng-config.mjs.map +1 -1
  48. package/fesm2022/primeng-confirmdialog.mjs +44 -12
  49. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  50. package/fesm2022/primeng-confirmpopup.mjs +48 -20
  51. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  52. package/fesm2022/primeng-contextmenu.mjs +106 -55
  53. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  54. package/fesm2022/primeng-dataview.mjs +17 -11
  55. package/fesm2022/primeng-dataview.mjs.map +1 -1
  56. package/fesm2022/primeng-datepicker.mjs +24 -17
  57. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  58. package/fesm2022/primeng-dialog.mjs +63 -31
  59. package/fesm2022/primeng-dialog.mjs.map +1 -1
  60. package/fesm2022/primeng-divider.mjs +10 -10
  61. package/fesm2022/primeng-dock.mjs +46 -22
  62. package/fesm2022/primeng-dock.mjs.map +1 -1
  63. package/fesm2022/primeng-dragdrop.mjs +10 -10
  64. package/fesm2022/primeng-drawer.mjs +26 -26
  65. package/fesm2022/primeng-drawer.mjs.map +1 -1
  66. package/fesm2022/primeng-dynamicdialog.mjs +16 -16
  67. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  68. package/fesm2022/primeng-editor.mjs +10 -10
  69. package/fesm2022/primeng-fieldset.mjs +16 -16
  70. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  71. package/fesm2022/primeng-fileupload.mjs +30 -27
  72. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  73. package/fesm2022/primeng-floatlabel.mjs +10 -10
  74. package/fesm2022/primeng-fluid.mjs +10 -10
  75. package/fesm2022/primeng-focustrap.mjs +7 -7
  76. package/fesm2022/primeng-galleria.mjs +85 -38
  77. package/fesm2022/primeng-galleria.mjs.map +1 -1
  78. package/fesm2022/primeng-iconfield.mjs +10 -10
  79. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -3
  80. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -3
  81. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -3
  82. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -3
  83. package/fesm2022/primeng-icons-angledown.mjs +3 -3
  84. package/fesm2022/primeng-icons-angleleft.mjs +3 -3
  85. package/fesm2022/primeng-icons-angleright.mjs +3 -3
  86. package/fesm2022/primeng-icons-angleup.mjs +3 -3
  87. package/fesm2022/primeng-icons-arrowdown.mjs +3 -3
  88. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -3
  89. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -3
  90. package/fesm2022/primeng-icons-arrowleft.mjs +3 -3
  91. package/fesm2022/primeng-icons-arrowright.mjs +3 -3
  92. package/fesm2022/primeng-icons-arrowup.mjs +3 -3
  93. package/fesm2022/primeng-icons-ban.mjs +3 -3
  94. package/fesm2022/primeng-icons-bars.mjs +3 -3
  95. package/fesm2022/primeng-icons-baseicon.mjs +6 -6
  96. package/fesm2022/primeng-icons-blank.mjs +3 -3
  97. package/fesm2022/primeng-icons-calendar.mjs +3 -3
  98. package/fesm2022/primeng-icons-caretleft.mjs +3 -3
  99. package/fesm2022/primeng-icons-caretright.mjs +3 -3
  100. package/fesm2022/primeng-icons-check.mjs +3 -3
  101. package/fesm2022/primeng-icons-chevrondown.mjs +3 -3
  102. package/fesm2022/primeng-icons-chevronleft.mjs +3 -3
  103. package/fesm2022/primeng-icons-chevronright.mjs +3 -3
  104. package/fesm2022/primeng-icons-chevronup.mjs +3 -3
  105. package/fesm2022/primeng-icons-exclamationtriangle.mjs +3 -3
  106. package/fesm2022/primeng-icons-eye.mjs +3 -3
  107. package/fesm2022/primeng-icons-eyeslash.mjs +3 -3
  108. package/fesm2022/primeng-icons-filter.mjs +3 -3
  109. package/fesm2022/primeng-icons-filterfill.mjs +3 -3
  110. package/fesm2022/primeng-icons-filterslash.mjs +3 -3
  111. package/fesm2022/primeng-icons-home.mjs +3 -3
  112. package/fesm2022/primeng-icons-infocircle.mjs +3 -3
  113. package/fesm2022/primeng-icons-minus.mjs +3 -3
  114. package/fesm2022/primeng-icons-pencil.mjs +3 -3
  115. package/fesm2022/primeng-icons-plus.mjs +3 -3
  116. package/fesm2022/primeng-icons-refresh.mjs +3 -3
  117. package/fesm2022/primeng-icons-search.mjs +3 -3
  118. package/fesm2022/primeng-icons-searchminus.mjs +3 -3
  119. package/fesm2022/primeng-icons-searchplus.mjs +3 -3
  120. package/fesm2022/primeng-icons-sortalt.mjs +3 -3
  121. package/fesm2022/primeng-icons-sortamountdown.mjs +3 -3
  122. package/fesm2022/primeng-icons-sortamountupalt.mjs +3 -3
  123. package/fesm2022/primeng-icons-spinner.mjs +3 -3
  124. package/fesm2022/primeng-icons-star.mjs +3 -3
  125. package/fesm2022/primeng-icons-starfill.mjs +3 -3
  126. package/fesm2022/primeng-icons-thlarge.mjs +3 -3
  127. package/fesm2022/primeng-icons-times.mjs +3 -3
  128. package/fesm2022/primeng-icons-timescircle.mjs +3 -3
  129. package/fesm2022/primeng-icons-trash.mjs +3 -3
  130. package/fesm2022/primeng-icons-undo.mjs +3 -3
  131. package/fesm2022/primeng-icons-upload.mjs +3 -3
  132. package/fesm2022/primeng-icons-windowmaximize.mjs +3 -3
  133. package/fesm2022/primeng-icons-windowminimize.mjs +3 -3
  134. package/fesm2022/primeng-iftalabel.mjs +10 -10
  135. package/fesm2022/primeng-image.mjs +32 -32
  136. package/fesm2022/primeng-image.mjs.map +1 -1
  137. package/fesm2022/primeng-imagecompare.mjs +12 -12
  138. package/fesm2022/primeng-imagecompare.mjs.map +1 -1
  139. package/fesm2022/primeng-inplace.mjs +19 -19
  140. package/fesm2022/primeng-inplace.mjs.map +1 -1
  141. package/fesm2022/primeng-inputgroup.mjs +10 -10
  142. package/fesm2022/primeng-inputgroupaddon.mjs +10 -10
  143. package/fesm2022/primeng-inputicon.mjs +10 -10
  144. package/fesm2022/primeng-inputmask.mjs +14 -13
  145. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  146. package/fesm2022/primeng-inputnumber.mjs +14 -14
  147. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  148. package/fesm2022/primeng-inputotp.mjs +20 -16
  149. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  150. package/fesm2022/primeng-inputtext.mjs +20 -20
  151. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  152. package/fesm2022/primeng-keyfilter.mjs +7 -7
  153. package/fesm2022/primeng-knob.mjs +25 -25
  154. package/fesm2022/primeng-knob.mjs.map +1 -1
  155. package/fesm2022/primeng-listbox.mjs +36 -19
  156. package/fesm2022/primeng-listbox.mjs.map +1 -1
  157. package/fesm2022/primeng-megamenu.mjs +126 -48
  158. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  159. package/fesm2022/primeng-menu.mjs +47 -39
  160. package/fesm2022/primeng-menu.mjs.map +1 -1
  161. package/fesm2022/primeng-menubar.mjs +132 -53
  162. package/fesm2022/primeng-menubar.mjs.map +1 -1
  163. package/fesm2022/primeng-message.mjs +15 -13
  164. package/fesm2022/primeng-message.mjs.map +1 -1
  165. package/fesm2022/primeng-metergroup.mjs +43 -13
  166. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  167. package/fesm2022/primeng-motion.mjs +53 -53
  168. package/fesm2022/primeng-motion.mjs.map +1 -1
  169. package/fesm2022/primeng-multiselect.mjs +98 -30
  170. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  171. package/fesm2022/primeng-orderlist.mjs +15 -11
  172. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  173. package/fesm2022/primeng-organizationchart.mjs +13 -13
  174. package/fesm2022/primeng-overlay.mjs +20 -18
  175. package/fesm2022/primeng-overlay.mjs.map +1 -1
  176. package/fesm2022/primeng-overlaybadge.mjs +10 -10
  177. package/fesm2022/primeng-paginator.mjs +20 -16
  178. package/fesm2022/primeng-paginator.mjs.map +1 -1
  179. package/fesm2022/primeng-panel.mjs +13 -13
  180. package/fesm2022/primeng-panel.mjs.map +1 -1
  181. package/fesm2022/primeng-panelmenu.mjs +169 -57
  182. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  183. package/fesm2022/primeng-password.mjs +57 -29
  184. package/fesm2022/primeng-password.mjs.map +1 -1
  185. package/fesm2022/primeng-picklist.mjs +27 -13
  186. package/fesm2022/primeng-picklist.mjs.map +1 -1
  187. package/fesm2022/primeng-popover.mjs +16 -14
  188. package/fesm2022/primeng-popover.mjs.map +1 -1
  189. package/fesm2022/primeng-progressbar.mjs +13 -11
  190. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  191. package/fesm2022/primeng-progressspinner.mjs +10 -10
  192. package/fesm2022/primeng-radiobutton.mjs +16 -16
  193. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  194. package/fesm2022/primeng-rating.mjs +15 -11
  195. package/fesm2022/primeng-rating.mjs.map +1 -1
  196. package/fesm2022/primeng-ripple.mjs +10 -10
  197. package/fesm2022/primeng-scroller.mjs +19 -12
  198. package/fesm2022/primeng-scroller.mjs.map +1 -1
  199. package/fesm2022/primeng-scrollpanel.mjs +11 -11
  200. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  201. package/fesm2022/primeng-scrolltop.mjs +17 -15
  202. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  203. package/fesm2022/primeng-select.mjs +29 -27
  204. package/fesm2022/primeng-select.mjs.map +1 -1
  205. package/fesm2022/primeng-selectbutton.mjs +15 -13
  206. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  207. package/fesm2022/primeng-skeleton.mjs +10 -10
  208. package/fesm2022/primeng-slider.mjs +10 -10
  209. package/fesm2022/primeng-speeddial.mjs +22 -23
  210. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  211. package/fesm2022/primeng-splitbutton.mjs +18 -18
  212. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  213. package/fesm2022/primeng-splitter.mjs +12 -12
  214. package/fesm2022/primeng-splitter.mjs.map +1 -1
  215. package/fesm2022/primeng-stepper.mjs +71 -75
  216. package/fesm2022/primeng-stepper.mjs.map +1 -1
  217. package/fesm2022/primeng-steps.mjs +11 -11
  218. package/fesm2022/primeng-styleclass.mjs +7 -7
  219. package/fesm2022/primeng-table.mjs +161 -121
  220. package/fesm2022/primeng-table.mjs.map +1 -1
  221. package/fesm2022/primeng-tabs.mjs +132 -131
  222. package/fesm2022/primeng-tabs.mjs.map +1 -1
  223. package/fesm2022/primeng-tag.mjs +14 -10
  224. package/fesm2022/primeng-tag.mjs.map +1 -1
  225. package/fesm2022/primeng-terminal.mjs +13 -13
  226. package/fesm2022/primeng-textarea.mjs +18 -18
  227. package/fesm2022/primeng-textarea.mjs.map +1 -1
  228. package/fesm2022/primeng-tieredmenu.mjs +490 -369
  229. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  230. package/fesm2022/primeng-timeline.mjs +16 -10
  231. package/fesm2022/primeng-timeline.mjs.map +1 -1
  232. package/fesm2022/primeng-toast.mjs +24 -20
  233. package/fesm2022/primeng-toast.mjs.map +1 -1
  234. package/fesm2022/primeng-togglebutton.mjs +15 -11
  235. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  236. package/fesm2022/primeng-toggleswitch.mjs +13 -17
  237. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  238. package/fesm2022/primeng-toolbar.mjs +13 -13
  239. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  240. package/fesm2022/primeng-tooltip.mjs +18 -18
  241. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  242. package/fesm2022/primeng-tree.mjs +145 -96
  243. package/fesm2022/primeng-tree.mjs.map +1 -1
  244. package/fesm2022/primeng-treeselect.mjs +38 -19
  245. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  246. package/fesm2022/primeng-treetable.mjs +91 -86
  247. package/fesm2022/primeng-treetable.mjs.map +1 -1
  248. package/fesm2022/primeng-usestyle.mjs +3 -3
  249. package/package.json +2 -2
  250. package/types/primeng-api.d.ts +20 -0
  251. package/types/primeng-autocomplete.d.ts +24 -24
  252. package/types/primeng-avatar.d.ts +17 -1
  253. package/types/primeng-badge.d.ts +3 -3
  254. package/types/primeng-breadcrumb.d.ts +7 -7
  255. package/types/primeng-button.d.ts +20 -20
  256. package/types/primeng-card.d.ts +30 -10
  257. package/types/primeng-carousel.d.ts +16 -16
  258. package/types/primeng-cascadeselect.d.ts +25 -25
  259. package/types/primeng-checkbox.d.ts +4 -4
  260. package/types/primeng-chip.d.ts +6 -2
  261. package/types/primeng-confirmdialog.d.ts +44 -15
  262. package/types/primeng-confirmpopup.d.ts +25 -9
  263. package/types/primeng-contextmenu.d.ts +10 -10
  264. package/types/primeng-dataview.d.ts +19 -13
  265. package/types/primeng-datepicker.d.ts +33 -27
  266. package/types/primeng-dialog.d.ts +56 -28
  267. package/types/primeng-dock.d.ts +8 -3
  268. package/types/primeng-drawer.d.ts +17 -17
  269. package/types/primeng-dynamicdialog.d.ts +8 -7
  270. package/types/primeng-fieldset.d.ts +12 -12
  271. package/types/primeng-fileupload.d.ts +31 -28
  272. package/types/primeng-galleria.d.ts +70 -25
  273. package/types/primeng-image.d.ts +25 -25
  274. package/types/primeng-imagecompare.d.ts +6 -6
  275. package/types/primeng-inplace.d.ts +10 -10
  276. package/types/primeng-inputmask.d.ts +3 -3
  277. package/types/primeng-inputnumber.d.ts +9 -9
  278. package/types/primeng-inputotp.d.ts +6 -43
  279. package/types/primeng-inputtext.d.ts +3 -3
  280. package/types/primeng-knob.d.ts +1 -1
  281. package/types/primeng-listbox.d.ts +39 -23
  282. package/types/primeng-megamenu.d.ts +23 -19
  283. package/types/primeng-menu.d.ts +17 -13
  284. package/types/primeng-menubar.d.ts +19 -16
  285. package/types/primeng-message.d.ts +9 -7
  286. package/types/primeng-metergroup.d.ts +42 -12
  287. package/types/primeng-multiselect.d.ts +106 -38
  288. package/types/primeng-orderlist.d.ts +25 -21
  289. package/types/primeng-overlay.d.ts +8 -5
  290. package/types/primeng-paginator.d.ts +25 -25
  291. package/types/primeng-panel.d.ts +11 -11
  292. package/types/primeng-panelmenu.d.ts +11 -9
  293. package/types/primeng-password.d.ts +43 -15
  294. package/types/primeng-picklist.d.ts +53 -63
  295. package/types/primeng-popover.d.ts +5 -3
  296. package/types/primeng-progressbar.d.ts +6 -4
  297. package/types/primeng-rating.d.ts +10 -6
  298. package/types/primeng-scroller.d.ts +17 -9
  299. package/types/primeng-scrollpanel.d.ts +3 -3
  300. package/types/primeng-scrolltop.d.ts +6 -4
  301. package/types/primeng-select.d.ts +33 -33
  302. package/types/primeng-selectbutton.d.ts +6 -4
  303. package/types/primeng-speeddial.d.ts +15 -15
  304. package/types/primeng-splitbutton.d.ts +6 -6
  305. package/types/primeng-table.d.ts +1 -0
  306. package/types/primeng-tabs.d.ts +57 -56
  307. package/types/primeng-tag.d.ts +6 -2
  308. package/types/primeng-textarea.d.ts +2 -2
  309. package/types/primeng-tieredmenu.d.ts +41 -29
  310. package/types/primeng-timeline.d.ts +13 -7
  311. package/types/primeng-toast.d.ts +12 -8
  312. package/types/primeng-togglebutton.d.ts +9 -5
  313. package/types/primeng-toggleswitch.d.ts +5 -18
  314. package/types/primeng-toolbar.d.ts +9 -9
  315. package/types/primeng-tooltip.d.ts +3 -3
  316. package/types/primeng-tree.d.ts +75 -53
  317. package/types/primeng-treeselect.d.ts +41 -26
  318. package/types/primeng-treetable.d.ts +53 -53
  319. package/types/primeng-types-autocomplete.d.ts +76 -63
  320. package/types/primeng-types-breadcrumb.d.ts +27 -1
  321. package/types/primeng-types-button.d.ts +37 -18
  322. package/types/primeng-types-card.d.ts +10 -10
  323. package/types/primeng-types-carousel.d.ts +22 -19
  324. package/types/primeng-types-cascadeselect.d.ts +44 -27
  325. package/types/primeng-types-checkbox.d.ts +22 -20
  326. package/types/primeng-types-chip.d.ts +4 -4
  327. package/types/primeng-types-confirmdialog.d.ts +46 -20
  328. package/types/primeng-types-confirmpopup.d.ts +31 -13
  329. package/types/primeng-types-contextmenu.d.ts +26 -18
  330. package/types/primeng-types-dataview.d.ts +63 -44
  331. package/types/primeng-types-datepicker.d.ts +106 -54
  332. package/types/primeng-types-dialog.d.ts +10 -6
  333. package/types/primeng-types-dock.d.ts +13 -10
  334. package/types/primeng-types-drawer.d.ts +7 -7
  335. package/types/primeng-types-fieldset.d.ts +6 -6
  336. package/types/primeng-types-fileupload.d.ts +95 -311
  337. package/types/primeng-types-galleria.d.ts +67 -55
  338. package/types/primeng-types-image.d.ts +40 -94
  339. package/types/primeng-types-imagecompare.d.ts +16 -1
  340. package/types/primeng-types-inplace.d.ts +18 -7
  341. package/types/primeng-types-inputmask.d.ts +1 -1
  342. package/types/primeng-types-inputnumber.d.ts +3 -3
  343. package/types/primeng-types-inputotp.d.ts +71 -1
  344. package/types/primeng-types-listbox.d.ts +123 -44
  345. package/types/primeng-types-megamenu.d.ts +30 -14
  346. package/types/primeng-types-menu.d.ts +30 -22
  347. package/types/primeng-types-menubar.d.ts +23 -20
  348. package/types/primeng-types-message.d.ts +31 -1
  349. package/types/primeng-types-metergroup.d.ts +78 -103
  350. package/types/primeng-types-multiselect.d.ts +135 -90
  351. package/types/primeng-types-orderlist.d.ts +44 -35
  352. package/types/primeng-types-overlay.d.ts +29 -2
  353. package/types/primeng-types-paginator.d.ts +42 -6
  354. package/types/primeng-types-panel.d.ts +29 -1
  355. package/types/primeng-types-panelmenu.d.ts +18 -10
  356. package/types/primeng-types-password.d.ts +19 -7
  357. package/types/primeng-types-picklist.d.ts +69 -74
  358. package/types/primeng-types-popover.d.ts +14 -12
  359. package/types/primeng-types-progressbar.d.ts +13 -9
  360. package/types/primeng-types-rating.d.ts +19 -7
  361. package/types/primeng-types-scroller.d.ts +60 -50
  362. package/types/primeng-types-scrollpanel.d.ts +1 -1
  363. package/types/primeng-types-scrolltop.d.ts +14 -10
  364. package/types/primeng-types-select.d.ts +80 -49
  365. package/types/primeng-types-selectbutton.d.ts +17 -2
  366. package/types/primeng-types-speeddial.d.ts +35 -17
  367. package/types/primeng-types-splitbutton.d.ts +4 -4
  368. package/types/primeng-types-splitter.d.ts +2 -2
  369. package/types/primeng-types-tag.d.ts +2 -2
  370. package/types/primeng-types-tieredmenu.d.ts +20 -17
  371. package/types/primeng-types-timeline.d.ts +19 -29
  372. package/types/primeng-types-toast.d.ts +34 -22
  373. package/types/primeng-types-togglebutton.d.ts +25 -24
  374. package/types/primeng-types-toggleswitch.d.ts +23 -1
  375. package/types/primeng-types-toolbar.d.ts +6 -6
  376. package/types/primeng-types-tree.d.ts +75 -41
  377. package/types/primeng-types-treeselect.d.ts +80 -53
  378. package/types/primeng-types-treetable.d.ts +145 -156
@@ -2,7 +2,7 @@ export * from 'primeng/types/tree';
2
2
  import * as i1 from '@angular/common';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
- import { Injectable, InjectionToken, inject, forwardRef, signal, computed, numberAttribute, booleanAttribute, Input, ViewEncapsulation, Component, EventEmitter, HostListener, ContentChildren, ViewChild, ContentChild, Output, Optional, ChangeDetectionStrategy, NgModule } from '@angular/core';
5
+ import { Injectable, InjectionToken, inject, forwardRef, signal, computed, numberAttribute, booleanAttribute, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, model, EventEmitter, HostListener, ContentChildren, ViewChild, ContentChild, Output, Optional, NgModule } from '@angular/core';
6
6
  import * as i2 from '@angular/forms';
7
7
  import { FormsModule } from '@angular/forms';
8
8
  import { getOuterWidth, getOuterHeight, find, findSingle, focus, removeAccents, resolveFieldData } from '@primeuix/utils';
@@ -43,7 +43,8 @@ const classes = {
43
43
  'p-tree-node-content': true,
44
44
  'p-tree-node-selectable': instance.selectable,
45
45
  'p-tree-node-dragover': instance.isNodeDropActive(),
46
- 'p-tree-node-selected': instance.selectionMode === 'checkbox' && instance.tree.highlightOnSelect ? instance.checked : instance.selected
46
+ 'p-tree-node-selected': instance.selectionMode === 'checkbox' && instance.tree.highlightOnSelect ? instance.checked : instance.selected,
47
+ 'p-tree-node-contextmenu-selected': instance.isContextMenuSelected()
47
48
  }),
48
49
  nodeToggleButton: 'p-tree-node-toggle-button',
49
50
  nodeToggleIcon: 'p-tree-node-toggle-icon',
@@ -58,10 +59,10 @@ class TreeStyle extends BaseStyle {
58
59
  name = 'tree';
59
60
  style = style;
60
61
  classes = classes;
61
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: TreeStyle, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
62
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: TreeStyle });
62
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: TreeStyle, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
63
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: TreeStyle });
63
64
  }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: TreeStyle, decorators: [{
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: TreeStyle, decorators: [{
65
66
  type: Injectable
66
67
  }] });
67
68
  /**
@@ -159,19 +160,37 @@ class UITreeNode extends BaseComponent {
159
160
  loadingMode;
160
161
  tree = inject(forwardRef(() => Tree));
161
162
  timeout;
162
- isPrevDropPointHovered = signal(false, ...(ngDevMode ? [{ debugName: "isPrevDropPointHovered" }] : []));
163
- isNextDropPointHovered = signal(false, ...(ngDevMode ? [{ debugName: "isNextDropPointHovered" }] : []));
164
- isNodeDropHovered = signal(false, ...(ngDevMode ? [{ debugName: "isNodeDropHovered" }] : []));
165
- isPrevDropPointActive = computed(() => this.isPrevDropPointHovered() && this.isDroppable(), ...(ngDevMode ? [{ debugName: "isPrevDropPointActive" }] : []));
166
- isNextDropPointActive = computed(() => this.isNextDropPointHovered() && this.isDroppable(), ...(ngDevMode ? [{ debugName: "isNextDropPointActive" }] : []));
167
- isNodeDropActive = computed(() => this.isNodeDropHovered() && this.isNodeDroppable(), ...(ngDevMode ? [{ debugName: "isNodeDropActive" }] : []));
168
- dropPosition = computed(() => (this.isPrevDropPointActive() ? -1 : this.isNextDropPointActive() ? 1 : 0), ...(ngDevMode ? [{ debugName: "dropPosition" }] : []));
163
+ isPrevDropPointHovered = signal(false, { ...(ngDevMode ? { debugName: "isPrevDropPointHovered" } : {}) });
164
+ isNextDropPointHovered = signal(false, { ...(ngDevMode ? { debugName: "isNextDropPointHovered" } : {}) });
165
+ isNodeDropHovered = signal(false, { ...(ngDevMode ? { debugName: "isNodeDropHovered" } : {}) });
166
+ isPrevDropPointActive = computed(() => this.isPrevDropPointHovered() && this.isDroppable(), { ...(ngDevMode ? { debugName: "isPrevDropPointActive" } : {}) });
167
+ isNextDropPointActive = computed(() => this.isNextDropPointHovered() && this.isDroppable(), { ...(ngDevMode ? { debugName: "isNextDropPointActive" } : {}) });
168
+ isNodeDropActive = computed(() => this.isNodeDropHovered() && this.isNodeDroppable(), { ...(ngDevMode ? { debugName: "isNodeDropActive" } : {}) });
169
+ dropPosition = computed(() => (this.isPrevDropPointActive() ? -1 : this.isNextDropPointActive() ? 1 : 0), { ...(ngDevMode ? { debugName: "dropPosition" } : {}) });
169
170
  _componentStyle = inject(TreeStyle);
171
+ /**
172
+ * Computed signal that reactively tracks selection state.
173
+ */
174
+ _selected = computed(() => {
175
+ // Reading selection() makes this computed reactive to selection changes
176
+ this.tree.selection();
177
+ return this.tree.isSelected(this.node);
178
+ }, { ...(ngDevMode ? { debugName: "_selected" } : {}) });
179
+ /**
180
+ * Computed signal that reactively tracks context menu selection state.
181
+ */
182
+ _contextMenuSelected = computed(() => {
183
+ const selection = this.tree.contextMenuSelection();
184
+ if (!selection || !this.node) {
185
+ return false;
186
+ }
187
+ return selection === this.node || (selection.key && selection.key === this.node.key);
188
+ }, { ...(ngDevMode ? { debugName: "_contextMenuSelected" } : {}) });
170
189
  get selected() {
171
- return this.tree.selectionMode === 'single' || this.tree.selectionMode === 'multiple' ? this.isSelected() : undefined;
190
+ return this.tree.selectionMode === 'single' || this.tree.selectionMode === 'multiple' ? this._selected() : undefined;
172
191
  }
173
192
  get checked() {
174
- return this.tree.selectionMode === 'checkbox' ? this.isSelected() : undefined;
193
+ return this.tree.selectionMode === 'checkbox' ? this._selected() : undefined;
175
194
  }
176
195
  get nodeClass() {
177
196
  return this.tree._componentStyle.classes.node({ instance: this });
@@ -216,7 +235,10 @@ class UITreeNode extends BaseComponent {
216
235
  return this.tree.isNodeLeaf(this.node);
217
236
  }
218
237
  isSelected() {
219
- return this.tree.isSelected(this.node);
238
+ return this._selected();
239
+ }
240
+ isContextMenuSelected() {
241
+ return this._contextMenuSelected();
220
242
  }
221
243
  isSameNode(event) {
222
244
  return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role="treeitem"]')));
@@ -571,8 +593,8 @@ class UITreeNode extends BaseComponent {
571
593
  focus(node);
572
594
  }, 1);
573
595
  }
574
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UITreeNode, deps: null, target: i0.ɵɵFactoryTarget.Component });
575
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: UITreeNode, isStandalone: true, selector: "p-treeNode", inputs: { rowNode: "rowNode", node: "node", parentNode: "parentNode", root: ["root", "root", booleanAttribute], index: ["index", "index", numberAttribute], firstChild: ["firstChild", "firstChild", booleanAttribute], lastChild: ["lastChild", "lastChild", booleanAttribute], level: ["level", "level", numberAttribute], indentation: ["indentation", "indentation", numberAttribute], itemSize: ["itemSize", "itemSize", numberAttribute], loadingMode: "loadingMode" }, providers: [TreeStyle, { provide: TREENODE_INSTANCE, useExisting: UITreeNode }, { provide: PARENT_INSTANCE, useExisting: UITreeNode }], usesInheritance: true, ngImport: i0, template: `
596
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: UITreeNode, deps: null, target: i0.ɵɵFactoryTarget.Component });
597
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.1", type: UITreeNode, isStandalone: true, selector: "p-treeNode", inputs: { rowNode: "rowNode", node: "node", parentNode: "parentNode", root: ["root", "root", booleanAttribute], index: ["index", "index", numberAttribute], firstChild: ["firstChild", "firstChild", booleanAttribute], lastChild: ["lastChild", "lastChild", booleanAttribute], level: ["level", "level", numberAttribute], indentation: ["indentation", "indentation", numberAttribute], itemSize: ["itemSize", "itemSize", numberAttribute], loadingMode: "loadingMode" }, providers: [TreeStyle, { provide: TREENODE_INSTANCE, useExisting: UITreeNode }, { provide: PARENT_INSTANCE, useExisting: UITreeNode }], usesInheritance: true, ngImport: i0, template: `
576
598
  @if (node) {
577
599
  <li
578
600
  [class]="cn(cx('node'), node.styleClass)"
@@ -663,7 +685,7 @@ class UITreeNode extends BaseComponent {
663
685
  </span>
664
686
  </div>
665
687
  @if (isNextDropPointActive()) {
666
- <div [class]="cx('dropPoint')" [attr.aria-hidden]="true" [pBind]="getPTOptions('dropPoint')"></div>
688
+ <div [class]="cx('dropPoint', { next: true })" [attr.aria-hidden]="true" [pBind]="getPTOptions('dropPoint')"></div>
667
689
  }
668
690
  <ul [class]="cx('nodeChildren')" *ngIf="!tree.virtualScroll && node.children && node.expanded" role="group" [pBind]="ptm('nodeChildren')">
669
691
  <p-treeNode
@@ -682,14 +704,15 @@ class UITreeNode extends BaseComponent {
682
704
  </ul>
683
705
  </li>
684
706
  }
685
- `, isInline: true, dependencies: [{ kind: "component", type: UITreeNode, selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation", "itemSize", "loadingMode"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: Ripple, selector: "[pRipple]" }, { kind: "component", type: Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["hostName", "value", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "inputStyle", "styleClass", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "autofocus", "trueValue", "falseValue", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ChevronRightIcon, selector: "[data-p-icon=\"chevron-right\"]" }, { kind: "component", type: ChevronDownIcon, selector: "[data-p-icon=\"chevron-down\"]" }, { kind: "component", type: SpinnerIcon, selector: "[data-p-icon=\"spinner\"]" }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: BindModule }, { kind: "directive", type: i3.Bind, selector: "[pBind]", inputs: ["pBind"] }], encapsulation: i0.ViewEncapsulation.None });
707
+ `, isInline: true, dependencies: [{ kind: "component", type: UITreeNode, selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation", "itemSize", "loadingMode"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: Ripple, selector: "[pRipple]" }, { kind: "component", type: Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["hostName", "value", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "inputStyle", "styleClass", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "autofocus", "trueValue", "falseValue", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ChevronRightIcon, selector: "[data-p-icon=\"chevron-right\"]" }, { kind: "component", type: ChevronDownIcon, selector: "[data-p-icon=\"chevron-down\"]" }, { kind: "component", type: SpinnerIcon, selector: "[data-p-icon=\"spinner\"]" }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: BindModule }, { kind: "directive", type: i3.Bind, selector: "[pBind]", inputs: ["pBind"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
686
708
  }
687
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UITreeNode, decorators: [{
709
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: UITreeNode, decorators: [{
688
710
  type: Component,
689
711
  args: [{
690
712
  selector: 'p-treeNode',
691
713
  standalone: true,
692
714
  imports: [CommonModule, Ripple, Checkbox, FormsModule, ChevronRightIcon, ChevronDownIcon, SpinnerIcon, SharedModule, BindModule],
715
+ changeDetection: ChangeDetectionStrategy.OnPush,
693
716
  template: `
694
717
  @if (node) {
695
718
  <li
@@ -781,7 +804,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
781
804
  </span>
782
805
  </div>
783
806
  @if (isNextDropPointActive()) {
784
- <div [class]="cx('dropPoint')" [attr.aria-hidden]="true" [pBind]="getPTOptions('dropPoint')"></div>
807
+ <div [class]="cx('dropPoint', { next: true })" [attr.aria-hidden]="true" [pBind]="getPTOptions('dropPoint')"></div>
785
808
  }
786
809
  <ul [class]="cx('nodeChildren')" *ngIf="!tree.virtualScroll && node.children && node.expanded" role="group" [pBind]="ptm('nodeChildren')">
787
810
  <p-treeNode
@@ -864,7 +887,7 @@ class Tree extends BaseComponent {
864
887
  * A single treenode instance or an array to refer to the selections.
865
888
  * @group Props
866
889
  */
867
- selection;
890
+ selection = model(null, { ...(ngDevMode ? { debugName: "selection" } : {}) });
868
891
  /**
869
892
  * Style class of the component.
870
893
  * @deprecated since v20.0.0, use `class` instead.
@@ -876,6 +899,16 @@ class Tree extends BaseComponent {
876
899
  * @group Props
877
900
  */
878
901
  contextMenu;
902
+ /**
903
+ * Defines the behavior of context menu selection, in "separate" mode context menu updates contextMenuSelection property whereas in joint mode selection property is used instead so that when row selection is enabled, both row selection and context menu selection use the same property.
904
+ * @group Props
905
+ */
906
+ contextMenuSelectionMode = 'joint';
907
+ /**
908
+ * Selected node with a context menu.
909
+ * @group Props
910
+ */
911
+ contextMenuSelection = model(null, { ...(ngDevMode ? { debugName: "contextMenuSelection" } : {}) });
879
912
  /**
880
913
  * Scope of the draggable nodes to match a droppableScope.
881
914
  * @group Props
@@ -1031,12 +1064,6 @@ class Tree extends BaseComponent {
1031
1064
  * @group Props
1032
1065
  */
1033
1066
  highlightOnSelect = false;
1034
- /**
1035
- * Callback to invoke on selection change.
1036
- * @param {(TreeNode<any> | TreeNode<any>[] | null)} event - Custom selection change event.
1037
- * @group Emits
1038
- */
1039
- selectionChange = new EventEmitter();
1040
1067
  /**
1041
1068
  * Callback to invoke when a node is selected.
1042
1069
  * @param {TreeNodeSelectEvent} event - Node select event.
@@ -1104,52 +1131,60 @@ class Tree extends BaseComponent {
1104
1131
  */
1105
1132
  onFilter = new EventEmitter();
1106
1133
  /**
1107
- * Filter template.
1134
+ * Custom filter template.
1135
+ * @param {TreeFilterTemplateContext} context - filter context.
1136
+ * @see {@link TreeFilterTemplateContext}
1108
1137
  * @group Templates
1109
1138
  */
1110
1139
  filterTemplate;
1111
1140
  /**
1112
- * Node template.
1141
+ * Custom node template.
1113
1142
  * @group Templates
1114
1143
  */
1115
1144
  nodeTemplate;
1116
1145
  /**
1117
- * Header template.
1146
+ * Custom header template.
1118
1147
  * @group Templates
1119
1148
  */
1120
1149
  headerTemplate;
1121
1150
  /**
1122
- * Footer template.
1151
+ * Custom footer template.
1123
1152
  * @group Templates
1124
1153
  */
1125
1154
  footerTemplate;
1126
1155
  /**
1127
- * Loader template.
1156
+ * Custom loader template.
1157
+ * @param {TreeLoaderTemplateContext} context - loader context.
1158
+ * @see {@link TreeLoaderTemplateContext}
1128
1159
  * @group Templates
1129
1160
  */
1130
1161
  loaderTemplate;
1131
1162
  /**
1132
- * Empty message template.
1163
+ * Custom empty message template.
1133
1164
  * @group Templates
1134
1165
  */
1135
- emptyMessageTemplate;
1166
+ emptyTemplate;
1136
1167
  /**
1137
- * Toggler icon template.
1168
+ * Custom toggler icon template.
1169
+ * @param {TreeTogglerIconTemplateContext} context - toggler icon context.
1170
+ * @see {@link TreeTogglerIconTemplateContext}
1138
1171
  * @group Templates
1139
1172
  */
1140
1173
  togglerIconTemplate;
1141
1174
  /**
1142
- * Checkbox icon template.
1175
+ * Custom checkbox icon template.
1176
+ * @param {TreeCheckboxIconTemplateContext} context - checkbox icon context.
1177
+ * @see {@link TreeCheckboxIconTemplateContext}
1143
1178
  * @group Templates
1144
1179
  */
1145
1180
  checkboxIconTemplate;
1146
1181
  /**
1147
- * Loading icon template.
1182
+ * Custom loading icon template.
1148
1183
  * @group Templates
1149
1184
  */
1150
1185
  loadingIconTemplate;
1151
1186
  /**
1152
- * Filter icon template.
1187
+ * Custom filter icon template.
1153
1188
  * @group Templates
1154
1189
  */
1155
1190
  filterIconTemplate;
@@ -1159,7 +1194,7 @@ class Tree extends BaseComponent {
1159
1194
  contentViewChild;
1160
1195
  templates;
1161
1196
  _headerTemplate;
1162
- _emptyMessageTemplate;
1197
+ _emptyTemplate;
1163
1198
  _footerTemplate;
1164
1199
  _loaderTemplate;
1165
1200
  _togglerIconTemplate;
@@ -1177,7 +1212,7 @@ class Tree extends BaseComponent {
1177
1212
  this._headerTemplate = item.template;
1178
1213
  break;
1179
1214
  case 'empty':
1180
- this._emptyMessageTemplate = item.template;
1215
+ this._emptyTemplate = item.template;
1181
1216
  break;
1182
1217
  case 'footer':
1183
1218
  this._footerTemplate = item.template;
@@ -1296,7 +1331,7 @@ class Tree extends BaseComponent {
1296
1331
  if (section === 'nodetogglebutton' || section === 'nodetoggleicon') {
1297
1332
  return;
1298
1333
  }
1299
- else if (this.selectionMode) {
1334
+ if (this.selectionMode) {
1300
1335
  if (node.selectable === false) {
1301
1336
  node.style = '--p-focus-ring-color: none;';
1302
1337
  return;
@@ -1314,27 +1349,26 @@ class Tree extends BaseComponent {
1314
1349
  }
1315
1350
  let index = this.findIndexInSelection(node);
1316
1351
  let selected = index >= 0;
1352
+ const currentSelection = this.selection();
1317
1353
  if (this.isCheckboxSelectionMode()) {
1318
1354
  if (selected) {
1319
1355
  if (this.propagateSelectionDown)
1320
1356
  this.propagateDown(node, false);
1321
1357
  else
1322
- this.selection = this.selection.filter((val, i) => i != index);
1358
+ this.selection.set(currentSelection.filter((_val, i) => i != index));
1323
1359
  if (this.propagateSelectionUp && node.parent) {
1324
1360
  this.propagateUp(node.parent, false);
1325
1361
  }
1326
- this.selectionChange.emit(this.selection);
1327
1362
  this.onNodeUnselect.emit({ originalEvent: event, node: node });
1328
1363
  }
1329
1364
  else {
1330
1365
  if (this.propagateSelectionDown)
1331
1366
  this.propagateDown(node, true);
1332
1367
  else
1333
- this.selection = [...(this.selection || []), node];
1368
+ this.selection.set([...(currentSelection || []), node]);
1334
1369
  if (this.propagateSelectionUp && node.parent) {
1335
1370
  this.propagateUp(node.parent, true);
1336
1371
  }
1337
- this.selectionChange.emit(this.selection);
1338
1372
  this.onNodeSelect.emit({ originalEvent: event, node: node });
1339
1373
  }
1340
1374
  }
@@ -1344,22 +1378,20 @@ class Tree extends BaseComponent {
1344
1378
  let metaKey = event.metaKey || event.ctrlKey;
1345
1379
  if (selected && metaKey) {
1346
1380
  if (this.isSingleSelectionMode()) {
1347
- this.selectionChange.emit(null);
1381
+ this.selection.set(null);
1348
1382
  }
1349
1383
  else {
1350
- this.selection = this.selection.filter((val, i) => i != index);
1351
- this.selectionChange.emit(this.selection);
1384
+ this.selection.set(currentSelection.filter((_val, i) => i != index));
1352
1385
  }
1353
1386
  this.onNodeUnselect.emit({ originalEvent: event, node: node });
1354
1387
  }
1355
1388
  else {
1356
1389
  if (this.isSingleSelectionMode()) {
1357
- this.selectionChange.emit(node);
1390
+ this.selection.set(node);
1358
1391
  }
1359
1392
  else if (this.isMultipleSelectionMode()) {
1360
- this.selection = !metaKey ? [] : this.selection || [];
1361
- this.selection = [...this.selection, node];
1362
- this.selectionChange.emit(this.selection);
1393
+ const base = !metaKey ? [] : currentSelection || [];
1394
+ this.selection.set([...base, node]);
1363
1395
  }
1364
1396
  this.onNodeSelect.emit({ originalEvent: event, node: node });
1365
1397
  }
@@ -1367,11 +1399,11 @@ class Tree extends BaseComponent {
1367
1399
  else {
1368
1400
  if (this.isSingleSelectionMode()) {
1369
1401
  if (selected) {
1370
- this.selection = null;
1402
+ this.selection.set(null);
1371
1403
  this.onNodeUnselect.emit({ originalEvent: event, node: node });
1372
1404
  }
1373
1405
  else {
1374
- this.selection = node;
1406
+ this.selection.set(node);
1375
1407
  setTimeout(() => {
1376
1408
  this.onNodeSelect.emit({ originalEvent: event, node: node });
1377
1409
  });
@@ -1379,17 +1411,16 @@ class Tree extends BaseComponent {
1379
1411
  }
1380
1412
  else {
1381
1413
  if (selected) {
1382
- this.selection = this.selection.filter((val, i) => i != index);
1414
+ this.selection.set(currentSelection.filter((_val, i) => i != index));
1383
1415
  this.onNodeUnselect.emit({ originalEvent: event, node: node });
1384
1416
  }
1385
1417
  else {
1386
- this.selection = [...(this.selection || []), node];
1418
+ this.selection.set([...(currentSelection || []), node]);
1387
1419
  setTimeout(() => {
1388
1420
  this.onNodeSelect.emit({ originalEvent: event, node: node });
1389
1421
  });
1390
1422
  }
1391
1423
  }
1392
- this.selectionChange.emit(this.selection);
1393
1424
  }
1394
1425
  }
1395
1426
  }
@@ -1405,17 +1436,32 @@ class Tree extends BaseComponent {
1405
1436
  if (section === 'nodetogglebutton' || section === 'nodetoggleicon') {
1406
1437
  return;
1407
1438
  }
1408
- else {
1409
- let index = this.findIndexInSelection(node);
1410
- let selected = index >= 0;
1411
- if (!selected) {
1412
- if (this.isSingleSelectionMode())
1413
- this.selectionChange.emit(node);
1414
- else
1415
- this.selectionChange.emit([node]);
1416
- }
1439
+ let index = this.findIndexInSelection(node);
1440
+ let isNodeSelected = index >= 0;
1441
+ const onContextMenuCallback = () => {
1417
1442
  this.contextMenu.show(event);
1443
+ this.contextMenu.hideCallback = () => {
1444
+ this.contextMenuSelection.set(null);
1445
+ };
1418
1446
  this.onNodeContextMenuSelect.emit({ originalEvent: event, node: node });
1447
+ };
1448
+ if (this.contextMenuSelectionMode === 'separate') {
1449
+ // In 'separate' mode: Update contextMenuSelection with clicked node, don't modify selection
1450
+ this.contextMenuSelection.set(node);
1451
+ onContextMenuCallback();
1452
+ }
1453
+ else if (this.contextMenuSelectionMode === 'joint') {
1454
+ // In 'joint' mode: Update only selection, don't touch contextMenuSelection
1455
+ if (!isNodeSelected) {
1456
+ if (this.isSingleSelectionMode()) {
1457
+ this.selection.set(node);
1458
+ }
1459
+ else {
1460
+ this.selection.set([node]);
1461
+ }
1462
+ }
1463
+ // If already selected, keep current selection as is
1464
+ onContextMenuCallback();
1419
1465
  }
1420
1466
  }
1421
1467
  }
@@ -1424,14 +1470,17 @@ class Tree extends BaseComponent {
1424
1470
  }
1425
1471
  findIndexInSelection(node) {
1426
1472
  let index = -1;
1427
- if (this.selectionMode && this.selection) {
1473
+ const currentSelection = this.selection();
1474
+ if (this.selectionMode && currentSelection) {
1428
1475
  if (this.isSingleSelectionMode()) {
1429
- let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;
1476
+ const sel = currentSelection;
1477
+ let areNodesEqual = (sel.key && sel.key === node.key) || sel == node;
1430
1478
  index = areNodesEqual ? 0 : -1;
1431
1479
  }
1432
1480
  else {
1433
- for (let i = 0; i < this.selection.length; i++) {
1434
- let selectedNode = this.selection[i];
1481
+ const selArray = currentSelection;
1482
+ for (let i = 0; i < selArray.length; i++) {
1483
+ let selectedNode = selArray[i];
1435
1484
  let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;
1436
1485
  if (areNodesEqual) {
1437
1486
  index = i;
@@ -1480,15 +1529,16 @@ class Tree extends BaseComponent {
1480
1529
  childPartialSelected = true;
1481
1530
  }
1482
1531
  }
1532
+ const currentSelection = this.selection() || [];
1483
1533
  if (select && selectedCount == node.children.length) {
1484
- this.selection = [...(this.selection || []), node];
1534
+ this.selection.set([...currentSelection, node]);
1485
1535
  node.partialSelected = false;
1486
1536
  }
1487
1537
  else {
1488
1538
  if (!select) {
1489
1539
  let index = this.findIndexInSelection(node);
1490
1540
  if (index >= 0) {
1491
- this.selection = this.selection.filter((val, i) => i != index);
1541
+ this.selection.set(currentSelection.filter((_val, i) => i != index));
1492
1542
  }
1493
1543
  }
1494
1544
  if (childPartialSelected || (selectedCount > 0 && selectedCount != node.children.length))
@@ -1505,11 +1555,12 @@ class Tree extends BaseComponent {
1505
1555
  }
1506
1556
  propagateDown(node, select) {
1507
1557
  let index = this.findIndexInSelection(node);
1558
+ const currentSelection = this.selection() || [];
1508
1559
  if (select && index == -1) {
1509
- this.selection = [...(this.selection || []), node];
1560
+ this.selection.set([...currentSelection, node]);
1510
1561
  }
1511
1562
  else if (!select && index > -1) {
1512
- this.selection = this.selection.filter((val, i) => i != index);
1563
+ this.selection.set(currentSelection.filter((_val, i) => i != index));
1513
1564
  }
1514
1565
  node.partialSelected = false;
1515
1566
  this.syncNodeOption(node, this.filteredNodes, 'partialSelected');
@@ -1787,9 +1838,9 @@ class Tree extends BaseComponent {
1787
1838
  scrollable: this.scrollHeight === 'flex'
1788
1839
  });
1789
1840
  }
1790
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: Tree, deps: [{ token: i4.TreeDragDropService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1791
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: Tree, isStandalone: true, selector: "p-tree", inputs: { value: "value", selectionMode: "selectionMode", loadingMode: "loadingMode", selection: "selection", styleClass: "styleClass", contextMenu: "contextMenu", draggableScope: "draggableScope", droppableScope: "droppableScope", draggableNodes: ["draggableNodes", "draggableNodes", booleanAttribute], droppableNodes: ["droppableNodes", "droppableNodes", booleanAttribute], metaKeySelection: ["metaKeySelection", "metaKeySelection", booleanAttribute], propagateSelectionUp: ["propagateSelectionUp", "propagateSelectionUp", booleanAttribute], propagateSelectionDown: ["propagateSelectionDown", "propagateSelectionDown", booleanAttribute], loading: ["loading", "loading", booleanAttribute], loadingIcon: "loadingIcon", emptyMessage: "emptyMessage", ariaLabel: "ariaLabel", togglerAriaLabel: "togglerAriaLabel", ariaLabelledBy: "ariaLabelledBy", validateDrop: ["validateDrop", "validateDrop", booleanAttribute], filter: ["filter", "filter", booleanAttribute], filterInputAutoFocus: ["filterInputAutoFocus", "filterInputAutoFocus", booleanAttribute], filterBy: "filterBy", filterMode: "filterMode", filterOptions: "filterOptions", filterPlaceholder: "filterPlaceholder", filteredNodes: "filteredNodes", filterLocale: "filterLocale", scrollHeight: "scrollHeight", lazy: ["lazy", "lazy", booleanAttribute], virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], virtualScrollItemSize: ["virtualScrollItemSize", "virtualScrollItemSize", numberAttribute], virtualScrollOptions: "virtualScrollOptions", indentation: ["indentation", "indentation", numberAttribute], _templateMap: "_templateMap", trackBy: "trackBy", highlightOnSelect: ["highlightOnSelect", "highlightOnSelect", booleanAttribute] }, outputs: { selectionChange: "selectionChange", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onNodeContextMenuSelect: "onNodeContextMenuSelect", onNodeDoubleClick: "onNodeDoubleClick", onNodeDrop: "onNodeDrop", onLazyLoad: "onLazyLoad", onScroll: "onScroll", onScrollIndexChange: "onScrollIndexChange", onFilter: "onFilter" }, host: { listeners: { "drop": "handleDropEvent($event)", "dragover": "handleDragOverEvent($event)", "dragenter": "handleDragEnterEvent()", "dragleave": "handleDragLeaveEvent($event)" }, properties: { "class": "cn(cx('root'), styleClass)", "attr.data-p": "containerDataP" } }, providers: [TreeStyle, { provide: TREE_INSTANCE, useExisting: Tree }, { provide: PARENT_INSTANCE, useExisting: Tree }], queries: [{ propertyName: "filterTemplate", first: true, predicate: ["filter"] }, { propertyName: "nodeTemplate", first: true, predicate: ["node"] }, { propertyName: "headerTemplate", first: true, predicate: ["header"] }, { propertyName: "footerTemplate", first: true, predicate: ["footer"] }, { propertyName: "loaderTemplate", first: true, predicate: ["loader"] }, { propertyName: "emptyMessageTemplate", first: true, predicate: ["empty"] }, { propertyName: "togglerIconTemplate", first: true, predicate: ["togglericon"] }, { propertyName: "checkboxIconTemplate", first: true, predicate: ["checkboxicon"] }, { propertyName: "loadingIconTemplate", first: true, predicate: ["loadingicon"] }, { propertyName: "filterIconTemplate", first: true, predicate: ["filtericon"] }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "wrapperViewChild", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i3.Bind }], ngImport: i0, template: `
1792
- <div [class]="cx('mask')" *ngIf="loading && loadingMode === 'mask'" [pBind]="ptm('mask')">
1841
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: Tree, deps: [{ token: i4.TreeDragDropService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1842
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.1", type: Tree, isStandalone: true, selector: "p-tree", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: false, isRequired: false, transformFunction: null }, loadingMode: { classPropertyName: "loadingMode", publicName: "loadingMode", isSignal: false, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: false, isRequired: false, transformFunction: null }, contextMenu: { classPropertyName: "contextMenu", publicName: "contextMenu", isSignal: false, isRequired: false, transformFunction: null }, contextMenuSelectionMode: { classPropertyName: "contextMenuSelectionMode", publicName: "contextMenuSelectionMode", isSignal: false, isRequired: false, transformFunction: null }, contextMenuSelection: { classPropertyName: "contextMenuSelection", publicName: "contextMenuSelection", isSignal: true, isRequired: false, transformFunction: null }, draggableScope: { classPropertyName: "draggableScope", publicName: "draggableScope", isSignal: false, isRequired: false, transformFunction: null }, droppableScope: { classPropertyName: "droppableScope", publicName: "droppableScope", isSignal: false, isRequired: false, transformFunction: null }, draggableNodes: { classPropertyName: "draggableNodes", publicName: "draggableNodes", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, droppableNodes: { classPropertyName: "droppableNodes", publicName: "droppableNodes", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, metaKeySelection: { classPropertyName: "metaKeySelection", publicName: "metaKeySelection", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, propagateSelectionUp: { classPropertyName: "propagateSelectionUp", publicName: "propagateSelectionUp", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, propagateSelectionDown: { classPropertyName: "propagateSelectionDown", publicName: "propagateSelectionDown", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: false, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: false, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: false, isRequired: false, transformFunction: null }, togglerAriaLabel: { classPropertyName: "togglerAriaLabel", publicName: "togglerAriaLabel", isSignal: false, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: false, isRequired: false, transformFunction: null }, validateDrop: { classPropertyName: "validateDrop", publicName: "validateDrop", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, filterInputAutoFocus: { classPropertyName: "filterInputAutoFocus", publicName: "filterInputAutoFocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: false, isRequired: false, transformFunction: null }, filterMode: { classPropertyName: "filterMode", publicName: "filterMode", isSignal: false, isRequired: false, transformFunction: null }, filterOptions: { classPropertyName: "filterOptions", publicName: "filterOptions", isSignal: false, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: false, isRequired: false, transformFunction: null }, filteredNodes: { classPropertyName: "filteredNodes", publicName: "filteredNodes", isSignal: false, isRequired: false, transformFunction: null }, filterLocale: { classPropertyName: "filterLocale", publicName: "filterLocale", isSignal: false, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: false, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: false, isRequired: false, transformFunction: numberAttribute }, virtualScrollOptions: { classPropertyName: "virtualScrollOptions", publicName: "virtualScrollOptions", isSignal: false, isRequired: false, transformFunction: null }, indentation: { classPropertyName: "indentation", publicName: "indentation", isSignal: false, isRequired: false, transformFunction: numberAttribute }, _templateMap: { classPropertyName: "_templateMap", publicName: "_templateMap", isSignal: false, isRequired: false, transformFunction: null }, trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: false, isRequired: false, transformFunction: null }, highlightOnSelect: { classPropertyName: "highlightOnSelect", publicName: "highlightOnSelect", isSignal: false, isRequired: false, transformFunction: booleanAttribute } }, outputs: { selection: "selectionChange", contextMenuSelection: "contextMenuSelectionChange", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onNodeContextMenuSelect: "onNodeContextMenuSelect", onNodeDoubleClick: "onNodeDoubleClick", onNodeDrop: "onNodeDrop", onLazyLoad: "onLazyLoad", onScroll: "onScroll", onScrollIndexChange: "onScrollIndexChange", onFilter: "onFilter" }, host: { listeners: { "drop": "handleDropEvent($event)", "dragover": "handleDragOverEvent($event)", "dragenter": "handleDragEnterEvent()", "dragleave": "handleDragLeaveEvent($event)" }, properties: { "class": "cn(cx('root'), styleClass)", "attr.data-p": "containerDataP" } }, providers: [TreeStyle, { provide: TREE_INSTANCE, useExisting: Tree }, { provide: PARENT_INSTANCE, useExisting: Tree }], queries: [{ propertyName: "filterTemplate", first: true, predicate: ["filter"] }, { propertyName: "nodeTemplate", first: true, predicate: ["node"] }, { propertyName: "headerTemplate", first: true, predicate: ["header"] }, { propertyName: "footerTemplate", first: true, predicate: ["footer"] }, { propertyName: "loaderTemplate", first: true, predicate: ["loader"] }, { propertyName: "emptyTemplate", first: true, predicate: ["empty"] }, { propertyName: "togglerIconTemplate", first: true, predicate: ["togglericon"] }, { propertyName: "checkboxIconTemplate", first: true, predicate: ["checkboxicon"] }, { propertyName: "loadingIconTemplate", first: true, predicate: ["loadingicon"] }, { propertyName: "filterIconTemplate", first: true, predicate: ["filtericon"] }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "wrapperViewChild", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i3.Bind }], ngImport: i0, template: `
1843
+ <div [class]="cx('mask')" *ngIf="loading && loadingMode === 'mask'" [pBind]="ptm('mask')" animate.enter="p-overlay-mask-enter-active" animate.leave="p-overlay-mask-leave-active">
1793
1844
  <i *ngIf="loadingIcon" [class]="cn(cx('loadingIcon'), 'pi-spin' + loadingIcon)" [pBind]="ptm('loadingIcon')"></i>
1794
1845
  <ng-container *ngIf="!loadingIcon">
1795
1846
  <svg data-p-icon="spinner" *ngIf="!loadingIconTemplate && !_loadingIconTemplate" spin [class]="cx('loadingIcon')" [pBind]="ptm('loadingIcon')" />
@@ -1900,22 +1951,22 @@ class Tree extends BaseComponent {
1900
1951
  </ng-container>
1901
1952
 
1902
1953
  <div [class]="cx('emptyMessage')" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)" [pBind]="ptm('emptyMessage')">
1903
- <ng-container *ngIf="!emptyMessageTemplate && !_emptyMessageTemplate; else emptyFilter">
1954
+ <ng-container *ngIf="!emptyTemplate && !_emptyTemplate; else emptyFilter">
1904
1955
  {{ emptyMessageLabel }}
1905
1956
  </ng-container>
1906
- <ng-template #emptyFilter *ngTemplateOutlet="emptyMessageTemplate || _emptyMessageTemplate"></ng-template>
1957
+ <ng-template #emptyFilter *ngTemplateOutlet="emptyTemplate || _emptyTemplate"></ng-template>
1907
1958
  </div>
1908
1959
  <ng-container *ngTemplateOutlet="footerTemplate || _footerTemplate"></ng-container>
1909
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: Scroller, selector: "p-scroller, p-virtualscroller, p-virtual-scroller, p-virtualScroller", inputs: ["hostName", "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: "ngmodule", type: SharedModule }, { kind: "component", type: SearchIcon, selector: "[data-p-icon=\"search\"]" }, { kind: "component", type: SpinnerIcon, selector: "[data-p-icon=\"spinner\"]" }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPt", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IconField, selector: "p-iconfield, p-iconField, p-icon-field", inputs: ["hostName", "iconPosition", "styleClass"] }, { kind: "component", type: InputIcon, selector: "p-inputicon, p-inputIcon", inputs: ["hostName", "styleClass"] }, { kind: "component", type: UITreeNode, selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation", "itemSize", "loadingMode"] }, { kind: "ngmodule", type: AutoFocusModule }, { kind: "directive", type: i5.AutoFocus, selector: "[pAutoFocus]", inputs: ["pAutoFocus"] }, { kind: "directive", type: Bind, selector: "[pBind]", inputs: ["pBind"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1960
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: Scroller, selector: "p-scroller, p-virtualscroller, p-virtual-scroller, p-virtualScroller", inputs: ["hostName", "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: "ngmodule", type: SharedModule }, { kind: "component", type: SearchIcon, selector: "[data-p-icon=\"search\"]" }, { kind: "component", type: SpinnerIcon, selector: "[data-p-icon=\"spinner\"]" }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPT", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IconField, selector: "p-iconfield, p-iconField, p-icon-field", inputs: ["hostName", "iconPosition", "styleClass"] }, { kind: "component", type: InputIcon, selector: "p-inputicon, p-inputIcon", inputs: ["hostName", "styleClass"] }, { kind: "component", type: UITreeNode, selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation", "itemSize", "loadingMode"] }, { kind: "ngmodule", type: AutoFocusModule }, { kind: "directive", type: i5.AutoFocus, selector: "[pAutoFocus]", inputs: ["pAutoFocus"] }, { kind: "directive", type: Bind, selector: "[pBind]", inputs: ["pBind"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1910
1961
  }
1911
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: Tree, decorators: [{
1962
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: Tree, decorators: [{
1912
1963
  type: Component,
1913
1964
  args: [{
1914
1965
  selector: 'p-tree',
1915
1966
  standalone: true,
1916
1967
  imports: [CommonModule, Scroller, SharedModule, SearchIcon, SpinnerIcon, InputText, FormsModule, IconField, InputIcon, UITreeNode, AutoFocusModule, Bind],
1917
1968
  template: `
1918
- <div [class]="cx('mask')" *ngIf="loading && loadingMode === 'mask'" [pBind]="ptm('mask')">
1969
+ <div [class]="cx('mask')" *ngIf="loading && loadingMode === 'mask'" [pBind]="ptm('mask')" animate.enter="p-overlay-mask-enter-active" animate.leave="p-overlay-mask-leave-active">
1919
1970
  <i *ngIf="loadingIcon" [class]="cn(cx('loadingIcon'), 'pi-spin' + loadingIcon)" [pBind]="ptm('loadingIcon')"></i>
1920
1971
  <ng-container *ngIf="!loadingIcon">
1921
1972
  <svg data-p-icon="spinner" *ngIf="!loadingIconTemplate && !_loadingIconTemplate" spin [class]="cx('loadingIcon')" [pBind]="ptm('loadingIcon')" />
@@ -2026,10 +2077,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
2026
2077
  </ng-container>
2027
2078
 
2028
2079
  <div [class]="cx('emptyMessage')" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)" [pBind]="ptm('emptyMessage')">
2029
- <ng-container *ngIf="!emptyMessageTemplate && !_emptyMessageTemplate; else emptyFilter">
2080
+ <ng-container *ngIf="!emptyTemplate && !_emptyTemplate; else emptyFilter">
2030
2081
  {{ emptyMessageLabel }}
2031
2082
  </ng-container>
2032
- <ng-template #emptyFilter *ngTemplateOutlet="emptyMessageTemplate || _emptyMessageTemplate"></ng-template>
2083
+ <ng-template #emptyFilter *ngTemplateOutlet="emptyTemplate || _emptyTemplate"></ng-template>
2033
2084
  </div>
2034
2085
  <ng-container *ngTemplateOutlet="footerTemplate || _footerTemplate"></ng-container>
2035
2086
  `,
@@ -2050,13 +2101,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
2050
2101
  type: Input
2051
2102
  }], loadingMode: [{
2052
2103
  type: Input
2053
- }], selection: [{
2054
- type: Input
2055
- }], styleClass: [{
2104
+ }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }, { type: i0.Output, args: ["selectionChange"] }], styleClass: [{
2056
2105
  type: Input
2057
2106
  }], contextMenu: [{
2058
2107
  type: Input
2059
- }], draggableScope: [{
2108
+ }], contextMenuSelectionMode: [{
2109
+ type: Input
2110
+ }], contextMenuSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextMenuSelection", required: false }] }, { type: i0.Output, args: ["contextMenuSelectionChange"] }], draggableScope: [{
2060
2111
  type: Input
2061
2112
  }], droppableScope: [{
2062
2113
  type: Input
@@ -2132,8 +2183,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
2132
2183
  }], highlightOnSelect: [{
2133
2184
  type: Input,
2134
2185
  args: [{ transform: booleanAttribute }]
2135
- }], selectionChange: [{
2136
- type: Output
2137
2186
  }], onNodeSelect: [{
2138
2187
  type: Output
2139
2188
  }], onNodeUnselect: [{
@@ -2171,7 +2220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
2171
2220
  }], loaderTemplate: [{
2172
2221
  type: ContentChild,
2173
2222
  args: ['loader', { descendants: false }]
2174
- }], emptyMessageTemplate: [{
2223
+ }], emptyTemplate: [{
2175
2224
  type: ContentChild,
2176
2225
  args: ['empty', { descendants: false }]
2177
2226
  }], togglerIconTemplate: [{
@@ -2215,11 +2264,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
2215
2264
  args: ['dragleave', ['$event']]
2216
2265
  }] } });
2217
2266
  class TreeModule {
2218
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2219
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: TreeModule, imports: [Tree, SharedModule], exports: [Tree, SharedModule] });
2220
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: TreeModule, imports: [Tree, SharedModule, SharedModule] });
2267
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2268
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.1", ngImport: i0, type: TreeModule, imports: [Tree, SharedModule], exports: [Tree, SharedModule] });
2269
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: TreeModule, imports: [Tree, SharedModule, SharedModule] });
2221
2270
  }
2222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: TreeModule, decorators: [{
2271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: TreeModule, decorators: [{
2223
2272
  type: NgModule,
2224
2273
  args: [{
2225
2274
  imports: [Tree, SharedModule],