primeng 20.1.1 → 20.2.0

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 (322) hide show
  1. package/accordion/index.d.ts +2 -2
  2. package/animateonscroll/index.d.ts +2 -2
  3. package/api/index.d.ts +4 -3
  4. package/autocomplete/index.d.ts +59 -13
  5. package/avatargroup/index.d.ts +2 -2
  6. package/badge/index.d.ts +5 -5
  7. package/base/index.d.ts +6 -6
  8. package/basecomponent/index.d.ts +1 -1
  9. package/baseeditableholder/index.d.ts +4 -4
  10. package/baseinput/index.d.ts +12 -12
  11. package/breadcrumb/index.d.ts +1 -2
  12. package/button/index.d.ts +10 -10
  13. package/card/index.d.ts +1 -1
  14. package/carousel/index.d.ts +6 -6
  15. package/cascadeselect/index.d.ts +9 -9
  16. package/checkbox/index.d.ts +3 -3
  17. package/chip/index.d.ts +14 -4
  18. package/classnames/index.d.ts +38 -0
  19. package/config/index.d.ts +2 -2
  20. package/confirmdialog/index.d.ts +3 -3
  21. package/contextmenu/index.d.ts +4 -4
  22. package/dataview/index.d.ts +1 -1
  23. package/datepicker/index.d.ts +1 -1
  24. package/dialog/index.d.ts +4 -3
  25. package/divider/index.d.ts +2 -2
  26. package/dock/index.d.ts +2 -2
  27. package/dom/index.d.ts +4 -4
  28. package/dynamicdialog/index.d.ts +14 -14
  29. package/editor/index.d.ts +92 -13
  30. package/fesm2022/primeng-accordion.mjs +33 -21
  31. package/fesm2022/primeng-accordion.mjs.map +1 -1
  32. package/fesm2022/primeng-animateonscroll.mjs +8 -8
  33. package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
  34. package/fesm2022/primeng-api.mjs +31 -31
  35. package/fesm2022/primeng-autocomplete.mjs +180 -50
  36. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  37. package/fesm2022/primeng-autofocus.mjs +7 -7
  38. package/fesm2022/primeng-avatar.mjs +10 -10
  39. package/fesm2022/primeng-avatargroup.mjs +10 -10
  40. package/fesm2022/primeng-badge.mjs +15 -15
  41. package/fesm2022/primeng-badge.mjs.map +1 -1
  42. package/fesm2022/primeng-base.mjs +3 -3
  43. package/fesm2022/primeng-base.mjs.map +1 -1
  44. package/fesm2022/primeng-basecomponent.mjs +6 -6
  45. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  46. package/fesm2022/primeng-baseeditableholder.mjs +3 -3
  47. package/fesm2022/primeng-baseinput.mjs +3 -3
  48. package/fesm2022/primeng-baseinput.mjs.map +1 -1
  49. package/fesm2022/primeng-basemodelholder.mjs +3 -3
  50. package/fesm2022/primeng-blockui.mjs +10 -10
  51. package/fesm2022/primeng-breadcrumb.mjs +21 -21
  52. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  53. package/fesm2022/primeng-button.mjs +24 -23
  54. package/fesm2022/primeng-button.mjs.map +1 -1
  55. package/fesm2022/primeng-buttongroup.mjs +10 -10
  56. package/fesm2022/primeng-card.mjs +10 -10
  57. package/fesm2022/primeng-carousel.mjs +23 -23
  58. package/fesm2022/primeng-carousel.mjs.map +1 -1
  59. package/fesm2022/primeng-cascadeselect.mjs +31 -25
  60. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  61. package/fesm2022/primeng-chart.mjs +10 -10
  62. package/fesm2022/primeng-checkbox.mjs +15 -14
  63. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  64. package/fesm2022/primeng-chip.mjs +48 -17
  65. package/fesm2022/primeng-chip.mjs.map +1 -1
  66. package/fesm2022/primeng-classnames.mjs +73 -0
  67. package/fesm2022/primeng-classnames.mjs.map +1 -0
  68. package/fesm2022/primeng-colorpicker.mjs +11 -11
  69. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  70. package/fesm2022/primeng-config.mjs +8 -7
  71. package/fesm2022/primeng-config.mjs.map +1 -1
  72. package/fesm2022/primeng-confirmdialog.mjs +16 -10
  73. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  74. package/fesm2022/primeng-confirmpopup.mjs +24 -22
  75. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  76. package/fesm2022/primeng-contextmenu.mjs +24 -22
  77. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  78. package/fesm2022/primeng-dataview.mjs +11 -11
  79. package/fesm2022/primeng-dataview.mjs.map +1 -1
  80. package/fesm2022/primeng-datepicker.mjs +23 -23
  81. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  82. package/fesm2022/primeng-dialog.mjs +35 -16
  83. package/fesm2022/primeng-dialog.mjs.map +1 -1
  84. package/fesm2022/primeng-divider.mjs +10 -10
  85. package/fesm2022/primeng-dock.mjs +27 -25
  86. package/fesm2022/primeng-dock.mjs.map +1 -1
  87. package/fesm2022/primeng-dom.mjs +13 -10
  88. package/fesm2022/primeng-dom.mjs.map +1 -1
  89. package/fesm2022/primeng-dragdrop.mjs +10 -10
  90. package/fesm2022/primeng-drawer.mjs +28 -19
  91. package/fesm2022/primeng-drawer.mjs.map +1 -1
  92. package/fesm2022/primeng-dynamicdialog.mjs +48 -39
  93. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  94. package/fesm2022/primeng-editor.mjs +69 -11
  95. package/fesm2022/primeng-editor.mjs.map +1 -1
  96. package/fesm2022/primeng-fieldset.mjs +12 -11
  97. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  98. package/fesm2022/primeng-fileupload.mjs +15 -15
  99. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  100. package/fesm2022/primeng-floatlabel.mjs +10 -10
  101. package/fesm2022/primeng-fluid.mjs +10 -12
  102. package/fesm2022/primeng-fluid.mjs.map +1 -1
  103. package/fesm2022/primeng-focustrap.mjs +7 -7
  104. package/fesm2022/primeng-focustrap.mjs.map +1 -1
  105. package/fesm2022/primeng-galleria.mjs +42 -38
  106. package/fesm2022/primeng-galleria.mjs.map +1 -1
  107. package/fesm2022/primeng-iconfield.mjs +10 -10
  108. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -3
  109. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -3
  110. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -3
  111. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -3
  112. package/fesm2022/primeng-icons-angledown.mjs +3 -3
  113. package/fesm2022/primeng-icons-angleleft.mjs +3 -3
  114. package/fesm2022/primeng-icons-angleright.mjs +3 -3
  115. package/fesm2022/primeng-icons-angleup.mjs +3 -3
  116. package/fesm2022/primeng-icons-arrowdown.mjs +3 -3
  117. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -3
  118. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -3
  119. package/fesm2022/primeng-icons-arrowleft.mjs +3 -3
  120. package/fesm2022/primeng-icons-arrowright.mjs +3 -3
  121. package/fesm2022/primeng-icons-arrowup.mjs +3 -3
  122. package/fesm2022/primeng-icons-ban.mjs +3 -3
  123. package/fesm2022/primeng-icons-bars.mjs +3 -3
  124. package/fesm2022/primeng-icons-baseicon.mjs +6 -6
  125. package/fesm2022/primeng-icons-blank.mjs +3 -3
  126. package/fesm2022/primeng-icons-calendar.mjs +3 -3
  127. package/fesm2022/primeng-icons-caretleft.mjs +3 -3
  128. package/fesm2022/primeng-icons-caretright.mjs +3 -3
  129. package/fesm2022/primeng-icons-check.mjs +3 -3
  130. package/fesm2022/primeng-icons-chevrondown.mjs +3 -3
  131. package/fesm2022/primeng-icons-chevronleft.mjs +3 -3
  132. package/fesm2022/primeng-icons-chevronright.mjs +3 -3
  133. package/fesm2022/primeng-icons-chevronup.mjs +3 -3
  134. package/fesm2022/primeng-icons-exclamationtriangle.mjs +3 -3
  135. package/fesm2022/primeng-icons-eye.mjs +3 -3
  136. package/fesm2022/primeng-icons-eyeslash.mjs +3 -3
  137. package/fesm2022/primeng-icons-filter.mjs +3 -3
  138. package/fesm2022/primeng-icons-filterfill.mjs +3 -3
  139. package/fesm2022/primeng-icons-filterslash.mjs +3 -3
  140. package/fesm2022/primeng-icons-home.mjs +3 -3
  141. package/fesm2022/primeng-icons-infocircle.mjs +3 -3
  142. package/fesm2022/primeng-icons-minus.mjs +3 -3
  143. package/fesm2022/primeng-icons-pencil.mjs +3 -3
  144. package/fesm2022/primeng-icons-plus.mjs +3 -3
  145. package/fesm2022/primeng-icons-refresh.mjs +3 -3
  146. package/fesm2022/primeng-icons-search.mjs +3 -3
  147. package/fesm2022/primeng-icons-searchminus.mjs +3 -3
  148. package/fesm2022/primeng-icons-searchplus.mjs +3 -3
  149. package/fesm2022/primeng-icons-sortalt.mjs +3 -3
  150. package/fesm2022/primeng-icons-sortamountdown.mjs +3 -3
  151. package/fesm2022/primeng-icons-sortamountupalt.mjs +3 -3
  152. package/fesm2022/primeng-icons-spinner.mjs +3 -3
  153. package/fesm2022/primeng-icons-star.mjs +3 -3
  154. package/fesm2022/primeng-icons-starfill.mjs +3 -3
  155. package/fesm2022/primeng-icons-thlarge.mjs +3 -3
  156. package/fesm2022/primeng-icons-times.mjs +3 -3
  157. package/fesm2022/primeng-icons-timescircle.mjs +3 -3
  158. package/fesm2022/primeng-icons-trash.mjs +3 -3
  159. package/fesm2022/primeng-icons-undo.mjs +3 -3
  160. package/fesm2022/primeng-icons-upload.mjs +3 -3
  161. package/fesm2022/primeng-icons-windowmaximize.mjs +3 -3
  162. package/fesm2022/primeng-icons-windowminimize.mjs +3 -3
  163. package/fesm2022/primeng-iftalabel.mjs +10 -10
  164. package/fesm2022/primeng-image.mjs +19 -16
  165. package/fesm2022/primeng-image.mjs.map +1 -1
  166. package/fesm2022/primeng-imagecompare.mjs +10 -10
  167. package/fesm2022/primeng-inplace.mjs +16 -16
  168. package/fesm2022/primeng-inputgroup.mjs +10 -10
  169. package/fesm2022/primeng-inputgroupaddon.mjs +10 -10
  170. package/fesm2022/primeng-inputicon.mjs +10 -10
  171. package/fesm2022/primeng-inputmask.mjs +22 -13
  172. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  173. package/fesm2022/primeng-inputnumber.mjs +52 -31
  174. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  175. package/fesm2022/primeng-inputotp.mjs +11 -11
  176. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  177. package/fesm2022/primeng-inputtext.mjs +10 -10
  178. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  179. package/fesm2022/primeng-keyfilter.mjs +19 -10
  180. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  181. package/fesm2022/primeng-knob.mjs +10 -10
  182. package/fesm2022/primeng-listbox.mjs +124 -43
  183. package/fesm2022/primeng-listbox.mjs.map +1 -1
  184. package/fesm2022/primeng-megamenu.mjs +22 -20
  185. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  186. package/fesm2022/primeng-menu.mjs +35 -44
  187. package/fesm2022/primeng-menu.mjs.map +1 -1
  188. package/fesm2022/primeng-menubar.mjs +28 -27
  189. package/fesm2022/primeng-menubar.mjs.map +1 -1
  190. package/fesm2022/primeng-message.mjs +33 -30
  191. package/fesm2022/primeng-message.mjs.map +1 -1
  192. package/fesm2022/primeng-metergroup.mjs +27 -18
  193. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  194. package/fesm2022/primeng-multiselect.mjs +58 -48
  195. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  196. package/fesm2022/primeng-orderlist.mjs +149 -43
  197. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  198. package/fesm2022/primeng-organizationchart.mjs +13 -13
  199. package/fesm2022/primeng-overlay.mjs +15 -11
  200. package/fesm2022/primeng-overlay.mjs.map +1 -1
  201. package/fesm2022/primeng-overlaybadge.mjs +10 -10
  202. package/fesm2022/primeng-paginator.mjs +11 -11
  203. package/fesm2022/primeng-paginator.mjs.map +1 -1
  204. package/fesm2022/primeng-panel.mjs +11 -11
  205. package/fesm2022/primeng-panel.mjs.map +1 -1
  206. package/fesm2022/primeng-panelmenu.mjs +27 -26
  207. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  208. package/fesm2022/primeng-password.mjs +25 -21
  209. package/fesm2022/primeng-password.mjs.map +1 -1
  210. package/fesm2022/primeng-picklist.mjs +129 -48
  211. package/fesm2022/primeng-picklist.mjs.map +1 -1
  212. package/fesm2022/primeng-popover.mjs +11 -11
  213. package/fesm2022/primeng-popover.mjs.map +1 -1
  214. package/fesm2022/primeng-progressbar.mjs +10 -10
  215. package/fesm2022/primeng-progressspinner.mjs +10 -10
  216. package/fesm2022/primeng-radiobutton.mjs +15 -15
  217. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  218. package/fesm2022/primeng-rating.mjs +11 -11
  219. package/fesm2022/primeng-rating.mjs.map +1 -1
  220. package/fesm2022/primeng-ripple.mjs +10 -10
  221. package/fesm2022/primeng-scroller.mjs +48 -24
  222. package/fesm2022/primeng-scroller.mjs.map +1 -1
  223. package/fesm2022/primeng-scrollpanel.mjs +19 -19
  224. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  225. package/fesm2022/primeng-scrolltop.mjs +10 -10
  226. package/fesm2022/primeng-select.mjs +56 -38
  227. package/fesm2022/primeng-select.mjs.map +1 -1
  228. package/fesm2022/primeng-selectbutton.mjs +12 -12
  229. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  230. package/fesm2022/primeng-skeleton.mjs +10 -10
  231. package/fesm2022/primeng-slider.mjs +14 -14
  232. package/fesm2022/primeng-slider.mjs.map +1 -1
  233. package/fesm2022/primeng-speeddial.mjs +32 -24
  234. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  235. package/fesm2022/primeng-splitbutton.mjs +15 -15
  236. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  237. package/fesm2022/primeng-splitter.mjs +21 -21
  238. package/fesm2022/primeng-splitter.mjs.map +1 -1
  239. package/fesm2022/primeng-stepper.mjs +43 -43
  240. package/fesm2022/primeng-stepper.mjs.map +1 -1
  241. package/fesm2022/primeng-steps.mjs +15 -15
  242. package/fesm2022/primeng-steps.mjs.map +1 -1
  243. package/fesm2022/primeng-styleclass.mjs +8 -8
  244. package/fesm2022/primeng-styleclass.mjs.map +1 -1
  245. package/fesm2022/primeng-table.mjs +178 -158
  246. package/fesm2022/primeng-table.mjs.map +1 -1
  247. package/fesm2022/primeng-tabs.mjs +99 -55
  248. package/fesm2022/primeng-tabs.mjs.map +1 -1
  249. package/fesm2022/primeng-tag.mjs +10 -10
  250. package/fesm2022/primeng-tag.mjs.map +1 -1
  251. package/fesm2022/primeng-terminal.mjs +13 -13
  252. package/fesm2022/primeng-textarea.mjs +11 -11
  253. package/fesm2022/primeng-textarea.mjs.map +1 -1
  254. package/fesm2022/primeng-tieredmenu.mjs +26 -25
  255. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  256. package/fesm2022/primeng-timeline.mjs +10 -10
  257. package/fesm2022/primeng-toast.mjs +14 -13
  258. package/fesm2022/primeng-toast.mjs.map +1 -1
  259. package/fesm2022/primeng-togglebutton.mjs +20 -13
  260. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  261. package/fesm2022/primeng-toggleswitch.mjs +10 -10
  262. package/fesm2022/primeng-toolbar.mjs +10 -10
  263. package/fesm2022/primeng-tooltip.mjs +16 -15
  264. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  265. package/fesm2022/primeng-tree.mjs +170 -221
  266. package/fesm2022/primeng-tree.mjs.map +1 -1
  267. package/fesm2022/primeng-treeselect.mjs +17 -17
  268. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  269. package/fesm2022/primeng-treetable.mjs +84 -77
  270. package/fesm2022/primeng-treetable.mjs.map +1 -1
  271. package/fesm2022/primeng-usestyle.mjs +20 -18
  272. package/fesm2022/primeng-usestyle.mjs.map +1 -1
  273. package/fesm2022/primeng-utils.mjs.map +1 -1
  274. package/fieldset/index.d.ts +3 -2
  275. package/fileupload/index.d.ts +6 -6
  276. package/fluid/index.d.ts +0 -2
  277. package/galleria/index.d.ts +10 -10
  278. package/icons/baseicon/index.d.ts +1 -1
  279. package/image/index.d.ts +7 -7
  280. package/inputnumber/index.d.ts +7 -7
  281. package/inputotp/index.d.ts +3 -3
  282. package/inputtext/index.d.ts +6 -6
  283. package/keyfilter/index.d.ts +2 -2
  284. package/listbox/index.d.ts +31 -19
  285. package/megamenu/index.d.ts +1 -1
  286. package/menu/index.d.ts +1 -2
  287. package/message/index.d.ts +3 -2
  288. package/metergroup/index.d.ts +6 -6
  289. package/multiselect/index.d.ts +18 -17
  290. package/orderlist/index.d.ts +13 -7
  291. package/organizationchart/index.d.ts +2 -2
  292. package/overlay/index.d.ts +5 -5
  293. package/package.json +224 -220
  294. package/paginator/index.d.ts +1 -1
  295. package/panel/index.d.ts +2 -2
  296. package/panelmenu/index.d.ts +8 -8
  297. package/password/index.d.ts +6 -6
  298. package/picklist/index.d.ts +17 -12
  299. package/radiobutton/index.d.ts +3 -3
  300. package/rating/index.d.ts +1 -1
  301. package/scroller/index.d.ts +7 -3
  302. package/select/index.d.ts +11 -11
  303. package/selectbutton/index.d.ts +3 -3
  304. package/slider/index.d.ts +2 -2
  305. package/speeddial/index.d.ts +9 -9
  306. package/splitter/index.d.ts +3 -3
  307. package/stepper/index.d.ts +4 -4
  308. package/steps/index.d.ts +3 -3
  309. package/table/index.d.ts +39 -31
  310. package/tabs/index.d.ts +23 -8
  311. package/tag/index.d.ts +1 -1
  312. package/textarea/index.d.ts +6 -6
  313. package/tieredmenu/index.d.ts +1 -1
  314. package/toast/index.d.ts +5 -5
  315. package/togglebutton/index.d.ts +4 -3
  316. package/toggleswitch/index.d.ts +1 -1
  317. package/tooltip/index.d.ts +11 -11
  318. package/tree/index.d.ts +31 -46
  319. package/treeselect/index.d.ts +6 -6
  320. package/treetable/index.d.ts +10 -10
  321. package/usestyle/index.d.ts +2 -2
  322. package/utils/index.d.ts +2 -2
@@ -1,10 +1,10 @@
1
1
  import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, inject, forwardRef, numberAttribute, booleanAttribute, Input, ViewEncapsulation, Component, EventEmitter, HostListener, ContentChildren, ViewChild, ContentChild, Output, Optional, ChangeDetectionStrategy, NgModule } from '@angular/core';
4
+ import { Injectable, inject, forwardRef, signal, computed, numberAttribute, booleanAttribute, Input, ViewEncapsulation, Component, EventEmitter, HostListener, ContentChildren, ViewChild, ContentChild, Output, Optional, ChangeDetectionStrategy, NgModule } from '@angular/core';
5
5
  import * as i2 from '@angular/forms';
6
6
  import { FormsModule } from '@angular/forms';
7
- import { find, hasClass, findSingle, focus, removeAccents, resolveFieldData } from '@primeuix/utils';
7
+ import { getOuterWidth, getOuterHeight, find, hasClass, findSingle, focus, removeAccents, resolveFieldData } from '@primeuix/utils';
8
8
  import * as i3 from 'primeng/api';
9
9
  import { SharedModule, TranslationKeys, PrimeTemplate } from 'primeng/api';
10
10
  import * as i4 from 'primeng/autofocus';
@@ -39,7 +39,7 @@ const classes = {
39
39
  nodeContent: ({ instance }) => ({
40
40
  'p-tree-node-content': true,
41
41
  'p-tree-node-selectable': instance.selectable,
42
- 'p-tree-node-dragover': instance.draghoverNode,
42
+ 'p-tree-node-dragover': instance.isNodeDropActive(),
43
43
  'p-tree-node-selected': instance.selectionMode === 'checkbox' && instance.tree.highlightOnSelect ? instance.checked : instance.selected
44
44
  }),
45
45
  nodeToggleButton: 'p-tree-node-toggle-button',
@@ -49,16 +49,16 @@ const classes = {
49
49
  nodeLabel: 'p-tree-node-label',
50
50
  nodeChildren: 'p-tree-node-children',
51
51
  emptyMessage: 'p-tree-empty-message',
52
- dropPoint: ({ param }) => ['p-tree-node-droppoint', { 'p-tree-node-droppoint-active': param }]
52
+ dropPoint: 'p-tree-node-drop-point'
53
53
  };
54
54
  class TreeStyle extends BaseStyle {
55
55
  name = 'tree';
56
56
  theme = style;
57
57
  classes = classes;
58
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: TreeStyle, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
59
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: TreeStyle });
58
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TreeStyle, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
59
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TreeStyle });
60
60
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: TreeStyle, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TreeStyle, decorators: [{
62
62
  type: Injectable
63
63
  }] });
64
64
  /**
@@ -153,9 +153,13 @@ class UITreeNode extends BaseComponent {
153
153
  loadingMode;
154
154
  tree = inject(forwardRef(() => Tree));
155
155
  timeout;
156
- draghoverPrev;
157
- draghoverNext;
158
- draghoverNode;
156
+ isPrevDropPointHovered = signal(false, ...(ngDevMode ? [{ debugName: "isPrevDropPointHovered" }] : []));
157
+ isNextDropPointHovered = signal(false, ...(ngDevMode ? [{ debugName: "isNextDropPointHovered" }] : []));
158
+ isNodeDropHovered = signal(false, ...(ngDevMode ? [{ debugName: "isNodeDropHovered" }] : []));
159
+ isPrevDropPointActive = computed(() => this.isPrevDropPointHovered() && this.isDroppable(), ...(ngDevMode ? [{ debugName: "isPrevDropPointActive" }] : []));
160
+ isNextDropPointActive = computed(() => this.isNextDropPointHovered() && this.isDroppable(), ...(ngDevMode ? [{ debugName: "isNextDropPointActive" }] : []));
161
+ isNodeDropActive = computed(() => this.isNodeDropHovered() && this.isNodeDroppable(), ...(ngDevMode ? [{ debugName: "isNodeDropActive" }] : []));
162
+ dropPosition = computed(() => (this.isPrevDropPointActive() ? -1 : this.isNextDropPointActive() ? 1 : 0), ...(ngDevMode ? [{ debugName: "dropPosition" }] : []));
159
163
  _componentStyle = inject(TreeStyle);
160
164
  get selected() {
161
165
  return this.tree.selectionMode === 'single' || this.tree.selectionMode === 'multiple' ? this.isSelected() : undefined;
@@ -167,7 +171,10 @@ class UITreeNode extends BaseComponent {
167
171
  return this.tree._componentStyle.classes.node({ instance: this });
168
172
  }
169
173
  get selectable() {
170
- return this.node.selectable === false ? false : this.tree.selectionMode != null;
174
+ return this.node?.selectable === false ? false : this.tree?.selectionMode != null;
175
+ }
176
+ get subNodes() {
177
+ return this.node?.parent ? this.node.parent.children : this.tree.value;
171
178
  }
172
179
  ngOnInit() {
173
180
  super.ngOnInit();
@@ -190,6 +197,24 @@ class UITreeNode extends BaseComponent {
190
197
  isLeaf() {
191
198
  return this.tree.isNodeLeaf(this.node);
192
199
  }
200
+ isSelected() {
201
+ return this.tree.isSelected(this.node);
202
+ }
203
+ isSameNode(event) {
204
+ return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role="treeitem"]')));
205
+ }
206
+ isDraggable() {
207
+ return this.tree.draggableNodes;
208
+ }
209
+ isDroppable() {
210
+ return this.tree.droppableNodes && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope);
211
+ }
212
+ isNodeDroppable() {
213
+ return this.node?.droppable !== false && this.isDroppable();
214
+ }
215
+ isNodeDraggable() {
216
+ return this.node?.draggable !== false && this.isDraggable();
217
+ }
193
218
  toggle(event) {
194
219
  if (this.node.expanded)
195
220
  this.collapse(event);
@@ -230,122 +255,43 @@ class UITreeNode extends BaseComponent {
230
255
  onNodeDblClick(event) {
231
256
  this.tree.onNodeDblClick(event, this.node);
232
257
  }
233
- isSelected() {
234
- return this.tree.isSelected(this.node);
235
- }
236
- isSameNode(event) {
237
- return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role="treeitem"]')));
238
- }
239
- onDropPoint(event, position) {
240
- event.preventDefault();
241
- let dragNode = this.tree.dragNode;
242
- let dragNodeIndex = this.tree.dragNodeIndex;
243
- let dragNodeScope = this.tree.dragNodeScope;
244
- let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? position === 1 || dragNodeIndex !== this.index - 1 : true;
245
- if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {
246
- let dropParams = { ...this.createDropPointEventMetadata(position) };
247
- if (this.tree.validateDrop) {
248
- this.tree.onNodeDrop.emit({
249
- originalEvent: event,
250
- dragNode: dragNode,
251
- dropNode: this.node,
252
- index: this.index,
253
- accept: () => {
254
- this.processPointDrop(dropParams);
255
- }
256
- });
257
- }
258
- else {
259
- this.processPointDrop(dropParams);
260
- this.tree.onNodeDrop.emit({
261
- originalEvent: event,
262
- dragNode: dragNode,
263
- dropNode: this.node,
264
- index: this.index
265
- });
266
- }
267
- }
268
- this.draghoverPrev = false;
269
- this.draghoverNext = false;
270
- }
271
- processPointDrop(event) {
272
- let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;
273
- event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);
274
- let dropIndex = this.index;
275
- if (event.position < 0) {
276
- dropIndex = event.dragNodeSubNodes === newNodeList ? (event.dragNodeIndex > event.index ? event.index : event.index - 1) : event.index;
277
- newNodeList.splice(dropIndex, 0, event.dragNode);
278
- }
279
- else {
280
- dropIndex = newNodeList.length;
281
- newNodeList.push(event.dragNode);
258
+ insertNodeOnDrop() {
259
+ const { dragNode, dragNodeIndex, dragNodeSubNodes } = this.tree;
260
+ if (!this.node || dragNodeIndex == null || !dragNode || !dragNodeSubNodes) {
261
+ return;
282
262
  }
283
- this.tree.dragDropService.stopDrag({
284
- node: event.dragNode,
285
- subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,
286
- index: event.dragNodeIndex
287
- });
288
- }
289
- createDropPointEventMetadata(position) {
290
- return {
291
- dragNode: this.tree.dragNode,
292
- dragNodeIndex: this.tree.dragNodeIndex,
293
- dragNodeSubNodes: this.tree.dragNodeSubNodes,
294
- dropNode: this.node,
295
- index: this.index,
296
- position: position
297
- };
298
- }
299
- onDropPointDragOver(event) {
300
- event.dataTransfer.dropEffect = 'move';
301
- event.preventDefault();
302
- }
303
- onDropPointDragEnter(event, position) {
304
- if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {
305
- if (position < 0)
306
- this.draghoverPrev = true;
307
- else
308
- this.draghoverNext = true;
263
+ const position = this.dropPosition();
264
+ let subNodes = this.subNodes || [];
265
+ dragNodeSubNodes.splice(dragNodeIndex, 1);
266
+ if (position < 0) {
267
+ // insert before a Node
268
+ const index = this.index || 0;
269
+ const dropIndex = dragNodeSubNodes === subNodes ? (dragNodeIndex > index ? index : index - 1) : index;
270
+ subNodes.splice(dropIndex, 0, dragNode);
309
271
  }
310
- }
311
- onDropPointDragLeave(event) {
312
- this.draghoverPrev = false;
313
- this.draghoverNext = false;
314
- }
315
- onDragStart(event) {
316
- if (this.tree.draggableNodes && this.node.draggable !== false) {
317
- event.dataTransfer.setData('text', 'data');
318
- this.tree.dragDropService.startDrag({
319
- tree: this,
320
- node: this.node,
321
- subNodes: this.node?.parent ? this.node.parent.children : this.tree.value,
322
- index: this.index,
323
- scope: this.tree.draggableScope
324
- });
272
+ else if (position > 0) {
273
+ // insert after a Node
274
+ subNodes.push(dragNode);
325
275
  }
326
276
  else {
327
- event.preventDefault();
277
+ // insert as child of a Node
278
+ this.node.children = this.node.children || [];
279
+ this.node.children.push(dragNode);
328
280
  }
329
- }
330
- onDragStop(event) {
331
281
  this.tree.dragDropService.stopDrag({
332
- node: this.node,
333
- subNodes: this.node?.parent ? this.node.parent.children : this.tree.value,
334
- index: this.index
282
+ node: dragNode,
283
+ subNodes,
284
+ index: dragNodeIndex
335
285
  });
336
286
  }
337
- onDropNodeDragOver(event) {
338
- event.dataTransfer.dropEffect = 'move';
339
- if (this.tree.droppableNodes) {
340
- event.preventDefault();
341
- event.stopPropagation();
342
- }
343
- }
344
- onDropNode(event) {
345
- if (this.tree.droppableNodes && this.node?.droppable !== false) {
346
- let dragNode = this.tree.dragNode;
347
- if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {
348
- let dropParams = { ...this.createDropNodeEventMetadata() };
287
+ onNodeDrop(event) {
288
+ event.preventDefault();
289
+ event.stopPropagation();
290
+ if (this.isDroppable()) {
291
+ const { dragNode } = this.tree;
292
+ const position = this.dropPosition();
293
+ const isValidDrop = position !== 0 || (position === 0 && this.isNodeDroppable());
294
+ if (isValidDrop) {
349
295
  if (this.tree.validateDrop) {
350
296
  this.tree.onNodeDrop.emit({
351
297
  originalEvent: event,
@@ -353,12 +299,12 @@ class UITreeNode extends BaseComponent {
353
299
  dropNode: this.node,
354
300
  index: this.index,
355
301
  accept: () => {
356
- this.processNodeDrop(dropParams);
302
+ this.insertNodeOnDrop();
357
303
  }
358
304
  });
359
305
  }
360
306
  else {
361
- this.processNodeDrop(dropParams);
307
+ this.insertNodeOnDrop();
362
308
  this.tree.onNodeDrop.emit({
363
309
  originalEvent: event,
364
310
  dragNode: dragNode,
@@ -368,44 +314,75 @@ class UITreeNode extends BaseComponent {
368
314
  }
369
315
  }
370
316
  }
371
- event.preventDefault();
372
- event.stopPropagation();
373
- this.draghoverNode = false;
374
- }
375
- createDropNodeEventMetadata() {
376
- return {
377
- dragNode: this.tree.dragNode,
378
- dragNodeIndex: this.tree.dragNodeIndex,
379
- dragNodeSubNodes: this.tree.dragNodeSubNodes,
380
- dropNode: this.node
381
- };
382
- }
383
- processNodeDrop(event) {
384
- let dragNodeIndex = event.dragNodeIndex;
385
- event.dragNodeSubNodes.splice(dragNodeIndex, 1);
386
- if (event.dropNode.children)
387
- event.dropNode.children.push(event.dragNode);
388
- else
389
- event.dropNode.children = [event.dragNode];
390
- this.tree.dragDropService.stopDrag({
391
- node: event.dragNode,
392
- subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,
393
- index: dragNodeIndex
394
- });
395
- }
396
- onDropNodeDragEnter(event) {
397
- if (this.tree.droppableNodes && this.node?.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {
398
- this.draghoverNode = true;
317
+ this.isPrevDropPointHovered.set(false);
318
+ this.isNextDropPointHovered.set(false);
319
+ this.isNodeDropHovered.set(false);
320
+ }
321
+ onNodeDragStart(event) {
322
+ if (this.isNodeDraggable()) {
323
+ event.dataTransfer?.setData('text', 'data');
324
+ const target = event.currentTarget;
325
+ const dragEl = target.cloneNode(true);
326
+ const toggler = dragEl.querySelector('[data-pc-section="toggler"]');
327
+ const checkbox = dragEl.querySelector('[data-pc-name="checkbox"]');
328
+ target.setAttribute('data-p-dragging', 'true');
329
+ dragEl.style.width = getOuterWidth(target) + 'px';
330
+ dragEl.style.height = getOuterHeight(target) + 'px';
331
+ dragEl.setAttribute('data-pc-section', 'drag-image');
332
+ toggler.style.visibility = 'hidden';
333
+ checkbox?.remove();
334
+ document.body.appendChild(dragEl);
335
+ event.dataTransfer?.setDragImage(dragEl, 0, 0);
336
+ setTimeout(() => document.body.removeChild(dragEl), 0);
337
+ this.tree.dragDropService.startDrag({
338
+ tree: this,
339
+ node: this.node,
340
+ subNodes: this.subNodes,
341
+ index: this.index,
342
+ scope: this.tree.draggableScope
343
+ });
344
+ }
345
+ else {
346
+ event.preventDefault();
399
347
  }
400
348
  }
401
- onDropNodeDragLeave(event) {
402
- if (this.tree.droppableNodes) {
403
- let rect = event.currentTarget.getBoundingClientRect();
404
- if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {
405
- this.draghoverNode = false;
349
+ onNodeDragOver(event) {
350
+ event.dataTransfer.dropEffect = 'move';
351
+ if (this.isDroppable()) {
352
+ const nodeElement = event.currentTarget;
353
+ const rect = nodeElement.getBoundingClientRect();
354
+ const y = event.clientY - rect.top;
355
+ this.isPrevDropPointHovered.set(false);
356
+ this.isNextDropPointHovered.set(false);
357
+ this.isNodeDropHovered.set(false);
358
+ if (y < rect.height * 0.25) {
359
+ this.isPrevDropPointHovered.set(true);
360
+ }
361
+ else if (y > rect.height * 0.75) {
362
+ this.isNextDropPointHovered.set(true);
406
363
  }
364
+ else if (this.isNodeDroppable()) {
365
+ this.isNodeDropHovered.set(true);
366
+ }
367
+ }
368
+ if (this.tree.droppableNodes) {
369
+ event.preventDefault();
370
+ event.stopPropagation();
407
371
  }
408
372
  }
373
+ onNodeDragLeave() {
374
+ this.isPrevDropPointHovered.set(false);
375
+ this.isNextDropPointHovered.set(false);
376
+ this.isNodeDropHovered.set(false);
377
+ }
378
+ onNodeDragEnd(event) {
379
+ event.currentTarget?.removeAttribute('data-p-dragging');
380
+ this.tree.dragDropService.stopDrag({
381
+ node: this.node,
382
+ subNodes: this.subNodes,
383
+ index: this.index
384
+ });
385
+ }
409
386
  onKeyDown(event) {
410
387
  if (!this.isSameNode(event) || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild?.nativeElement.style.display === 'block')) {
411
388
  return;
@@ -444,7 +421,7 @@ class UITreeNode extends BaseComponent {
444
421
  }
445
422
  onArrowUp(event) {
446
423
  const nodeElement = event.target.getAttribute('data-pc-section') === 'toggler' ? event.target.closest('[role="treeitem"]') : event.target.parentElement;
447
- if (nodeElement.previousElementSibling) {
424
+ if (nodeElement?.previousElementSibling) {
448
425
  this.focusRowChange(nodeElement, nodeElement.previousElementSibling, this.findLastVisibleDescendant(nodeElement.previousElementSibling));
449
426
  }
450
427
  else {
@@ -457,16 +434,16 @@ class UITreeNode extends BaseComponent {
457
434
  }
458
435
  onArrowDown(event) {
459
436
  const nodeElement = event.target.getAttribute('data-pc-section') === 'toggler' ? event.target.closest('[role="treeitem"]') : event.target;
460
- const listElement = nodeElement.children[1];
437
+ const listElement = nodeElement?.children[1];
461
438
  if (listElement && listElement.children.length > 0) {
462
439
  this.focusRowChange(nodeElement, listElement.children[0]);
463
440
  }
464
441
  else {
465
- if (nodeElement.parentElement.nextElementSibling) {
442
+ if (nodeElement?.parentElement?.nextElementSibling) {
466
443
  this.focusRowChange(nodeElement, nodeElement.parentElement.nextElementSibling);
467
444
  }
468
445
  else {
469
- let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement.parentElement);
446
+ let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement?.parentElement);
470
447
  if (nextSiblingAncestor) {
471
448
  this.focusRowChange(nodeElement, nextSiblingAncestor);
472
449
  }
@@ -493,7 +470,7 @@ class UITreeNode extends BaseComponent {
493
470
  this.collapse(event);
494
471
  return;
495
472
  }
496
- let parentNodeElement = this.getParentNodeElement(nodeElement.parentElement);
473
+ let parentNodeElement = this.getParentNodeElement(nodeElement?.parentElement);
497
474
  if (parentNodeElement) {
498
475
  this.focusRowChange(event.currentTarget, parentNodeElement);
499
476
  }
@@ -568,22 +545,13 @@ class UITreeNode extends BaseComponent {
568
545
  }
569
546
  focusVirtualNode() {
570
547
  this.timeout = setTimeout(() => {
571
- let node = findSingle(this.tree?.contentViewChild.nativeElement, `[data-id="${this.node?.key ?? this.node?.data}"]`);
548
+ let node = findSingle(this.tree?.contentViewChild?.nativeElement, `[data-id="${this.node?.key ?? this.node?.data}"]`);
572
549
  focus(node);
573
550
  }, 1);
574
551
  }
575
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: UITreeNode, deps: null, target: i0.ɵɵFactoryTarget.Component });
576
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.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], usesInheritance: true, ngImport: i0, template: `
552
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: UITreeNode, deps: null, target: i0.ɵɵFactoryTarget.Component });
553
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", 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], usesInheritance: true, ngImport: i0, template: `
577
554
  @if (node) {
578
- <li
579
- *ngIf="tree.droppableNodes"
580
- [class]="cx('dropPoint', { param: draghoverPrev })"
581
- [attr.aria-hidden]="true"
582
- (drop)="onDropPoint($event, -1)"
583
- (dragover)="onDropPointDragOver($event)"
584
- (dragenter)="onDropPointDragEnter($event, -1)"
585
- (dragleave)="onDropPointDragLeave($event)"
586
- ></li>
587
555
  <li
588
556
  [class]="cn(cx('node'), node.styleClass)"
589
557
  [ngStyle]="{ height: itemSize + 'px' }"
@@ -600,6 +568,9 @@ class UITreeNode extends BaseComponent {
600
568
  role="treeitem"
601
569
  (keydown)="onKeyDown($event)"
602
570
  >
571
+ @if (isPrevDropPointActive()) {
572
+ <div [class]="cx('dropPoint')" [attr.aria-hidden]="true"></div>
573
+ }
603
574
  <div
604
575
  [class]="cx('nodeContent')"
605
576
  [style.paddingLeft]="level * indentation + 'rem'"
@@ -607,13 +578,12 @@ class UITreeNode extends BaseComponent {
607
578
  (contextmenu)="onNodeRightClick($event)"
608
579
  (dblclick)="onNodeDblClick($event)"
609
580
  (touchend)="onNodeTouchEnd()"
610
- (drop)="onDropNode($event)"
611
- (dragover)="onDropNodeDragOver($event)"
612
- (dragenter)="onDropNodeDragEnter($event)"
613
- (dragleave)="onDropNodeDragLeave($event)"
581
+ (drop)="onNodeDrop($event)"
582
+ (dragstart)="onNodeDragStart($event)"
583
+ (dragover)="onNodeDragOver($event)"
584
+ (dragleave)="onNodeDragLeave($event)"
585
+ (dragend)="onNodeDragEnd($event)"
614
586
  [draggable]="tree.draggableNodes"
615
- (dragstart)="onDragStart($event)"
616
- (dragend)="onDragStop($event)"
617
587
  >
618
588
  <button type="button" [attr.data-pc-section]="'toggler'" [class]="cx('nodeToggleButton')" (click)="toggle($event)" pRipple tabindex="-1">
619
589
  <ng-container *ngIf="!tree.togglerIconTemplate && !tree._togglerIconTemplate">
@@ -666,6 +636,9 @@ class UITreeNode extends BaseComponent {
666
636
  </span>
667
637
  </span>
668
638
  </div>
639
+ @if (isNextDropPointActive()) {
640
+ <div [class]="cx('dropPoint')" [attr.aria-hidden]="true"></div>
641
+ }
669
642
  <ul [class]="cx('nodeChildren')" *ngIf="!tree.virtualScroll && node.children && node.expanded" role="group">
670
643
  <p-treeNode
671
644
  *ngFor="let childNode of node.children; let firstChild = first; let lastChild = last; let index = index; trackBy: tree.trackBy.bind(this)"
@@ -680,20 +653,10 @@ class UITreeNode extends BaseComponent {
680
653
  ></p-treeNode>
681
654
  </ul>
682
655
  </li>
683
-
684
- <li
685
- *ngIf="tree.droppableNodes && lastChild"
686
- [class]="cx('dropPoint', { param: draghoverNext })"
687
- (drop)="onDropPoint($event, 1)"
688
- [attr.aria-hidden]="true"
689
- (dragover)="onDropPointDragOver($event)"
690
- (dragenter)="onDropPointDragEnter($event, 1)"
691
- (dragleave)="onDropPointDragLeave($event)"
692
- ></li>
693
656
  }
694
657
  `, 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: ["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 }], encapsulation: i0.ViewEncapsulation.None });
695
658
  }
696
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: UITreeNode, decorators: [{
659
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: UITreeNode, decorators: [{
697
660
  type: Component,
698
661
  args: [{
699
662
  selector: 'p-treeNode',
@@ -701,15 +664,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
701
664
  imports: [CommonModule, Ripple, Checkbox, FormsModule, ChevronRightIcon, ChevronDownIcon, SpinnerIcon, SharedModule],
702
665
  template: `
703
666
  @if (node) {
704
- <li
705
- *ngIf="tree.droppableNodes"
706
- [class]="cx('dropPoint', { param: draghoverPrev })"
707
- [attr.aria-hidden]="true"
708
- (drop)="onDropPoint($event, -1)"
709
- (dragover)="onDropPointDragOver($event)"
710
- (dragenter)="onDropPointDragEnter($event, -1)"
711
- (dragleave)="onDropPointDragLeave($event)"
712
- ></li>
713
667
  <li
714
668
  [class]="cn(cx('node'), node.styleClass)"
715
669
  [ngStyle]="{ height: itemSize + 'px' }"
@@ -726,6 +680,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
726
680
  role="treeitem"
727
681
  (keydown)="onKeyDown($event)"
728
682
  >
683
+ @if (isPrevDropPointActive()) {
684
+ <div [class]="cx('dropPoint')" [attr.aria-hidden]="true"></div>
685
+ }
729
686
  <div
730
687
  [class]="cx('nodeContent')"
731
688
  [style.paddingLeft]="level * indentation + 'rem'"
@@ -733,13 +690,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
733
690
  (contextmenu)="onNodeRightClick($event)"
734
691
  (dblclick)="onNodeDblClick($event)"
735
692
  (touchend)="onNodeTouchEnd()"
736
- (drop)="onDropNode($event)"
737
- (dragover)="onDropNodeDragOver($event)"
738
- (dragenter)="onDropNodeDragEnter($event)"
739
- (dragleave)="onDropNodeDragLeave($event)"
693
+ (drop)="onNodeDrop($event)"
694
+ (dragstart)="onNodeDragStart($event)"
695
+ (dragover)="onNodeDragOver($event)"
696
+ (dragleave)="onNodeDragLeave($event)"
697
+ (dragend)="onNodeDragEnd($event)"
740
698
  [draggable]="tree.draggableNodes"
741
- (dragstart)="onDragStart($event)"
742
- (dragend)="onDragStop($event)"
743
699
  >
744
700
  <button type="button" [attr.data-pc-section]="'toggler'" [class]="cx('nodeToggleButton')" (click)="toggle($event)" pRipple tabindex="-1">
745
701
  <ng-container *ngIf="!tree.togglerIconTemplate && !tree._togglerIconTemplate">
@@ -792,6 +748,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
792
748
  </span>
793
749
  </span>
794
750
  </div>
751
+ @if (isNextDropPointActive()) {
752
+ <div [class]="cx('dropPoint')" [attr.aria-hidden]="true"></div>
753
+ }
795
754
  <ul [class]="cx('nodeChildren')" *ngIf="!tree.virtualScroll && node.children && node.expanded" role="group">
796
755
  <p-treeNode
797
756
  *ngFor="let childNode of node.children; let firstChild = first; let lastChild = last; let index = index; trackBy: tree.trackBy.bind(this)"
@@ -806,16 +765,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
806
765
  ></p-treeNode>
807
766
  </ul>
808
767
  </li>
809
-
810
- <li
811
- *ngIf="tree.droppableNodes && lastChild"
812
- [class]="cx('dropPoint', { param: draghoverNext })"
813
- (drop)="onDropPoint($event, 1)"
814
- [attr.aria-hidden]="true"
815
- (dragover)="onDropPointDragOver($event)"
816
- (dragenter)="onDropPointDragEnter($event, 1)"
817
- (dragleave)="onDropPointDragLeave($event)"
818
- ></li>
819
768
  }
820
769
  `,
821
770
  encapsulation: ViewEncapsulation.None,
@@ -1276,7 +1225,7 @@ class Tree extends BaseComponent {
1276
1225
  if (simpleChange.value) {
1277
1226
  this.updateSerializedValue();
1278
1227
  if (this.hasFilterActive()) {
1279
- this._filter(this.filterViewChild.nativeElement.value);
1228
+ this._filter(this.filterViewChild?.nativeElement?.value);
1280
1229
  }
1281
1230
  }
1282
1231
  }
@@ -1780,8 +1729,8 @@ class Tree extends BaseComponent {
1780
1729
  }
1781
1730
  super.ngOnDestroy();
1782
1731
  }
1783
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Tree, deps: [{ token: i3.TreeDragDropService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1784
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", 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)" } }, providers: [TreeStyle], 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, usesOnChanges: true, ngImport: i0, template: `
1732
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Tree, deps: [{ token: i3.TreeDragDropService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1733
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", 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)" } }, providers: [TreeStyle], 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, usesOnChanges: true, ngImport: i0, template: `
1785
1734
  <div [class]="cx('mask')" *ngIf="loading && loadingMode === 'mask'">
1786
1735
  <i *ngIf="loadingIcon" [class]="cn(cx('loadingIcon'), 'pi-spin' + loadingIcon)"></i>
1787
1736
  <ng-container *ngIf="!loadingIcon">
@@ -1882,7 +1831,7 @@ class Tree extends BaseComponent {
1882
1831
  <ng-container *ngTemplateOutlet="footerTemplate || _footerTemplate"></ng-container>
1883
1832
  `, 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: ["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: ["pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IconField, selector: "p-iconfield, p-iconField, p-icon-field", inputs: ["iconPosition", "styleClass"] }, { kind: "component", type: InputIcon, selector: "p-inputicon, p-inputIcon", inputs: ["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: i4.AutoFocus, selector: "[pAutoFocus]", inputs: ["pAutoFocus"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
1884
1833
  }
1885
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Tree, decorators: [{
1834
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Tree, decorators: [{
1886
1835
  type: Component,
1887
1836
  args: [{
1888
1837
  selector: 'p-tree',
@@ -2168,11 +2117,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
2168
2117
  args: ['dragleave', ['$event']]
2169
2118
  }] } });
2170
2119
  class TreeModule {
2171
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2172
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: TreeModule, imports: [Tree, SharedModule], exports: [Tree, SharedModule] });
2173
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: TreeModule, imports: [Tree, SharedModule, SharedModule] });
2120
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2121
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.2", ngImport: i0, type: TreeModule, imports: [Tree, SharedModule], exports: [Tree, SharedModule] });
2122
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TreeModule, imports: [Tree, SharedModule, SharedModule] });
2174
2123
  }
2175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: TreeModule, decorators: [{
2124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TreeModule, decorators: [{
2176
2125
  type: NgModule,
2177
2126
  args: [{
2178
2127
  imports: [Tree, SharedModule],