primevue 3.16.2 → 3.18.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 (824) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +2 -1
  3. package/accordion/Accordion.d.ts +23 -5
  4. package/accordion/Accordion.vue +196 -79
  5. package/accordion/accordion.cjs.js +204 -98
  6. package/accordion/accordion.cjs.min.js +1 -1
  7. package/accordion/accordion.esm.js +202 -100
  8. package/accordion/accordion.esm.min.js +1 -1
  9. package/accordion/accordion.js +205 -100
  10. package/accordion/accordion.min.js +1 -1
  11. package/accordiontab/AccordionTab.d.ts +33 -5
  12. package/accordiontab/AccordionTab.vue +8 -1
  13. package/accordiontab/accordiontab.cjs.js +7 -0
  14. package/accordiontab/accordiontab.cjs.min.js +1 -1
  15. package/accordiontab/accordiontab.esm.js +7 -0
  16. package/accordiontab/accordiontab.esm.min.js +1 -1
  17. package/accordiontab/accordiontab.js +7 -0
  18. package/accordiontab/accordiontab.min.js +1 -1
  19. package/api/Api.d.ts +1 -1
  20. package/api/api.cjs.js +321 -313
  21. package/api/api.cjs.min.js +1 -1
  22. package/api/api.esm.js +321 -313
  23. package/api/api.esm.min.js +1 -1
  24. package/api/api.js +321 -313
  25. package/api/api.min.js +1 -1
  26. package/autocomplete/AutoComplete.d.ts +32 -17
  27. package/autocomplete/AutoComplete.vue +252 -131
  28. package/autocomplete/autocomplete.cjs.js +163 -118
  29. package/autocomplete/autocomplete.cjs.min.js +1 -1
  30. package/autocomplete/autocomplete.esm.js +161 -116
  31. package/autocomplete/autocomplete.esm.min.js +1 -1
  32. package/autocomplete/autocomplete.js +162 -117
  33. package/autocomplete/autocomplete.min.js +1 -1
  34. package/avatar/Avatar.d.ts +4 -4
  35. package/avatar/Avatar.vue +15 -11
  36. package/avatar/avatar.cjs.js +11 -7
  37. package/avatar/avatar.cjs.min.js +1 -1
  38. package/avatar/avatar.esm.js +11 -7
  39. package/avatar/avatar.esm.min.js +1 -1
  40. package/avatar/avatar.js +11 -7
  41. package/avatar/avatar.min.js +1 -1
  42. package/avatargroup/AvatarGroup.d.ts +6 -9
  43. package/avatargroup/AvatarGroup.vue +1 -1
  44. package/badge/Badge.d.ts +4 -5
  45. package/badge/Badge.vue +16 -13
  46. package/badge/badge.cjs.js +14 -11
  47. package/badge/badge.esm.js +14 -11
  48. package/badge/badge.js +14 -11
  49. package/badgedirective/badgedirective.cjs.js +8 -10
  50. package/badgedirective/badgedirective.esm.js +8 -10
  51. package/badgedirective/badgedirective.js +8 -10
  52. package/blockui/BlockUI.d.ts +6 -6
  53. package/blockui/BlockUI.vue +13 -15
  54. package/blockui/blockui.cjs.js +11 -13
  55. package/blockui/blockui.cjs.min.js +1 -1
  56. package/blockui/blockui.esm.js +11 -13
  57. package/blockui/blockui.esm.min.js +1 -1
  58. package/blockui/blockui.js +11 -13
  59. package/blockui/blockui.min.js +1 -1
  60. package/breadcrumb/Breadcrumb.d.ts +14 -7
  61. package/breadcrumb/Breadcrumb.vue +16 -7
  62. package/breadcrumb/BreadcrumbItem.vue +24 -15
  63. package/breadcrumb/breadcrumb.cjs.js +39 -25
  64. package/breadcrumb/breadcrumb.cjs.min.js +1 -1
  65. package/breadcrumb/breadcrumb.esm.js +39 -25
  66. package/breadcrumb/breadcrumb.esm.min.js +1 -1
  67. package/breadcrumb/breadcrumb.js +39 -25
  68. package/breadcrumb/breadcrumb.min.js +1 -1
  69. package/button/Button.d.ts +10 -7
  70. package/button/Button.vue +28 -17
  71. package/button/button.cjs.js +25 -14
  72. package/button/button.cjs.min.js +1 -1
  73. package/button/button.esm.js +25 -14
  74. package/button/button.esm.min.js +1 -1
  75. package/button/button.js +25 -14
  76. package/button/button.min.js +1 -1
  77. package/calendar/Calendar.d.ts +14 -14
  78. package/calendar/Calendar.vue +856 -601
  79. package/calendar/calendar.cjs.js +714 -614
  80. package/calendar/calendar.cjs.min.js +1 -1
  81. package/calendar/calendar.esm.js +712 -612
  82. package/calendar/calendar.esm.min.js +1 -1
  83. package/calendar/calendar.js +713 -613
  84. package/calendar/calendar.min.js +1 -1
  85. package/card/Card.d.ts +5 -7
  86. package/card/Card.vue +5 -5
  87. package/carousel/Carousel.d.ts +29 -19
  88. package/carousel/Carousel.vue +537 -528
  89. package/carousel/carousel.cjs.js +496 -493
  90. package/carousel/carousel.cjs.min.js +1 -1
  91. package/carousel/carousel.esm.js +496 -493
  92. package/carousel/carousel.esm.min.js +1 -1
  93. package/carousel/carousel.js +645 -642
  94. package/carousel/carousel.min.js +1 -1
  95. package/cascadeselect/CascadeSelect.d.ts +29 -14
  96. package/cascadeselect/CascadeSelect.vue +197 -102
  97. package/cascadeselect/CascadeSelectSub.vue +50 -15
  98. package/cascadeselect/cascadeselect.cjs.js +185 -111
  99. package/cascadeselect/cascadeselect.cjs.min.js +1 -1
  100. package/cascadeselect/cascadeselect.esm.js +184 -110
  101. package/cascadeselect/cascadeselect.esm.min.js +1 -1
  102. package/cascadeselect/cascadeselect.js +185 -111
  103. package/cascadeselect/cascadeselect.min.js +1 -1
  104. package/chart/Chart.d.ts +6 -7
  105. package/chart/Chart.vue +12 -12
  106. package/chart/chart.cjs.js +11 -11
  107. package/chart/chart.cjs.min.js +1 -1
  108. package/chart/chart.esm.js +11 -11
  109. package/chart/chart.esm.min.js +1 -1
  110. package/chart/chart.js +11 -11
  111. package/chart/chart.min.js +1 -1
  112. package/checkbox/Checkbox.d.ts +12 -12
  113. package/checkbox/Checkbox.vue +48 -20
  114. package/checkbox/checkbox.cjs.js +28 -17
  115. package/checkbox/checkbox.cjs.min.js +1 -1
  116. package/checkbox/checkbox.esm.js +28 -17
  117. package/checkbox/checkbox.esm.min.js +1 -1
  118. package/checkbox/checkbox.js +28 -17
  119. package/checkbox/checkbox.min.js +1 -1
  120. package/chip/Chip.d.ts +5 -5
  121. package/chip/Chip.vue +13 -11
  122. package/chip/chip.cjs.js +7 -4
  123. package/chip/chip.esm.js +7 -4
  124. package/chip/chip.js +7 -4
  125. package/chips/Chips.d.ts +9 -9
  126. package/chips/Chips.vue +89 -33
  127. package/chips/chips.cjs.js +48 -26
  128. package/chips/chips.cjs.min.js +1 -1
  129. package/chips/chips.esm.js +48 -26
  130. package/chips/chips.esm.min.js +1 -1
  131. package/chips/chips.js +48 -26
  132. package/chips/chips.min.js +1 -1
  133. package/colorpicker/ColorPicker.d.ts +11 -12
  134. package/colorpicker/ColorPicker.vue +146 -110
  135. package/colorpicker/colorpicker.cjs.js +113 -74
  136. package/colorpicker/colorpicker.cjs.min.js +1 -1
  137. package/colorpicker/colorpicker.esm.js +113 -74
  138. package/colorpicker/colorpicker.esm.min.js +1 -1
  139. package/colorpicker/colorpicker.js +113 -74
  140. package/colorpicker/colorpicker.min.js +1 -1
  141. package/column/Column.d.ts +5 -6
  142. package/column/Column.vue +1 -1
  143. package/columngroup/ColumnGroup.d.ts +5 -7
  144. package/columngroup/ColumnGroup.vue +1 -1
  145. package/config/PrimeVue.d.ts +8 -3
  146. package/config/config.cjs.js +18 -30
  147. package/config/config.cjs.min.js +1 -1
  148. package/config/config.esm.js +18 -30
  149. package/config/config.esm.min.js +1 -1
  150. package/config/config.js +19 -31
  151. package/config/config.min.js +1 -1
  152. package/confirmationoptions/ConfirmationOptions.d.ts +4 -0
  153. package/confirmationservice/confirmationservice.cjs.js +1 -0
  154. package/confirmationservice/confirmationservice.esm.js +1 -0
  155. package/confirmationservice/confirmationservice.js +1 -0
  156. package/confirmdialog/ConfirmDialog.d.ts +11 -5
  157. package/confirmdialog/ConfirmDialog.vue +25 -15
  158. package/confirmdialog/confirmdialog.cjs.js +34 -16
  159. package/confirmdialog/confirmdialog.cjs.min.js +1 -1
  160. package/confirmdialog/confirmdialog.esm.js +34 -16
  161. package/confirmdialog/confirmdialog.esm.min.js +1 -1
  162. package/confirmdialog/confirmdialog.js +35 -17
  163. package/confirmdialog/confirmdialog.min.js +1 -1
  164. package/confirmpopup/ConfirmPopup.d.ts +5 -8
  165. package/confirmpopup/ConfirmPopup.vue +44 -32
  166. package/confirmpopup/confirmpopup.cjs.js +24 -14
  167. package/confirmpopup/confirmpopup.cjs.min.js +1 -1
  168. package/confirmpopup/confirmpopup.esm.js +24 -14
  169. package/confirmpopup/confirmpopup.esm.min.js +1 -1
  170. package/confirmpopup/confirmpopup.js +24 -14
  171. package/confirmpopup/confirmpopup.min.js +1 -1
  172. package/contextmenu/ContextMenu.d.ts +43 -5
  173. package/contextmenu/ContextMenu.vue +449 -38
  174. package/contextmenu/ContextMenuSub.vue +134 -101
  175. package/contextmenu/contextmenu.cjs.js +639 -206
  176. package/contextmenu/contextmenu.cjs.min.js +1 -1
  177. package/contextmenu/contextmenu.esm.js +640 -207
  178. package/contextmenu/contextmenu.esm.min.js +1 -1
  179. package/contextmenu/contextmenu.js +640 -207
  180. package/contextmenu/contextmenu.min.js +1 -1
  181. package/core/core.js +2984 -2116
  182. package/core/core.min.js +16 -16
  183. package/datatable/BodyCell.vue +93 -75
  184. package/datatable/ColumnFilter.vue +137 -86
  185. package/datatable/DataTable.d.ts +25 -26
  186. package/datatable/DataTable.vue +472 -298
  187. package/datatable/FooterCell.vue +20 -13
  188. package/datatable/HeaderCell.vue +108 -51
  189. package/datatable/HeaderCheckbox.vue +12 -5
  190. package/datatable/RowCheckbox.vue +14 -6
  191. package/datatable/RowRadioButton.vue +4 -4
  192. package/datatable/TableBody.vue +135 -83
  193. package/datatable/TableFooter.vue +17 -20
  194. package/datatable/TableHeader.vue +132 -52
  195. package/datatable/TableLoadingBody.vue +3 -3
  196. package/datatable/datatable.cjs.js +2674 -2537
  197. package/datatable/datatable.cjs.min.js +1 -1
  198. package/datatable/datatable.esm.js +2676 -2539
  199. package/datatable/datatable.esm.min.js +1 -1
  200. package/datatable/datatable.js +2676 -2539
  201. package/datatable/datatable.min.js +1 -1
  202. package/dataview/DataView.d.ts +8 -8
  203. package/dataview/DataView.vue +80 -66
  204. package/dataview/dataview.cjs.js +31 -35
  205. package/dataview/dataview.cjs.min.js +1 -1
  206. package/dataview/dataview.esm.js +31 -35
  207. package/dataview/dataview.esm.min.js +1 -1
  208. package/dataview/dataview.js +31 -35
  209. package/dataview/dataview.min.js +1 -1
  210. package/dataviewlayoutoptions/DataViewLayoutOptions.d.ts +5 -6
  211. package/dataviewlayoutoptions/DataViewLayoutOptions.vue +28 -34
  212. package/dataviewlayoutoptions/dataviewlayoutoptions.cjs.js +19 -25
  213. package/dataviewlayoutoptions/dataviewlayoutoptions.cjs.min.js +1 -1
  214. package/dataviewlayoutoptions/dataviewlayoutoptions.esm.js +19 -25
  215. package/dataviewlayoutoptions/dataviewlayoutoptions.esm.min.js +1 -1
  216. package/dataviewlayoutoptions/dataviewlayoutoptions.js +46 -52
  217. package/dataviewlayoutoptions/dataviewlayoutoptions.min.js +1 -1
  218. package/deferredcontent/DeferredContent.d.ts +6 -7
  219. package/deferredcontent/DeferredContent.vue +6 -9
  220. package/deferredcontent/deferredcontent.cjs.js +5 -8
  221. package/deferredcontent/deferredcontent.esm.js +5 -8
  222. package/deferredcontent/deferredcontent.js +5 -8
  223. package/dialog/Dialog.d.ts +10 -10
  224. package/dialog/Dialog.vue +64 -60
  225. package/dialog/dialog.cjs.js +50 -46
  226. package/dialog/dialog.cjs.min.js +1 -1
  227. package/dialog/dialog.esm.js +50 -46
  228. package/dialog/dialog.esm.min.js +1 -1
  229. package/dialog/dialog.js +50 -46
  230. package/dialog/dialog.min.js +1 -1
  231. package/divider/Divider.d.ts +4 -5
  232. package/divider/Divider.vue +15 -12
  233. package/divider/divider.cjs.js +17 -12
  234. package/divider/divider.cjs.min.js +1 -1
  235. package/divider/divider.esm.js +17 -12
  236. package/divider/divider.esm.min.js +1 -1
  237. package/divider/divider.js +17 -12
  238. package/divider/divider.min.js +1 -1
  239. package/dock/Dock.d.ts +36 -6
  240. package/dock/Dock.vue +21 -5
  241. package/dock/DockSub.vue +229 -55
  242. package/dock/dock.cjs.js +284 -106
  243. package/dock/dock.cjs.min.js +1 -1
  244. package/dock/dock.esm.js +284 -106
  245. package/dock/dock.esm.min.js +1 -1
  246. package/dock/dock.js +285 -108
  247. package/dock/dock.min.js +1 -1
  248. package/dropdown/Dropdown.d.ts +46 -17
  249. package/dropdown/Dropdown.vue +271 -129
  250. package/dropdown/dropdown.cjs.js +213 -132
  251. package/dropdown/dropdown.cjs.min.js +1 -1
  252. package/dropdown/dropdown.esm.js +212 -131
  253. package/dropdown/dropdown.esm.min.js +1 -1
  254. package/dropdown/dropdown.js +212 -131
  255. package/dropdown/dropdown.min.js +1 -1
  256. package/dynamicdialog/DynamicDialog.d.ts +4 -4
  257. package/dynamicdialog/DynamicDialog.vue +10 -10
  258. package/dynamicdialog/dynamicdialog.cjs.js +11 -9
  259. package/dynamicdialog/dynamicdialog.cjs.min.js +1 -1
  260. package/dynamicdialog/dynamicdialog.esm.js +11 -9
  261. package/dynamicdialog/dynamicdialog.esm.min.js +1 -1
  262. package/dynamicdialog/dynamicdialog.js +11 -9
  263. package/dynamicdialog/dynamicdialog.min.js +1 -1
  264. package/editor/Editor.d.ts +20 -4
  265. package/editor/Editor.vue +506 -466
  266. package/editor/editor.cjs.js +99 -45
  267. package/editor/editor.cjs.min.js +1 -1
  268. package/editor/editor.esm.js +82 -42
  269. package/editor/editor.esm.min.js +1 -1
  270. package/editor/editor.js +83 -47
  271. package/editor/editor.min.js +1 -1
  272. package/fieldset/Fieldset.d.ts +9 -5
  273. package/fieldset/Fieldset.vue +28 -20
  274. package/fieldset/fieldset.cjs.js +31 -19
  275. package/fieldset/fieldset.cjs.min.js +1 -1
  276. package/fieldset/fieldset.esm.js +32 -20
  277. package/fieldset/fieldset.esm.min.js +1 -1
  278. package/fieldset/fieldset.js +31 -19
  279. package/fieldset/fieldset.min.js +1 -1
  280. package/fileupload/FileContent.vue +51 -0
  281. package/fileupload/FileUpload.d.ts +32 -12
  282. package/fileupload/FileUpload.vue +122 -102
  283. package/fileupload/fileupload.cjs.js +265 -160
  284. package/fileupload/fileupload.cjs.min.js +1 -1
  285. package/fileupload/fileupload.esm.js +265 -160
  286. package/fileupload/fileupload.esm.min.js +1 -1
  287. package/fileupload/fileupload.js +265 -160
  288. package/fileupload/fileupload.min.js +1 -1
  289. package/fullcalendar/FullCalendar.d.ts +5 -7
  290. package/fullcalendar/FullCalendar.vue +6 -6
  291. package/fullcalendar/fullcalendar.cjs.js +3 -2
  292. package/fullcalendar/fullcalendar.esm.js +3 -2
  293. package/fullcalendar/fullcalendar.js +3 -2
  294. package/galleria/Galleria.d.ts +4 -4
  295. package/galleria/Galleria.vue +39 -34
  296. package/galleria/GalleriaContent.vue +58 -31
  297. package/galleria/GalleriaItem.vue +44 -36
  298. package/galleria/GalleriaItemSlot.vue +2 -1
  299. package/galleria/GalleriaThumbnails.vue +108 -92
  300. package/galleria/galleria.cjs.js +181 -153
  301. package/galleria/galleria.cjs.min.js +1 -1
  302. package/galleria/galleria.esm.js +181 -153
  303. package/galleria/galleria.esm.min.js +1 -1
  304. package/galleria/galleria.js +181 -153
  305. package/galleria/galleria.min.js +1 -1
  306. package/image/Image.d.ts +4 -5
  307. package/image/Image.vue +19 -15
  308. package/image/image.cjs.js +11 -7
  309. package/image/image.cjs.min.js +1 -1
  310. package/image/image.esm.js +11 -7
  311. package/image/image.esm.min.js +1 -1
  312. package/image/image.js +11 -7
  313. package/image/image.min.js +1 -1
  314. package/inlinemessage/InlineMessage.d.ts +4 -5
  315. package/inlinemessage/InlineMessage.vue +12 -9
  316. package/inlinemessage/inlinemessage.cjs.js +12 -10
  317. package/inlinemessage/inlinemessage.cjs.min.js +1 -1
  318. package/inlinemessage/inlinemessage.esm.js +12 -10
  319. package/inlinemessage/inlinemessage.esm.min.js +1 -1
  320. package/inlinemessage/inlinemessage.js +12 -10
  321. package/inlinemessage/inlinemessage.min.js +1 -1
  322. package/inplace/Inplace.d.ts +6 -6
  323. package/inplace/Inplace.vue +11 -11
  324. package/inplace/inplace.cjs.js +9 -9
  325. package/inplace/inplace.cjs.min.js +1 -1
  326. package/inplace/inplace.esm.js +9 -9
  327. package/inplace/inplace.esm.min.js +1 -1
  328. package/inplace/inplace.js +9 -9
  329. package/inplace/inplace.min.js +1 -1
  330. package/inputmask/InputMask.d.ts +11 -12
  331. package/inputmask/InputMask.vue +119 -92
  332. package/inputmask/inputmask.cjs.js +116 -89
  333. package/inputmask/inputmask.cjs.min.js +1 -1
  334. package/inputmask/inputmask.esm.js +116 -89
  335. package/inputmask/inputmask.esm.min.js +1 -1
  336. package/inputmask/inputmask.js +116 -89
  337. package/inputmask/inputmask.min.js +1 -1
  338. package/inputnumber/InputNumber.d.ts +17 -17
  339. package/inputnumber/InputNumber.vue +247 -180
  340. package/inputnumber/inputnumber.cjs.js +219 -175
  341. package/inputnumber/inputnumber.cjs.min.js +1 -1
  342. package/inputnumber/inputnumber.esm.js +218 -174
  343. package/inputnumber/inputnumber.esm.min.js +1 -1
  344. package/inputnumber/inputnumber.js +219 -176
  345. package/inputnumber/inputnumber.min.js +1 -1
  346. package/inputswitch/InputSwitch.d.ts +10 -10
  347. package/inputswitch/InputSwitch.vue +39 -11
  348. package/inputswitch/inputswitch.cjs.js +23 -9
  349. package/inputswitch/inputswitch.cjs.min.js +1 -1
  350. package/inputswitch/inputswitch.esm.js +23 -9
  351. package/inputswitch/inputswitch.esm.min.js +1 -1
  352. package/inputswitch/inputswitch.js +23 -9
  353. package/inputswitch/inputswitch.min.js +1 -1
  354. package/inputtext/InputText.d.ts +5 -6
  355. package/inputtext/InputText.vue +3 -3
  356. package/inputtext/inputtext.cjs.js +2 -2
  357. package/inputtext/inputtext.esm.js +2 -2
  358. package/inputtext/inputtext.js +2 -2
  359. package/knob/Knob.d.ts +10 -11
  360. package/knob/Knob.vue +47 -29
  361. package/knob/knob.cjs.js +27 -25
  362. package/knob/knob.cjs.min.js +1 -1
  363. package/knob/knob.esm.js +27 -25
  364. package/knob/knob.esm.min.js +1 -1
  365. package/knob/knob.js +27 -25
  366. package/knob/knob.min.js +1 -1
  367. package/listbox/Listbox.d.ts +22 -13
  368. package/listbox/Listbox.vue +149 -98
  369. package/listbox/listbox.cjs.js +121 -106
  370. package/listbox/listbox.cjs.min.js +1 -1
  371. package/listbox/listbox.esm.js +122 -107
  372. package/listbox/listbox.esm.min.js +1 -1
  373. package/listbox/listbox.js +121 -106
  374. package/listbox/listbox.min.js +1 -1
  375. package/megamenu/MegaMenu.d.ts +32 -6
  376. package/megamenu/MegaMenu.vue +510 -238
  377. package/megamenu/MegaMenuSub.vue +231 -0
  378. package/megamenu/megamenu.cjs.js +837 -391
  379. package/megamenu/megamenu.cjs.min.js +1 -1
  380. package/megamenu/megamenu.esm.js +839 -393
  381. package/megamenu/megamenu.esm.min.js +1 -1
  382. package/megamenu/megamenu.js +837 -391
  383. package/megamenu/megamenu.min.js +1 -1
  384. package/menu/Menu.d.ts +28 -8
  385. package/menu/Menu.vue +204 -34
  386. package/menu/Menuitem.vue +48 -38
  387. package/menu/menu.cjs.js +325 -137
  388. package/menu/menu.cjs.min.js +1 -1
  389. package/menu/menu.esm.js +325 -137
  390. package/menu/menu.esm.min.js +1 -1
  391. package/menu/menu.js +325 -137
  392. package/menu/menu.min.js +1 -1
  393. package/menubar/Menubar.d.ts +19 -8
  394. package/menubar/Menubar.vue +536 -26
  395. package/menubar/MenubarSub.vue +123 -239
  396. package/menubar/menubar.cjs.js +708 -335
  397. package/menubar/menubar.cjs.min.js +1 -1
  398. package/menubar/menubar.esm.js +710 -337
  399. package/menubar/menubar.esm.min.js +1 -1
  400. package/menubar/menubar.js +708 -335
  401. package/menubar/menubar.min.js +1 -1
  402. package/menuitem/MenuItem.d.ts +2 -2
  403. package/message/Message.d.ts +5 -5
  404. package/message/Message.vue +19 -14
  405. package/message/message.cjs.js +15 -10
  406. package/message/message.cjs.min.js +1 -1
  407. package/message/message.esm.js +15 -10
  408. package/message/message.esm.min.js +1 -1
  409. package/message/message.js +15 -10
  410. package/message/message.min.js +1 -1
  411. package/multiselect/MultiSelect.d.ts +46 -16
  412. package/multiselect/MultiSelect.vue +266 -156
  413. package/multiselect/multiselect.cjs.js +239 -167
  414. package/multiselect/multiselect.cjs.min.js +1 -1
  415. package/multiselect/multiselect.esm.js +238 -166
  416. package/multiselect/multiselect.esm.min.js +1 -1
  417. package/multiselect/multiselect.js +238 -166
  418. package/multiselect/multiselect.min.js +1 -1
  419. package/orderlist/OrderList.d.ts +5 -5
  420. package/orderlist/OrderList.vue +65 -60
  421. package/orderlist/orderlist.cjs.js +51 -53
  422. package/orderlist/orderlist.esm.js +51 -53
  423. package/orderlist/orderlist.js +51 -53
  424. package/organizationchart/OrganizationChart.d.ts +4 -4
  425. package/organizationchart/OrganizationChart.vue +13 -17
  426. package/organizationchart/OrganizationChartNode.vue +20 -12
  427. package/organizationchart/organizationchart.cjs.js +14 -16
  428. package/organizationchart/organizationchart.cjs.min.js +1 -1
  429. package/organizationchart/organizationchart.esm.js +14 -16
  430. package/organizationchart/organizationchart.esm.min.js +1 -1
  431. package/organizationchart/organizationchart.js +14 -16
  432. package/organizationchart/organizationchart.min.js +1 -1
  433. package/overlaypanel/OverlayPanel.d.ts +5 -5
  434. package/overlaypanel/OverlayPanel.vue +60 -50
  435. package/overlaypanel/overlaypanel.cjs.js +40 -32
  436. package/overlaypanel/overlaypanel.cjs.min.js +1 -1
  437. package/overlaypanel/overlaypanel.esm.js +40 -32
  438. package/overlaypanel/overlaypanel.esm.min.js +1 -1
  439. package/overlaypanel/overlaypanel.js +40 -32
  440. package/overlaypanel/overlaypanel.min.js +1 -1
  441. package/package.json +3 -3
  442. package/paginator/CurrentPageReport.vue +47 -47
  443. package/paginator/FirstPageLink.vue +11 -8
  444. package/paginator/JumpToPageDropdown.vue +7 -6
  445. package/paginator/JumpToPageInput.vue +3 -3
  446. package/paginator/LastPageLink.vue +11 -8
  447. package/paginator/NextPageLink.vue +11 -8
  448. package/paginator/PageLinks.vue +3 -4
  449. package/paginator/Paginator.d.ts +7 -7
  450. package/paginator/Paginator.vue +144 -49
  451. package/paginator/PrevPageLink.vue +11 -8
  452. package/paginator/RowsPerPageDropdown.vue +7 -6
  453. package/paginator/paginator.cjs.js +373 -259
  454. package/paginator/paginator.cjs.min.js +1 -1
  455. package/paginator/paginator.esm.js +374 -260
  456. package/paginator/paginator.esm.min.js +1 -1
  457. package/paginator/paginator.js +651 -538
  458. package/paginator/paginator.min.js +1 -1
  459. package/panel/Panel.d.ts +9 -5
  460. package/panel/Panel.vue +29 -11
  461. package/panel/panel.cjs.js +24 -14
  462. package/panel/panel.cjs.min.js +1 -1
  463. package/panel/panel.esm.js +24 -14
  464. package/panel/panel.esm.min.js +1 -1
  465. package/panel/panel.js +24 -14
  466. package/panel/panel.min.js +1 -1
  467. package/panelmenu/PanelMenu.d.ts +37 -6
  468. package/panelmenu/PanelMenu.vue +202 -88
  469. package/panelmenu/PanelMenuList.vue +335 -0
  470. package/panelmenu/PanelMenuSub.vue +130 -80
  471. package/panelmenu/panelmenu.cjs.js +1385 -283
  472. package/panelmenu/panelmenu.cjs.min.js +1 -1
  473. package/panelmenu/panelmenu.esm.js +1382 -284
  474. package/panelmenu/panelmenu.esm.min.js +1 -1
  475. package/panelmenu/panelmenu.js +1385 -284
  476. package/panelmenu/panelmenu.min.js +1 -1
  477. package/password/Password.d.ts +12 -7
  478. package/password/Password.vue +158 -80
  479. package/password/password.cjs.js +140 -78
  480. package/password/password.cjs.min.js +1 -1
  481. package/password/password.esm.js +139 -77
  482. package/password/password.esm.min.js +1 -1
  483. package/password/password.js +140 -78
  484. package/password/password.min.js +1 -1
  485. package/picklist/PickList.d.ts +9 -9
  486. package/picklist/PickList.vue +99 -78
  487. package/picklist/picklist.cjs.js +71 -66
  488. package/picklist/picklist.cjs.min.js +1 -1
  489. package/picklist/picklist.esm.js +71 -66
  490. package/picklist/picklist.esm.min.js +1 -1
  491. package/picklist/picklist.js +71 -66
  492. package/picklist/picklist.min.js +1 -1
  493. package/portal/Portal.d.ts +3 -3
  494. package/portal/Portal.vue +2 -2
  495. package/portal/portal.cjs.js +1 -1
  496. package/portal/portal.esm.js +1 -1
  497. package/portal/portal.js +1 -1
  498. package/progressbar/ProgressBar.d.ts +4 -5
  499. package/progressbar/ProgressBar.vue +63 -51
  500. package/progressbar/progressbar.cjs.js +2 -2
  501. package/progressbar/progressbar.cjs.min.js +1 -1
  502. package/progressbar/progressbar.esm.js +2 -2
  503. package/progressbar/progressbar.esm.min.js +1 -1
  504. package/progressbar/progressbar.js +2 -2
  505. package/progressbar/progressbar.min.js +1 -1
  506. package/progressspinner/ProgressSpinner.d.ts +5 -7
  507. package/progressspinner/ProgressSpinner.vue +1 -1
  508. package/radiobutton/RadioButton.d.ts +9 -9
  509. package/radiobutton/RadioButton.vue +41 -13
  510. package/radiobutton/radiobutton.cjs.js +24 -10
  511. package/radiobutton/radiobutton.cjs.min.js +1 -1
  512. package/radiobutton/radiobutton.esm.js +24 -10
  513. package/radiobutton/radiobutton.esm.min.js +1 -1
  514. package/radiobutton/radiobutton.js +24 -10
  515. package/radiobutton/radiobutton.min.js +1 -1
  516. package/rating/Rating.d.ts +54 -5
  517. package/rating/Rating.vue +88 -62
  518. package/rating/rating.cjs.js +105 -84
  519. package/rating/rating.cjs.min.js +1 -1
  520. package/rating/rating.esm.js +106 -85
  521. package/rating/rating.esm.min.js +1 -1
  522. package/rating/rating.js +106 -86
  523. package/rating/rating.min.js +1 -1
  524. package/resources/primevue.css +21 -2
  525. package/resources/primevue.min.css +1 -1
  526. package/resources/themes/arya-blue/theme.css +340 -282
  527. package/resources/themes/arya-green/theme.css +340 -282
  528. package/resources/themes/arya-orange/theme.css +340 -282
  529. package/resources/themes/arya-purple/theme.css +340 -282
  530. package/resources/themes/bootstrap4-dark-blue/theme.css +356 -298
  531. package/resources/themes/bootstrap4-dark-purple/theme.css +356 -298
  532. package/resources/themes/bootstrap4-light-blue/theme.css +369 -311
  533. package/resources/themes/bootstrap4-light-purple/theme.css +369 -311
  534. package/resources/themes/fluent-light/theme.css +350 -292
  535. package/resources/themes/lara-dark-blue/theme.css +343 -285
  536. package/resources/themes/lara-dark-indigo/theme.css +343 -285
  537. package/resources/themes/lara-dark-purple/theme.css +343 -285
  538. package/resources/themes/lara-dark-teal/theme.css +343 -285
  539. package/resources/themes/lara-light-blue/theme.css +367 -309
  540. package/resources/themes/lara-light-indigo/theme.css +367 -309
  541. package/resources/themes/lara-light-purple/theme.css +367 -309
  542. package/resources/themes/lara-light-teal/theme.css +367 -309
  543. package/resources/themes/luna-amber/theme.css +372 -314
  544. package/resources/themes/luna-blue/theme.css +372 -314
  545. package/resources/themes/luna-green/theme.css +372 -314
  546. package/resources/themes/luna-pink/theme.css +372 -314
  547. package/resources/themes/md-dark-deeppurple/theme.css +413 -318
  548. package/resources/themes/md-dark-indigo/theme.css +413 -318
  549. package/resources/themes/md-light-deeppurple/theme.css +413 -318
  550. package/resources/themes/md-light-indigo/theme.css +413 -318
  551. package/resources/themes/mdc-dark-deeppurple/theme.css +413 -318
  552. package/resources/themes/mdc-dark-indigo/theme.css +413 -318
  553. package/resources/themes/mdc-light-deeppurple/theme.css +413 -318
  554. package/resources/themes/mdc-light-indigo/theme.css +413 -318
  555. package/resources/themes/nova/theme.css +336 -278
  556. package/resources/themes/nova-accent/theme.css +335 -277
  557. package/resources/themes/nova-alt/theme.css +336 -278
  558. package/resources/themes/nova-vue/theme.css +336 -278
  559. package/resources/themes/rhea/theme.css +335 -277
  560. package/resources/themes/saga-blue/theme.css +347 -289
  561. package/resources/themes/saga-green/theme.css +347 -289
  562. package/resources/themes/saga-orange/theme.css +347 -289
  563. package/resources/themes/saga-purple/theme.css +347 -289
  564. package/resources/themes/tailwind-light/theme.css +359 -301
  565. package/resources/themes/vela-blue/theme.css +347 -289
  566. package/resources/themes/vela-green/theme.css +347 -289
  567. package/resources/themes/vela-orange/theme.css +347 -289
  568. package/resources/themes/vela-purple/theme.css +347 -289
  569. package/ripple/ripple.cjs.js +19 -1
  570. package/ripple/ripple.cjs.min.js +1 -1
  571. package/ripple/ripple.esm.js +19 -1
  572. package/ripple/ripple.esm.min.js +1 -1
  573. package/ripple/ripple.js +19 -1
  574. package/ripple/ripple.min.js +1 -1
  575. package/row/Row.d.ts +6 -9
  576. package/row/Row.vue +1 -1
  577. package/scrollpanel/ScrollPanel.d.ts +9 -5
  578. package/scrollpanel/ScrollPanel.vue +194 -56
  579. package/scrollpanel/scrollpanel.cjs.js +180 -56
  580. package/scrollpanel/scrollpanel.cjs.min.js +1 -1
  581. package/scrollpanel/scrollpanel.esm.js +181 -57
  582. package/scrollpanel/scrollpanel.esm.min.js +1 -1
  583. package/scrollpanel/scrollpanel.js +180 -56
  584. package/scrollpanel/scrollpanel.min.js +1 -1
  585. package/scrolltop/ScrollTop.d.ts +5 -7
  586. package/scrolltop/ScrollTop.vue +18 -23
  587. package/scrolltop/scrolltop.cjs.js +14 -19
  588. package/scrolltop/scrolltop.cjs.min.js +1 -1
  589. package/scrolltop/scrolltop.esm.js +14 -19
  590. package/scrolltop/scrolltop.esm.min.js +1 -1
  591. package/scrolltop/scrolltop.js +14 -19
  592. package/scrolltop/scrolltop.min.js +1 -1
  593. package/selectbutton/SelectButton.d.ts +11 -11
  594. package/selectbutton/SelectButton.vue +50 -32
  595. package/selectbutton/selectbutton.cjs.js +30 -25
  596. package/selectbutton/selectbutton.esm.js +30 -25
  597. package/selectbutton/selectbutton.js +30 -25
  598. package/sidebar/Sidebar.d.ts +6 -6
  599. package/sidebar/Sidebar.vue +24 -14
  600. package/sidebar/sidebar.cjs.js +20 -10
  601. package/sidebar/sidebar.cjs.min.js +1 -1
  602. package/sidebar/sidebar.esm.js +20 -10
  603. package/sidebar/sidebar.esm.min.js +1 -1
  604. package/sidebar/sidebar.js +20 -10
  605. package/sidebar/sidebar.min.js +1 -1
  606. package/skeleton/Skeleton.d.ts +5 -7
  607. package/skeleton/Skeleton.vue +12 -11
  608. package/skeleton/skeleton.cjs.js +10 -9
  609. package/skeleton/skeleton.cjs.min.js +1 -1
  610. package/skeleton/skeleton.esm.js +10 -9
  611. package/skeleton/skeleton.esm.min.js +1 -1
  612. package/skeleton/skeleton.js +10 -9
  613. package/skeleton/skeleton.min.js +1 -1
  614. package/slider/Slider.d.ts +7 -8
  615. package/slider/Slider.vue +162 -141
  616. package/slider/slider.cjs.js +100 -127
  617. package/slider/slider.cjs.min.js +1 -1
  618. package/slider/slider.esm.js +100 -127
  619. package/slider/slider.esm.min.js +1 -1
  620. package/slider/slider.js +100 -127
  621. package/slider/slider.min.js +1 -1
  622. package/speeddial/SpeedDial.d.ts +8 -8
  623. package/speeddial/SpeedDial.vue +66 -46
  624. package/speeddial/speeddial.cjs.js +77 -62
  625. package/speeddial/speeddial.cjs.min.js +1 -1
  626. package/speeddial/speeddial.esm.js +77 -62
  627. package/speeddial/speeddial.esm.min.js +1 -1
  628. package/speeddial/speeddial.js +77 -62
  629. package/speeddial/speeddial.min.js +1 -1
  630. package/splitbutton/SplitButton.d.ts +6 -6
  631. package/splitbutton/SplitButton.vue +9 -11
  632. package/splitbutton/splitbutton.cjs.js +7 -7
  633. package/splitbutton/splitbutton.cjs.min.js +1 -1
  634. package/splitbutton/splitbutton.esm.js +7 -7
  635. package/splitbutton/splitbutton.esm.min.js +1 -1
  636. package/splitbutton/splitbutton.js +7 -7
  637. package/splitbutton/splitbutton.min.js +1 -1
  638. package/splitter/Splitter.d.ts +10 -5
  639. package/splitter/Splitter.vue +158 -53
  640. package/splitter/splitter.cjs.js +156 -52
  641. package/splitter/splitter.cjs.min.js +1 -1
  642. package/splitter/splitter.esm.js +157 -53
  643. package/splitter/splitter.esm.min.js +1 -1
  644. package/splitter/splitter.js +156 -52
  645. package/splitter/splitter.min.js +1 -1
  646. package/splitterpanel/SplitterPanel.d.ts +4 -5
  647. package/splitterpanel/SplitterPanel.vue +3 -3
  648. package/splitterpanel/splitterpanel.cjs.js +2 -2
  649. package/splitterpanel/splitterpanel.esm.js +2 -2
  650. package/splitterpanel/splitterpanel.js +2 -2
  651. package/steps/Steps.d.ts +4 -5
  652. package/steps/Steps.vue +137 -30
  653. package/steps/steps.cjs.js +135 -36
  654. package/steps/steps.cjs.min.js +1 -1
  655. package/steps/steps.esm.js +136 -37
  656. package/steps/steps.esm.min.js +1 -1
  657. package/steps/steps.js +135 -36
  658. package/steps/steps.min.js +1 -1
  659. package/styleclass/styleclass.cjs.js +20 -22
  660. package/styleclass/styleclass.cjs.min.js +1 -1
  661. package/styleclass/styleclass.esm.js +20 -22
  662. package/styleclass/styleclass.esm.min.js +1 -1
  663. package/styleclass/styleclass.js +20 -22
  664. package/styleclass/styleclass.min.js +1 -1
  665. package/tabmenu/TabMenu.d.ts +13 -5
  666. package/tabmenu/TabMenu.vue +176 -36
  667. package/tabmenu/tabmenu.cjs.js +173 -42
  668. package/tabmenu/tabmenu.cjs.min.js +1 -1
  669. package/tabmenu/tabmenu.esm.js +173 -42
  670. package/tabmenu/tabmenu.esm.min.js +1 -1
  671. package/tabmenu/tabmenu.js +174 -43
  672. package/tabmenu/tabmenu.min.js +1 -1
  673. package/tabpanel/TabPanel.d.ts +33 -6
  674. package/tabpanel/TabPanel.vue +8 -1
  675. package/tabpanel/tabpanel.cjs.js +7 -0
  676. package/tabpanel/tabpanel.cjs.min.js +1 -1
  677. package/tabpanel/tabpanel.esm.js +7 -0
  678. package/tabpanel/tabpanel.esm.min.js +1 -1
  679. package/tabpanel/tabpanel.js +7 -0
  680. package/tabpanel/tabpanel.min.js +1 -1
  681. package/tabview/TabView.d.ts +22 -6
  682. package/tabview/TabView.vue +280 -96
  683. package/tabview/tabview.cjs.js +295 -132
  684. package/tabview/tabview.cjs.min.js +1 -1
  685. package/tabview/tabview.esm.js +296 -133
  686. package/tabview/tabview.esm.min.js +1 -1
  687. package/tabview/tabview.js +296 -133
  688. package/tabview/tabview.min.js +1 -1
  689. package/tag/Tag.d.ts +4 -5
  690. package/tag/Tag.vue +13 -10
  691. package/tag/tag.cjs.js +10 -7
  692. package/tag/tag.esm.js +10 -7
  693. package/tag/tag.js +10 -7
  694. package/terminal/Terminal.d.ts +5 -7
  695. package/terminal/Terminal.vue +10 -10
  696. package/terminal/terminal.cjs.js +3 -3
  697. package/terminal/terminal.cjs.min.js +1 -1
  698. package/terminal/terminal.esm.js +3 -3
  699. package/terminal/terminal.esm.min.js +1 -1
  700. package/terminal/terminal.js +3 -3
  701. package/terminal/terminal.min.js +1 -1
  702. package/textarea/Textarea.d.ts +5 -6
  703. package/textarea/Textarea.vue +7 -7
  704. package/textarea/textarea.cjs.js +6 -6
  705. package/textarea/textarea.esm.js +6 -6
  706. package/textarea/textarea.js +6 -6
  707. package/tieredmenu/TieredMenu.d.ts +48 -6
  708. package/tieredmenu/TieredMenu.vue +500 -58
  709. package/tieredmenu/TieredMenuSub.vue +126 -208
  710. package/tieredmenu/tieredmenu.cjs.js +684 -338
  711. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  712. package/tieredmenu/tieredmenu.esm.js +685 -339
  713. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  714. package/tieredmenu/tieredmenu.js +685 -339
  715. package/tieredmenu/tieredmenu.min.js +1 -1
  716. package/timeline/Timeline.d.ts +4 -5
  717. package/timeline/Timeline.vue +6 -10
  718. package/timeline/timeline.cjs.js +3 -7
  719. package/timeline/timeline.cjs.min.js +1 -1
  720. package/timeline/timeline.esm.js +3 -7
  721. package/timeline/timeline.esm.min.js +1 -1
  722. package/timeline/timeline.js +3 -7
  723. package/timeline/timeline.min.js +1 -1
  724. package/toast/Toast.d.ts +10 -13
  725. package/toast/Toast.vue +40 -31
  726. package/toast/ToastMessage.vue +29 -20
  727. package/toast/toast.cjs.js +56 -38
  728. package/toast/toast.cjs.min.js +1 -1
  729. package/toast/toast.esm.js +55 -37
  730. package/toast/toast.esm.min.js +1 -1
  731. package/toast/toast.js +56 -38
  732. package/toast/toast.min.js +1 -1
  733. package/toastservice/toastservice.cjs.js +1 -0
  734. package/toastservice/toastservice.esm.js +1 -0
  735. package/toastservice/toastservice.js +1 -0
  736. package/togglebutton/ToggleButton.d.ts +10 -10
  737. package/togglebutton/ToggleButton.vue +82 -23
  738. package/togglebutton/togglebutton.cjs.js +66 -18
  739. package/togglebutton/togglebutton.cjs.min.js +1 -1
  740. package/togglebutton/togglebutton.esm.js +66 -18
  741. package/togglebutton/togglebutton.esm.min.js +1 -1
  742. package/togglebutton/togglebutton.js +66 -18
  743. package/togglebutton/togglebutton.min.js +1 -1
  744. package/toolbar/Toolbar.d.ts +8 -5
  745. package/toolbar/Toolbar.vue +9 -3
  746. package/toolbar/toolbar.cjs.js +14 -7
  747. package/toolbar/toolbar.cjs.min.js +1 -1
  748. package/toolbar/toolbar.esm.js +14 -7
  749. package/toolbar/toolbar.esm.min.js +1 -1
  750. package/toolbar/toolbar.js +14 -7
  751. package/toolbar/toolbar.min.js +1 -1
  752. package/tooltip/tooltip.cjs.js +36 -24
  753. package/tooltip/tooltip.cjs.min.js +1 -1
  754. package/tooltip/tooltip.esm.js +37 -25
  755. package/tooltip/tooltip.esm.min.js +1 -1
  756. package/tooltip/tooltip.js +36 -24
  757. package/tooltip/tooltip.min.js +1 -1
  758. package/tree/Tree.d.ts +15 -7
  759. package/tree/Tree.vue +66 -56
  760. package/tree/TreeNode.vue +70 -66
  761. package/tree/tree.cjs.js +99 -102
  762. package/tree/tree.cjs.min.js +1 -1
  763. package/tree/tree.esm.js +99 -102
  764. package/tree/tree.esm.min.js +1 -1
  765. package/tree/tree.js +99 -102
  766. package/tree/tree.min.js +1 -1
  767. package/treeselect/TreeSelect.d.ts +9 -9
  768. package/treeselect/TreeSelect.vue +130 -72
  769. package/treeselect/treeselect.cjs.js +89 -59
  770. package/treeselect/treeselect.cjs.min.js +1 -1
  771. package/treeselect/treeselect.esm.js +89 -59
  772. package/treeselect/treeselect.esm.min.js +1 -1
  773. package/treeselect/treeselect.js +89 -59
  774. package/treeselect/treeselect.min.js +1 -1
  775. package/treetable/BodyCell.vue +29 -19
  776. package/treetable/FooterCell.vue +19 -11
  777. package/treetable/HeaderCell.vue +44 -36
  778. package/treetable/TreeTable.d.ts +8 -8
  779. package/treetable/TreeTable.vue +229 -178
  780. package/treetable/TreeTableRow.vue +74 -58
  781. package/treetable/treetable.cjs.js +287 -253
  782. package/treetable/treetable.cjs.min.js +1 -1
  783. package/treetable/treetable.esm.js +287 -253
  784. package/treetable/treetable.esm.min.js +1 -1
  785. package/treetable/treetable.js +287 -253
  786. package/treetable/treetable.min.js +1 -1
  787. package/tristatecheckbox/TriStateCheckbox.d.ts +9 -9
  788. package/tristatecheckbox/TriStateCheckbox.vue +39 -18
  789. package/tristatecheckbox/tristatecheckbox.cjs.js +24 -15
  790. package/tristatecheckbox/tristatecheckbox.cjs.min.js +1 -1
  791. package/tristatecheckbox/tristatecheckbox.esm.js +24 -15
  792. package/tristatecheckbox/tristatecheckbox.esm.min.js +1 -1
  793. package/tristatecheckbox/tristatecheckbox.js +24 -15
  794. package/tristatecheckbox/tristatecheckbox.min.js +1 -1
  795. package/ts-helpers.d.ts +16 -10
  796. package/useconfirm/UseConfirm.d.ts +1 -1
  797. package/useconfirm/useconfirm.cjs.js +2 -1
  798. package/useconfirm/useconfirm.esm.js +2 -1
  799. package/useconfirm/useconfirm.js +2 -1
  800. package/usedialog/UseDialog.d.ts +1 -1
  801. package/usedialog/usedialog.cjs.js +2 -1
  802. package/usedialog/usedialog.esm.js +2 -1
  803. package/usedialog/usedialog.js +2 -1
  804. package/usetoast/usetoast.cjs.js +2 -1
  805. package/usetoast/usetoast.esm.js +2 -1
  806. package/usetoast/usetoast.js +2 -1
  807. package/utils/Utils.d.ts +10 -5
  808. package/utils/utils.cjs.js +209 -156
  809. package/utils/utils.cjs.min.js +1 -1
  810. package/utils/utils.esm.js +209 -156
  811. package/utils/utils.esm.min.js +1 -1
  812. package/utils/utils.js +209 -156
  813. package/utils/utils.min.js +1 -1
  814. package/vetur-attributes.json +335 -3
  815. package/vetur-tags.json +112 -19
  816. package/virtualscroller/VirtualScroller.d.ts +9 -9
  817. package/virtualscroller/VirtualScroller.vue +108 -96
  818. package/virtualscroller/virtualscroller.cjs.js +87 -89
  819. package/virtualscroller/virtualscroller.cjs.min.js +1 -1
  820. package/virtualscroller/virtualscroller.esm.js +87 -89
  821. package/virtualscroller/virtualscroller.esm.min.js +1 -1
  822. package/virtualscroller/virtualscroller.js +87 -89
  823. package/virtualscroller/virtualscroller.min.js +1 -1
  824. package/web-types.json +1183 -73
@@ -1,22 +1,657 @@
1
1
  'use strict';
2
2
 
3
- var vue = require('vue');
4
3
  var utils = require('primevue/utils');
4
+ var Ripple = require('primevue/ripple');
5
+ var vue = require('vue');
5
6
 
6
- var script$1 = {
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var Ripple__default = /*#__PURE__*/_interopDefaultLegacy(Ripple);
10
+
11
+ var DomHandler = {
12
+ innerWidth(el) {
13
+ if (el) {
14
+ let width = el.offsetWidth;
15
+ let style = getComputedStyle(el);
16
+
17
+ width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
18
+
19
+ return width;
20
+ }
21
+
22
+ return 0;
23
+ },
24
+
25
+ width(el) {
26
+ if (el) {
27
+ let width = el.offsetWidth;
28
+ let style = getComputedStyle(el);
29
+
30
+ width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
31
+
32
+ return width;
33
+ }
34
+
35
+ return 0;
36
+ },
37
+
38
+ getWindowScrollTop() {
39
+ let doc = document.documentElement;
40
+
41
+ return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
42
+ },
43
+
44
+ getWindowScrollLeft() {
45
+ let doc = document.documentElement;
46
+
47
+ return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
48
+ },
49
+
50
+ getOuterWidth(el, margin) {
51
+ if (el) {
52
+ let width = el.offsetWidth;
53
+
54
+ if (margin) {
55
+ let style = getComputedStyle(el);
56
+
57
+ width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);
58
+ }
59
+
60
+ return width;
61
+ }
62
+
63
+ return 0;
64
+ },
65
+
66
+ getOuterHeight(el, margin) {
67
+ if (el) {
68
+ let height = el.offsetHeight;
69
+
70
+ if (margin) {
71
+ let style = getComputedStyle(el);
72
+
73
+ height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);
74
+ }
75
+
76
+ return height;
77
+ }
78
+
79
+ return 0;
80
+ },
81
+
82
+ getClientHeight(el, margin) {
83
+ if (el) {
84
+ let height = el.clientHeight;
85
+
86
+ if (margin) {
87
+ let style = getComputedStyle(el);
88
+
89
+ height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);
90
+ }
91
+
92
+ return height;
93
+ }
94
+
95
+ return 0;
96
+ },
97
+
98
+ getViewport() {
99
+ let win = window,
100
+ d = document,
101
+ e = d.documentElement,
102
+ g = d.getElementsByTagName('body')[0],
103
+ w = win.innerWidth || e.clientWidth || g.clientWidth,
104
+ h = win.innerHeight || e.clientHeight || g.clientHeight;
105
+
106
+ return { width: w, height: h };
107
+ },
108
+
109
+ getOffset(el) {
110
+ if (el) {
111
+ let rect = el.getBoundingClientRect();
112
+
113
+ return {
114
+ top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),
115
+ left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)
116
+ };
117
+ }
118
+
119
+ return {
120
+ top: 'auto',
121
+ left: 'auto'
122
+ };
123
+ },
124
+
125
+ index(element) {
126
+ if (element) {
127
+ let children = element.parentNode.childNodes;
128
+ let num = 0;
129
+
130
+ for (let i = 0; i < children.length; i++) {
131
+ if (children[i] === element) return num;
132
+ if (children[i].nodeType === 1) num++;
133
+ }
134
+ }
135
+
136
+ return -1;
137
+ },
138
+
139
+ addMultipleClasses(element, className) {
140
+ if (element && className) {
141
+ if (element.classList) {
142
+ let styles = className.split(' ');
143
+
144
+ for (let i = 0; i < styles.length; i++) {
145
+ element.classList.add(styles[i]);
146
+ }
147
+ } else {
148
+ let styles = className.split(' ');
149
+
150
+ for (let i = 0; i < styles.length; i++) {
151
+ element.className += ' ' + styles[i];
152
+ }
153
+ }
154
+ }
155
+ },
156
+
157
+ addClass(element, className) {
158
+ if (element && className) {
159
+ if (element.classList) element.classList.add(className);
160
+ else element.className += ' ' + className;
161
+ }
162
+ },
163
+
164
+ removeClass(element, className) {
165
+ if (element && className) {
166
+ if (element.classList) element.classList.remove(className);
167
+ else element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
168
+ }
169
+ },
170
+
171
+ hasClass(element, className) {
172
+ if (element) {
173
+ if (element.classList) return element.classList.contains(className);
174
+ else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);
175
+ }
176
+
177
+ return false;
178
+ },
179
+
180
+ find(element, selector) {
181
+ return element ? element.querySelectorAll(selector) : [];
182
+ },
183
+
184
+ findSingle(element, selector) {
185
+ if (element) {
186
+ return element.querySelector(selector);
187
+ }
188
+
189
+ return null;
190
+ },
191
+
192
+ getHeight(el) {
193
+ if (el) {
194
+ let height = el.offsetHeight;
195
+ let style = getComputedStyle(el);
196
+
197
+ height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
198
+
199
+ return height;
200
+ }
201
+
202
+ return 0;
203
+ },
204
+
205
+ getWidth(el) {
206
+ if (el) {
207
+ let width = el.offsetWidth;
208
+ let style = getComputedStyle(el);
209
+
210
+ width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
211
+
212
+ return width;
213
+ }
214
+
215
+ return 0;
216
+ },
217
+
218
+ absolutePosition(element, target) {
219
+ if (element) {
220
+ let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
221
+ let elementOuterHeight = elementDimensions.height;
222
+ let elementOuterWidth = elementDimensions.width;
223
+ let targetOuterHeight = target.offsetHeight;
224
+ let targetOuterWidth = target.offsetWidth;
225
+ let targetOffset = target.getBoundingClientRect();
226
+ let windowScrollTop = this.getWindowScrollTop();
227
+ let windowScrollLeft = this.getWindowScrollLeft();
228
+ let viewport = this.getViewport();
229
+ let top, left;
230
+
231
+ if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {
232
+ top = targetOffset.top + windowScrollTop - elementOuterHeight;
233
+ element.style.transformOrigin = 'bottom';
234
+
235
+ if (top < 0) {
236
+ top = windowScrollTop;
237
+ }
238
+ } else {
239
+ top = targetOuterHeight + targetOffset.top + windowScrollTop;
240
+ element.style.transformOrigin = 'top';
241
+ }
242
+
243
+ if (targetOffset.left + elementOuterWidth > viewport.width) left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);
244
+ else left = targetOffset.left + windowScrollLeft;
245
+
246
+ element.style.top = top + 'px';
247
+ element.style.left = left + 'px';
248
+ }
249
+ },
250
+
251
+ relativePosition(element, target) {
252
+ if (element) {
253
+ let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
254
+ const targetHeight = target.offsetHeight;
255
+ const targetOffset = target.getBoundingClientRect();
256
+ const viewport = this.getViewport();
257
+ let top, left;
258
+
259
+ if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {
260
+ top = -1 * elementDimensions.height;
261
+ element.style.transformOrigin = 'bottom';
262
+
263
+ if (targetOffset.top + top < 0) {
264
+ top = -1 * targetOffset.top;
265
+ }
266
+ } else {
267
+ top = targetHeight;
268
+ element.style.transformOrigin = 'top';
269
+ }
270
+
271
+ if (elementDimensions.width > viewport.width) {
272
+ // element wider then viewport and cannot fit on screen (align at left side of viewport)
273
+ left = targetOffset.left * -1;
274
+ } else if (targetOffset.left + elementDimensions.width > viewport.width) {
275
+ // element wider then viewport but can be fit on screen (align at right side of viewport)
276
+ left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;
277
+ } else {
278
+ // element fits on screen (align with target)
279
+ left = 0;
280
+ }
281
+
282
+ element.style.top = top + 'px';
283
+ element.style.left = left + 'px';
284
+ }
285
+ },
286
+
287
+ getParents(element, parents = []) {
288
+ return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));
289
+ },
290
+
291
+ getScrollableParents(element) {
292
+ let scrollableParents = [];
293
+
294
+ if (element) {
295
+ let parents = this.getParents(element);
296
+ const overflowRegex = /(auto|scroll)/;
297
+
298
+ const overflowCheck = (node) => {
299
+ let styleDeclaration = window['getComputedStyle'](node, null);
300
+
301
+ return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));
302
+ };
303
+
304
+ for (let parent of parents) {
305
+ let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];
306
+
307
+ if (scrollSelectors) {
308
+ let selectors = scrollSelectors.split(',');
309
+
310
+ for (let selector of selectors) {
311
+ let el = this.findSingle(parent, selector);
312
+
313
+ if (el && overflowCheck(el)) {
314
+ scrollableParents.push(el);
315
+ }
316
+ }
317
+ }
318
+
319
+ if (parent.nodeType !== 9 && overflowCheck(parent)) {
320
+ scrollableParents.push(parent);
321
+ }
322
+ }
323
+ }
324
+
325
+ return scrollableParents;
326
+ },
327
+
328
+ getHiddenElementOuterHeight(element) {
329
+ if (element) {
330
+ element.style.visibility = 'hidden';
331
+ element.style.display = 'block';
332
+ let elementHeight = element.offsetHeight;
333
+
334
+ element.style.display = 'none';
335
+ element.style.visibility = 'visible';
336
+
337
+ return elementHeight;
338
+ }
339
+
340
+ return 0;
341
+ },
342
+
343
+ getHiddenElementOuterWidth(element) {
344
+ if (element) {
345
+ element.style.visibility = 'hidden';
346
+ element.style.display = 'block';
347
+ let elementWidth = element.offsetWidth;
348
+
349
+ element.style.display = 'none';
350
+ element.style.visibility = 'visible';
351
+
352
+ return elementWidth;
353
+ }
354
+
355
+ return 0;
356
+ },
357
+
358
+ getHiddenElementDimensions(element) {
359
+ if (element) {
360
+ let dimensions = {};
361
+
362
+ element.style.visibility = 'hidden';
363
+ element.style.display = 'block';
364
+ dimensions.width = element.offsetWidth;
365
+ dimensions.height = element.offsetHeight;
366
+ element.style.display = 'none';
367
+ element.style.visibility = 'visible';
368
+
369
+ return dimensions;
370
+ }
371
+
372
+ return 0;
373
+ },
374
+
375
+ fadeIn(element, duration) {
376
+ if (element) {
377
+ element.style.opacity = 0;
378
+
379
+ let last = +new Date();
380
+ let opacity = 0;
381
+
382
+ let tick = function () {
383
+ opacity = +element.style.opacity + (new Date().getTime() - last) / duration;
384
+ element.style.opacity = opacity;
385
+ last = +new Date();
386
+
387
+ if (+opacity < 1) {
388
+ (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
389
+ }
390
+ };
391
+
392
+ tick();
393
+ }
394
+ },
395
+
396
+ fadeOut(element, ms) {
397
+ if (element) {
398
+ let opacity = 1,
399
+ interval = 50,
400
+ duration = ms,
401
+ gap = interval / duration;
402
+
403
+ let fading = setInterval(() => {
404
+ opacity -= gap;
405
+
406
+ if (opacity <= 0) {
407
+ opacity = 0;
408
+ clearInterval(fading);
409
+ }
410
+
411
+ element.style.opacity = opacity;
412
+ }, interval);
413
+ }
414
+ },
415
+
416
+ getUserAgent() {
417
+ return navigator.userAgent;
418
+ },
419
+
420
+ appendChild(element, target) {
421
+ if (this.isElement(target)) target.appendChild(element);
422
+ else if (target.el && target.elElement) target.elElement.appendChild(element);
423
+ else throw new Error('Cannot append ' + target + ' to ' + element);
424
+ },
425
+
426
+ scrollInView(container, item) {
427
+ let borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');
428
+ let borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;
429
+ let paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');
430
+ let paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;
431
+ let containerRect = container.getBoundingClientRect();
432
+ let itemRect = item.getBoundingClientRect();
433
+ let offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;
434
+ let scroll = container.scrollTop;
435
+ let elementHeight = container.clientHeight;
436
+ let itemHeight = this.getOuterHeight(item);
437
+
438
+ if (offset < 0) {
439
+ container.scrollTop = scroll + offset;
440
+ } else if (offset + itemHeight > elementHeight) {
441
+ container.scrollTop = scroll + offset - elementHeight + itemHeight;
442
+ }
443
+ },
444
+
445
+ clearSelection() {
446
+ if (window.getSelection) {
447
+ if (window.getSelection().empty) {
448
+ window.getSelection().empty();
449
+ } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {
450
+ window.getSelection().removeAllRanges();
451
+ }
452
+ } else if (document['selection'] && document['selection'].empty) {
453
+ try {
454
+ document['selection'].empty();
455
+ } catch (error) {
456
+ //ignore IE bug
457
+ }
458
+ }
459
+ },
460
+
461
+ getSelection() {
462
+ if (window.getSelection) return window.getSelection().toString();
463
+ else if (document.getSelection) return document.getSelection().toString();
464
+ else if (document['selection']) return document['selection'].createRange().text;
465
+
466
+ return null;
467
+ },
468
+
469
+ calculateScrollbarWidth() {
470
+ if (this.calculatedScrollbarWidth != null) return this.calculatedScrollbarWidth;
471
+
472
+ let scrollDiv = document.createElement('div');
473
+
474
+ scrollDiv.className = 'p-scrollbar-measure';
475
+ document.body.appendChild(scrollDiv);
476
+
477
+ let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
478
+
479
+ document.body.removeChild(scrollDiv);
480
+
481
+ this.calculatedScrollbarWidth = scrollbarWidth;
482
+
483
+ return scrollbarWidth;
484
+ },
485
+
486
+ getBrowser() {
487
+ if (!this.browser) {
488
+ let matched = this.resolveUserAgent();
489
+
490
+ this.browser = {};
491
+
492
+ if (matched.browser) {
493
+ this.browser[matched.browser] = true;
494
+ this.browser['version'] = matched.version;
495
+ }
496
+
497
+ if (this.browser['chrome']) {
498
+ this.browser['webkit'] = true;
499
+ } else if (this.browser['webkit']) {
500
+ this.browser['safari'] = true;
501
+ }
502
+ }
503
+
504
+ return this.browser;
505
+ },
506
+
507
+ resolveUserAgent() {
508
+ let ua = navigator.userAgent.toLowerCase();
509
+ let match = /(chrome)[ ]([\w.]+)/.exec(ua) || /(webkit)[ ]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ ]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)) || [];
510
+
511
+ return {
512
+ browser: match[1] || '',
513
+ version: match[2] || '0'
514
+ };
515
+ },
516
+
517
+ isVisible(element) {
518
+ return element && element.offsetParent != null;
519
+ },
520
+
521
+ invokeElementMethod(element, methodName, args) {
522
+ element[methodName].apply(element, args);
523
+ },
524
+
525
+ isExist(element) {
526
+ return element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode;
527
+ },
528
+
529
+ isClient() {
530
+ return !!(typeof window !== 'undefined' && window.document && window.document.createElement);
531
+ },
532
+
533
+ focus(el, options) {
534
+ el && document.activeElement !== el && el.focus(options);
535
+ },
536
+
537
+ getFocusableElements(element, selector = '') {
538
+ let focusableElements = this.find(
539
+ element,
540
+ `button:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
541
+ [href][clientHeight][clientWidth]:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
542
+ input:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
543
+ select:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
544
+ textarea:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
545
+ [tabIndex]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
546
+ [contenteditable]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector}`
547
+ );
548
+
549
+ let visibleFocusableElements = [];
550
+
551
+ for (let focusableElement of focusableElements) {
552
+ if (getComputedStyle(focusableElement).display != 'none' && getComputedStyle(focusableElement).visibility != 'hidden') visibleFocusableElements.push(focusableElement);
553
+ }
554
+
555
+ return visibleFocusableElements;
556
+ },
557
+
558
+ getFirstFocusableElement(element, selector) {
559
+ const focusableElements = this.getFocusableElements(element, selector);
560
+
561
+ return focusableElements.length > 0 ? focusableElements[0] : null;
562
+ },
563
+
564
+ isClickable(element) {
565
+ const targetNode = element.nodeName;
566
+ const parentNode = element.parentElement && element.parentElement.nodeName;
567
+
568
+ return (
569
+ targetNode == 'INPUT' ||
570
+ targetNode == 'BUTTON' ||
571
+ targetNode == 'A' ||
572
+ parentNode == 'INPUT' ||
573
+ parentNode == 'BUTTON' ||
574
+ parentNode == 'A' ||
575
+ this.hasClass(element, 'p-button') ||
576
+ this.hasClass(element.parentElement, 'p-button') ||
577
+ this.hasClass(element.parentElement, 'p-checkbox') ||
578
+ this.hasClass(element.parentElement, 'p-radiobutton')
579
+ );
580
+ },
581
+
582
+ applyStyle(element, style) {
583
+ if (typeof style === 'string') {
584
+ element.style.cssText = style;
585
+ } else {
586
+ for (let prop in style) {
587
+ element.style[prop] = style[prop];
588
+ }
589
+ }
590
+ },
591
+
592
+ isIOS() {
593
+ return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];
594
+ },
595
+
596
+ isAndroid() {
597
+ return /(android)/i.test(navigator.userAgent);
598
+ },
599
+
600
+ isTouchDevice() {
601
+ return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
602
+ },
603
+
604
+ exportCSV(csv, filename) {
605
+ let blob = new Blob([csv], {
606
+ type: 'application/csv;charset=utf-8;'
607
+ });
608
+
609
+ if (window.navigator.msSaveOrOpenBlob) {
610
+ navigator.msSaveOrOpenBlob(blob, filename + '.csv');
611
+ } else {
612
+ let link = document.createElement('a');
613
+
614
+ if (link.download !== undefined) {
615
+ link.setAttribute('href', URL.createObjectURL(blob));
616
+ link.setAttribute('download', filename + '.csv');
617
+ link.style.display = 'none';
618
+ document.body.appendChild(link);
619
+ link.click();
620
+ document.body.removeChild(link);
621
+ } else {
622
+ csv = 'data:text/csv;charset=utf-8,' + csv;
623
+ window.open(encodeURI(csv));
624
+ }
625
+ }
626
+ }
627
+ };
628
+
629
+ var script$2 = {
7
630
  name: 'PanelMenuSub',
8
631
  emits: ['item-toggle'],
9
632
  props: {
10
- model: {
11
- type: null,
633
+ panelId: {
634
+ type: String,
12
635
  default: null
13
636
  },
637
+ focusedItemId: {
638
+ type: String,
639
+ default: null
640
+ },
641
+ items: {
642
+ type: Array,
643
+ default: null
644
+ },
645
+ level: {
646
+ type: Number,
647
+ default: 0
648
+ },
14
649
  template: {
15
650
  type: Function,
16
651
  default: null
17
652
  },
18
- expandedKeys: {
19
- type: null,
653
+ activeItemPath: {
654
+ type: Object,
20
655
  default: null
21
656
  },
22
657
  exact: {
@@ -24,177 +659,213 @@ var script$1 = {
24
659
  default: true
25
660
  }
26
661
  },
27
- data() {
28
- return {
29
- activeItem: null
30
- }
31
- },
32
662
  methods: {
33
- onItemClick(event, item, navigate) {
34
- if (this.isActive(item) && this.activeItem === null) {
35
- this.activeItem = item;
36
- }
37
-
38
- if (this.disabled(item)) {
39
- event.preventDefault();
40
- return;
41
- }
42
-
43
- if (item.command) {
44
- item.command({
45
- originalEvent: event,
46
- item: item
47
- });
48
- }
49
-
50
- if (this.activeItem && this.activeItem === item)
51
- this.activeItem = null;
52
- else
53
- this.activeItem = item;
54
-
55
- this.$emit('item-toggle', {item: item, expanded: this.activeItem != null});
663
+ getItemId(processedItem) {
664
+ return `${this.panelId}_${processedItem.key}`;
665
+ },
666
+ getItemKey(processedItem) {
667
+ return this.getItemId(processedItem);
668
+ },
669
+ getItemProp(processedItem, name) {
670
+ return processedItem && processedItem.item ? utils.ObjectUtils.getItemValue(processedItem.item[name]) : undefined;
671
+ },
672
+ getItemLabel(processedItem) {
673
+ return this.getItemProp(processedItem, 'label');
674
+ },
675
+ isItemActive(processedItem) {
676
+ return this.activeItemPath.some((path) => path.key === processedItem.key);
677
+ },
678
+ isItemVisible(processedItem) {
679
+ return this.getItemProp(processedItem, 'visible') !== false;
680
+ },
681
+ isItemDisabled(processedItem) {
682
+ return this.getItemProp(processedItem, 'disabled');
683
+ },
684
+ isItemFocused(processedItem) {
685
+ return this.focusedItemId === this.getItemId(processedItem);
686
+ },
687
+ isItemGroup(processedItem) {
688
+ return utils.ObjectUtils.isNotEmpty(processedItem.items);
689
+ },
690
+ onItemClick(event, processedItem) {
691
+ const command = this.getItemProp(processedItem, 'command');
56
692
 
57
- if (item.to && navigate) {
58
- navigate(event);
59
- }
693
+ command && command({ originalEvent: event, item: processedItem.item });
694
+ this.$emit('item-toggle', { processedItem, expanded: !this.isItemActive(processedItem) });
60
695
  },
61
- onItemKeydown(event, item) {
62
- if (event.which === 13) {
63
- this.onItemClick(event, item);
64
- }
696
+ onItemToggle(event) {
697
+ this.$emit('item-toggle', event);
65
698
  },
66
- getItemClass(item) {
67
- return ['p-menuitem', item.className];
699
+ onItemActionClick(event, navigate) {
700
+ navigate && navigate(event);
68
701
  },
69
- linkClass(item, routerProps) {
70
- return ['p-menuitem-link', {
71
- 'p-disabled': this.disabled(item),
72
- 'router-link-active': routerProps && routerProps.isActive,
73
- 'router-link-active-exact': this.exact && routerProps && routerProps.isExactActive
74
- }];
702
+ getAriaSetSize() {
703
+ return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;
75
704
  },
76
- isActive(item) {
77
- return this.expandedKeys ? this.expandedKeys[item.key] : item === this.activeItem;
705
+ getAriaPosInset(index) {
706
+ return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;
78
707
  },
79
- getSubmenuIcon(item) {
80
- const active = this.isActive(item);
81
- return ['p-panelmenu-icon pi pi-fw', {'pi-angle-right': !active, 'pi-angle-down': active}];
708
+ getItemClass(processedItem) {
709
+ return [
710
+ 'p-menuitem',
711
+ this.getItemProp(processedItem, 'class'),
712
+ {
713
+ 'p-focus': this.isItemFocused(processedItem),
714
+ 'p-disabled': this.isItemDisabled(processedItem)
715
+ }
716
+ ];
82
717
  },
83
- visible(item) {
84
- return (typeof item.visible === 'function' ? item.visible() : item.visible !== false);
718
+ getItemActionClass(processedItem, routerProps) {
719
+ return [
720
+ 'p-menuitem-link',
721
+ {
722
+ 'router-link-active': routerProps && routerProps.isActive,
723
+ 'router-link-active-exact': this.exact && routerProps && routerProps.isExactActive
724
+ }
725
+ ];
85
726
  },
86
- disabled(item) {
87
- return (typeof item.disabled === 'function' ? item.disabled() : item.disabled);
727
+ getItemIconClass(processedItem) {
728
+ return ['p-menuitem-icon', this.getItemProp(processedItem, 'icon')];
88
729
  },
89
- label(item) {
90
- return (typeof item.label === 'function' ? item.label() : item.label);
730
+ getItemToggleIconClass(processedItem) {
731
+ return ['p-submenu-icon', this.isItemActive(processedItem) ? 'pi pi-fw pi-chevron-down' : 'pi pi-fw pi-chevron-right'];
732
+ },
733
+ getSeparatorItemClass(processedItem) {
734
+ return ['p-menuitem-separator', this.getItemProp(processedItem, 'class')];
91
735
  }
736
+ },
737
+ directives: {
738
+ ripple: Ripple__default["default"]
92
739
  }
93
740
  };
94
741
 
95
- const _hoisted_1$1 = {
96
- class: "p-submenu-list",
97
- role: "tree"
98
- };
99
- const _hoisted_2$1 = ["href", "onClick", "aria-expanded"];
100
- const _hoisted_3$1 = { class: "p-menuitem-text" };
101
- const _hoisted_4$1 = ["href", "target", "onClick", "onKeydown", "aria-expanded", "tabindex"];
742
+ const _hoisted_1$1 = { class: "p-submenu-list" };
743
+ const _hoisted_2$1 = ["id", "aria-label", "aria-expanded", "aria-level", "aria-setsize", "aria-posinset"];
744
+ const _hoisted_3$1 = ["onClick"];
745
+ const _hoisted_4$1 = ["href", "onClick"];
102
746
  const _hoisted_5$1 = { class: "p-menuitem-text" };
103
- const _hoisted_6$1 = { class: "p-toggleable-content" };
747
+ const _hoisted_6$1 = ["href", "target"];
748
+ const _hoisted_7$1 = { class: "p-menuitem-text" };
749
+ const _hoisted_8$1 = { class: "p-toggleable-content" };
104
750
 
105
- function render$1(_ctx, _cache, $props, $setup, $data, $options) {
751
+ function render$2(_ctx, _cache, $props, $setup, $data, $options) {
106
752
  const _component_router_link = vue.resolveComponent("router-link");
107
753
  const _component_PanelMenuSub = vue.resolveComponent("PanelMenuSub", true);
754
+ const _directive_ripple = vue.resolveDirective("ripple");
108
755
 
109
756
  return (vue.openBlock(), vue.createElementBlock("ul", _hoisted_1$1, [
110
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($props.model, (item, i) => {
757
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($props.items, (processedItem, index) => {
111
758
  return (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
112
- key: $options.label(item) + i.toString()
759
+ key: $options.getItemKey(processedItem)
113
760
  }, [
114
- ($options.visible(item) && !item.separator)
761
+ ($options.isItemVisible(processedItem) && !$options.getItemProp(processedItem, 'separator'))
115
762
  ? (vue.openBlock(), vue.createElementBlock("li", {
116
763
  key: 0,
117
- role: "none",
118
- class: vue.normalizeClass($options.getItemClass(item)),
119
- style: vue.normalizeStyle(item.style)
764
+ id: $options.getItemId(processedItem),
765
+ style: vue.normalizeStyle($options.getItemProp(processedItem, 'style')),
766
+ class: vue.normalizeClass($options.getItemClass(processedItem)),
767
+ role: "treeitem",
768
+ "aria-label": $options.getItemLabel(processedItem),
769
+ "aria-expanded": $options.isItemGroup(processedItem) ? $options.isItemActive(processedItem) : undefined,
770
+ "aria-level": $props.level + 1,
771
+ "aria-setsize": $options.getAriaSetSize(),
772
+ "aria-posinset": $options.getAriaPosInset(index)
120
773
  }, [
121
- (!$props.template)
122
- ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
123
- (item.to && !$options.disabled(item))
124
- ? (vue.openBlock(), vue.createBlock(_component_router_link, {
125
- key: 0,
126
- to: item.to,
127
- custom: ""
128
- }, {
129
- default: vue.withCtx(({navigate, href, isActive:isRouterActive, isExactActive}) => [
130
- vue.createElementVNode("a", {
131
- href: href,
132
- class: vue.normalizeClass($options.linkClass(item, {isActive:isRouterActive, isExactActive})),
133
- onClick: $event => ($options.onItemClick($event, item, navigate)),
134
- role: "treeitem",
135
- "aria-expanded": $options.isActive(item)
136
- }, [
137
- vue.createElementVNode("span", {
138
- class: vue.normalizeClass(['p-menuitem-icon', item.icon])
139
- }, null, 2),
140
- vue.createElementVNode("span", _hoisted_3$1, vue.toDisplayString($options.label(item)), 1)
141
- ], 10, _hoisted_2$1)
142
- ]),
143
- _: 2
144
- }, 1032, ["to"]))
145
- : (vue.openBlock(), vue.createElementBlock("a", {
146
- key: 1,
147
- href: item.url,
148
- class: vue.normalizeClass($options.linkClass(item)),
149
- target: item.target,
150
- onClick: $event => ($options.onItemClick($event, item)),
151
- onKeydown: $event => ($options.onItemKeydown($event, item)),
152
- role: "treeitem",
153
- "aria-expanded": $options.isActive(item),
154
- tabindex: $options.disabled(item) ? null : '0'
155
- }, [
156
- (item.items)
157
- ? (vue.openBlock(), vue.createElementBlock("span", {
158
- key: 0,
159
- class: vue.normalizeClass($options.getSubmenuIcon(item))
160
- }, null, 2))
161
- : vue.createCommentVNode("", true),
162
- vue.createElementVNode("span", {
163
- class: vue.normalizeClass(['p-menuitem-icon', item.icon])
164
- }, null, 2),
165
- vue.createElementVNode("span", _hoisted_5$1, vue.toDisplayString($options.label(item)), 1)
166
- ], 42, _hoisted_4$1))
167
- ], 64))
168
- : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($props.template), {
169
- key: 1,
170
- item: item
171
- }, null, 8, ["item"])),
774
+ vue.createElementVNode("div", {
775
+ class: "p-menuitem-content",
776
+ onClick: $event => ($options.onItemClick($event, processedItem))
777
+ }, [
778
+ (!$props.template)
779
+ ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
780
+ ($options.getItemProp(processedItem, 'to') && !$options.isItemDisabled(processedItem))
781
+ ? (vue.openBlock(), vue.createBlock(_component_router_link, {
782
+ key: 0,
783
+ to: $options.getItemProp(processedItem, 'to'),
784
+ custom: ""
785
+ }, {
786
+ default: vue.withCtx(({ navigate, href, isActive, isExactActive }) => [
787
+ vue.withDirectives((vue.openBlock(), vue.createElementBlock("a", {
788
+ href: href,
789
+ class: vue.normalizeClass($options.getItemActionClass(processedItem, { isActive, isExactActive })),
790
+ tabindex: "-1",
791
+ "aria-hidden": "true",
792
+ onClick: $event => ($options.onItemActionClick($event, navigate))
793
+ }, [
794
+ ($options.getItemProp(processedItem, 'icon'))
795
+ ? (vue.openBlock(), vue.createElementBlock("span", {
796
+ key: 0,
797
+ class: vue.normalizeClass($options.getItemIconClass(processedItem))
798
+ }, null, 2))
799
+ : vue.createCommentVNode("", true),
800
+ vue.createElementVNode("span", _hoisted_5$1, vue.toDisplayString($options.getItemLabel(processedItem)), 1)
801
+ ], 10, _hoisted_4$1)), [
802
+ [_directive_ripple]
803
+ ])
804
+ ]),
805
+ _: 2
806
+ }, 1032, ["to"]))
807
+ : vue.withDirectives((vue.openBlock(), vue.createElementBlock("a", {
808
+ key: 1,
809
+ href: $options.getItemProp(processedItem, 'url'),
810
+ class: vue.normalizeClass($options.getItemActionClass(processedItem)),
811
+ target: $options.getItemProp(processedItem, 'target'),
812
+ tabindex: "-1",
813
+ "aria-hidden": "true"
814
+ }, [
815
+ ($options.isItemGroup(processedItem))
816
+ ? (vue.openBlock(), vue.createElementBlock("span", {
817
+ key: 0,
818
+ class: vue.normalizeClass($options.getItemToggleIconClass(processedItem))
819
+ }, null, 2))
820
+ : vue.createCommentVNode("", true),
821
+ ($options.getItemProp(processedItem, 'icon'))
822
+ ? (vue.openBlock(), vue.createElementBlock("span", {
823
+ key: 1,
824
+ class: vue.normalizeClass($options.getItemIconClass(processedItem))
825
+ }, null, 2))
826
+ : vue.createCommentVNode("", true),
827
+ vue.createElementVNode("span", _hoisted_7$1, vue.toDisplayString($options.getItemLabel(processedItem)), 1)
828
+ ], 10, _hoisted_6$1)), [
829
+ [_directive_ripple]
830
+ ])
831
+ ], 64))
832
+ : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($props.template), {
833
+ key: 1,
834
+ item: processedItem.item
835
+ }, null, 8, ["item"]))
836
+ ], 8, _hoisted_3$1),
172
837
  vue.createVNode(vue.Transition, { name: "p-toggleable-content" }, {
173
838
  default: vue.withCtx(() => [
174
- vue.withDirectives(vue.createElementVNode("div", _hoisted_6$1, [
175
- ($options.visible(item) && item.items)
839
+ vue.withDirectives(vue.createElementVNode("div", _hoisted_8$1, [
840
+ ($options.isItemVisible(processedItem) && $options.isItemGroup(processedItem))
176
841
  ? (vue.openBlock(), vue.createBlock(_component_PanelMenuSub, {
177
- model: item.items,
178
- key: $options.label(item) + '_sub_',
842
+ key: 0,
843
+ id: $options.getItemId(processedItem) + '_list',
844
+ role: "group",
845
+ panelId: $props.panelId,
846
+ focusedItemId: $props.focusedItemId,
847
+ items: processedItem.items,
848
+ level: $props.level + 1,
179
849
  template: $props.template,
180
- expandedKeys: $props.expandedKeys,
181
- onItemToggle: _cache[0] || (_cache[0] = $event => (_ctx.$emit('item-toggle', $event))),
182
- exact: $props.exact
183
- }, null, 8, ["model", "template", "expandedKeys", "exact"]))
850
+ activeItemPath: $props.activeItemPath,
851
+ exact: $props.exact,
852
+ onItemToggle: $options.onItemToggle
853
+ }, null, 8, ["id", "panelId", "focusedItemId", "items", "level", "template", "activeItemPath", "exact", "onItemToggle"]))
184
854
  : vue.createCommentVNode("", true)
185
855
  ], 512), [
186
- [vue.vShow, $options.isActive(item)]
856
+ [vue.vShow, $options.isItemActive(processedItem)]
187
857
  ])
188
858
  ]),
189
859
  _: 2
190
860
  }, 1024)
191
- ], 6))
861
+ ], 14, _hoisted_2$1))
192
862
  : vue.createCommentVNode("", true),
193
- ($options.visible(item) && item.separator)
863
+ ($options.isItemVisible(processedItem) && $options.getItemProp(processedItem, 'separator'))
194
864
  ? (vue.openBlock(), vue.createElementBlock("li", {
195
- class: vue.normalizeClass(['p-menu-separator', item.class]),
196
- style: vue.normalizeStyle(item.style),
197
- key: 'separator' + i.toString()
865
+ key: 1,
866
+ style: vue.normalizeStyle($options.getItemProp(processedItem, 'style')),
867
+ class: vue.normalizeClass($options.getSeparatorItemClass(processedItem)),
868
+ role: "separator"
198
869
  }, null, 6))
199
870
  : vue.createCommentVNode("", true)
200
871
  ], 64))
@@ -202,228 +873,659 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
202
873
  ]))
203
874
  }
204
875
 
876
+ script$2.render = render$2;
877
+
878
+ var script$1 = {
879
+ name: 'PanelMenuList',
880
+ emits: ['item-toggle', 'header-focus'],
881
+ props: {
882
+ panelId: {
883
+ type: String,
884
+ default: null
885
+ },
886
+ items: {
887
+ type: Array,
888
+ default: null
889
+ },
890
+ template: {
891
+ type: Function,
892
+ default: null
893
+ },
894
+ expandedKeys: {
895
+ type: Object,
896
+ default: null
897
+ },
898
+ exact: {
899
+ type: Boolean,
900
+ default: true
901
+ }
902
+ },
903
+ data() {
904
+ return {
905
+ focused: false,
906
+ focusedItem: null,
907
+ activeItemPath: []
908
+ };
909
+ },
910
+ watch: {
911
+ expandedKeys(newValue) {
912
+ this.autoUpdateActiveItemPath(newValue);
913
+ }
914
+ },
915
+ mounted() {
916
+ this.autoUpdateActiveItemPath(this.expandedKeys);
917
+ },
918
+ methods: {
919
+ getItemProp(processedItem, name) {
920
+ return processedItem && processedItem.item ? utils.ObjectUtils.getItemValue(processedItem.item[name]) : undefined;
921
+ },
922
+ isItemVisible(processedItem) {
923
+ return this.getItemProp(processedItem, 'visible') !== false;
924
+ },
925
+ isItemDisabled(processedItem) {
926
+ return this.getItemProp(processedItem, 'disabled');
927
+ },
928
+ isItemActive(processedItem) {
929
+ return this.activeItemPath.some((path) => path.key === processedItem.parentKey);
930
+ },
931
+ isItemGroup(processedItem) {
932
+ return utils.ObjectUtils.isNotEmpty(processedItem.items);
933
+ },
934
+ onFocus(event) {
935
+ this.focused = true;
936
+ this.focusedItem = this.focusedItem || (this.isElementInPanel(event, event.relatedTarget) ? this.findFirstItem() : this.findLastItem());
937
+ },
938
+ onBlur() {
939
+ this.focused = false;
940
+ this.focusedItem = null;
941
+ },
942
+ onKeyDown(event) {
943
+ switch (event.code) {
944
+ case 'ArrowDown':
945
+ this.onArrowDownKey(event);
946
+ break;
947
+
948
+ case 'ArrowUp':
949
+ this.onArrowUpKey(event);
950
+ break;
951
+
952
+ case 'ArrowLeft':
953
+ this.onArrowLeftKey(event);
954
+ break;
955
+
956
+ case 'ArrowRight':
957
+ this.onArrowRightKey(event);
958
+ break;
959
+
960
+ case 'Home':
961
+ this.onHomeKey(event);
962
+ break;
963
+
964
+ case 'End':
965
+ this.onEndKey(event);
966
+ break;
967
+
968
+ case 'Space':
969
+ this.onSpaceKey(event);
970
+ break;
971
+
972
+ case 'Enter':
973
+ this.onEnterKey(event);
974
+ break;
975
+ }
976
+ },
977
+ onArrowDownKey(event) {
978
+ const processedItem = utils.ObjectUtils.isNotEmpty(this.focusedItem) ? this.findNextItem(this.focusedItem) : this.findFirstItem();
979
+
980
+ this.changeFocusedItem({ originalEvent: event, processedItem, focusOnNext: true });
981
+ event.preventDefault();
982
+ },
983
+ onArrowUpKey(event) {
984
+ const processedItem = utils.ObjectUtils.isNotEmpty(this.focusedItem) ? this.findPrevItem(this.focusedItem) : this.findLastItem();
985
+
986
+ this.changeFocusedItem({ originalEvent: event, processedItem, selfCheck: true });
987
+ event.preventDefault();
988
+ },
989
+ onArrowLeftKey(event) {
990
+ if (utils.ObjectUtils.isNotEmpty(this.focusedItem)) {
991
+ const matched = this.activeItemPath.some((p) => p.key === this.focusedItem.key);
992
+
993
+ if (matched) {
994
+ this.activeItemPath = this.activeItemPath.filter((p) => p.key !== this.focusedItem.key);
995
+ } else {
996
+ this.focusedItem = utils.ObjectUtils.isNotEmpty(this.focusedItem.parent) ? this.focusedItem.parent : this.focusedItem;
997
+ }
998
+
999
+ event.preventDefault();
1000
+ }
1001
+ },
1002
+ onArrowRightKey(event) {
1003
+ if (utils.ObjectUtils.isNotEmpty(this.focusedItem)) {
1004
+ const grouped = this.isItemGroup(this.focusedItem);
1005
+
1006
+ if (grouped) {
1007
+ const matched = this.activeItemPath.some((p) => p.key === this.focusedItem.key);
1008
+
1009
+ if (matched) {
1010
+ this.onArrowDownKey(event);
1011
+ } else {
1012
+ this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== this.focusedItem.parentKey);
1013
+ this.activeItemPath.push(this.focusedItem);
1014
+ }
1015
+ }
1016
+
1017
+ event.preventDefault();
1018
+ }
1019
+ },
1020
+ onHomeKey(event) {
1021
+ this.changeFocusedItem({ originalEvent: event, processedItem: this.findFirstItem(), allowHeaderFocus: false });
1022
+ event.preventDefault();
1023
+ },
1024
+ onEndKey(event) {
1025
+ this.changeFocusedItem({ originalEvent: event, processedItem: this.findLastItem(), focusOnNext: true, allowHeaderFocus: false });
1026
+ event.preventDefault();
1027
+ },
1028
+ onEnterKey(event) {
1029
+ if (utils.ObjectUtils.isNotEmpty(this.focusedItem)) {
1030
+ const element = DomHandler.findSingle(this.$el, `li[id="${`${this.focusedItemId}`}"]`);
1031
+ const anchorElement = element && DomHandler.findSingle(element, '.p-menuitem-link');
1032
+
1033
+ anchorElement ? anchorElement.click() : element && element.click();
1034
+ }
1035
+
1036
+ event.preventDefault();
1037
+ },
1038
+ onSpaceKey(event) {
1039
+ this.onEnterKey(event);
1040
+ },
1041
+ onItemToggle(event) {
1042
+ const { processedItem, expanded } = event;
1043
+
1044
+ if (this.expandedKeys) {
1045
+ this.$emit('item-toggle', { item: processedItem.item, expanded });
1046
+ } else {
1047
+ this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== processedItem.parentKey);
1048
+ expanded && this.activeItemPath.push(processedItem);
1049
+ }
1050
+
1051
+ this.focusedItem = processedItem;
1052
+ DomHandler.focus(this.$el);
1053
+ },
1054
+ isElementInPanel(event, element) {
1055
+ const panel = event.currentTarget.closest('.p-panelmenu-panel');
1056
+
1057
+ return panel && panel.contains(element);
1058
+ },
1059
+ isVisibleItem(processedItem) {
1060
+ return !!processedItem && (processedItem.level === 0 || this.isItemActive(processedItem)) && this.isItemVisible(processedItem);
1061
+ },
1062
+ isValidItem(processedItem) {
1063
+ return !!processedItem && !this.isItemDisabled(processedItem);
1064
+ },
1065
+ findFirstItem() {
1066
+ return this.visibleItems.find((processedItem) => this.isValidItem(processedItem));
1067
+ },
1068
+ findLastItem() {
1069
+ return utils.ObjectUtils.findLast(this.visibleItems, (processedItem) => this.isValidItem(processedItem));
1070
+ },
1071
+ findNextItem(processedItem) {
1072
+ const index = this.visibleItems.findIndex((item) => item.key === processedItem.key);
1073
+ const matchedItem = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).find((pItem) => this.isValidItem(pItem)) : undefined;
1074
+
1075
+ return matchedItem || processedItem;
1076
+ },
1077
+ findPrevItem(processedItem) {
1078
+ const index = this.visibleItems.findIndex((item) => item.key === processedItem.key);
1079
+ const matchedItem = index > 0 ? utils.ObjectUtils.findLast(this.visibleItems.slice(0, index), (pItem) => this.isValidItem(pItem)) : undefined;
1080
+
1081
+ return matchedItem || processedItem;
1082
+ },
1083
+ changeFocusedItem(event) {
1084
+ const { originalEvent, processedItem, focusOnNext, selfCheck, allowHeaderFocus = true } = event;
1085
+
1086
+ if (utils.ObjectUtils.isNotEmpty(this.focusedItem) && this.focusedItem.key !== processedItem.key) {
1087
+ this.focusedItem = processedItem;
1088
+ this.scrollInView();
1089
+ } else if (allowHeaderFocus) {
1090
+ this.$emit('header-focus', { originalEvent, focusOnNext, selfCheck });
1091
+ }
1092
+ },
1093
+ scrollInView() {
1094
+ const element = DomHandler.findSingle(this.$el, `li[id="${`${this.focusedItemId}`}"]`);
1095
+
1096
+ if (element) {
1097
+ element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });
1098
+ }
1099
+ },
1100
+ autoUpdateActiveItemPath(expandedKeys) {
1101
+ this.activeItemPath = Object.entries(expandedKeys || {}).reduce((acc, [key, val]) => {
1102
+ if (val) {
1103
+ const processedItem = this.findProcessedItemByItemKey(key);
1104
+
1105
+ processedItem && acc.push(processedItem);
1106
+ }
1107
+
1108
+ return acc;
1109
+ }, []);
1110
+ },
1111
+ findProcessedItemByItemKey(key, processedItems, level = 0) {
1112
+ processedItems = processedItems || (level === 0 && this.processedItems);
1113
+
1114
+ if (!processedItems) return null;
1115
+
1116
+ for (let i = 0; i < processedItems.length; i++) {
1117
+ const processedItem = processedItems[i];
1118
+
1119
+ if (this.getItemProp(processedItem, 'key') === key) return processedItem;
1120
+
1121
+ const matchedItem = this.findProcessedItemByItemKey(key, processedItem.items, level + 1);
1122
+
1123
+ if (matchedItem) return matchedItem;
1124
+ }
1125
+ },
1126
+ createProcessedItems(items, level = 0, parent = {}, parentKey = '') {
1127
+ const processedItems = [];
1128
+
1129
+ items &&
1130
+ items.forEach((item, index) => {
1131
+ const key = (parentKey !== '' ? parentKey + '_' : '') + index;
1132
+ const newItem = {
1133
+ item,
1134
+ index,
1135
+ level,
1136
+ key,
1137
+ parent,
1138
+ parentKey
1139
+ };
1140
+
1141
+ newItem['items'] = this.createProcessedItems(item.items, level + 1, newItem, key);
1142
+ processedItems.push(newItem);
1143
+ });
1144
+
1145
+ return processedItems;
1146
+ },
1147
+ flatItems(processedItems, processedFlattenItems = []) {
1148
+ processedItems &&
1149
+ processedItems.forEach((processedItem) => {
1150
+ if (this.isVisibleItem(processedItem)) {
1151
+ processedFlattenItems.push(processedItem);
1152
+ this.flatItems(processedItem.items, processedFlattenItems);
1153
+ }
1154
+ });
1155
+
1156
+ return processedFlattenItems;
1157
+ }
1158
+ },
1159
+ computed: {
1160
+ processedItems() {
1161
+ return this.createProcessedItems(this.items || []);
1162
+ },
1163
+ visibleItems() {
1164
+ return this.flatItems(this.processedItems);
1165
+ },
1166
+ focusedItemId() {
1167
+ return utils.ObjectUtils.isNotEmpty(this.focusedItem) ? `${this.panelId}_${this.focusedItem.key}` : null;
1168
+ }
1169
+ },
1170
+ components: {
1171
+ PanelMenuSub: script$2
1172
+ }
1173
+ };
1174
+
1175
+ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
1176
+ const _component_PanelMenuSub = vue.resolveComponent("PanelMenuSub");
1177
+
1178
+ return (vue.openBlock(), vue.createBlock(_component_PanelMenuSub, {
1179
+ id: $props.panelId + '_list',
1180
+ class: "p-panelmenu-root-list",
1181
+ role: "tree",
1182
+ tabindex: -1,
1183
+ "aria-activedescendant": $data.focused ? $options.focusedItemId : undefined,
1184
+ panelId: $props.panelId,
1185
+ focusedItemId: $data.focused ? $options.focusedItemId : undefined,
1186
+ items: $options.processedItems,
1187
+ template: $props.template,
1188
+ activeItemPath: $data.activeItemPath,
1189
+ exact: $props.exact,
1190
+ onFocus: $options.onFocus,
1191
+ onBlur: $options.onBlur,
1192
+ onKeydown: $options.onKeyDown,
1193
+ onItemToggle: $options.onItemToggle
1194
+ }, null, 8, ["id", "aria-activedescendant", "panelId", "focusedItemId", "items", "template", "activeItemPath", "exact", "onFocus", "onBlur", "onKeydown", "onItemToggle"]))
1195
+ }
1196
+
205
1197
  script$1.render = render$1;
206
1198
 
207
1199
  var script = {
208
1200
  name: 'PanelMenu',
209
- emits: ['update:expandedKeys'],
1201
+ emits: ['update:expandedKeys', 'panel-open', 'panel-close'],
210
1202
  props: {
211
- model: {
1203
+ model: {
212
1204
  type: Array,
213
1205
  default: null
214
1206
  },
215
1207
  expandedKeys: {
216
- type: null,
1208
+ type: Object,
217
1209
  default: null
218
1210
  },
219
1211
  exact: {
220
1212
  type: Boolean,
221
1213
  default: true
1214
+ },
1215
+ tabindex: {
1216
+ type: Number,
1217
+ default: 0
222
1218
  }
223
1219
  },
224
1220
  data() {
225
1221
  return {
226
1222
  activeItem: null
227
- }
1223
+ };
228
1224
  },
229
1225
  methods: {
230
- onItemClick(event, item, navigate) {
231
- if (this.isActive(item) && this.activeItem === null) {
232
- this.activeItem = item;
233
- }
234
-
235
- if (this.disabled(item)) {
1226
+ getItemProp(item, name) {
1227
+ return item ? utils.ObjectUtils.getItemValue(item[name]) : undefined;
1228
+ },
1229
+ getItemLabel(item) {
1230
+ return this.getItemProp(item, 'label');
1231
+ },
1232
+ isItemActive(item) {
1233
+ return this.expandedKeys ? this.expandedKeys[this.getItemProp(item, 'key')] : item === this.activeItem;
1234
+ },
1235
+ isItemVisible(item) {
1236
+ return this.getItemProp(item, 'visible') !== false;
1237
+ },
1238
+ isItemDisabled(item) {
1239
+ return this.getItemProp(item, 'disabled');
1240
+ },
1241
+ getPanelId(index) {
1242
+ return `${this.id}_${index}`;
1243
+ },
1244
+ getPanelKey(index) {
1245
+ return this.getPanelId(index);
1246
+ },
1247
+ getHeaderId(index) {
1248
+ return `${this.getPanelId(index)}_header`;
1249
+ },
1250
+ getContentId(index) {
1251
+ return `${this.getPanelId(index)}_content`;
1252
+ },
1253
+ onHeaderClick(event, item) {
1254
+ if (this.isItemDisabled(item)) {
236
1255
  event.preventDefault();
1256
+
237
1257
  return;
238
1258
  }
239
1259
 
240
1260
  if (item.command) {
241
- item.command({
242
- originalEvent: event,
243
- item: item
244
- });
1261
+ item.command({ originalEvent: event, item });
245
1262
  }
246
1263
 
247
- if (this.activeItem && this.activeItem === item)
248
- this.activeItem = null;
249
- else
250
- this.activeItem = item;
1264
+ this.changeActiveItem(event, item);
1265
+ utils.DomHandler.focus(event.currentTarget);
1266
+ },
1267
+ onHeaderKeyDown(event, item) {
1268
+ switch (event.code) {
1269
+ case 'ArrowDown':
1270
+ this.onHeaderArrowDownKey(event);
1271
+ break;
1272
+
1273
+ case 'ArrowUp':
1274
+ this.onHeaderArrowUpKey(event);
1275
+ break;
1276
+
1277
+ case 'Home':
1278
+ this.onHeaderHomeKey(event);
1279
+ break;
251
1280
 
252
- this.updateExpandedKeys({item: item, expanded: this.activeItem != null});
1281
+ case 'End':
1282
+ this.onHeaderEndKey(event);
1283
+ break;
253
1284
 
254
- if (item.to && navigate) {
255
- navigate(event);
1285
+ case 'Enter':
1286
+ case 'Space':
1287
+ this.onHeaderEnterKey(event, item);
1288
+ break;
256
1289
  }
257
1290
  },
258
- onItemKeydown(event, item) {
259
- if (event.which === 13) {
260
- this.onItemClick(event, item);
1291
+ onHeaderArrowDownKey(event) {
1292
+ const rootList = utils.DomHandler.hasClass(event.currentTarget, 'p-highlight') ? utils.DomHandler.findSingle(event.currentTarget.nextElementSibling, '.p-panelmenu-root-list') : null;
1293
+
1294
+ rootList ? utils.DomHandler.focus(rootList) : this.updateFocusedHeader({ originalEvent: event, focusOnNext: true });
1295
+ event.preventDefault();
1296
+ },
1297
+ onHeaderArrowUpKey(event) {
1298
+ const prevHeader = this.findPrevHeader(event.currentTarget.parentElement) || this.findLastHeader();
1299
+ const rootList = utils.DomHandler.hasClass(prevHeader, 'p-highlight') ? utils.DomHandler.findSingle(prevHeader.nextElementSibling, '.p-panelmenu-root-list') : null;
1300
+
1301
+ rootList ? utils.DomHandler.focus(rootList) : this.updateFocusedHeader({ originalEvent: event, focusOnNext: false });
1302
+ event.preventDefault();
1303
+ },
1304
+ onHeaderHomeKey(event) {
1305
+ this.changeFocusedHeader(event, this.findFirstHeader());
1306
+ event.preventDefault();
1307
+ },
1308
+ onHeaderEndKey(event) {
1309
+ this.changeFocusedHeader(event, this.findLastHeader());
1310
+ event.preventDefault();
1311
+ },
1312
+ onHeaderEnterKey(event, item) {
1313
+ const headerAction = utils.DomHandler.findSingle(event.currentTarget, '.p-panelmenu-header-action');
1314
+
1315
+ headerAction ? headerAction.click() : this.onHeaderClick(event, item);
1316
+ event.preventDefault();
1317
+ },
1318
+ onHeaderActionClick(event, navigate) {
1319
+ navigate && navigate(event);
1320
+ },
1321
+ findNextHeader(panelElement, selfCheck = false) {
1322
+ const nextPanelElement = selfCheck ? panelElement : panelElement.nextElementSibling;
1323
+ const headerElement = utils.DomHandler.findSingle(nextPanelElement, '.p-panelmenu-header');
1324
+
1325
+ return headerElement ? (utils.DomHandler.hasClass(headerElement, 'p-disabled') ? this.findNextHeader(headerElement.parentElement) : headerElement) : null;
1326
+ },
1327
+ findPrevHeader(panelElement, selfCheck = false) {
1328
+ const prevPanelElement = selfCheck ? panelElement : panelElement.previousElementSibling;
1329
+ const headerElement = utils.DomHandler.findSingle(prevPanelElement, '.p-panelmenu-header');
1330
+
1331
+ return headerElement ? (utils.DomHandler.hasClass(headerElement, 'p-disabled') ? this.findPrevHeader(headerElement.parentElement) : headerElement) : null;
1332
+ },
1333
+ findFirstHeader() {
1334
+ return this.findNextHeader(this.$el.firstElementChild, true);
1335
+ },
1336
+ findLastHeader() {
1337
+ return this.findPrevHeader(this.$el.lastElementChild, true);
1338
+ },
1339
+ updateFocusedHeader(event) {
1340
+ const { originalEvent, focusOnNext, selfCheck } = event;
1341
+ const panelElement = originalEvent.currentTarget.closest('.p-panelmenu-panel');
1342
+ const header = selfCheck ? utils.DomHandler.findSingle(panelElement, '.p-panelmenu-header') : focusOnNext ? this.findNextHeader(panelElement) : this.findPrevHeader(panelElement);
1343
+
1344
+ header ? this.changeFocusedHeader(originalEvent, header) : focusOnNext ? this.onHeaderHomeKey(originalEvent) : this.onHeaderEndKey(originalEvent);
1345
+ },
1346
+ changeActiveItem(event, item, selfActive = false) {
1347
+ if (!this.isItemDisabled(item)) {
1348
+ this.activeItem = selfActive ? item : this.activeItem && this.activeItem === item ? null : item;
1349
+
1350
+ const active = this.isItemActive(item);
1351
+ const eventName = active ? 'panel-open' : 'panel-close';
1352
+
1353
+ this.changeExpandedKeys({ item, expanded: !active });
1354
+ this.$emit(eventName, { originalEvent: event, item });
261
1355
  }
262
1356
  },
263
- updateExpandedKeys(event) {
1357
+ changeExpandedKeys({ item, expanded = false }) {
264
1358
  if (this.expandedKeys) {
265
- let item = event.item;
266
- let _keys = {...this.expandedKeys};
1359
+ let _keys = { ...this.expandedKeys };
267
1360
 
268
- if (event.expanded)
269
- _keys[item.key] = true;
270
- else
271
- delete _keys[item.key];
1361
+ if (expanded) _keys[item.key] = true;
1362
+ else delete _keys[item.key];
272
1363
 
273
1364
  this.$emit('update:expandedKeys', _keys);
274
1365
  }
275
1366
  },
276
- getPanelClass(item) {
277
- return ['p-panelmenu-panel', item.class];
1367
+ changeFocusedHeader(event, element) {
1368
+ element && utils.DomHandler.focus(element);
278
1369
  },
279
- getPanelToggleIcon(item) {
280
- const active = this.isActive(item);
281
- return ['p-panelmenu-icon pi', {'pi-chevron-right': !active,' pi-chevron-down': active}];
282
- },
283
- getPanelIcon(item) {
284
- return ['p-menuitem-icon', item.icon];
285
- },
286
- getHeaderLinkClass(item, routerProps) {
287
- return ['p-panelmenu-header-link', {
288
- 'router-link-active': routerProps && routerProps.isActive,
289
- 'router-link-active-exact': this.exact && routerProps && routerProps.isExactActive
290
- }];
291
- },
292
- isActive(item) {
293
- return this.expandedKeys ? this.expandedKeys[item.key] : item === this.activeItem;
1370
+ getPanelClass(item) {
1371
+ return ['p-panelmenu-panel', this.getItemProp(item, 'class')];
294
1372
  },
295
1373
  getHeaderClass(item) {
296
- return ['p-component p-panelmenu-header', {'p-highlight': this.isActive(item), 'p-disabled': this.disabled(item)}];
1374
+ return [
1375
+ 'p-panelmenu-header',
1376
+ this.getItemProp(item, 'headerClass'),
1377
+ {
1378
+ 'p-highlight': this.isItemActive(item),
1379
+ 'p-disabled': this.isItemDisabled(item)
1380
+ }
1381
+ ];
297
1382
  },
298
- visible(item) {
299
- return (typeof item.visible === 'function' ? item.visible() : item.visible !== false);
1383
+ getHeaderActionClass(item, routerProps) {
1384
+ return [
1385
+ 'p-panelmenu-header-action',
1386
+ {
1387
+ 'router-link-active': routerProps && routerProps.isActive,
1388
+ 'router-link-active-exact': this.exact && routerProps && routerProps.isExactActive
1389
+ }
1390
+ ];
300
1391
  },
301
- disabled(item) {
302
- return (typeof item.disabled === 'function' ? item.disabled() : item.disabled);
1392
+ getHeaderIconClass(item) {
1393
+ return ['p-menuitem-icon', this.getItemProp(item, 'icon')];
303
1394
  },
304
- label(item) {
305
- return (typeof item.label === 'function' ? item.label() : item.label);
1395
+ getHeaderToggleIconClass(item) {
1396
+ return ['p-submenu-icon', this.isItemActive(item) ? 'pi pi-chevron-down' : 'pi pi-chevron-right'];
306
1397
  }
307
1398
  },
308
- components: {
309
- 'PanelMenuSub': script$1
310
- },
311
1399
  computed: {
312
- ariaId() {
313
- return utils.UniqueComponentId();
1400
+ id() {
1401
+ return this.$attrs.id || utils.UniqueComponentId();
314
1402
  }
1403
+ },
1404
+ components: {
1405
+ PanelMenuList: script$1
315
1406
  }
316
1407
  };
317
1408
 
318
- const _hoisted_1 = { class: "p-panelmenu p-component" };
319
- const _hoisted_2 = ["href", "onClick"];
320
- const _hoisted_3 = { class: "p-menuitem-text" };
321
- const _hoisted_4 = ["href", "onClick", "onKeydown", "tabindex", "aria-expanded", "id", "aria-controls"];
1409
+ const _hoisted_1 = ["id"];
1410
+ const _hoisted_2 = ["id", "tabindex", "aria-label", "aria-expanded", "aria-controls", "aria-disabled", "onClick", "onKeydown"];
1411
+ const _hoisted_3 = { class: "p-panelmenu-header-content" };
1412
+ const _hoisted_4 = ["href", "onClick"];
322
1413
  const _hoisted_5 = { class: "p-menuitem-text" };
323
- const _hoisted_6 = ["id", "aria-labelledby"];
324
- const _hoisted_7 = {
1414
+ const _hoisted_6 = ["href"];
1415
+ const _hoisted_7 = { class: "p-menuitem-text" };
1416
+ const _hoisted_8 = ["id", "aria-labelledby"];
1417
+ const _hoisted_9 = {
325
1418
  key: 0,
326
1419
  class: "p-panelmenu-content"
327
1420
  };
328
1421
 
329
1422
  function render(_ctx, _cache, $props, $setup, $data, $options) {
330
1423
  const _component_router_link = vue.resolveComponent("router-link");
331
- const _component_PanelMenuSub = vue.resolveComponent("PanelMenuSub");
1424
+ const _component_PanelMenuList = vue.resolveComponent("PanelMenuList");
332
1425
 
333
- return (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
1426
+ return (vue.openBlock(), vue.createElementBlock("div", {
1427
+ id: $options.id,
1428
+ class: "p-panelmenu p-component"
1429
+ }, [
334
1430
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($props.model, (item, index) => {
335
1431
  return (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
336
- key: $options.label(item) + '_' + index
1432
+ key: $options.getPanelKey(index)
337
1433
  }, [
338
- ($options.visible(item))
1434
+ ($options.isItemVisible(item))
339
1435
  ? (vue.openBlock(), vue.createElementBlock("div", {
340
1436
  key: 0,
341
- class: vue.normalizeClass($options.getPanelClass(item)),
342
- style: vue.normalizeStyle(item.style)
1437
+ style: vue.normalizeStyle($options.getItemProp(item, 'style')),
1438
+ class: vue.normalizeClass($options.getPanelClass(item))
343
1439
  }, [
344
1440
  vue.createElementVNode("div", {
1441
+ id: $options.getHeaderId(index),
345
1442
  class: vue.normalizeClass($options.getHeaderClass(item)),
346
- style: vue.normalizeStyle(item.style)
1443
+ tabindex: $options.isItemDisabled(item) ? -1 : $props.tabindex,
1444
+ role: "button",
1445
+ "aria-label": $options.getItemLabel(item),
1446
+ "aria-expanded": $options.isItemActive(item),
1447
+ "aria-controls": $options.getContentId(index),
1448
+ "aria-disabled": $options.isItemDisabled(item),
1449
+ onClick: $event => ($options.onHeaderClick($event, item)),
1450
+ onKeydown: $event => ($options.onHeaderKeyDown($event, item))
347
1451
  }, [
348
- (!_ctx.$slots.item)
349
- ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
350
- (item.to && !$options.disabled(item))
351
- ? (vue.openBlock(), vue.createBlock(_component_router_link, {
352
- key: 0,
353
- to: item.to,
354
- custom: ""
355
- }, {
356
- default: vue.withCtx(({navigate, href, isActive, isExactActive}) => [
357
- vue.createElementVNode("a", {
358
- href: href,
359
- class: vue.normalizeClass($options.getHeaderLinkClass(item, {isActive, isExactActive})),
360
- onClick: $event => ($options.onItemClick($event, item, navigate)),
361
- role: "treeitem"
362
- }, [
363
- (item.icon)
364
- ? (vue.openBlock(), vue.createElementBlock("span", {
365
- key: 0,
366
- class: vue.normalizeClass($options.getPanelIcon(item))
367
- }, null, 2))
368
- : vue.createCommentVNode("", true),
369
- vue.createElementVNode("span", _hoisted_3, vue.toDisplayString($options.label(item)), 1)
370
- ], 10, _hoisted_2)
371
- ]),
372
- _: 2
373
- }, 1032, ["to"]))
374
- : (vue.openBlock(), vue.createElementBlock("a", {
375
- key: 1,
376
- href: item.url,
377
- class: vue.normalizeClass($options.getHeaderLinkClass(item)),
378
- onClick: $event => ($options.onItemClick($event, item)),
379
- onKeydown: $event => ($options.onItemKeydown($event, item)),
380
- tabindex: $options.disabled(item) ? null : '0',
381
- "aria-expanded": $options.isActive(item),
382
- id: $options.ariaId +'_header_' + index,
383
- "aria-controls": $options.ariaId +'_content_' + index
384
- }, [
385
- (item.items)
386
- ? (vue.openBlock(), vue.createElementBlock("span", {
387
- key: 0,
388
- class: vue.normalizeClass($options.getPanelToggleIcon(item))
389
- }, null, 2))
390
- : vue.createCommentVNode("", true),
391
- (item.icon)
392
- ? (vue.openBlock(), vue.createElementBlock("span", {
393
- key: 1,
394
- class: vue.normalizeClass($options.getPanelIcon(item))
395
- }, null, 2))
396
- : vue.createCommentVNode("", true),
397
- vue.createElementVNode("span", _hoisted_5, vue.toDisplayString($options.label(item)), 1)
398
- ], 42, _hoisted_4))
399
- ], 64))
400
- : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.$slots.item), {
401
- key: 1,
402
- item: item
403
- }, null, 8, ["item"]))
404
- ], 6),
1452
+ vue.createElementVNode("div", _hoisted_3, [
1453
+ (!_ctx.$slots.item)
1454
+ ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
1455
+ ($options.getItemProp(item, 'to') && !$options.isItemDisabled(item))
1456
+ ? (vue.openBlock(), vue.createBlock(_component_router_link, {
1457
+ key: 0,
1458
+ to: $options.getItemProp(item, 'to'),
1459
+ custom: ""
1460
+ }, {
1461
+ default: vue.withCtx(({ navigate, href, isActive, isExactActive }) => [
1462
+ vue.createElementVNode("a", {
1463
+ href: href,
1464
+ class: vue.normalizeClass($options.getHeaderActionClass(item, { isActive, isExactActive })),
1465
+ tabindex: -1,
1466
+ onClick: $event => ($options.onHeaderActionClick($event, navigate))
1467
+ }, [
1468
+ ($options.getItemProp(item, 'icon'))
1469
+ ? (vue.openBlock(), vue.createElementBlock("span", {
1470
+ key: 0,
1471
+ class: vue.normalizeClass($options.getHeaderIconClass(item))
1472
+ }, null, 2))
1473
+ : vue.createCommentVNode("", true),
1474
+ vue.createElementVNode("span", _hoisted_5, vue.toDisplayString($options.getItemLabel(item)), 1)
1475
+ ], 10, _hoisted_4)
1476
+ ]),
1477
+ _: 2
1478
+ }, 1032, ["to"]))
1479
+ : (vue.openBlock(), vue.createElementBlock("a", {
1480
+ key: 1,
1481
+ href: $options.getItemProp(item, 'url'),
1482
+ class: vue.normalizeClass($options.getHeaderActionClass(item)),
1483
+ tabindex: -1
1484
+ }, [
1485
+ ($options.getItemProp(item, 'items'))
1486
+ ? (vue.openBlock(), vue.createElementBlock("span", {
1487
+ key: 0,
1488
+ class: vue.normalizeClass($options.getHeaderToggleIconClass(item))
1489
+ }, null, 2))
1490
+ : vue.createCommentVNode("", true),
1491
+ ($options.getItemProp(item, 'icon'))
1492
+ ? (vue.openBlock(), vue.createElementBlock("span", {
1493
+ key: 1,
1494
+ class: vue.normalizeClass($options.getHeaderIconClass(item))
1495
+ }, null, 2))
1496
+ : vue.createCommentVNode("", true),
1497
+ vue.createElementVNode("span", _hoisted_7, vue.toDisplayString($options.getItemLabel(item)), 1)
1498
+ ], 10, _hoisted_6))
1499
+ ], 64))
1500
+ : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.$slots.item), {
1501
+ key: 1,
1502
+ item: item
1503
+ }, null, 8, ["item"]))
1504
+ ])
1505
+ ], 42, _hoisted_2),
405
1506
  vue.createVNode(vue.Transition, { name: "p-toggleable-content" }, {
406
1507
  default: vue.withCtx(() => [
407
1508
  vue.withDirectives(vue.createElementVNode("div", {
1509
+ id: $options.getContentId(index),
408
1510
  class: "p-toggleable-content",
409
1511
  role: "region",
410
- id: $options.ariaId +'_content_' + index,
411
- "aria-labelledby": $options.ariaId +'_header_' + index
1512
+ "aria-labelledby": $options.getHeaderId(index)
412
1513
  }, [
413
- (item.items)
414
- ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
415
- vue.createVNode(_component_PanelMenuSub, {
416
- model: item.items,
417
- class: "p-panelmenu-root-submenu",
1514
+ ($options.getItemProp(item, 'items'))
1515
+ ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9, [
1516
+ vue.createVNode(_component_PanelMenuList, {
1517
+ panelId: $options.getPanelId(index),
1518
+ items: $options.getItemProp(item, 'items'),
418
1519
  template: _ctx.$slots.item,
419
1520
  expandedKeys: $props.expandedKeys,
420
- onItemToggle: $options.updateExpandedKeys,
1521
+ onItemToggle: $options.changeExpandedKeys,
1522
+ onHeaderFocus: $options.updateFocusedHeader,
421
1523
  exact: $props.exact
422
- }, null, 8, ["model", "template", "expandedKeys", "onItemToggle", "exact"])
1524
+ }, null, 8, ["panelId", "items", "template", "expandedKeys", "onItemToggle", "onHeaderFocus", "exact"])
423
1525
  ]))
424
1526
  : vue.createCommentVNode("", true)
425
- ], 8, _hoisted_6), [
426
- [vue.vShow, $options.isActive(item)]
1527
+ ], 8, _hoisted_8), [
1528
+ [vue.vShow, $options.isItemActive(item)]
427
1529
  ])
428
1530
  ]),
429
1531
  _: 2
@@ -432,7 +1534,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
432
1534
  : vue.createCommentVNode("", true)
433
1535
  ], 64))
434
1536
  }), 128))
435
- ]))
1537
+ ], 8, _hoisted_1))
436
1538
  }
437
1539
 
438
1540
  function styleInject(css, ref) {
@@ -462,7 +1564,7 @@ function styleInject(css, ref) {
462
1564
  }
463
1565
  }
464
1566
 
465
- var css_248z = "\n.p-panelmenu .p-panelmenu-header-link {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n position: relative;\n text-decoration: none;\n}\n.p-panelmenu .p-panelmenu-header-link:focus {\n z-index: 1;\n}\n.p-panelmenu .p-submenu-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.p-panelmenu .p-menuitem-link {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n text-decoration: none;\n}\n.p-panelmenu .p-menuitem-text {\n line-height: 1;\n}\n";
1567
+ var css_248z = "\n.p-panelmenu .p-panelmenu-header-action {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n position: relative;\n text-decoration: none;\n}\n.p-panelmenu .p-panelmenu-header-action:focus {\n z-index: 1;\n}\n.p-panelmenu .p-submenu-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.p-panelmenu .p-menuitem-link {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n text-decoration: none;\n position: relative;\n overflow: hidden;\n}\n.p-panelmenu .p-menuitem-text {\n line-height: 1;\n}\n";
466
1568
  styleInject(css_248z);
467
1569
 
468
1570
  script.render = render;