primeng 0.0.0-watch

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 (507) hide show
  1. package/LICENSE.md +77 -0
  2. package/README.md +11 -0
  3. package/accordion/index.d.ts +255 -0
  4. package/animateonscroll/index.d.ts +71 -0
  5. package/api/index.d.ts +1820 -0
  6. package/autocomplete/index.d.ts +925 -0
  7. package/autofocus/index.d.ts +31 -0
  8. package/avatar/index.d.ts +115 -0
  9. package/avatargroup/index.d.ts +60 -0
  10. package/badge/index.d.ts +156 -0
  11. package/base/index.d.ts +63 -0
  12. package/basecomponent/index.d.ts +54 -0
  13. package/baseeditableholder/index.d.ts +45 -0
  14. package/baseinput/index.d.ts +73 -0
  15. package/basemodelholder/index.d.ts +12 -0
  16. package/blockui/index.d.ts +114 -0
  17. package/breadcrumb/index.d.ts +179 -0
  18. package/button/index.d.ts +478 -0
  19. package/buttongroup/index.d.ts +43 -0
  20. package/card/index.d.ts +154 -0
  21. package/carousel/index.d.ts +443 -0
  22. package/cascadeselect/index.d.ts +729 -0
  23. package/chart/index.d.ts +128 -0
  24. package/checkbox/index.d.ts +248 -0
  25. package/chip/index.d.ts +165 -0
  26. package/colorpicker/index.d.ts +329 -0
  27. package/config/index.d.ts +89 -0
  28. package/confirmdialog/index.d.ts +358 -0
  29. package/confirmpopup/index.d.ts +218 -0
  30. package/contextmenu/index.d.ts +356 -0
  31. package/dataview/index.d.ts +539 -0
  32. package/datepicker/index.d.ts +1191 -0
  33. package/dialog/index.d.ts +531 -0
  34. package/divider/index.d.ts +114 -0
  35. package/dock/index.d.ts +201 -0
  36. package/dom/index.d.ts +109 -0
  37. package/dragdrop/index.d.ts +121 -0
  38. package/drawer/index.d.ts +309 -0
  39. package/dynamicdialog/index.d.ts +544 -0
  40. package/editor/index.d.ts +306 -0
  41. package/fesm2022/primeng-accordion.mjs +593 -0
  42. package/fesm2022/primeng-accordion.mjs.map +1 -0
  43. package/fesm2022/primeng-animateonscroll.mjs +178 -0
  44. package/fesm2022/primeng-animateonscroll.mjs.map +1 -0
  45. package/fesm2022/primeng-api.mjs +836 -0
  46. package/fesm2022/primeng-api.mjs.map +1 -0
  47. package/fesm2022/primeng-autocomplete.mjs +2073 -0
  48. package/fesm2022/primeng-autocomplete.mjs.map +1 -0
  49. package/fesm2022/primeng-autofocus.mjs +83 -0
  50. package/fesm2022/primeng-autofocus.mjs.map +1 -0
  51. package/fesm2022/primeng-avatar.mjs +181 -0
  52. package/fesm2022/primeng-avatar.mjs.map +1 -0
  53. package/fesm2022/primeng-avatargroup.mjs +103 -0
  54. package/fesm2022/primeng-avatargroup.mjs.map +1 -0
  55. package/fesm2022/primeng-badge.mjs +366 -0
  56. package/fesm2022/primeng-badge.mjs.map +1 -0
  57. package/fesm2022/primeng-base.mjs +127 -0
  58. package/fesm2022/primeng-base.mjs.map +1 -0
  59. package/fesm2022/primeng-basecomponent.mjs +173 -0
  60. package/fesm2022/primeng-basecomponent.mjs.map +1 -0
  61. package/fesm2022/primeng-baseeditableholder.mjs +67 -0
  62. package/fesm2022/primeng-baseeditableholder.mjs.map +1 -0
  63. package/fesm2022/primeng-baseinput.mjs +85 -0
  64. package/fesm2022/primeng-baseinput.mjs.map +1 -0
  65. package/fesm2022/primeng-basemodelholder.mjs +25 -0
  66. package/fesm2022/primeng-basemodelholder.mjs.map +1 -0
  67. package/fesm2022/primeng-blockui.mjs +237 -0
  68. package/fesm2022/primeng-blockui.mjs.map +1 -0
  69. package/fesm2022/primeng-breadcrumb.mjs +457 -0
  70. package/fesm2022/primeng-breadcrumb.mjs.map +1 -0
  71. package/fesm2022/primeng-button.mjs +864 -0
  72. package/fesm2022/primeng-button.mjs.map +1 -0
  73. package/fesm2022/primeng-buttongroup.mjs +109 -0
  74. package/fesm2022/primeng-buttongroup.mjs.map +1 -0
  75. package/fesm2022/primeng-card.mjs +271 -0
  76. package/fesm2022/primeng-card.mjs.map +1 -0
  77. package/fesm2022/primeng-carousel.mjs +1101 -0
  78. package/fesm2022/primeng-carousel.mjs.map +1 -0
  79. package/fesm2022/primeng-cascadeselect.mjs +1778 -0
  80. package/fesm2022/primeng-cascadeselect.mjs.map +1 -0
  81. package/fesm2022/primeng-chart.mjs +246 -0
  82. package/fesm2022/primeng-chart.mjs.map +1 -0
  83. package/fesm2022/primeng-checkbox.mjs +441 -0
  84. package/fesm2022/primeng-checkbox.mjs.map +1 -0
  85. package/fesm2022/primeng-chip.mjs +323 -0
  86. package/fesm2022/primeng-chip.mjs.map +1 -0
  87. package/fesm2022/primeng-colorpicker.mjs +865 -0
  88. package/fesm2022/primeng-colorpicker.mjs.map +1 -0
  89. package/fesm2022/primeng-config.mjs +289 -0
  90. package/fesm2022/primeng-config.mjs.map +1 -0
  91. package/fesm2022/primeng-confirmdialog.mjs +823 -0
  92. package/fesm2022/primeng-confirmdialog.mjs.map +1 -0
  93. package/fesm2022/primeng-confirmpopup.mjs +630 -0
  94. package/fesm2022/primeng-confirmpopup.mjs.map +1 -0
  95. package/fesm2022/primeng-contextmenu.mjs +1410 -0
  96. package/fesm2022/primeng-contextmenu.mjs.map +1 -0
  97. package/fesm2022/primeng-dataview.mjs +812 -0
  98. package/fesm2022/primeng-dataview.mjs.map +1 -0
  99. package/fesm2022/primeng-datepicker.mjs +4373 -0
  100. package/fesm2022/primeng-datepicker.mjs.map +1 -0
  101. package/fesm2022/primeng-dialog.mjs +1278 -0
  102. package/fesm2022/primeng-dialog.mjs.map +1 -0
  103. package/fesm2022/primeng-divider.mjs +145 -0
  104. package/fesm2022/primeng-divider.mjs.map +1 -0
  105. package/fesm2022/primeng-dock.mjs +540 -0
  106. package/fesm2022/primeng-dock.mjs.map +1 -0
  107. package/fesm2022/primeng-dom.mjs +775 -0
  108. package/fesm2022/primeng-dom.mjs.map +1 -0
  109. package/fesm2022/primeng-dragdrop.mjs +336 -0
  110. package/fesm2022/primeng-dragdrop.mjs.map +1 -0
  111. package/fesm2022/primeng-drawer.mjs +738 -0
  112. package/fesm2022/primeng-drawer.mjs.map +1 -0
  113. package/fesm2022/primeng-dynamicdialog.mjs +1242 -0
  114. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -0
  115. package/fesm2022/primeng-editor.mjs +511 -0
  116. package/fesm2022/primeng-editor.mjs.map +1 -0
  117. package/fesm2022/primeng-fieldset.mjs +417 -0
  118. package/fesm2022/primeng-fieldset.mjs.map +1 -0
  119. package/fesm2022/primeng-fileupload.mjs +1561 -0
  120. package/fesm2022/primeng-fileupload.mjs.map +1 -0
  121. package/fesm2022/primeng-floatlabel.mjs +103 -0
  122. package/fesm2022/primeng-floatlabel.mjs.map +1 -0
  123. package/fesm2022/primeng-fluid.mjs +80 -0
  124. package/fesm2022/primeng-fluid.mjs.map +1 -0
  125. package/fesm2022/primeng-focustrap.mjs +110 -0
  126. package/fesm2022/primeng-focustrap.mjs.map +1 -0
  127. package/fesm2022/primeng-galleria.mjs +1874 -0
  128. package/fesm2022/primeng-galleria.mjs.map +1 -0
  129. package/fesm2022/primeng-iconfield.mjs +101 -0
  130. package/fesm2022/primeng-iconfield.mjs.map +1 -0
  131. package/fesm2022/primeng-icons-angledoubledown.mjs +37 -0
  132. package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -0
  133. package/fesm2022/primeng-icons-angledoubleleft.mjs +37 -0
  134. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -0
  135. package/fesm2022/primeng-icons-angledoubleright.mjs +37 -0
  136. package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -0
  137. package/fesm2022/primeng-icons-angledoubleup.mjs +37 -0
  138. package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -0
  139. package/fesm2022/primeng-icons-angledown.mjs +33 -0
  140. package/fesm2022/primeng-icons-angledown.mjs.map +1 -0
  141. package/fesm2022/primeng-icons-angleleft.mjs +33 -0
  142. package/fesm2022/primeng-icons-angleleft.mjs.map +1 -0
  143. package/fesm2022/primeng-icons-angleright.mjs +33 -0
  144. package/fesm2022/primeng-icons-angleright.mjs.map +1 -0
  145. package/fesm2022/primeng-icons-angleup.mjs +33 -0
  146. package/fesm2022/primeng-icons-angleup.mjs.map +1 -0
  147. package/fesm2022/primeng-icons-arrowdown.mjs +57 -0
  148. package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -0
  149. package/fesm2022/primeng-icons-arrowdownleft.mjs +33 -0
  150. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -0
  151. package/fesm2022/primeng-icons-arrowdownright.mjs +33 -0
  152. package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -0
  153. package/fesm2022/primeng-icons-arrowleft.mjs +57 -0
  154. package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -0
  155. package/fesm2022/primeng-icons-arrowright.mjs +37 -0
  156. package/fesm2022/primeng-icons-arrowright.mjs.map +1 -0
  157. package/fesm2022/primeng-icons-arrowup.mjs +57 -0
  158. package/fesm2022/primeng-icons-arrowup.mjs.map +1 -0
  159. package/fesm2022/primeng-icons-ban.mjs +53 -0
  160. package/fesm2022/primeng-icons-ban.mjs.map +1 -0
  161. package/fesm2022/primeng-icons-bars.mjs +37 -0
  162. package/fesm2022/primeng-icons-bars.mjs.map +1 -0
  163. package/fesm2022/primeng-icons-baseicon.mjs +102 -0
  164. package/fesm2022/primeng-icons-baseicon.mjs.map +1 -0
  165. package/fesm2022/primeng-icons-blank.mjs +23 -0
  166. package/fesm2022/primeng-icons-blank.mjs.map +1 -0
  167. package/fesm2022/primeng-icons-calendar.mjs +33 -0
  168. package/fesm2022/primeng-icons-calendar.mjs.map +1 -0
  169. package/fesm2022/primeng-icons-caretleft.mjs +33 -0
  170. package/fesm2022/primeng-icons-caretleft.mjs.map +1 -0
  171. package/fesm2022/primeng-icons-caretright.mjs +33 -0
  172. package/fesm2022/primeng-icons-caretright.mjs.map +1 -0
  173. package/fesm2022/primeng-icons-check.mjs +33 -0
  174. package/fesm2022/primeng-icons-check.mjs.map +1 -0
  175. package/fesm2022/primeng-icons-chevrondown.mjs +33 -0
  176. package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -0
  177. package/fesm2022/primeng-icons-chevronleft.mjs +33 -0
  178. package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -0
  179. package/fesm2022/primeng-icons-chevronright.mjs +33 -0
  180. package/fesm2022/primeng-icons-chevronright.mjs.map +1 -0
  181. package/fesm2022/primeng-icons-chevronup.mjs +33 -0
  182. package/fesm2022/primeng-icons-chevronup.mjs.map +1 -0
  183. package/fesm2022/primeng-icons-exclamationtriangle.mjs +69 -0
  184. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -0
  185. package/fesm2022/primeng-icons-eye.mjs +37 -0
  186. package/fesm2022/primeng-icons-eye.mjs.map +1 -0
  187. package/fesm2022/primeng-icons-eyeslash.mjs +57 -0
  188. package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -0
  189. package/fesm2022/primeng-icons-filter.mjs +53 -0
  190. package/fesm2022/primeng-icons-filter.mjs.map +1 -0
  191. package/fesm2022/primeng-icons-filterfill.mjs +33 -0
  192. package/fesm2022/primeng-icons-filterfill.mjs.map +1 -0
  193. package/fesm2022/primeng-icons-filterslash.mjs +57 -0
  194. package/fesm2022/primeng-icons-filterslash.mjs.map +1 -0
  195. package/fesm2022/primeng-icons-home.mjs +57 -0
  196. package/fesm2022/primeng-icons-home.mjs.map +1 -0
  197. package/fesm2022/primeng-icons-infocircle.mjs +57 -0
  198. package/fesm2022/primeng-icons-infocircle.mjs.map +1 -0
  199. package/fesm2022/primeng-icons-minus.mjs +33 -0
  200. package/fesm2022/primeng-icons-minus.mjs.map +1 -0
  201. package/fesm2022/primeng-icons-pencil.mjs +53 -0
  202. package/fesm2022/primeng-icons-pencil.mjs.map +1 -0
  203. package/fesm2022/primeng-icons-plus.mjs +53 -0
  204. package/fesm2022/primeng-icons-plus.mjs.map +1 -0
  205. package/fesm2022/primeng-icons-refresh.mjs +57 -0
  206. package/fesm2022/primeng-icons-refresh.mjs.map +1 -0
  207. package/fesm2022/primeng-icons-search.mjs +57 -0
  208. package/fesm2022/primeng-icons-search.mjs.map +1 -0
  209. package/fesm2022/primeng-icons-searchminus.mjs +57 -0
  210. package/fesm2022/primeng-icons-searchminus.mjs.map +1 -0
  211. package/fesm2022/primeng-icons-searchplus.mjs +57 -0
  212. package/fesm2022/primeng-icons-searchplus.mjs.map +1 -0
  213. package/fesm2022/primeng-icons-sortalt.mjs +65 -0
  214. package/fesm2022/primeng-icons-sortalt.mjs.map +1 -0
  215. package/fesm2022/primeng-icons-sortamountdown.mjs +53 -0
  216. package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -0
  217. package/fesm2022/primeng-icons-sortamountupalt.mjs +53 -0
  218. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -0
  219. package/fesm2022/primeng-icons-spinner.mjs +53 -0
  220. package/fesm2022/primeng-icons-spinner.mjs.map +1 -0
  221. package/fesm2022/primeng-icons-star.mjs +53 -0
  222. package/fesm2022/primeng-icons-star.mjs.map +1 -0
  223. package/fesm2022/primeng-icons-starfill.mjs +53 -0
  224. package/fesm2022/primeng-icons-starfill.mjs.map +1 -0
  225. package/fesm2022/primeng-icons-thlarge.mjs +57 -0
  226. package/fesm2022/primeng-icons-thlarge.mjs.map +1 -0
  227. package/fesm2022/primeng-icons-times.mjs +33 -0
  228. package/fesm2022/primeng-icons-times.mjs.map +1 -0
  229. package/fesm2022/primeng-icons-timescircle.mjs +57 -0
  230. package/fesm2022/primeng-icons-timescircle.mjs.map +1 -0
  231. package/fesm2022/primeng-icons-trash.mjs +57 -0
  232. package/fesm2022/primeng-icons-trash.mjs.map +1 -0
  233. package/fesm2022/primeng-icons-undo.mjs +57 -0
  234. package/fesm2022/primeng-icons-undo.mjs.map +1 -0
  235. package/fesm2022/primeng-icons-upload.mjs +57 -0
  236. package/fesm2022/primeng-icons-upload.mjs.map +1 -0
  237. package/fesm2022/primeng-icons-windowmaximize.mjs +57 -0
  238. package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -0
  239. package/fesm2022/primeng-icons-windowminimize.mjs +57 -0
  240. package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -0
  241. package/fesm2022/primeng-icons.mjs +63 -0
  242. package/fesm2022/primeng-icons.mjs.map +1 -0
  243. package/fesm2022/primeng-iftalabel.mjs +89 -0
  244. package/fesm2022/primeng-iftalabel.mjs.map +1 -0
  245. package/fesm2022/primeng-image.mjs +705 -0
  246. package/fesm2022/primeng-image.mjs.map +1 -0
  247. package/fesm2022/primeng-imagecompare.mjs +192 -0
  248. package/fesm2022/primeng-imagecompare.mjs.map +1 -0
  249. package/fesm2022/primeng-inplace.mjs +319 -0
  250. package/fesm2022/primeng-inplace.mjs.map +1 -0
  251. package/fesm2022/primeng-inputgroup.mjs +128 -0
  252. package/fesm2022/primeng-inputgroup.mjs.map +1 -0
  253. package/fesm2022/primeng-inputgroupaddon.mjs +83 -0
  254. package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -0
  255. package/fesm2022/primeng-inputicon.mjs +71 -0
  256. package/fesm2022/primeng-inputicon.mjs.map +1 -0
  257. package/fesm2022/primeng-inputmask.mjs +926 -0
  258. package/fesm2022/primeng-inputmask.mjs.map +1 -0
  259. package/fesm2022/primeng-inputnumber.mjs +1621 -0
  260. package/fesm2022/primeng-inputnumber.mjs.map +1 -0
  261. package/fesm2022/primeng-inputotp.mjs +443 -0
  262. package/fesm2022/primeng-inputotp.mjs.map +1 -0
  263. package/fesm2022/primeng-inputtext.mjs +145 -0
  264. package/fesm2022/primeng-inputtext.mjs.map +1 -0
  265. package/fesm2022/primeng-keyfilter.mjs +267 -0
  266. package/fesm2022/primeng-keyfilter.mjs.map +1 -0
  267. package/fesm2022/primeng-knob.mjs +491 -0
  268. package/fesm2022/primeng-knob.mjs.map +1 -0
  269. package/fesm2022/primeng-listbox.mjs +1925 -0
  270. package/fesm2022/primeng-listbox.mjs.map +1 -0
  271. package/fesm2022/primeng-megamenu.mjs +1493 -0
  272. package/fesm2022/primeng-megamenu.mjs.map +1 -0
  273. package/fesm2022/primeng-menu.mjs +1069 -0
  274. package/fesm2022/primeng-menu.mjs.map +1 -0
  275. package/fesm2022/primeng-menubar.mjs +1391 -0
  276. package/fesm2022/primeng-menubar.mjs.map +1 -0
  277. package/fesm2022/primeng-message.mjs +420 -0
  278. package/fesm2022/primeng-message.mjs.map +1 -0
  279. package/fesm2022/primeng-metergroup.mjs +393 -0
  280. package/fesm2022/primeng-metergroup.mjs.map +1 -0
  281. package/fesm2022/primeng-multiselect.mjs +2519 -0
  282. package/fesm2022/primeng-multiselect.mjs.map +1 -0
  283. package/fesm2022/primeng-orderlist.mjs +890 -0
  284. package/fesm2022/primeng-orderlist.mjs.map +1 -0
  285. package/fesm2022/primeng-organizationchart.mjs +520 -0
  286. package/fesm2022/primeng-organizationchart.mjs.map +1 -0
  287. package/fesm2022/primeng-overlay.mjs +776 -0
  288. package/fesm2022/primeng-overlay.mjs.map +1 -0
  289. package/fesm2022/primeng-overlaybadge.mjs +151 -0
  290. package/fesm2022/primeng-overlaybadge.mjs.map +1 -0
  291. package/fesm2022/primeng-paginator.mjs +802 -0
  292. package/fesm2022/primeng-paginator.mjs.map +1 -0
  293. package/fesm2022/primeng-panel.mjs +595 -0
  294. package/fesm2022/primeng-panel.mjs.map +1 -0
  295. package/fesm2022/primeng-panelmenu.mjs +1442 -0
  296. package/fesm2022/primeng-panelmenu.mjs.map +1 -0
  297. package/fesm2022/primeng-password.mjs +1156 -0
  298. package/fesm2022/primeng-password.mjs.map +1 -0
  299. package/fesm2022/primeng-picklist.mjs +2057 -0
  300. package/fesm2022/primeng-picklist.mjs.map +1 -0
  301. package/fesm2022/primeng-popover.mjs +611 -0
  302. package/fesm2022/primeng-popover.mjs.map +1 -0
  303. package/fesm2022/primeng-progressbar.mjs +196 -0
  304. package/fesm2022/primeng-progressbar.mjs.map +1 -0
  305. package/fesm2022/primeng-progressspinner.mjs +140 -0
  306. package/fesm2022/primeng-progressspinner.mjs.map +1 -0
  307. package/fesm2022/primeng-radiobutton.mjs +358 -0
  308. package/fesm2022/primeng-radiobutton.mjs.map +1 -0
  309. package/fesm2022/primeng-rating.mjs +388 -0
  310. package/fesm2022/primeng-rating.mjs.map +1 -0
  311. package/fesm2022/primeng-ripple.mjs +190 -0
  312. package/fesm2022/primeng-ripple.mjs.map +1 -0
  313. package/fesm2022/primeng-scroller.mjs +1306 -0
  314. package/fesm2022/primeng-scroller.mjs.map +1 -0
  315. package/fesm2022/primeng-scrollpanel.mjs +560 -0
  316. package/fesm2022/primeng-scrollpanel.mjs.map +1 -0
  317. package/fesm2022/primeng-scrolltop.mjs +339 -0
  318. package/fesm2022/primeng-scrolltop.mjs.map +1 -0
  319. package/fesm2022/primeng-select.mjs +2250 -0
  320. package/fesm2022/primeng-select.mjs.map +1 -0
  321. package/fesm2022/primeng-selectbutton.mjs +413 -0
  322. package/fesm2022/primeng-selectbutton.mjs.map +1 -0
  323. package/fesm2022/primeng-skeleton.mjs +154 -0
  324. package/fesm2022/primeng-skeleton.mjs.map +1 -0
  325. package/fesm2022/primeng-slider.mjs +843 -0
  326. package/fesm2022/primeng-slider.mjs.map +1 -0
  327. package/fesm2022/primeng-speeddial.mjs +901 -0
  328. package/fesm2022/primeng-speeddial.mjs.map +1 -0
  329. package/fesm2022/primeng-splitbutton.mjs +598 -0
  330. package/fesm2022/primeng-splitbutton.mjs.map +1 -0
  331. package/fesm2022/primeng-splitter.mjs +587 -0
  332. package/fesm2022/primeng-splitter.mjs.map +1 -0
  333. package/fesm2022/primeng-stepper.mjs +683 -0
  334. package/fesm2022/primeng-stepper.mjs.map +1 -0
  335. package/fesm2022/primeng-steps.mjs +424 -0
  336. package/fesm2022/primeng-steps.mjs.map +1 -0
  337. package/fesm2022/primeng-styleclass.mjs +354 -0
  338. package/fesm2022/primeng-styleclass.mjs.map +1 -0
  339. package/fesm2022/primeng-table.mjs +7540 -0
  340. package/fesm2022/primeng-table.mjs.map +1 -0
  341. package/fesm2022/primeng-tabs.mjs +794 -0
  342. package/fesm2022/primeng-tabs.mjs.map +1 -0
  343. package/fesm2022/primeng-tag.mjs +176 -0
  344. package/fesm2022/primeng-tag.mjs.map +1 -0
  345. package/fesm2022/primeng-terminal.mjs +254 -0
  346. package/fesm2022/primeng-terminal.mjs.map +1 -0
  347. package/fesm2022/primeng-textarea.mjs +197 -0
  348. package/fesm2022/primeng-textarea.mjs.map +1 -0
  349. package/fesm2022/primeng-tieredmenu.mjs +1457 -0
  350. package/fesm2022/primeng-tieredmenu.mjs.map +1 -0
  351. package/fesm2022/primeng-timeline.mjs +228 -0
  352. package/fesm2022/primeng-timeline.mjs.map +1 -0
  353. package/fesm2022/primeng-toast.mjs +751 -0
  354. package/fesm2022/primeng-toast.mjs.map +1 -0
  355. package/fesm2022/primeng-togglebutton.mjs +361 -0
  356. package/fesm2022/primeng-togglebutton.mjs.map +1 -0
  357. package/fesm2022/primeng-toggleswitch.mjs +330 -0
  358. package/fesm2022/primeng-toggleswitch.mjs.map +1 -0
  359. package/fesm2022/primeng-toolbar.mjs +189 -0
  360. package/fesm2022/primeng-toolbar.mjs.map +1 -0
  361. package/fesm2022/primeng-tooltip.mjs +757 -0
  362. package/fesm2022/primeng-tooltip.mjs.map +1 -0
  363. package/fesm2022/primeng-tree.mjs +2188 -0
  364. package/fesm2022/primeng-tree.mjs.map +1 -0
  365. package/fesm2022/primeng-treeselect.mjs +1328 -0
  366. package/fesm2022/primeng-treeselect.mjs.map +1 -0
  367. package/fesm2022/primeng-treetable.mjs +5080 -0
  368. package/fesm2022/primeng-treetable.mjs.map +1 -0
  369. package/fesm2022/primeng-ts-helpers.mjs +4 -0
  370. package/fesm2022/primeng-ts-helpers.mjs.map +1 -0
  371. package/fesm2022/primeng-usestyle.mjs +52 -0
  372. package/fesm2022/primeng-usestyle.mjs.map +1 -0
  373. package/fesm2022/primeng-utils.mjs +332 -0
  374. package/fesm2022/primeng-utils.mjs.map +1 -0
  375. package/fesm2022/primeng.mjs +6 -0
  376. package/fesm2022/primeng.mjs.map +1 -0
  377. package/fieldset/index.d.ts +217 -0
  378. package/fileupload/index.d.ts +786 -0
  379. package/floatlabel/index.d.ts +59 -0
  380. package/fluid/index.d.ts +48 -0
  381. package/focustrap/index.d.ts +36 -0
  382. package/galleria/index.d.ts +710 -0
  383. package/iconfield/index.d.ts +64 -0
  384. package/icons/angledoubledown/index.d.ts +9 -0
  385. package/icons/angledoubleleft/index.d.ts +9 -0
  386. package/icons/angledoubleright/index.d.ts +9 -0
  387. package/icons/angledoubleup/index.d.ts +9 -0
  388. package/icons/angledown/index.d.ts +9 -0
  389. package/icons/angleleft/index.d.ts +9 -0
  390. package/icons/angleright/index.d.ts +9 -0
  391. package/icons/angleup/index.d.ts +9 -0
  392. package/icons/arrowdown/index.d.ts +12 -0
  393. package/icons/arrowdownleft/index.d.ts +9 -0
  394. package/icons/arrowdownright/index.d.ts +9 -0
  395. package/icons/arrowleft/index.d.ts +11 -0
  396. package/icons/arrowright/index.d.ts +9 -0
  397. package/icons/arrowup/index.d.ts +11 -0
  398. package/icons/ban/index.d.ts +11 -0
  399. package/icons/bars/index.d.ts +9 -0
  400. package/icons/baseicon/index.d.ts +33 -0
  401. package/icons/blank/index.d.ts +9 -0
  402. package/icons/calendar/index.d.ts +9 -0
  403. package/icons/caretleft/index.d.ts +9 -0
  404. package/icons/caretright/index.d.ts +9 -0
  405. package/icons/check/index.d.ts +9 -0
  406. package/icons/chevrondown/index.d.ts +9 -0
  407. package/icons/chevronleft/index.d.ts +9 -0
  408. package/icons/chevronright/index.d.ts +9 -0
  409. package/icons/chevronup/index.d.ts +9 -0
  410. package/icons/exclamationtriangle/index.d.ts +12 -0
  411. package/icons/eye/index.d.ts +9 -0
  412. package/icons/eyeslash/index.d.ts +11 -0
  413. package/icons/filter/index.d.ts +11 -0
  414. package/icons/filterfill/index.d.ts +9 -0
  415. package/icons/filterslash/index.d.ts +11 -0
  416. package/icons/home/index.d.ts +11 -0
  417. package/icons/index.d.ts +53 -0
  418. package/icons/infocircle/index.d.ts +11 -0
  419. package/icons/minus/index.d.ts +9 -0
  420. package/icons/pencil/index.d.ts +11 -0
  421. package/icons/plus/index.d.ts +11 -0
  422. package/icons/refresh/index.d.ts +11 -0
  423. package/icons/search/index.d.ts +11 -0
  424. package/icons/searchminus/index.d.ts +11 -0
  425. package/icons/searchplus/index.d.ts +11 -0
  426. package/icons/sortalt/index.d.ts +11 -0
  427. package/icons/sortamountdown/index.d.ts +11 -0
  428. package/icons/sortamountupalt/index.d.ts +11 -0
  429. package/icons/spinner/index.d.ts +11 -0
  430. package/icons/star/index.d.ts +11 -0
  431. package/icons/starfill/index.d.ts +11 -0
  432. package/icons/thlarge/index.d.ts +11 -0
  433. package/icons/times/index.d.ts +9 -0
  434. package/icons/timescircle/index.d.ts +11 -0
  435. package/icons/trash/index.d.ts +11 -0
  436. package/icons/undo/index.d.ts +11 -0
  437. package/icons/upload/index.d.ts +11 -0
  438. package/icons/windowmaximize/index.d.ts +11 -0
  439. package/icons/windowminimize/index.d.ts +11 -0
  440. package/iftalabel/index.d.ts +50 -0
  441. package/image/index.d.ts +376 -0
  442. package/imagecompare/index.d.ts +93 -0
  443. package/index.d.ts +2 -0
  444. package/inplace/index.d.ts +183 -0
  445. package/inputgroup/index.d.ts +58 -0
  446. package/inputgroupaddon/index.d.ts +45 -0
  447. package/inputicon/index.d.ts +36 -0
  448. package/inputmask/index.d.ts +282 -0
  449. package/inputnumber/index.d.ts +466 -0
  450. package/inputotp/index.d.ts +209 -0
  451. package/inputtext/index.d.ts +89 -0
  452. package/keyfilter/index.d.ts +66 -0
  453. package/knob/index.d.ts +206 -0
  454. package/listbox/index.d.ts +802 -0
  455. package/megamenu/index.d.ts +408 -0
  456. package/menu/index.d.ts +341 -0
  457. package/menubar/index.d.ts +418 -0
  458. package/message/index.d.ts +195 -0
  459. package/metergroup/index.d.ts +291 -0
  460. package/multiselect/index.d.ts +1060 -0
  461. package/orderlist/index.d.ts +464 -0
  462. package/organizationchart/index.d.ts +285 -0
  463. package/overlay/index.d.ts +255 -0
  464. package/overlaybadge/index.d.ts +73 -0
  465. package/package.json +725 -0
  466. package/paginator/index.d.ts +393 -0
  467. package/panel/index.d.ts +266 -0
  468. package/panelmenu/index.d.ts +380 -0
  469. package/password/index.d.ts +436 -0
  470. package/picklist/index.d.ts +906 -0
  471. package/popover/index.d.ts +176 -0
  472. package/progressbar/index.d.ts +112 -0
  473. package/progressspinner/index.d.ts +85 -0
  474. package/radiobutton/index.d.ts +201 -0
  475. package/rating/index.d.ts +218 -0
  476. package/ripple/index.d.ts +62 -0
  477. package/scroller/index.d.ts +614 -0
  478. package/scrollpanel/index.d.ts +161 -0
  479. package/scrolltop/index.d.ts +158 -0
  480. package/select/index.d.ts +923 -0
  481. package/selectbutton/index.d.ts +221 -0
  482. package/skeleton/index.d.ts +96 -0
  483. package/slider/index.d.ts +255 -0
  484. package/speeddial/index.d.ts +454 -0
  485. package/splitbutton/index.d.ts +306 -0
  486. package/splitter/index.d.ts +239 -0
  487. package/stepper/index.d.ts +297 -0
  488. package/steps/index.d.ts +152 -0
  489. package/styleclass/index.d.ts +115 -0
  490. package/table/index.d.ts +2700 -0
  491. package/tabs/index.d.ts +321 -0
  492. package/tag/index.d.ts +114 -0
  493. package/terminal/index.d.ts +134 -0
  494. package/textarea/index.d.ts +108 -0
  495. package/tieredmenu/index.d.ts +430 -0
  496. package/timeline/index.d.ts +170 -0
  497. package/toast/index.d.ts +320 -0
  498. package/togglebutton/index.d.ts +243 -0
  499. package/toggleswitch/index.d.ts +188 -0
  500. package/toolbar/index.d.ts +118 -0
  501. package/tooltip/index.d.ts +247 -0
  502. package/tree/index.d.ts +847 -0
  503. package/treeselect/index.d.ts +655 -0
  504. package/treetable/index.d.ts +1727 -0
  505. package/ts-helpers/index.d.ts +6 -0
  506. package/usestyle/index.d.ts +15 -0
  507. package/utils/index.d.ts +43 -0
@@ -0,0 +1,1493 @@
1
+ import * as i1 from '@angular/common';
2
+ import { CommonModule, isPlatformBrowser } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { Injectable, EventEmitter, inject, forwardRef, booleanAttribute, numberAttribute, ViewChild, Output, Input, ViewEncapsulation, Component, signal, effect, ContentChildren, ContentChild, ChangeDetectionStrategy, NgModule } from '@angular/core';
5
+ import * as i2 from '@angular/router';
6
+ import { RouterModule } from '@angular/router';
7
+ import { resolve, isNotEmpty, uuid, isEmpty, focus, findSingle, isPrintableCharacter, findLastIndex, isTouchDevice } from '@primeuix/utils';
8
+ import { SharedModule, PrimeTemplate } from 'primeng/api';
9
+ import * as i4 from 'primeng/badge';
10
+ import { BadgeModule } from 'primeng/badge';
11
+ import { BaseComponent } from 'primeng/basecomponent';
12
+ import { AngleDownIcon, AngleRightIcon, BarsIcon } from 'primeng/icons';
13
+ import { Ripple } from 'primeng/ripple';
14
+ import * as i3 from 'primeng/tooltip';
15
+ import { TooltipModule } from 'primeng/tooltip';
16
+ import { ZIndexUtils } from 'primeng/utils';
17
+ import { style } from '@primeuix/styles/megamenu';
18
+ import { BaseStyle } from 'primeng/base';
19
+
20
+ const inlineStyles = {
21
+ rootList: ({ instance }) => ({ 'max-height': instance.scrollHeight, overflow: 'auto' })
22
+ };
23
+ const classes = {
24
+ root: ({ instance }) => [
25
+ 'p-megamenu p-component',
26
+ {
27
+ 'p-megamenu-mobile': instance.queryMatches,
28
+ 'p-megamenu-mobile-active': instance.mobileActive,
29
+ 'p-megamenu-horizontal': instance.orientation === 'horizontal',
30
+ 'p-megamenu-vertical': instance.orientation === 'vertical'
31
+ }
32
+ ],
33
+ start: 'p-megamenu-start',
34
+ button: 'p-megamenu-button',
35
+ rootList: 'p-megamenu-root-list',
36
+ submenuLabel: ({ instance, processedItem }) => [
37
+ 'p-megamenu-submenu-label',
38
+ {
39
+ 'p-disabled': instance.isItemDisabled(processedItem)
40
+ }
41
+ ],
42
+ item: ({ instance, processedItem }) => [
43
+ 'p-megamenu-item',
44
+ instance.getItemProp(processedItem, 'styleClass'),
45
+ instance.getItemProp(processedItem, 'class'),
46
+ {
47
+ 'p-megamenu-item-active': instance.isItemActive(processedItem),
48
+ 'p-focus': instance.isItemFocused(processedItem),
49
+ 'p-disabled': instance.isItemDisabled(processedItem)
50
+ }
51
+ ],
52
+ itemContent: 'p-megamenu-item-content',
53
+ itemLink: 'p-megamenu-item-link',
54
+ itemIcon: 'p-megamenu-item-icon',
55
+ itemLabel: 'p-megamenu-item-label',
56
+ submenuIcon: 'p-megamenu-submenu-icon',
57
+ overlay: 'p-megamenu-overlay',
58
+ grid: 'p-megamenu-grid',
59
+ column: ({ instance, processedItem }) => {
60
+ let length = instance.isItemGroup(processedItem) ? processedItem.items.length : 0;
61
+ let columnClass;
62
+ if (instance.megaMenu.queryMatches)
63
+ columnClass = 'p-megamenu-col-12';
64
+ else {
65
+ switch (length) {
66
+ case 2:
67
+ columnClass = 'p-megamenu-col-6';
68
+ break;
69
+ case 3:
70
+ columnClass = 'p-megamenu-col-4';
71
+ break;
72
+ case 4:
73
+ columnClass = 'p-megamenu-col-3';
74
+ break;
75
+ case 6:
76
+ columnClass = 'p-megamenu-col-2';
77
+ break;
78
+ default:
79
+ columnClass = 'p-megamenu-col-12';
80
+ break;
81
+ }
82
+ }
83
+ return columnClass;
84
+ },
85
+ submenu: 'p-megamenu-submenu',
86
+ separator: 'p-megamenu-separator',
87
+ end: 'p-megamenu-end'
88
+ };
89
+ class MegaMenuStyle extends BaseStyle {
90
+ name = 'megamenu';
91
+ theme = style;
92
+ classes = classes;
93
+ inlineStyles = inlineStyles;
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: MegaMenuStyle, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
95
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: MegaMenuStyle });
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: MegaMenuStyle, decorators: [{
98
+ type: Injectable
99
+ }] });
100
+ /**
101
+ *
102
+ * MegaMenu is navigation component that displays submenus together.
103
+ *
104
+ * [Live Demo](https://www.primeng.org/megamenu/)
105
+ *
106
+ * @module megamenustyle
107
+ *
108
+ */
109
+ var MegaMenuClasses;
110
+ (function (MegaMenuClasses) {
111
+ /**
112
+ * Class name of the root element
113
+ */
114
+ MegaMenuClasses["root"] = "p-megamenu";
115
+ /**
116
+ * Class name of the start element
117
+ */
118
+ MegaMenuClasses["start"] = "p-megamenu-start";
119
+ /**
120
+ * Class name of the button element
121
+ */
122
+ MegaMenuClasses["button"] = "p-megamenu-button";
123
+ /**
124
+ * Class name of the root list element
125
+ */
126
+ MegaMenuClasses["rootList"] = "p-megamenu-root-list";
127
+ /**
128
+ * Class name of the submenu item element
129
+ */
130
+ MegaMenuClasses["submenuItem"] = "p-megamenu-submenu-item";
131
+ /**
132
+ * Class name of the item element
133
+ */
134
+ MegaMenuClasses["item"] = "p-megamenu-item";
135
+ /**
136
+ * Class name of the item content element
137
+ */
138
+ MegaMenuClasses["itemContent"] = "p-megamenu-item-content";
139
+ /**
140
+ * Class name of the item link element
141
+ */
142
+ MegaMenuClasses["itemLink"] = "p-megamenu-item-link";
143
+ /**
144
+ * Class name of the item icon element
145
+ */
146
+ MegaMenuClasses["itemIcon"] = "p-megamenu-item-icon";
147
+ /**
148
+ * Class name of the item label element
149
+ */
150
+ MegaMenuClasses["itemLabel"] = "p-megamenu-item-label";
151
+ /**
152
+ * Class name of the submenu icon element
153
+ */
154
+ MegaMenuClasses["submenuIcon"] = "p-megamenu-submenu-icon";
155
+ /**
156
+ * Class name of the panel element
157
+ */
158
+ MegaMenuClasses["panel"] = "p-megamenu-panel";
159
+ /**
160
+ * Class name of the grid element
161
+ */
162
+ MegaMenuClasses["grid"] = "p-megamenu-grid";
163
+ /**
164
+ * Class name of the submenu element
165
+ */
166
+ MegaMenuClasses["submenu"] = "p-megamenu-submenu";
167
+ /**
168
+ * Class name of the submenu item label element
169
+ */
170
+ MegaMenuClasses["submenuItemLabel"] = "p-megamenu-submenu-item-label";
171
+ /**
172
+ * Class name of the separator element
173
+ */
174
+ MegaMenuClasses["separator"] = "p-megamenu-separator";
175
+ /**
176
+ * Class name of the end element
177
+ */
178
+ MegaMenuClasses["end"] = "p-megamenu-end";
179
+ })(MegaMenuClasses || (MegaMenuClasses = {}));
180
+
181
+ class MegaMenuSub extends BaseComponent {
182
+ id;
183
+ items;
184
+ itemTemplate;
185
+ menuId;
186
+ ariaLabel;
187
+ ariaLabelledBy;
188
+ level = 0;
189
+ focusedItemId;
190
+ disabled = false;
191
+ orientation;
192
+ activeItem;
193
+ submenu;
194
+ queryMatches = false;
195
+ mobileActive = false;
196
+ scrollHeight;
197
+ tabindex = 0;
198
+ root = false;
199
+ itemClick = new EventEmitter();
200
+ itemMouseEnter = new EventEmitter();
201
+ menuFocus = new EventEmitter();
202
+ menuBlur = new EventEmitter();
203
+ menuKeydown = new EventEmitter();
204
+ menubarViewChild;
205
+ megaMenu = inject(forwardRef(() => MegaMenu));
206
+ _componentStyle = inject(MegaMenuStyle);
207
+ onItemClick(event, processedItem) {
208
+ this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });
209
+ this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });
210
+ }
211
+ getItemProp(processedItem, name, params = null) {
212
+ return processedItem && processedItem.item ? resolve(processedItem.item[name], params) : undefined;
213
+ }
214
+ getItemId(processedItem) {
215
+ return processedItem.item && processedItem.item?.id ? processedItem.item.id : `${this.menuId}_${processedItem.key}`;
216
+ }
217
+ getSubListId(processedItem) {
218
+ return `${this.getItemId(processedItem)}_list`;
219
+ }
220
+ getItemLabel(processedItem) {
221
+ return this.getItemProp(processedItem, 'label');
222
+ }
223
+ isSubmenuVisible(submenu) {
224
+ if (this.submenu && !this.root) {
225
+ return this.isItemVisible(submenu);
226
+ }
227
+ else {
228
+ return true;
229
+ }
230
+ }
231
+ isItemVisible(processedItem) {
232
+ return this.getItemProp(processedItem, 'visible') !== false;
233
+ }
234
+ isItemActive(processedItem) {
235
+ return isNotEmpty(this.activeItem) ? this.activeItem.key === processedItem.key : false;
236
+ }
237
+ isItemDisabled(processedItem) {
238
+ return this.getItemProp(processedItem, 'disabled');
239
+ }
240
+ isItemFocused(processedItem) {
241
+ return this.focusedItemId === this.getItemId(processedItem);
242
+ }
243
+ isItemGroup(processedItem) {
244
+ return isNotEmpty(processedItem.items);
245
+ }
246
+ getAriaSetSize() {
247
+ return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;
248
+ }
249
+ getAriaPosInset(index) {
250
+ return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;
251
+ }
252
+ onItemMouseEnter(param) {
253
+ const { event, processedItem } = param;
254
+ this.itemMouseEnter.emit({ originalEvent: event, processedItem });
255
+ }
256
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: MegaMenuSub, deps: null, target: i0.ɵɵFactoryTarget.Component });
257
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.4", type: MegaMenuSub, isStandalone: true, selector: "p-megaMenuSub, p-megamenu-sub", inputs: { id: "id", items: "items", itemTemplate: "itemTemplate", menuId: "menuId", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", level: ["level", "level", numberAttribute], focusedItemId: "focusedItemId", disabled: ["disabled", "disabled", booleanAttribute], orientation: "orientation", activeItem: "activeItem", submenu: "submenu", queryMatches: ["queryMatches", "queryMatches", booleanAttribute], mobileActive: ["mobileActive", "mobileActive", booleanAttribute], scrollHeight: "scrollHeight", tabindex: ["tabindex", "tabindex", numberAttribute], root: ["root", "root", booleanAttribute] }, outputs: { itemClick: "itemClick", itemMouseEnter: "itemMouseEnter", menuFocus: "menuFocus", menuBlur: "menuBlur", menuKeydown: "menuKeydown" }, viewQueries: [{ propertyName: "menubarViewChild", first: true, predicate: ["menubar"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
258
+ <ul
259
+ *ngIf="isSubmenuVisible(submenu)"
260
+ #menubar
261
+ [class]="root ? cx('rootList') : cx('submenu')"
262
+ [style]="sx('rootList')"
263
+ [attr.role]="root ? 'menubar' : 'menu'"
264
+ [attr.id]="id"
265
+ [attr.aria-orientation]="orientation"
266
+ [tabindex]="tabindex"
267
+ [attr.aria-activedescendant]="focusedItemId"
268
+ [attr.data-pc-section]="root ? 'root' : 'submenu'"
269
+ (keydown)="menuKeydown.emit($event)"
270
+ (focus)="menuFocus.emit($event)"
271
+ (blur)="menuBlur.emit($event)"
272
+ >
273
+ <li *ngIf="submenu" [class]="cn(cx('submenuLabel'), getItemProp(submenu, 'class'))" [style]="getItemProp(submenu, 'style')" role="presentation">
274
+ {{ getItemLabel(submenu) }}
275
+ </li>
276
+ <ng-template ngFor let-processedItem [ngForOf]="items" let-index="index">
277
+ <li
278
+ *ngIf="isItemVisible(processedItem) && getItemProp(processedItem, 'separator')"
279
+ [attr.id]="getItemId(processedItem)"
280
+ [style]="getItemProp(processedItem, 'style')"
281
+ [class]="cn(cx('separator'), this.getItemProp(processedItem, 'class'))"
282
+ role="separator"
283
+ [attr.data-pc-section]="'separator'"
284
+ ></li>
285
+ <li
286
+ #listItem
287
+ *ngIf="isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')"
288
+ role="menuitem"
289
+ [attr.id]="getItemId(processedItem)"
290
+ [attr.data-pc-section]="'menuitem'"
291
+ [attr.data-p-highlight]="isItemActive(processedItem)"
292
+ [attr.data-p-focused]="isItemFocused(processedItem)"
293
+ [attr.data-p-disabled]="isItemDisabled(processedItem)"
294
+ [attr.aria-label]="getItemLabel(processedItem)"
295
+ [attr.aria-disabled]="isItemDisabled(processedItem) || undefined"
296
+ [attr.aria-haspopup]="isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined"
297
+ [attr.aria-expanded]="isItemGroup(processedItem) ? isItemActive(processedItem) : undefined"
298
+ [attr.aria-level]="level + 1"
299
+ [attr.aria-setsize]="getAriaSetSize()"
300
+ [attr.aria-posinset]="getAriaPosInset(index)"
301
+ [ngStyle]="getItemProp(processedItem, 'style')"
302
+ [class]="cn(cx('item', { processedItem }), getItemProp(processedItem, 'styleClass'))"
303
+ pTooltip
304
+ [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
305
+ >
306
+ <div [class]="cx('itemContent')" [attr.data-pc-section]="'content'" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({ $event, processedItem })">
307
+ <ng-container *ngIf="!itemTemplate">
308
+ <a
309
+ *ngIf="!getItemProp(processedItem, 'routerLink')"
310
+ [attr.href]="getItemProp(processedItem, 'url')"
311
+ [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
312
+ [attr.data-pc-section]="'action'"
313
+ [target]="getItemProp(processedItem, 'target')"
314
+ [class]="cx('itemLink')"
315
+ [attr.tabindex]="-1"
316
+ pRipple
317
+ >
318
+ <span
319
+ *ngIf="getItemProp(processedItem, 'icon')"
320
+ [class]="cn(cx('itemIcon'), getItemProp(processedItem, 'icon'))"
321
+ [ngStyle]="getItemProp(processedItem, 'iconStyle')"
322
+ [attr.data-pc-section]="'icon'"
323
+ [attr.tabindex]="-1"
324
+ >
325
+ </span>
326
+ <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" [class]="cx('itemLabel')" [attr.data-pc-section]="'label'">
327
+ {{ getItemLabel(processedItem) }}
328
+ </span>
329
+ <ng-template #htmlLabel>
330
+ <span [class]="cx('itemLabel')" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
331
+ </ng-template>
332
+ <p-badge *ngIf="getItemProp(processedItem, 'badge')" [class]="getItemProp(processedItem, 'badgeStyleClass')" [value]="getItemProp(processedItem, 'badge')" />
333
+ <ng-container *ngIf="isItemGroup(processedItem)">
334
+ <ng-container *ngIf="!megaMenu.submenuIconTemplate && !megaMenu._submenuIconTemplate">
335
+ @if (orientation === 'horizontal' || mobileActive) {
336
+ <svg data-p-icon="angle-down" [class]="cx('submenuIcon')" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
337
+ } @else {
338
+ <svg data-p-icon="angle-right" [class]="cx('submenuIcon')" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'vertical'" [attr.aria-hidden]="true" />
339
+ }
340
+ </ng-container>
341
+ <ng-template *ngTemplateOutlet="megaMenu.submenuIconTemplate || megaMenu._submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
342
+ </ng-container>
343
+ </a>
344
+ <a
345
+ *ngIf="getItemProp(processedItem, 'routerLink')"
346
+ [routerLink]="getItemProp(processedItem, 'routerLink')"
347
+ [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
348
+ [attr.tabindex]="-1"
349
+ [attr.data-pc-section]="'action'"
350
+ [queryParams]="getItemProp(processedItem, 'queryParams')"
351
+ [routerLinkActive]="'p-megamenu-item-link-active'"
352
+ [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
353
+ [target]="getItemProp(processedItem, 'target')"
354
+ [class]="cx('itemLink')"
355
+ [fragment]="getItemProp(processedItem, 'fragment')"
356
+ [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
357
+ [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
358
+ [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
359
+ [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
360
+ [state]="getItemProp(processedItem, 'state')"
361
+ pRipple
362
+ >
363
+ <span
364
+ [class]="cn(cx('itemIcon'), getItemProp(processedItem, 'icon'))"
365
+ *ngIf="getItemProp(processedItem, 'icon')"
366
+ [ngStyle]="getItemProp(processedItem, 'iconStyle')"
367
+ [attr.data-pc-section]="'icon'"
368
+ [attr.tabindex]="-1"
369
+ ></span>
370
+ <span [class]="cx('itemLabel')" *ngIf="getItemProp(processedItem, 'escape'); else htmlRouteLabel">{{ getItemLabel(processedItem) }}</span>
371
+ <ng-template #htmlRouteLabel><span [class]="cx('itemLabel')" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span></ng-template>
372
+ <p-badge *ngIf="getItemProp(processedItem, 'badge')" [styleClass]="getItemProp(processedItem, 'badgeStyleClass')" [value]="getItemProp(processedItem, 'badge')" />
373
+ <ng-container *ngIf="isItemGroup(processedItem)">
374
+ <ng-container *ngIf="!megaMenu.submenuIconTemplate && !megaMenu._submenuIconTemplate">
375
+ <svg data-p-icon="angle-down" [class]="cx('submenuIcon')" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'horizontal'" [attr.aria-hidden]="true" />
376
+ <svg data-p-icon="angle-right" [class]="cx('submenuIcon')" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'vertical'" [attr.aria-hidden]="true" />
377
+ </ng-container>
378
+ <ng-template *ngTemplateOutlet="megaMenu.submenuIconTemplate || megaMenu._submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
379
+ </ng-container>
380
+ </a>
381
+ </ng-container>
382
+ <ng-container *ngIf="itemTemplate">
383
+ <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item }"></ng-template>
384
+ </ng-container>
385
+ </div>
386
+ <div *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)" [class]="cx('overlay')" [attr.data-pc-section]="'panel'">
387
+ <div [class]="cx('grid')" [attr.data-pc-section]="'grid'">
388
+ <div *ngFor="let col of processedItem.items" [class]="cx('column', { processedItem })">
389
+ <p-megamenu-sub
390
+ *ngFor="let submenu of col"
391
+ [id]="getSubListId(submenu)"
392
+ [submenu]="submenu"
393
+ [items]="submenu.items"
394
+ [itemTemplate]="itemTemplate"
395
+ [mobileActive]="mobileActive"
396
+ [menuId]="menuId"
397
+ [focusedItemId]="focusedItemId"
398
+ [level]="level + 1"
399
+ [root]="false"
400
+ (itemClick)="itemClick.emit($event)"
401
+ (itemMouseEnter)="onItemMouseEnter($event)"
402
+ >
403
+ </p-megamenu-sub>
404
+ </div>
405
+ </div>
406
+ </div>
407
+ </li>
408
+ </ng-template>
409
+ </ul>
410
+ `, isInline: true, dependencies: [{ kind: "component", type: MegaMenuSub, selector: "p-megaMenuSub, p-megamenu-sub", inputs: ["id", "items", "itemTemplate", "menuId", "ariaLabel", "ariaLabelledBy", "level", "focusedItemId", "disabled", "orientation", "activeItem", "submenu", "queryMatches", "mobileActive", "scrollHeight", "tabindex", "root"], outputs: ["itemClick", "itemMouseEnter", "menuFocus", "menuBlur", "menuKeydown"] }, { 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: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: Ripple, selector: "[pRipple]" }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "component", type: AngleDownIcon, selector: "[data-p-icon=\"angle-down\"]" }, { kind: "component", type: AngleRightIcon, selector: "[data-p-icon=\"angle-right\"]" }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i4.Badge, selector: "p-badge", inputs: ["styleClass", "badgeSize", "size", "severity", "value", "badgeDisabled"] }, { kind: "ngmodule", type: SharedModule }], encapsulation: i0.ViewEncapsulation.None });
411
+ }
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: MegaMenuSub, decorators: [{
413
+ type: Component,
414
+ args: [{
415
+ selector: 'p-megaMenuSub, p-megamenu-sub',
416
+ standalone: true,
417
+ imports: [CommonModule, RouterModule, Ripple, TooltipModule, AngleDownIcon, AngleRightIcon, BadgeModule, SharedModule],
418
+ template: `
419
+ <ul
420
+ *ngIf="isSubmenuVisible(submenu)"
421
+ #menubar
422
+ [class]="root ? cx('rootList') : cx('submenu')"
423
+ [style]="sx('rootList')"
424
+ [attr.role]="root ? 'menubar' : 'menu'"
425
+ [attr.id]="id"
426
+ [attr.aria-orientation]="orientation"
427
+ [tabindex]="tabindex"
428
+ [attr.aria-activedescendant]="focusedItemId"
429
+ [attr.data-pc-section]="root ? 'root' : 'submenu'"
430
+ (keydown)="menuKeydown.emit($event)"
431
+ (focus)="menuFocus.emit($event)"
432
+ (blur)="menuBlur.emit($event)"
433
+ >
434
+ <li *ngIf="submenu" [class]="cn(cx('submenuLabel'), getItemProp(submenu, 'class'))" [style]="getItemProp(submenu, 'style')" role="presentation">
435
+ {{ getItemLabel(submenu) }}
436
+ </li>
437
+ <ng-template ngFor let-processedItem [ngForOf]="items" let-index="index">
438
+ <li
439
+ *ngIf="isItemVisible(processedItem) && getItemProp(processedItem, 'separator')"
440
+ [attr.id]="getItemId(processedItem)"
441
+ [style]="getItemProp(processedItem, 'style')"
442
+ [class]="cn(cx('separator'), this.getItemProp(processedItem, 'class'))"
443
+ role="separator"
444
+ [attr.data-pc-section]="'separator'"
445
+ ></li>
446
+ <li
447
+ #listItem
448
+ *ngIf="isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')"
449
+ role="menuitem"
450
+ [attr.id]="getItemId(processedItem)"
451
+ [attr.data-pc-section]="'menuitem'"
452
+ [attr.data-p-highlight]="isItemActive(processedItem)"
453
+ [attr.data-p-focused]="isItemFocused(processedItem)"
454
+ [attr.data-p-disabled]="isItemDisabled(processedItem)"
455
+ [attr.aria-label]="getItemLabel(processedItem)"
456
+ [attr.aria-disabled]="isItemDisabled(processedItem) || undefined"
457
+ [attr.aria-haspopup]="isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined"
458
+ [attr.aria-expanded]="isItemGroup(processedItem) ? isItemActive(processedItem) : undefined"
459
+ [attr.aria-level]="level + 1"
460
+ [attr.aria-setsize]="getAriaSetSize()"
461
+ [attr.aria-posinset]="getAriaPosInset(index)"
462
+ [ngStyle]="getItemProp(processedItem, 'style')"
463
+ [class]="cn(cx('item', { processedItem }), getItemProp(processedItem, 'styleClass'))"
464
+ pTooltip
465
+ [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
466
+ >
467
+ <div [class]="cx('itemContent')" [attr.data-pc-section]="'content'" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({ $event, processedItem })">
468
+ <ng-container *ngIf="!itemTemplate">
469
+ <a
470
+ *ngIf="!getItemProp(processedItem, 'routerLink')"
471
+ [attr.href]="getItemProp(processedItem, 'url')"
472
+ [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
473
+ [attr.data-pc-section]="'action'"
474
+ [target]="getItemProp(processedItem, 'target')"
475
+ [class]="cx('itemLink')"
476
+ [attr.tabindex]="-1"
477
+ pRipple
478
+ >
479
+ <span
480
+ *ngIf="getItemProp(processedItem, 'icon')"
481
+ [class]="cn(cx('itemIcon'), getItemProp(processedItem, 'icon'))"
482
+ [ngStyle]="getItemProp(processedItem, 'iconStyle')"
483
+ [attr.data-pc-section]="'icon'"
484
+ [attr.tabindex]="-1"
485
+ >
486
+ </span>
487
+ <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" [class]="cx('itemLabel')" [attr.data-pc-section]="'label'">
488
+ {{ getItemLabel(processedItem) }}
489
+ </span>
490
+ <ng-template #htmlLabel>
491
+ <span [class]="cx('itemLabel')" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
492
+ </ng-template>
493
+ <p-badge *ngIf="getItemProp(processedItem, 'badge')" [class]="getItemProp(processedItem, 'badgeStyleClass')" [value]="getItemProp(processedItem, 'badge')" />
494
+ <ng-container *ngIf="isItemGroup(processedItem)">
495
+ <ng-container *ngIf="!megaMenu.submenuIconTemplate && !megaMenu._submenuIconTemplate">
496
+ @if (orientation === 'horizontal' || mobileActive) {
497
+ <svg data-p-icon="angle-down" [class]="cx('submenuIcon')" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
498
+ } @else {
499
+ <svg data-p-icon="angle-right" [class]="cx('submenuIcon')" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'vertical'" [attr.aria-hidden]="true" />
500
+ }
501
+ </ng-container>
502
+ <ng-template *ngTemplateOutlet="megaMenu.submenuIconTemplate || megaMenu._submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
503
+ </ng-container>
504
+ </a>
505
+ <a
506
+ *ngIf="getItemProp(processedItem, 'routerLink')"
507
+ [routerLink]="getItemProp(processedItem, 'routerLink')"
508
+ [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
509
+ [attr.tabindex]="-1"
510
+ [attr.data-pc-section]="'action'"
511
+ [queryParams]="getItemProp(processedItem, 'queryParams')"
512
+ [routerLinkActive]="'p-megamenu-item-link-active'"
513
+ [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
514
+ [target]="getItemProp(processedItem, 'target')"
515
+ [class]="cx('itemLink')"
516
+ [fragment]="getItemProp(processedItem, 'fragment')"
517
+ [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
518
+ [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
519
+ [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
520
+ [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
521
+ [state]="getItemProp(processedItem, 'state')"
522
+ pRipple
523
+ >
524
+ <span
525
+ [class]="cn(cx('itemIcon'), getItemProp(processedItem, 'icon'))"
526
+ *ngIf="getItemProp(processedItem, 'icon')"
527
+ [ngStyle]="getItemProp(processedItem, 'iconStyle')"
528
+ [attr.data-pc-section]="'icon'"
529
+ [attr.tabindex]="-1"
530
+ ></span>
531
+ <span [class]="cx('itemLabel')" *ngIf="getItemProp(processedItem, 'escape'); else htmlRouteLabel">{{ getItemLabel(processedItem) }}</span>
532
+ <ng-template #htmlRouteLabel><span [class]="cx('itemLabel')" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span></ng-template>
533
+ <p-badge *ngIf="getItemProp(processedItem, 'badge')" [styleClass]="getItemProp(processedItem, 'badgeStyleClass')" [value]="getItemProp(processedItem, 'badge')" />
534
+ <ng-container *ngIf="isItemGroup(processedItem)">
535
+ <ng-container *ngIf="!megaMenu.submenuIconTemplate && !megaMenu._submenuIconTemplate">
536
+ <svg data-p-icon="angle-down" [class]="cx('submenuIcon')" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'horizontal'" [attr.aria-hidden]="true" />
537
+ <svg data-p-icon="angle-right" [class]="cx('submenuIcon')" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'vertical'" [attr.aria-hidden]="true" />
538
+ </ng-container>
539
+ <ng-template *ngTemplateOutlet="megaMenu.submenuIconTemplate || megaMenu._submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
540
+ </ng-container>
541
+ </a>
542
+ </ng-container>
543
+ <ng-container *ngIf="itemTemplate">
544
+ <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item }"></ng-template>
545
+ </ng-container>
546
+ </div>
547
+ <div *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)" [class]="cx('overlay')" [attr.data-pc-section]="'panel'">
548
+ <div [class]="cx('grid')" [attr.data-pc-section]="'grid'">
549
+ <div *ngFor="let col of processedItem.items" [class]="cx('column', { processedItem })">
550
+ <p-megamenu-sub
551
+ *ngFor="let submenu of col"
552
+ [id]="getSubListId(submenu)"
553
+ [submenu]="submenu"
554
+ [items]="submenu.items"
555
+ [itemTemplate]="itemTemplate"
556
+ [mobileActive]="mobileActive"
557
+ [menuId]="menuId"
558
+ [focusedItemId]="focusedItemId"
559
+ [level]="level + 1"
560
+ [root]="false"
561
+ (itemClick)="itemClick.emit($event)"
562
+ (itemMouseEnter)="onItemMouseEnter($event)"
563
+ >
564
+ </p-megamenu-sub>
565
+ </div>
566
+ </div>
567
+ </div>
568
+ </li>
569
+ </ng-template>
570
+ </ul>
571
+ `,
572
+ encapsulation: ViewEncapsulation.None
573
+ }]
574
+ }], propDecorators: { id: [{
575
+ type: Input
576
+ }], items: [{
577
+ type: Input
578
+ }], itemTemplate: [{
579
+ type: Input
580
+ }], menuId: [{
581
+ type: Input
582
+ }], ariaLabel: [{
583
+ type: Input
584
+ }], ariaLabelledBy: [{
585
+ type: Input
586
+ }], level: [{
587
+ type: Input,
588
+ args: [{ transform: numberAttribute }]
589
+ }], focusedItemId: [{
590
+ type: Input
591
+ }], disabled: [{
592
+ type: Input,
593
+ args: [{ transform: booleanAttribute }]
594
+ }], orientation: [{
595
+ type: Input
596
+ }], activeItem: [{
597
+ type: Input
598
+ }], submenu: [{
599
+ type: Input
600
+ }], queryMatches: [{
601
+ type: Input,
602
+ args: [{ transform: booleanAttribute }]
603
+ }], mobileActive: [{
604
+ type: Input,
605
+ args: [{ transform: booleanAttribute }]
606
+ }], scrollHeight: [{
607
+ type: Input
608
+ }], tabindex: [{
609
+ type: Input,
610
+ args: [{ transform: numberAttribute }]
611
+ }], root: [{
612
+ type: Input,
613
+ args: [{ transform: booleanAttribute }]
614
+ }], itemClick: [{
615
+ type: Output
616
+ }], itemMouseEnter: [{
617
+ type: Output
618
+ }], menuFocus: [{
619
+ type: Output
620
+ }], menuBlur: [{
621
+ type: Output
622
+ }], menuKeydown: [{
623
+ type: Output
624
+ }], menubarViewChild: [{
625
+ type: ViewChild,
626
+ args: ['menubar', { static: true }]
627
+ }] } });
628
+ /**
629
+ * MegaMenu is navigation component that displays submenus together.
630
+ * @group Components
631
+ */
632
+ class MegaMenu extends BaseComponent {
633
+ /**
634
+ * An array of menuitems.
635
+ * @group Props
636
+ */
637
+ set model(value) {
638
+ this._model = value;
639
+ this._processedItems = this.createProcessedItems(this._model || []);
640
+ }
641
+ get model() {
642
+ return this._model;
643
+ }
644
+ /**
645
+ * Class of the element.
646
+ * @deprecated since v20.0.0, use `class` instead.
647
+ * @group Props
648
+ */
649
+ styleClass;
650
+ /**
651
+ * Defines the orientation.
652
+ * @group Props
653
+ */
654
+ orientation = 'horizontal';
655
+ /**
656
+ * Current id state as a string.
657
+ * @group Props
658
+ */
659
+ id;
660
+ /**
661
+ * Defines a string value that labels an interactive element.
662
+ * @group Props
663
+ */
664
+ ariaLabel;
665
+ /**
666
+ * Identifier of the underlying input element.
667
+ * @group Props
668
+ */
669
+ ariaLabelledBy;
670
+ /**
671
+ * The breakpoint to define the maximum width boundary.
672
+ * @group Props
673
+ */
674
+ breakpoint = '960px';
675
+ /**
676
+ * Height of the viewport, a scrollbar is defined if height of list exceeds this value.
677
+ * @group Props
678
+ */
679
+ scrollHeight = '20rem';
680
+ /**
681
+ * When present, it specifies that the component should be disabled.
682
+ * @group Props
683
+ */
684
+ disabled = false;
685
+ /**
686
+ * Index of the element in tabbing order.
687
+ * @group Props
688
+ */
689
+ tabindex = 0;
690
+ /**
691
+ * Defines template option for start.
692
+ * @group Templates
693
+ */
694
+ startTemplate;
695
+ /**
696
+ * Defines template option for end.
697
+ * @group Templates
698
+ */
699
+ endTemplate;
700
+ /**
701
+ * Defines template option for menu icon.
702
+ * @group Templates
703
+ */
704
+ menuIconTemplate;
705
+ /**
706
+ * Defines template option for submenu icon.
707
+ * @group Templates
708
+ */
709
+ submenuIconTemplate;
710
+ /**
711
+ * Defines template option for submenu icon.
712
+ * @group Templates
713
+ */
714
+ itemTemplate;
715
+ /**
716
+ * Custom menu button template on responsive mode.
717
+ * @group Templates
718
+ */
719
+ buttonTemplate;
720
+ /**
721
+ * Custom menu button icon template on responsive mode.
722
+ * @group Templates
723
+ */
724
+ buttonIconTemplate;
725
+ templates;
726
+ menubuttonViewChild;
727
+ rootmenu;
728
+ _startTemplate;
729
+ _endTemplate;
730
+ _menuIconTemplate;
731
+ _submenuIconTemplate;
732
+ _itemTemplate;
733
+ _buttonTemplate;
734
+ _buttonIconTemplate;
735
+ outsideClickListener;
736
+ resizeListener;
737
+ dirty = false;
738
+ focused = false;
739
+ activeItem = signal(null, ...(ngDevMode ? [{ debugName: "activeItem" }] : []));
740
+ focusedItemInfo = signal({ index: -1, level: 0, parentKey: '', item: null }, ...(ngDevMode ? [{ debugName: "focusedItemInfo" }] : []));
741
+ searchValue = '';
742
+ searchTimeout;
743
+ _processedItems;
744
+ _model;
745
+ _componentStyle = inject(MegaMenuStyle);
746
+ matchMediaListener;
747
+ query;
748
+ queryMatches = false;
749
+ mobileActive = false;
750
+ get visibleItems() {
751
+ const processedItem = isNotEmpty(this.activeItem()) ? this.activeItem() : null;
752
+ return processedItem
753
+ ? processedItem.items.reduce((items, col) => {
754
+ col.forEach((submenu) => {
755
+ submenu.items.forEach((a) => {
756
+ items.push(a);
757
+ });
758
+ });
759
+ return items;
760
+ }, [])
761
+ : this.processedItems;
762
+ }
763
+ get processedItems() {
764
+ if (!this._processedItems || !this._processedItems.length) {
765
+ this._processedItems = this.createProcessedItems(this.model || []);
766
+ }
767
+ return this._processedItems;
768
+ }
769
+ get focusedItemId() {
770
+ const focusedItem = this.focusedItemInfo();
771
+ return focusedItem?.item && focusedItem.item?.id ? focusedItem.item.id : isNotEmpty(focusedItem.key) ? `${this.id}_${focusedItem.key}` : null;
772
+ }
773
+ constructor() {
774
+ super();
775
+ effect(() => {
776
+ const activeItem = this.activeItem();
777
+ if (isNotEmpty(activeItem)) {
778
+ this.bindOutsideClickListener();
779
+ this.bindResizeListener();
780
+ }
781
+ else {
782
+ this.unbindOutsideClickListener();
783
+ this.unbindResizeListener();
784
+ }
785
+ });
786
+ }
787
+ ngOnInit() {
788
+ super.ngOnInit();
789
+ this.bindMatchMediaListener();
790
+ this.id = this.id || uuid('pn_id_');
791
+ }
792
+ ngAfterContentInit() {
793
+ this.templates?.forEach((item) => {
794
+ switch (item.getType()) {
795
+ case 'start':
796
+ this._startTemplate = item.template;
797
+ break;
798
+ case 'end':
799
+ this._endTemplate = item.template;
800
+ break;
801
+ case 'menuicon':
802
+ this._menuIconTemplate = item.template;
803
+ break;
804
+ case 'submenuicon':
805
+ this._submenuIconTemplate = item.template;
806
+ break;
807
+ case 'item':
808
+ this._itemTemplate = item.template;
809
+ break;
810
+ case 'button':
811
+ this._buttonTemplate = item.template;
812
+ break;
813
+ case 'buttonicon':
814
+ this._buttonIconTemplate = item.template;
815
+ break;
816
+ default:
817
+ this._itemTemplate = item.template;
818
+ break;
819
+ }
820
+ });
821
+ }
822
+ bindMatchMediaListener() {
823
+ if (isPlatformBrowser(this.platformId)) {
824
+ if (!this.matchMediaListener) {
825
+ const query = window.matchMedia(`(max-width: ${this.breakpoint})`);
826
+ this.query = query;
827
+ this.queryMatches = query.matches;
828
+ this.matchMediaListener = () => {
829
+ this.queryMatches = query.matches;
830
+ this.mobileActive = false;
831
+ this.cd.markForCheck();
832
+ };
833
+ query.addEventListener('change', this.matchMediaListener);
834
+ }
835
+ }
836
+ }
837
+ unbindMatchMediaListener() {
838
+ if (this.matchMediaListener) {
839
+ this.query.removeEventListener('change', this.matchMediaListener);
840
+ this.matchMediaListener = null;
841
+ }
842
+ }
843
+ createProcessedItems(items, level = 0, parent = {}, parentKey = '', columnIndex) {
844
+ const processedItems = [];
845
+ items &&
846
+ items.forEach((item, index) => {
847
+ const key = (parentKey !== '' ? parentKey + '_' : '') + (columnIndex !== undefined ? columnIndex + '_' : '') + index;
848
+ const newItem = {
849
+ item,
850
+ index,
851
+ level,
852
+ key,
853
+ parent,
854
+ parentKey,
855
+ columnIndex: columnIndex !== undefined ? columnIndex : parent.columnIndex !== undefined ? parent.columnIndex : index
856
+ };
857
+ newItem['items'] =
858
+ level === 0 && item.items && item.items.length > 0 ? item.items.map((_items, _index) => this.createProcessedItems(_items, level + 1, newItem, key, _index)) : this.createProcessedItems(item.items, level + 1, newItem, key);
859
+ processedItems.push(newItem);
860
+ });
861
+ return processedItems;
862
+ }
863
+ getItemProp(item, name) {
864
+ return item ? resolve(item[name]) : undefined;
865
+ }
866
+ onItemClick(event) {
867
+ const { originalEvent, processedItem } = event;
868
+ const grouped = this.isProcessedItemGroup(processedItem);
869
+ const root = isEmpty(processedItem.parent);
870
+ const selected = this.isSelected(processedItem);
871
+ if (selected) {
872
+ const { index, key, parentKey, item } = processedItem;
873
+ this.activeItem.set(null);
874
+ this.focusedItemInfo.set({ index, key, parentKey, item });
875
+ this.dirty = !root;
876
+ if (!this.mobileActive) {
877
+ focus(this.rootmenu?.menubarViewChild?.nativeElement, { preventScroll: true });
878
+ }
879
+ }
880
+ else {
881
+ if (grouped) {
882
+ this.onItemChange(event);
883
+ }
884
+ else {
885
+ this.hide(originalEvent);
886
+ }
887
+ }
888
+ }
889
+ onItemMouseEnter(event) {
890
+ if (!this.mobileActive && this.dirty) {
891
+ this.onItemChange(event);
892
+ }
893
+ }
894
+ menuButtonClick(event) {
895
+ this.toggle(event);
896
+ }
897
+ menuButtonKeydown(event) {
898
+ (event.code === 'Enter' || event.code === 'NumpadEnter' || event.code === 'Space') && this.menuButtonClick(event);
899
+ }
900
+ toggle(event) {
901
+ if (this.mobileActive) {
902
+ this.mobileActive = false;
903
+ ZIndexUtils.clear(this.rootmenu.el.nativeElement);
904
+ this.hide();
905
+ }
906
+ else {
907
+ this.mobileActive = true;
908
+ ZIndexUtils.set('menu', this.rootmenu.el.nativeElement, this.config.zIndex.menu);
909
+ setTimeout(() => {
910
+ this.show();
911
+ }, 0);
912
+ }
913
+ this.bindOutsideClickListener();
914
+ event.preventDefault();
915
+ }
916
+ show() {
917
+ this.focusedItemInfo.set({ index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '' });
918
+ focus(this.rootmenu?.el.nativeElement);
919
+ }
920
+ scrollInView(index = -1) {
921
+ const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;
922
+ let element;
923
+ if (id === null && this.queryMatches) {
924
+ element = this.menubuttonViewChild.nativeElement;
925
+ }
926
+ else {
927
+ element = findSingle(this.rootmenu?.menubarViewChild?.nativeElement, `li[id="${id}"]`);
928
+ }
929
+ if (element) {
930
+ element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });
931
+ }
932
+ }
933
+ onItemChange(event) {
934
+ const { processedItem, isFocus } = event;
935
+ if (isEmpty(processedItem))
936
+ return;
937
+ const { index, key, parentKey, items, item } = processedItem;
938
+ const grouped = isNotEmpty(items);
939
+ if (grouped) {
940
+ this.activeItem.set(processedItem);
941
+ }
942
+ this.focusedItemInfo.set({ index, key, parentKey, item });
943
+ grouped && (this.dirty = true);
944
+ isFocus && focus(this.rootmenu?.menubarViewChild?.nativeElement);
945
+ }
946
+ hide(event, isFocus) {
947
+ if (this.mobileActive) {
948
+ this.mobileActive = false;
949
+ setTimeout(() => {
950
+ focus(this.menubuttonViewChild?.nativeElement);
951
+ this.scrollInView();
952
+ }, 100);
953
+ }
954
+ this.activeItem.set(null);
955
+ this.focusedItemInfo.set({ index: -1, key: '', parentKey: '', item: null });
956
+ isFocus && focus(this.rootmenu?.menubarViewChild?.nativeElement);
957
+ this.dirty = false;
958
+ }
959
+ onMenuFocus(event) {
960
+ this.focused = true;
961
+ if (this.focusedItemInfo().index === -1) {
962
+ const index = this.findFirstFocusedItemIndex();
963
+ const processedItem = this.findVisibleItem(index);
964
+ this.focusedItemInfo.set({ index, key: processedItem.key, parentKey: processedItem.parentKey, item: processedItem.item });
965
+ }
966
+ }
967
+ onMenuBlur(event) {
968
+ this.focused = false;
969
+ this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });
970
+ this.searchValue = '';
971
+ this.dirty = false;
972
+ }
973
+ onKeyDown(event) {
974
+ const metaKey = event.metaKey || event.ctrlKey;
975
+ switch (event.code) {
976
+ case 'ArrowDown':
977
+ this.onArrowDownKey(event);
978
+ break;
979
+ case 'ArrowUp':
980
+ this.onArrowUpKey(event);
981
+ break;
982
+ case 'ArrowLeft':
983
+ this.onArrowLeftKey(event);
984
+ break;
985
+ case 'ArrowRight':
986
+ this.onArrowRightKey(event);
987
+ break;
988
+ case 'Home':
989
+ this.onHomeKey(event);
990
+ break;
991
+ case 'End':
992
+ this.onEndKey(event);
993
+ break;
994
+ case 'Space':
995
+ this.onSpaceKey(event);
996
+ break;
997
+ case 'Enter':
998
+ this.onEnterKey(event);
999
+ break;
1000
+ case 'Escape':
1001
+ this.onEscapeKey(event);
1002
+ break;
1003
+ case 'Tab':
1004
+ this.onTabKey(event);
1005
+ break;
1006
+ case 'PageDown':
1007
+ case 'PageUp':
1008
+ case 'Backspace':
1009
+ case 'ShiftLeft':
1010
+ case 'ShiftRight':
1011
+ //NOOP
1012
+ break;
1013
+ default:
1014
+ if (!metaKey && isPrintableCharacter(event.key)) {
1015
+ this.searchItems(event, event.key);
1016
+ }
1017
+ break;
1018
+ }
1019
+ }
1020
+ findFirstFocusedItemIndex() {
1021
+ const selectedIndex = this.findSelectedItemIndex();
1022
+ return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;
1023
+ }
1024
+ findFirstItemIndex() {
1025
+ return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));
1026
+ }
1027
+ findSelectedItemIndex() {
1028
+ return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));
1029
+ }
1030
+ isProcessedItemGroup(processedItem) {
1031
+ return processedItem && isNotEmpty(processedItem.items);
1032
+ }
1033
+ isSelected(processedItem) {
1034
+ return isNotEmpty(this.activeItem()) ? this.activeItem().key === processedItem.key : false;
1035
+ }
1036
+ isValidSelectedItem(processedItem) {
1037
+ return this.isValidItem(processedItem) && this.isSelected(processedItem);
1038
+ }
1039
+ isValidItem(processedItem) {
1040
+ return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item);
1041
+ }
1042
+ isItemDisabled(item) {
1043
+ return this.getItemProp(item, 'disabled');
1044
+ }
1045
+ isItemSeparator(item) {
1046
+ return this.getItemProp(item, 'separator');
1047
+ }
1048
+ isItemMatched(processedItem) {
1049
+ return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());
1050
+ }
1051
+ isProccessedItemGroup(processedItem) {
1052
+ return processedItem && isNotEmpty(processedItem.items);
1053
+ }
1054
+ searchItems(event, char) {
1055
+ this.searchValue = (this.searchValue || '') + char;
1056
+ let itemIndex = -1;
1057
+ let matched = false;
1058
+ if (this.focusedItemInfo().index !== -1) {
1059
+ itemIndex = this.visibleItems.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));
1060
+ itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;
1061
+ }
1062
+ else {
1063
+ itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));
1064
+ }
1065
+ if (itemIndex !== -1) {
1066
+ matched = true;
1067
+ }
1068
+ if (itemIndex === -1 && this.focusedItemInfo().index === -1) {
1069
+ itemIndex = this.findFirstFocusedItemIndex();
1070
+ }
1071
+ if (itemIndex !== -1) {
1072
+ this.changeFocusedItemInfo(event, itemIndex);
1073
+ }
1074
+ if (this.searchTimeout) {
1075
+ clearTimeout(this.searchTimeout);
1076
+ }
1077
+ this.searchTimeout = setTimeout(() => {
1078
+ this.searchValue = '';
1079
+ this.searchTimeout = null;
1080
+ }, 500);
1081
+ return matched;
1082
+ }
1083
+ getProccessedItemLabel(processedItem) {
1084
+ return processedItem ? this.getItemLabel(processedItem.item) : undefined;
1085
+ }
1086
+ getItemLabel(item) {
1087
+ return this.getItemProp(item, 'label');
1088
+ }
1089
+ changeFocusedItemInfo(event, index) {
1090
+ const processedItem = this.findVisibleItem(index);
1091
+ if (isNotEmpty(processedItem)) {
1092
+ const { key, parentKey, item } = processedItem;
1093
+ this.focusedItemInfo.set({ index, key: key ? key : '', parentKey, item });
1094
+ }
1095
+ this.scrollInView();
1096
+ }
1097
+ onArrowDownKey(event) {
1098
+ if (this.orientation === 'horizontal') {
1099
+ if (isNotEmpty(this.activeItem()) && this.activeItem().key === this.focusedItemInfo().key) {
1100
+ const { key, item } = this.activeItem();
1101
+ this.focusedItemInfo.set({ index: -1, key: '', parentKey: key, item });
1102
+ }
1103
+ else {
1104
+ const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1105
+ const grouped = this.isProccessedItemGroup(processedItem);
1106
+ if (grouped) {
1107
+ const { parentKey, key, item } = processedItem;
1108
+ this.onItemChange({ originalEvent: event, processedItem });
1109
+ this.focusedItemInfo.set({ index: -1, key: key, parentKey: parentKey, item: item });
1110
+ this.searchValue = '';
1111
+ }
1112
+ }
1113
+ }
1114
+ const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();
1115
+ this.changeFocusedItemInfo(event, itemIndex);
1116
+ event.preventDefault();
1117
+ }
1118
+ onArrowRightKey(event) {
1119
+ const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1120
+ const grouped = this.isProccessedItemGroup(processedItem);
1121
+ if (grouped) {
1122
+ if (this.orientation === 'vertical') {
1123
+ if (isNotEmpty(this.activeItem()) && this.activeItem().key === processedItem.key) {
1124
+ this.focusedItemInfo.set({ index: -1, key: '', parentKey: this.activeItem().key, item: processedItem.item });
1125
+ }
1126
+ else {
1127
+ const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1128
+ const grouped = this.isProccessedItemGroup(processedItem);
1129
+ if (grouped) {
1130
+ this.onItemChange({ originalEvent: event, processedItem });
1131
+ this.focusedItemInfo.set({
1132
+ index: -1,
1133
+ key: processedItem.key,
1134
+ parentKey: processedItem.parentKey,
1135
+ item: processedItem.item
1136
+ });
1137
+ this.searchValue = '';
1138
+ }
1139
+ }
1140
+ }
1141
+ const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();
1142
+ this.changeFocusedItemInfo(event, itemIndex);
1143
+ }
1144
+ else {
1145
+ const columnIndex = processedItem.columnIndex + 1;
1146
+ const itemIndex = this.visibleItems.findIndex((item) => item.columnIndex === columnIndex);
1147
+ itemIndex !== -1 && this.changeFocusedItemInfo(event, itemIndex);
1148
+ }
1149
+ event.preventDefault();
1150
+ }
1151
+ onArrowUpKey(event) {
1152
+ if (event.altKey && this.orientation === 'horizontal') {
1153
+ if (this.focusedItemInfo().index !== -1) {
1154
+ const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1155
+ const grouped = this.isProccessedItemGroup(processedItem);
1156
+ if (!grouped && isNotEmpty(this.activeItem)) {
1157
+ if (this.focusedItemInfo().index === 0) {
1158
+ this.focusedItemInfo.set({
1159
+ index: this.activeItem().index,
1160
+ key: this.activeItem().key,
1161
+ parentKey: this.activeItem().parentKey,
1162
+ item: processedItem.item
1163
+ });
1164
+ this.activeItem.set(null);
1165
+ }
1166
+ else {
1167
+ this.changeFocusedItemInfo(event, this.findFirstItemIndex());
1168
+ }
1169
+ }
1170
+ }
1171
+ event.preventDefault();
1172
+ }
1173
+ else {
1174
+ const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();
1175
+ this.changeFocusedItemInfo(event, itemIndex);
1176
+ event.preventDefault();
1177
+ }
1178
+ }
1179
+ onArrowLeftKey(event) {
1180
+ const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1181
+ const grouped = this.isProccessedItemGroup(processedItem);
1182
+ if (grouped) {
1183
+ if (this.orientation === 'horizontal') {
1184
+ const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();
1185
+ this.changeFocusedItemInfo(event, itemIndex);
1186
+ }
1187
+ }
1188
+ else {
1189
+ if (this.orientation === 'vertical' && isNotEmpty(this.activeItem())) {
1190
+ if (processedItem.columnIndex === 0) {
1191
+ this.focusedItemInfo.set({
1192
+ index: this.activeItem().index,
1193
+ key: this.activeItem().key,
1194
+ parentKey: this.activeItem().parentKey,
1195
+ item: processedItem.item
1196
+ });
1197
+ this.activeItem.set(null);
1198
+ }
1199
+ }
1200
+ const columnIndex = processedItem.columnIndex - 1;
1201
+ const itemIndex = this.visibleItems.findIndex((item) => item.columnIndex === columnIndex);
1202
+ itemIndex !== -1 && this.changeFocusedItemInfo(event, itemIndex);
1203
+ }
1204
+ event.preventDefault();
1205
+ }
1206
+ onHomeKey(event) {
1207
+ this.changeFocusedItemInfo(event, this.findFirstItemIndex());
1208
+ event.preventDefault();
1209
+ }
1210
+ onEndKey(event) {
1211
+ this.changeFocusedItemInfo(event, this.findLastItemIndex());
1212
+ event.preventDefault();
1213
+ }
1214
+ onSpaceKey(event) {
1215
+ this.onEnterKey(event);
1216
+ }
1217
+ onEscapeKey(event) {
1218
+ if (isNotEmpty(this.activeItem())) {
1219
+ this.focusedItemInfo.set({ index: this.activeItem().index, key: this.activeItem().key, item: this.activeItem().item });
1220
+ this.activeItem.set(null);
1221
+ }
1222
+ event.preventDefault();
1223
+ }
1224
+ onTabKey(event) {
1225
+ if (this.focusedItemInfo().index !== -1) {
1226
+ const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1227
+ const grouped = this.isProccessedItemGroup(processedItem);
1228
+ !grouped && this.onItemChange({ originalEvent: event, processedItem });
1229
+ }
1230
+ this.hide();
1231
+ }
1232
+ onEnterKey(event) {
1233
+ if (this.focusedItemInfo().index !== -1) {
1234
+ const element = findSingle(this.rootmenu?.el?.nativeElement, `li[id="${`${this.focusedItemId}`}"]`);
1235
+ const anchorElement = element && findSingle(element, 'a[data-pc-section="action"]');
1236
+ anchorElement ? anchorElement.click() : element && element.click();
1237
+ const processedItem = this.visibleItems[this.focusedItemInfo().index];
1238
+ const grouped = this.isProccessedItemGroup(processedItem);
1239
+ !grouped && this.changeFocusedItemInfo(event, this.findFirstFocusedItemIndex());
1240
+ }
1241
+ event.preventDefault();
1242
+ }
1243
+ findVisibleItem(index) {
1244
+ return isNotEmpty(this.visibleItems) ? this.visibleItems[index] : null;
1245
+ }
1246
+ findLastFocusedItemIndex() {
1247
+ const selectedIndex = this.findSelectedItemIndex();
1248
+ return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;
1249
+ }
1250
+ findLastItemIndex() {
1251
+ return findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));
1252
+ }
1253
+ findPrevItemIndex(index) {
1254
+ const matchedItemIndex = index > 0 ? findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;
1255
+ return matchedItemIndex > -1 ? matchedItemIndex : index;
1256
+ }
1257
+ findNextItemIndex(index) {
1258
+ const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;
1259
+ return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;
1260
+ }
1261
+ bindResizeListener() {
1262
+ if (!this.resizeListener) {
1263
+ this.resizeListener = (event) => {
1264
+ if (!isTouchDevice()) {
1265
+ this.hide(event, true);
1266
+ }
1267
+ this.mobileActive = false;
1268
+ };
1269
+ window.addEventListener('resize', this.resizeListener);
1270
+ }
1271
+ }
1272
+ bindOutsideClickListener() {
1273
+ if (isPlatformBrowser(this.platformId)) {
1274
+ if (!this.outsideClickListener) {
1275
+ this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {
1276
+ const isOutsideContainer = this.el?.nativeElement !== event.target && !this.el?.nativeElement.contains(event.target);
1277
+ if (isOutsideContainer) {
1278
+ this.hide();
1279
+ }
1280
+ });
1281
+ }
1282
+ }
1283
+ }
1284
+ unbindOutsideClickListener() {
1285
+ if (this.outsideClickListener) {
1286
+ this.outsideClickListener();
1287
+ this.outsideClickListener = null;
1288
+ }
1289
+ }
1290
+ unbindResizeListener() {
1291
+ if (this.resizeListener) {
1292
+ window.removeEventListener('resize', this.resizeListener);
1293
+ this.resizeListener = null;
1294
+ }
1295
+ }
1296
+ ngOnDestroy() {
1297
+ this.unbindOutsideClickListener();
1298
+ this.unbindResizeListener();
1299
+ this.unbindMatchMediaListener();
1300
+ super.ngOnDestroy();
1301
+ }
1302
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: MegaMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
1303
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.2.4", type: MegaMenu, isStandalone: true, selector: "p-megaMenu, p-megamenu, p-mega-menu", inputs: { model: "model", styleClass: "styleClass", orientation: "orientation", id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", breakpoint: "breakpoint", scrollHeight: "scrollHeight", disabled: ["disabled", "disabled", booleanAttribute], tabindex: ["tabindex", "tabindex", numberAttribute] }, host: { attributes: { "data-pc-section": "root", "data-pc-name": "megamenu" }, properties: { "class": "cn(cx(\"root\"), styleClass)", "id": "id" } }, providers: [MegaMenuStyle], queries: [{ propertyName: "startTemplate", first: true, predicate: ["start"] }, { propertyName: "endTemplate", first: true, predicate: ["end"] }, { propertyName: "menuIconTemplate", first: true, predicate: ["menuicon"] }, { propertyName: "submenuIconTemplate", first: true, predicate: ["submenuicon"] }, { propertyName: "itemTemplate", first: true, predicate: ["item"] }, { propertyName: "buttonTemplate", first: true, predicate: ["button"] }, { propertyName: "buttonIconTemplate", first: true, predicate: ["buttonicon"] }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "menubuttonViewChild", first: true, predicate: ["menubutton"], descendants: true }, { propertyName: "rootmenu", first: true, predicate: ["rootmenu"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
1304
+ <div [class]="cx('start')" *ngIf="startTemplate || _startTemplate">
1305
+ <ng-container *ngTemplateOutlet="startTemplate || _startTemplate"></ng-container>
1306
+ </div>
1307
+ <ng-container *ngIf="!buttonTemplate && !_buttonTemplate">
1308
+ <a
1309
+ *ngIf="model && model.length > 0"
1310
+ #menubutton
1311
+ role="button"
1312
+ tabindex="0"
1313
+ [class]="cx('button')"
1314
+ [attr.aria-haspopup]="model.length && model.length > 0 ? true : false"
1315
+ [attr.aria-expanded]="mobileActive"
1316
+ [attr.aria-controls]="id"
1317
+ [attr.aria-label]="config.translation.aria.navigation"
1318
+ (click)="menuButtonClick($event)"
1319
+ (keydown)="menuButtonKeydown($event)"
1320
+ >
1321
+ <svg data-p-icon="bars" *ngIf="!buttonIconTemplate && !_buttonIconTemplate" />
1322
+ <ng-template *ngTemplateOutlet="buttonIconTemplate || _buttonIconTemplate"></ng-template>
1323
+ </a>
1324
+ </ng-container>
1325
+ <ng-container *ngTemplateOutlet="buttonTemplate || _buttonTemplate"></ng-container>
1326
+ <p-megamenu-sub
1327
+ #rootmenu
1328
+ [itemTemplate]="itemTemplate || _itemTemplate"
1329
+ [items]="processedItems"
1330
+ [attr.id]="id + '_list'"
1331
+ [menuId]="id"
1332
+ [root]="true"
1333
+ [orientation]="orientation"
1334
+ [ariaLabel]="ariaLabel"
1335
+ [disabled]="disabled"
1336
+ [tabindex]="!disabled ? tabindex : -1"
1337
+ [activeItem]="activeItem()"
1338
+ [level]="0"
1339
+ [ariaLabelledBy]="ariaLabelledBy"
1340
+ [focusedItemId]="focused ? focusedItemId : undefined"
1341
+ [mobileActive]="mobileActive"
1342
+ (itemClick)="onItemClick($event)"
1343
+ (menuFocus)="onMenuFocus($event)"
1344
+ (menuBlur)="onMenuBlur($event)"
1345
+ (menuKeydown)="onKeyDown($event)"
1346
+ (itemMouseEnter)="onItemMouseEnter($event)"
1347
+ [queryMatches]="queryMatches"
1348
+ [scrollHeight]="scrollHeight"
1349
+ ></p-megamenu-sub>
1350
+ <div [class]="cx('end')" *ngIf="endTemplate || _endTemplate">
1351
+ <ng-container *ngTemplateOutlet="endTemplate || _endTemplate"></ng-container>
1352
+ </div>
1353
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: MegaMenuSub, selector: "p-megaMenuSub, p-megamenu-sub", inputs: ["id", "items", "itemTemplate", "menuId", "ariaLabel", "ariaLabelledBy", "level", "focusedItemId", "disabled", "orientation", "activeItem", "submenu", "queryMatches", "mobileActive", "scrollHeight", "tabindex", "root"], outputs: ["itemClick", "itemMouseEnter", "menuFocus", "menuBlur", "menuKeydown"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "component", type: BarsIcon, selector: "[data-p-icon=\"bars\"]" }, { kind: "ngmodule", type: BadgeModule }, { kind: "ngmodule", type: SharedModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1354
+ }
1355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: MegaMenu, decorators: [{
1356
+ type: Component,
1357
+ args: [{
1358
+ selector: 'p-megaMenu, p-megamenu, p-mega-menu',
1359
+ standalone: true,
1360
+ imports: [CommonModule, RouterModule, MegaMenuSub, TooltipModule, BarsIcon, BadgeModule, SharedModule],
1361
+ template: `
1362
+ <div [class]="cx('start')" *ngIf="startTemplate || _startTemplate">
1363
+ <ng-container *ngTemplateOutlet="startTemplate || _startTemplate"></ng-container>
1364
+ </div>
1365
+ <ng-container *ngIf="!buttonTemplate && !_buttonTemplate">
1366
+ <a
1367
+ *ngIf="model && model.length > 0"
1368
+ #menubutton
1369
+ role="button"
1370
+ tabindex="0"
1371
+ [class]="cx('button')"
1372
+ [attr.aria-haspopup]="model.length && model.length > 0 ? true : false"
1373
+ [attr.aria-expanded]="mobileActive"
1374
+ [attr.aria-controls]="id"
1375
+ [attr.aria-label]="config.translation.aria.navigation"
1376
+ (click)="menuButtonClick($event)"
1377
+ (keydown)="menuButtonKeydown($event)"
1378
+ >
1379
+ <svg data-p-icon="bars" *ngIf="!buttonIconTemplate && !_buttonIconTemplate" />
1380
+ <ng-template *ngTemplateOutlet="buttonIconTemplate || _buttonIconTemplate"></ng-template>
1381
+ </a>
1382
+ </ng-container>
1383
+ <ng-container *ngTemplateOutlet="buttonTemplate || _buttonTemplate"></ng-container>
1384
+ <p-megamenu-sub
1385
+ #rootmenu
1386
+ [itemTemplate]="itemTemplate || _itemTemplate"
1387
+ [items]="processedItems"
1388
+ [attr.id]="id + '_list'"
1389
+ [menuId]="id"
1390
+ [root]="true"
1391
+ [orientation]="orientation"
1392
+ [ariaLabel]="ariaLabel"
1393
+ [disabled]="disabled"
1394
+ [tabindex]="!disabled ? tabindex : -1"
1395
+ [activeItem]="activeItem()"
1396
+ [level]="0"
1397
+ [ariaLabelledBy]="ariaLabelledBy"
1398
+ [focusedItemId]="focused ? focusedItemId : undefined"
1399
+ [mobileActive]="mobileActive"
1400
+ (itemClick)="onItemClick($event)"
1401
+ (menuFocus)="onMenuFocus($event)"
1402
+ (menuBlur)="onMenuBlur($event)"
1403
+ (menuKeydown)="onKeyDown($event)"
1404
+ (itemMouseEnter)="onItemMouseEnter($event)"
1405
+ [queryMatches]="queryMatches"
1406
+ [scrollHeight]="scrollHeight"
1407
+ ></p-megamenu-sub>
1408
+ <div [class]="cx('end')" *ngIf="endTemplate || _endTemplate">
1409
+ <ng-container *ngTemplateOutlet="endTemplate || _endTemplate"></ng-container>
1410
+ </div>
1411
+ `,
1412
+ changeDetection: ChangeDetectionStrategy.OnPush,
1413
+ encapsulation: ViewEncapsulation.None,
1414
+ providers: [MegaMenuStyle],
1415
+ host: {
1416
+ '[class]': 'cn(cx("root"), styleClass)',
1417
+ '[id]': 'id',
1418
+ 'data-pc-section': 'root',
1419
+ 'data-pc-name': 'megamenu'
1420
+ }
1421
+ }]
1422
+ }], ctorParameters: () => [], propDecorators: { model: [{
1423
+ type: Input
1424
+ }], styleClass: [{
1425
+ type: Input
1426
+ }], orientation: [{
1427
+ type: Input
1428
+ }], id: [{
1429
+ type: Input
1430
+ }], ariaLabel: [{
1431
+ type: Input
1432
+ }], ariaLabelledBy: [{
1433
+ type: Input
1434
+ }], breakpoint: [{
1435
+ type: Input
1436
+ }], scrollHeight: [{
1437
+ type: Input
1438
+ }], disabled: [{
1439
+ type: Input,
1440
+ args: [{ transform: booleanAttribute }]
1441
+ }], tabindex: [{
1442
+ type: Input,
1443
+ args: [{ transform: numberAttribute }]
1444
+ }], startTemplate: [{
1445
+ type: ContentChild,
1446
+ args: ['start', { descendants: false }]
1447
+ }], endTemplate: [{
1448
+ type: ContentChild,
1449
+ args: ['end', { descendants: false }]
1450
+ }], menuIconTemplate: [{
1451
+ type: ContentChild,
1452
+ args: ['menuicon', { descendants: false }]
1453
+ }], submenuIconTemplate: [{
1454
+ type: ContentChild,
1455
+ args: ['submenuicon', { descendants: false }]
1456
+ }], itemTemplate: [{
1457
+ type: ContentChild,
1458
+ args: ['item', { descendants: false }]
1459
+ }], buttonTemplate: [{
1460
+ type: ContentChild,
1461
+ args: ['button', { descendants: false }]
1462
+ }], buttonIconTemplate: [{
1463
+ type: ContentChild,
1464
+ args: ['buttonicon', { descendants: false }]
1465
+ }], templates: [{
1466
+ type: ContentChildren,
1467
+ args: [PrimeTemplate]
1468
+ }], menubuttonViewChild: [{
1469
+ type: ViewChild,
1470
+ args: ['menubutton']
1471
+ }], rootmenu: [{
1472
+ type: ViewChild,
1473
+ args: ['rootmenu']
1474
+ }] } });
1475
+ class MegaMenuModule {
1476
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: MegaMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1477
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.4", ngImport: i0, type: MegaMenuModule, imports: [MegaMenu, SharedModule], exports: [MegaMenu, SharedModule] });
1478
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: MegaMenuModule, imports: [MegaMenu, SharedModule, SharedModule] });
1479
+ }
1480
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: MegaMenuModule, decorators: [{
1481
+ type: NgModule,
1482
+ args: [{
1483
+ imports: [MegaMenu, SharedModule],
1484
+ exports: [MegaMenu, SharedModule]
1485
+ }]
1486
+ }] });
1487
+
1488
+ /**
1489
+ * Generated bundle index. Do not edit.
1490
+ */
1491
+
1492
+ export { MegaMenu, MegaMenuClasses, MegaMenuModule, MegaMenuStyle, MegaMenuSub };
1493
+ //# sourceMappingURL=primeng-megamenu.mjs.map