primeng 18.0.0-beta.2 → 18.0.0-beta.3

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 (553) hide show
  1. package/accordion/accordion.d.ts +147 -22
  2. package/accordion/public_api.d.ts +1 -1
  3. package/autocomplete/public_api.d.ts +1 -0
  4. package/avatar/public_api.d.ts +1 -0
  5. package/avatargroup/avatargroup.d.ts +1 -1
  6. package/avatargroup/public_api.d.ts +1 -0
  7. package/badge/badge.d.ts +20 -26
  8. package/badge/public_api.d.ts +1 -0
  9. package/base/style/basestyle.d.ts +4 -0
  10. package/blockui/public_api.d.ts +1 -0
  11. package/breadcrumb/breadcrumb.d.ts +0 -1
  12. package/breadcrumb/public_api.d.ts +1 -0
  13. package/button/button.d.ts +0 -1
  14. package/button/public_api.d.ts +1 -0
  15. package/buttongroup/buttongroup.d.ts +1 -1
  16. package/buttongroup/public_api.d.ts +1 -0
  17. package/calendar/public_api.d.ts +1 -0
  18. package/card/public_api.d.ts +1 -0
  19. package/carousel/public_api.d.ts +1 -0
  20. package/cascadeselect/public_api.d.ts +1 -0
  21. package/chart/public_api.d.ts +1 -0
  22. package/chart/style/chartstyle.d.ts +32 -0
  23. package/checkbox/public_api.d.ts +1 -0
  24. package/chip/public_api.d.ts +1 -0
  25. package/colorpicker/public_api.d.ts +1 -0
  26. package/confirmdialog/public_api.d.ts +1 -0
  27. package/confirmpopup/public_api.d.ts +1 -0
  28. package/contextmenu/public_api.d.ts +1 -0
  29. package/dataview/public_api.d.ts +1 -0
  30. package/datepicker/public_api.d.ts +1 -0
  31. package/dock/public_api.d.ts +1 -0
  32. package/drawer/public_api.d.ts +1 -0
  33. package/dropdown/public_api.d.ts +1 -0
  34. package/dynamicdialog/dynamicdialog.d.ts +5 -0
  35. package/dynamicdialog/public_api.d.ts +1 -0
  36. package/editor/public_api.d.ts +1 -0
  37. package/esm2022/accordion/accordion.mjs +430 -80
  38. package/esm2022/accordion/public_api.mjs +2 -2
  39. package/esm2022/accordion/style/accordionstyle.mjs +3 -2
  40. package/esm2022/autocomplete/autocomplete.mjs +3 -3
  41. package/esm2022/autocomplete/public_api.mjs +2 -1
  42. package/esm2022/avatar/avatar.mjs +3 -2
  43. package/esm2022/avatar/public_api.mjs +2 -1
  44. package/esm2022/avatargroup/avatargroup.mjs +3 -3
  45. package/esm2022/avatargroup/public_api.mjs +2 -1
  46. package/esm2022/badge/badge.mjs +39 -51
  47. package/esm2022/badge/public_api.mjs +2 -1
  48. package/esm2022/blockui/public_api.mjs +2 -1
  49. package/esm2022/breadcrumb/breadcrumb.mjs +98 -119
  50. package/esm2022/breadcrumb/public_api.mjs +2 -1
  51. package/esm2022/button/button.mjs +3 -7
  52. package/esm2022/button/public_api.mjs +2 -1
  53. package/esm2022/buttongroup/buttongroup.mjs +3 -3
  54. package/esm2022/buttongroup/public_api.mjs +2 -1
  55. package/esm2022/calendar/calendar.mjs +2 -2
  56. package/esm2022/calendar/public_api.mjs +2 -1
  57. package/esm2022/card/public_api.mjs +2 -1
  58. package/esm2022/carousel/public_api.mjs +2 -1
  59. package/esm2022/cascadeselect/public_api.mjs +2 -1
  60. package/esm2022/chart/public_api.mjs +2 -1
  61. package/esm2022/chart/style/chartstyle.mjs +36 -0
  62. package/esm2022/checkbox/public_api.mjs +2 -1
  63. package/esm2022/chip/public_api.mjs +2 -1
  64. package/esm2022/colorpicker/public_api.mjs +2 -1
  65. package/esm2022/confirmdialog/public_api.mjs +2 -1
  66. package/esm2022/confirmpopup/public_api.mjs +2 -1
  67. package/esm2022/contextmenu/contextmenu.mjs +1 -1
  68. package/esm2022/contextmenu/public_api.mjs +2 -1
  69. package/esm2022/dataview/public_api.mjs +2 -1
  70. package/esm2022/datepicker/datepicker.mjs +18 -6
  71. package/esm2022/datepicker/public_api.mjs +2 -1
  72. package/esm2022/dialog/dialog.mjs +21 -16
  73. package/esm2022/divider/divider.mjs +4 -4
  74. package/esm2022/dock/public_api.mjs +2 -1
  75. package/esm2022/drawer/drawer.mjs +15 -11
  76. package/esm2022/drawer/public_api.mjs +2 -1
  77. package/esm2022/dropdown/dropdown.mjs +2 -2
  78. package/esm2022/dropdown/public_api.mjs +2 -1
  79. package/esm2022/dropdown/style/dropdownstyle.mjs +2 -2
  80. package/esm2022/dynamicdialog/dynamicdialog.mjs +94 -24
  81. package/esm2022/dynamicdialog/public_api.mjs +2 -1
  82. package/esm2022/editor/editor.mjs +6 -5
  83. package/esm2022/editor/public_api.mjs +2 -1
  84. package/esm2022/fieldset/fieldset.mjs +11 -21
  85. package/esm2022/fieldset/public_api.mjs +2 -1
  86. package/esm2022/fileupload/public_api.mjs +2 -1
  87. package/esm2022/floatlabel/floatlabel.mjs +18 -13
  88. package/esm2022/floatlabel/public_api.mjs +2 -1
  89. package/esm2022/floatlabel/style/floatlabelstyle.mjs +63 -28
  90. package/esm2022/fluid/public_api.mjs +2 -1
  91. package/esm2022/galleria/galleria.mjs +113 -124
  92. package/esm2022/galleria/public_api.mjs +2 -1
  93. package/esm2022/iconfield/iconfield.mjs +4 -4
  94. package/esm2022/iconfield/public_api.mjs +2 -1
  95. package/esm2022/iconfield/style/iconfieldstyle.mjs +10 -20
  96. package/esm2022/iftalabel/iftalabel.mjs +43 -0
  97. package/esm2022/iftalabel/primeng-iftalabel.mjs +5 -0
  98. package/esm2022/iftalabel/public_api.mjs +3 -0
  99. package/esm2022/iftalabel/style/iftalabelstyle.mjs +96 -0
  100. package/esm2022/image/image.interface.mjs +1 -1
  101. package/esm2022/image/image.mjs +86 -42
  102. package/esm2022/image/public_api.mjs +2 -1
  103. package/esm2022/inplace/inplace.mjs +3 -3
  104. package/esm2022/inplace/public_api.mjs +2 -1
  105. package/esm2022/inputgroup/public_api.mjs +2 -1
  106. package/esm2022/inputgroup/style/inputgroupstyle.mjs +30 -17
  107. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +15 -13
  108. package/esm2022/inputgroupaddon/public_api.mjs +2 -1
  109. package/esm2022/inputicon/inputicon.mjs +7 -4
  110. package/esm2022/inputicon/public_api.mjs +2 -1
  111. package/esm2022/inputmask/inputmask.mjs +2 -2
  112. package/esm2022/inputmask/public_api.mjs +2 -1
  113. package/esm2022/inputnumber/inputnumber.mjs +218 -220
  114. package/esm2022/inputnumber/public_api.mjs +2 -1
  115. package/esm2022/inputnumber/style/inputnumberstyle.mjs +6 -1
  116. package/esm2022/inputotp/inputotp.mjs +1 -1
  117. package/esm2022/inputotp/public_api.mjs +2 -1
  118. package/esm2022/inputswitch/public_api.mjs +2 -1
  119. package/esm2022/inputtext/inputtext.mjs +11 -2
  120. package/esm2022/inputtext/public_api.mjs +2 -1
  121. package/esm2022/inputtextarea/public_api.mjs +2 -1
  122. package/esm2022/knob/public_api.mjs +2 -1
  123. package/esm2022/listbox/listbox.mjs +37 -12
  124. package/esm2022/listbox/public_api.mjs +2 -1
  125. package/esm2022/megamenu/megamenu.mjs +1 -1
  126. package/esm2022/megamenu/public_api.mjs +2 -1
  127. package/esm2022/menu/menu.mjs +5 -3
  128. package/esm2022/menu/public_api.mjs +2 -1
  129. package/esm2022/menubar/menubar.mjs +3 -3
  130. package/esm2022/menubar/public_api.mjs +2 -1
  131. package/esm2022/message/message.mjs +2 -34
  132. package/esm2022/messages/public_api.mjs +2 -1
  133. package/esm2022/metergroup/public_api.mjs +2 -1
  134. package/esm2022/multiselect/multiselect.mjs +679 -673
  135. package/esm2022/multiselect/public_api.mjs +2 -1
  136. package/esm2022/orderlist/orderlist.mjs +88 -16
  137. package/esm2022/orderlist/public_api.mjs +2 -1
  138. package/esm2022/organizationchart/organizationchart.mjs +5 -5
  139. package/esm2022/organizationchart/public_api.mjs +2 -1
  140. package/esm2022/overlay/public_api.mjs +2 -1
  141. package/esm2022/overlaybadge/overlaybadge.mjs +4 -6
  142. package/esm2022/overlaybadge/public_api.mjs +2 -1
  143. package/esm2022/overlaypanel/public_api.mjs +2 -1
  144. package/esm2022/paginator/public_api.mjs +2 -1
  145. package/esm2022/panelmenu/panelmenu.mjs +18 -10
  146. package/esm2022/panelmenu/public_api.mjs +2 -1
  147. package/esm2022/password/password.mjs +5 -3
  148. package/esm2022/password/public_api.mjs +2 -1
  149. package/esm2022/picklist/picklist.mjs +186 -16
  150. package/esm2022/picklist/public_api.mjs +2 -1
  151. package/esm2022/popover/public_api.mjs +2 -1
  152. package/esm2022/progressbar/public_api.mjs +2 -1
  153. package/esm2022/progressspinner/public_api.mjs +2 -1
  154. package/esm2022/radiobutton/public_api.mjs +2 -1
  155. package/esm2022/rating/public_api.mjs +2 -1
  156. package/esm2022/rating/rating.mjs +11 -108
  157. package/esm2022/ripple/public_api.mjs +2 -1
  158. package/esm2022/scroller/public_api.mjs +2 -1
  159. package/esm2022/scroller/scroller.mjs +2 -2
  160. package/esm2022/scrollpanel/public_api.mjs +2 -1
  161. package/esm2022/scrolltop/public_api.mjs +2 -1
  162. package/esm2022/scrolltop/scrolltop.mjs +19 -14
  163. package/esm2022/select/select.mjs +8 -16
  164. package/esm2022/select/style/selectstyle.mjs +2 -2
  165. package/esm2022/selectbutton/public_api.mjs +2 -1
  166. package/esm2022/selectbutton/style/selectbuttonstyle.mjs +3 -3
  167. package/esm2022/sidebar/public_api.mjs +2 -1
  168. package/esm2022/skeleton/public_api.mjs +2 -1
  169. package/esm2022/slider/public_api.mjs +2 -1
  170. package/esm2022/speeddial/public_api.mjs +2 -1
  171. package/esm2022/speeddial/speeddial.interface.mjs +1 -1
  172. package/esm2022/speeddial/speeddial.mjs +73 -49
  173. package/esm2022/speeddial/style/speeddialstyle.mjs +2 -2
  174. package/esm2022/splitbutton/public_api.mjs +2 -1
  175. package/esm2022/splitbutton/splitbutton.mjs +19 -6
  176. package/esm2022/splitter/public_api.mjs +2 -1
  177. package/esm2022/stepper/public_api.mjs +2 -2
  178. package/esm2022/stepper/stepper.mjs +367 -660
  179. package/esm2022/stepper/style/stepperstyle.mjs +1 -2
  180. package/esm2022/steps/public_api.mjs +2 -1
  181. package/esm2022/table/public_api.mjs +2 -1
  182. package/esm2022/table/table.mjs +24 -20
  183. package/esm2022/tabmenu/public_api.mjs +2 -1
  184. package/esm2022/tabmenu/tabmenu.mjs +9 -5
  185. package/esm2022/tabs/public_api.mjs +6 -2
  186. package/esm2022/tabs/tab.mjs +171 -0
  187. package/esm2022/tabs/tablist.mjs +256 -0
  188. package/esm2022/tabs/tabpanel.mjs +49 -0
  189. package/esm2022/tabs/tabpanels.mjs +30 -0
  190. package/esm2022/tabs/tabs.mjs +45 -948
  191. package/esm2022/tabview/public_api.mjs +2 -1
  192. package/esm2022/tabview/style/tabsstyle.mjs +15 -15
  193. package/esm2022/tag/public_api.mjs +2 -1
  194. package/esm2022/terminal/public_api.mjs +2 -1
  195. package/esm2022/textarea/public_api.mjs +2 -1
  196. package/esm2022/themes/aura/aura.mjs +7 -3
  197. package/esm2022/themes/aura/floatlabel/index.mjs +29 -1
  198. package/esm2022/themes/aura/iftalabel/index.mjs +16 -0
  199. package/esm2022/themes/lara/floatlabel/index.mjs +27 -1
  200. package/esm2022/themes/lara/iftalabel/index.mjs +16 -0
  201. package/esm2022/themes/lara/lara.mjs +7 -3
  202. package/esm2022/themes/nora/floatlabel/index.mjs +27 -1
  203. package/esm2022/themes/nora/iftalabel/index.mjs +16 -0
  204. package/esm2022/themes/nora/nora.mjs +7 -3
  205. package/esm2022/tieredmenu/public_api.mjs +2 -1
  206. package/esm2022/timeline/public_api.mjs +2 -1
  207. package/esm2022/timeline/timeline.mjs +54 -68
  208. package/esm2022/toast/public_api.mjs +2 -1
  209. package/esm2022/togglebutton/public_api.mjs +2 -1
  210. package/esm2022/togglebutton/style/togglebuttonstyle.mjs +2 -2
  211. package/esm2022/togglebutton/togglebutton.mjs +83 -76
  212. package/esm2022/toggleswitch/public_api.mjs +2 -1
  213. package/esm2022/toggleswitch/style/toggleswitchstyle.mjs +8 -5
  214. package/esm2022/toggleswitch/toggleswitch.mjs +44 -48
  215. package/esm2022/toolbar/public_api.mjs +2 -1
  216. package/esm2022/tooltip/public_api.mjs +2 -1
  217. package/esm2022/tree/public_api.mjs +2 -1
  218. package/esm2022/tree/tree.mjs +7 -4
  219. package/esm2022/treeselect/public_api.mjs +2 -1
  220. package/esm2022/treeselect/treeselect.mjs +7 -56
  221. package/esm2022/treetable/public_api.mjs +2 -1
  222. package/esm2022/treetable/style/treetablestyle.mjs +2 -2
  223. package/esm2022/treetable/treetable.mjs +4 -4
  224. package/esm2022/utils/inpututils.mjs +7 -0
  225. package/esm2022/utils/public_api.mjs +3 -2
  226. package/fesm2022/primeng-accordion.mjs +433 -82
  227. package/fesm2022/primeng-accordion.mjs.map +1 -1
  228. package/fesm2022/primeng-autocomplete.mjs +3 -3
  229. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  230. package/fesm2022/primeng-avatar.mjs +3 -2
  231. package/fesm2022/primeng-avatar.mjs.map +1 -1
  232. package/fesm2022/primeng-avatargroup.mjs +3 -3
  233. package/fesm2022/primeng-avatargroup.mjs.map +1 -1
  234. package/fesm2022/primeng-badge.mjs +39 -51
  235. package/fesm2022/primeng-badge.mjs.map +1 -1
  236. package/fesm2022/primeng-blockui.mjs +1 -1
  237. package/fesm2022/primeng-blockui.mjs.map +1 -1
  238. package/fesm2022/primeng-breadcrumb.mjs +98 -119
  239. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  240. package/fesm2022/primeng-button.mjs +3 -7
  241. package/fesm2022/primeng-button.mjs.map +1 -1
  242. package/fesm2022/primeng-buttongroup.mjs +3 -3
  243. package/fesm2022/primeng-buttongroup.mjs.map +1 -1
  244. package/fesm2022/primeng-calendar.mjs +2 -2
  245. package/fesm2022/primeng-calendar.mjs.map +1 -1
  246. package/fesm2022/primeng-card.mjs +1 -1
  247. package/fesm2022/primeng-card.mjs.map +1 -1
  248. package/fesm2022/primeng-carousel.mjs +1 -1
  249. package/fesm2022/primeng-carousel.mjs.map +1 -1
  250. package/fesm2022/primeng-cascadeselect.mjs +1 -1
  251. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  252. package/fesm2022/primeng-chart.mjs +36 -2
  253. package/fesm2022/primeng-chart.mjs.map +1 -1
  254. package/fesm2022/primeng-checkbox.mjs +1 -1
  255. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  256. package/fesm2022/primeng-chip.mjs +1 -1
  257. package/fesm2022/primeng-chip.mjs.map +1 -1
  258. package/fesm2022/primeng-colorpicker.mjs +1 -1
  259. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  260. package/fesm2022/primeng-confirmdialog.mjs +1 -1
  261. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  262. package/fesm2022/primeng-confirmpopup.mjs +1 -1
  263. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  264. package/fesm2022/primeng-contextmenu.mjs +2 -2
  265. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  266. package/fesm2022/primeng-dataview.mjs +1 -1
  267. package/fesm2022/primeng-dataview.mjs.map +1 -1
  268. package/fesm2022/primeng-datepicker.mjs +18 -6
  269. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  270. package/fesm2022/primeng-dialog.mjs +20 -15
  271. package/fesm2022/primeng-dialog.mjs.map +1 -1
  272. package/fesm2022/primeng-divider.mjs +3 -3
  273. package/fesm2022/primeng-divider.mjs.map +1 -1
  274. package/fesm2022/primeng-dock.mjs +1 -1
  275. package/fesm2022/primeng-dock.mjs.map +1 -1
  276. package/fesm2022/primeng-drawer.mjs +15 -11
  277. package/fesm2022/primeng-drawer.mjs.map +1 -1
  278. package/fesm2022/primeng-dropdown.mjs +3 -3
  279. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  280. package/fesm2022/primeng-dynamicdialog.mjs +94 -24
  281. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  282. package/fesm2022/primeng-editor.mjs +5 -4
  283. package/fesm2022/primeng-editor.mjs.map +1 -1
  284. package/fesm2022/primeng-fieldset.mjs +11 -21
  285. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  286. package/fesm2022/primeng-fileupload.mjs +1 -1
  287. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  288. package/fesm2022/primeng-floatlabel.mjs +80 -40
  289. package/fesm2022/primeng-floatlabel.mjs.map +1 -1
  290. package/fesm2022/primeng-fluid.mjs +1 -1
  291. package/fesm2022/primeng-fluid.mjs.map +1 -1
  292. package/fesm2022/primeng-galleria.mjs +113 -124
  293. package/fesm2022/primeng-galleria.mjs.map +1 -1
  294. package/fesm2022/primeng-iconfield.mjs +13 -23
  295. package/fesm2022/primeng-iconfield.mjs.map +1 -1
  296. package/fesm2022/primeng-iftalabel.mjs +143 -0
  297. package/fesm2022/primeng-iftalabel.mjs.map +1 -0
  298. package/fesm2022/primeng-image.mjs +85 -41
  299. package/fesm2022/primeng-image.mjs.map +1 -1
  300. package/fesm2022/primeng-inplace.mjs +3 -3
  301. package/fesm2022/primeng-inplace.mjs.map +1 -1
  302. package/fesm2022/primeng-inputgroup.mjs +30 -17
  303. package/fesm2022/primeng-inputgroup.mjs.map +1 -1
  304. package/fesm2022/primeng-inputgroupaddon.mjs +15 -13
  305. package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -1
  306. package/fesm2022/primeng-inputicon.mjs +7 -4
  307. package/fesm2022/primeng-inputicon.mjs.map +1 -1
  308. package/fesm2022/primeng-inputmask.mjs +2 -2
  309. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  310. package/fesm2022/primeng-inputnumber.mjs +223 -220
  311. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  312. package/fesm2022/primeng-inputotp.mjs +2 -2
  313. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  314. package/fesm2022/primeng-inputswitch.mjs +1 -1
  315. package/fesm2022/primeng-inputtext.mjs +11 -2
  316. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  317. package/fesm2022/primeng-inputtextarea.mjs +1 -1
  318. package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
  319. package/fesm2022/primeng-knob.mjs +1 -1
  320. package/fesm2022/primeng-knob.mjs.map +1 -1
  321. package/fesm2022/primeng-listbox.mjs +37 -12
  322. package/fesm2022/primeng-listbox.mjs.map +1 -1
  323. package/fesm2022/primeng-megamenu.mjs +2 -2
  324. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  325. package/fesm2022/primeng-menu.mjs +4 -2
  326. package/fesm2022/primeng-menu.mjs.map +1 -1
  327. package/fesm2022/primeng-menubar.mjs +3 -3
  328. package/fesm2022/primeng-menubar.mjs.map +1 -1
  329. package/fesm2022/primeng-message.mjs +1 -33
  330. package/fesm2022/primeng-message.mjs.map +1 -1
  331. package/fesm2022/primeng-messages.mjs +1 -1
  332. package/fesm2022/primeng-metergroup.mjs +1 -1
  333. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  334. package/fesm2022/primeng-multiselect.mjs +679 -673
  335. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  336. package/fesm2022/primeng-orderlist.mjs +87 -15
  337. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  338. package/fesm2022/primeng-organizationchart.mjs +5 -5
  339. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  340. package/fesm2022/primeng-overlay.mjs +1 -1
  341. package/fesm2022/primeng-overlaybadge.mjs +4 -6
  342. package/fesm2022/primeng-overlaybadge.mjs.map +1 -1
  343. package/fesm2022/primeng-overlaypanel.mjs +1 -1
  344. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  345. package/fesm2022/primeng-paginator.mjs +1 -1
  346. package/fesm2022/primeng-paginator.mjs.map +1 -1
  347. package/fesm2022/primeng-panelmenu.mjs +17 -9
  348. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  349. package/fesm2022/primeng-password.mjs +4 -2
  350. package/fesm2022/primeng-password.mjs.map +1 -1
  351. package/fesm2022/primeng-picklist.mjs +185 -15
  352. package/fesm2022/primeng-picklist.mjs.map +1 -1
  353. package/fesm2022/primeng-popover.mjs +1 -1
  354. package/fesm2022/primeng-progressbar.mjs +1 -1
  355. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  356. package/fesm2022/primeng-progressspinner.mjs +1 -1
  357. package/fesm2022/primeng-progressspinner.mjs.map +1 -1
  358. package/fesm2022/primeng-radiobutton.mjs +1 -1
  359. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  360. package/fesm2022/primeng-rating.mjs +11 -108
  361. package/fesm2022/primeng-rating.mjs.map +1 -1
  362. package/fesm2022/primeng-ripple.mjs +1 -1
  363. package/fesm2022/primeng-ripple.mjs.map +1 -1
  364. package/fesm2022/primeng-scroller.mjs +2 -2
  365. package/fesm2022/primeng-scroller.mjs.map +1 -1
  366. package/fesm2022/primeng-scrollpanel.mjs +1 -1
  367. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  368. package/fesm2022/primeng-scrolltop.mjs +19 -14
  369. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  370. package/fesm2022/primeng-select.mjs +8 -16
  371. package/fesm2022/primeng-select.mjs.map +1 -1
  372. package/fesm2022/primeng-selectbutton.mjs +3 -3
  373. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  374. package/fesm2022/primeng-sidebar.mjs +1 -1
  375. package/fesm2022/primeng-skeleton.mjs +1 -1
  376. package/fesm2022/primeng-skeleton.mjs.map +1 -1
  377. package/fesm2022/primeng-slider.mjs +1 -1
  378. package/fesm2022/primeng-slider.mjs.map +1 -1
  379. package/fesm2022/primeng-speeddial.mjs +73 -49
  380. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  381. package/fesm2022/primeng-splitbutton.mjs +19 -6
  382. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  383. package/fesm2022/primeng-splitter.mjs +1 -1
  384. package/fesm2022/primeng-splitter.mjs.map +1 -1
  385. package/fesm2022/primeng-stepper.mjs +368 -662
  386. package/fesm2022/primeng-stepper.mjs.map +1 -1
  387. package/fesm2022/primeng-steps.mjs +1 -1
  388. package/fesm2022/primeng-steps.mjs.map +1 -1
  389. package/fesm2022/primeng-table.mjs +24 -20
  390. package/fesm2022/primeng-table.mjs.map +1 -1
  391. package/fesm2022/primeng-tabmenu.mjs +8 -4
  392. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  393. package/fesm2022/primeng-tabs.mjs +460 -886
  394. package/fesm2022/primeng-tabs.mjs.map +1 -1
  395. package/fesm2022/primeng-tabview.mjs +15 -15
  396. package/fesm2022/primeng-tabview.mjs.map +1 -1
  397. package/fesm2022/primeng-tag.mjs +1 -1
  398. package/fesm2022/primeng-tag.mjs.map +1 -1
  399. package/fesm2022/primeng-terminal.mjs +1 -1
  400. package/fesm2022/primeng-terminal.mjs.map +1 -1
  401. package/fesm2022/primeng-textarea.mjs +1 -1
  402. package/fesm2022/primeng-textarea.mjs.map +1 -1
  403. package/fesm2022/primeng-themes-aura.mjs +49 -2
  404. package/fesm2022/primeng-themes-aura.mjs.map +1 -1
  405. package/fesm2022/primeng-themes-lara.mjs +47 -2
  406. package/fesm2022/primeng-themes-lara.mjs.map +1 -1
  407. package/fesm2022/primeng-themes-nora.mjs +47 -2
  408. package/fesm2022/primeng-themes-nora.mjs.map +1 -1
  409. package/fesm2022/primeng-tieredmenu.mjs +1 -1
  410. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  411. package/fesm2022/primeng-timeline.mjs +54 -68
  412. package/fesm2022/primeng-timeline.mjs.map +1 -1
  413. package/fesm2022/primeng-toast.mjs +1 -1
  414. package/fesm2022/primeng-toast.mjs.map +1 -1
  415. package/fesm2022/primeng-togglebutton.mjs +84 -77
  416. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  417. package/fesm2022/primeng-toggleswitch.mjs +50 -51
  418. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  419. package/fesm2022/primeng-toolbar.mjs +1 -1
  420. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  421. package/fesm2022/primeng-tooltip.mjs +1 -1
  422. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  423. package/fesm2022/primeng-tree.mjs +7 -4
  424. package/fesm2022/primeng-tree.mjs.map +1 -1
  425. package/fesm2022/primeng-treeselect.mjs +7 -56
  426. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  427. package/fesm2022/primeng-treetable.mjs +4 -4
  428. package/fesm2022/primeng-treetable.mjs.map +1 -1
  429. package/fesm2022/primeng-utils.mjs +8 -1
  430. package/fesm2022/primeng-utils.mjs.map +1 -1
  431. package/fieldset/fieldset.d.ts +1 -6
  432. package/fieldset/public_api.d.ts +1 -0
  433. package/fileupload/public_api.d.ts +1 -0
  434. package/floatlabel/floatlabel.d.ts +6 -1
  435. package/floatlabel/public_api.d.ts +1 -0
  436. package/floatlabel/style/floatlabelstyle.d.ts +3 -6
  437. package/fluid/public_api.d.ts +1 -0
  438. package/galleria/public_api.d.ts +1 -0
  439. package/iconfield/iconfield.d.ts +1 -1
  440. package/iconfield/public_api.d.ts +1 -0
  441. package/iftalabel/iftalabel.d.ts +20 -0
  442. package/iftalabel/index.d.ts +5 -0
  443. package/iftalabel/public_api.d.ts +2 -0
  444. package/iftalabel/style/iftalabelstyle.d.ts +30 -0
  445. package/image/image.d.ts +2 -0
  446. package/image/image.interface.d.ts +32 -0
  447. package/image/public_api.d.ts +1 -0
  448. package/inplace/public_api.d.ts +1 -0
  449. package/inputgroup/public_api.d.ts +1 -0
  450. package/inputgroupaddon/inputgroupaddon.d.ts +3 -0
  451. package/inputgroupaddon/public_api.d.ts +1 -0
  452. package/inputicon/public_api.d.ts +1 -0
  453. package/inputmask/public_api.d.ts +1 -0
  454. package/inputnumber/inputnumber.d.ts +1 -0
  455. package/inputnumber/public_api.d.ts +1 -0
  456. package/inputotp/public_api.d.ts +1 -0
  457. package/inputswitch/public_api.d.ts +1 -0
  458. package/inputtext/inputtext.d.ts +6 -1
  459. package/inputtext/public_api.d.ts +1 -0
  460. package/inputtextarea/public_api.d.ts +1 -0
  461. package/knob/public_api.d.ts +1 -0
  462. package/listbox/listbox.d.ts +14 -6
  463. package/listbox/public_api.d.ts +1 -0
  464. package/megamenu/public_api.d.ts +1 -0
  465. package/menu/public_api.d.ts +1 -0
  466. package/menubar/public_api.d.ts +1 -0
  467. package/messages/public_api.d.ts +1 -0
  468. package/metergroup/public_api.d.ts +1 -0
  469. package/multiselect/multiselect.d.ts +1 -1
  470. package/multiselect/public_api.d.ts +1 -0
  471. package/orderlist/orderlist.d.ts +28 -1
  472. package/orderlist/public_api.d.ts +1 -0
  473. package/organizationchart/organizationchart.d.ts +1 -1
  474. package/organizationchart/public_api.d.ts +1 -0
  475. package/overlay/public_api.d.ts +1 -0
  476. package/overlaybadge/overlaybadge.d.ts +2 -2
  477. package/overlaybadge/public_api.d.ts +1 -0
  478. package/overlaypanel/public_api.d.ts +1 -0
  479. package/package.json +281 -275
  480. package/paginator/public_api.d.ts +1 -0
  481. package/panelmenu/panelmenu.d.ts +1 -1
  482. package/panelmenu/public_api.d.ts +1 -0
  483. package/password/password.d.ts +1 -1
  484. package/password/public_api.d.ts +1 -0
  485. package/picklist/picklist.d.ts +52 -5
  486. package/picklist/public_api.d.ts +1 -0
  487. package/popover/public_api.d.ts +1 -0
  488. package/progressbar/public_api.d.ts +1 -0
  489. package/progressspinner/public_api.d.ts +1 -0
  490. package/radiobutton/public_api.d.ts +1 -0
  491. package/rating/public_api.d.ts +1 -0
  492. package/rating/rating.d.ts +1 -20
  493. package/ripple/public_api.d.ts +1 -0
  494. package/scroller/public_api.d.ts +1 -0
  495. package/scrollpanel/public_api.d.ts +1 -0
  496. package/scrolltop/public_api.d.ts +1 -0
  497. package/selectbutton/public_api.d.ts +1 -0
  498. package/sidebar/public_api.d.ts +1 -0
  499. package/skeleton/public_api.d.ts +1 -0
  500. package/slider/public_api.d.ts +1 -0
  501. package/speeddial/public_api.d.ts +1 -0
  502. package/speeddial/speeddial.d.ts +25 -2
  503. package/speeddial/speeddial.interface.d.ts +17 -1
  504. package/splitbutton/public_api.d.ts +1 -0
  505. package/splitbutton/splitbutton.d.ts +6 -1
  506. package/splitter/public_api.d.ts +1 -0
  507. package/stepper/public_api.d.ts +1 -1
  508. package/stepper/stepper.d.ts +140 -88
  509. package/steps/public_api.d.ts +1 -0
  510. package/table/public_api.d.ts +1 -0
  511. package/tabmenu/public_api.d.ts +1 -0
  512. package/tabmenu/tabmenu.d.ts +1 -0
  513. package/tabs/public_api.d.ts +5 -1
  514. package/tabs/tab.d.ts +47 -0
  515. package/tabs/tablist.d.ts +51 -0
  516. package/tabs/tabpanel.d.ts +20 -0
  517. package/tabs/tabpanels.d.ts +10 -0
  518. package/tabs/tabs.d.ts +31 -237
  519. package/tabview/public_api.d.ts +1 -0
  520. package/tabview/style/tabsstyle.d.ts +4 -4
  521. package/tag/public_api.d.ts +1 -0
  522. package/terminal/public_api.d.ts +1 -0
  523. package/textarea/public_api.d.ts +1 -0
  524. package/themes/aura/aura.d.ts +45 -0
  525. package/themes/aura/floatlabel/index.d.ts +28 -0
  526. package/themes/aura/iftalabel/index.d.ts +16 -0
  527. package/themes/lara/floatlabel/index.d.ts +26 -0
  528. package/themes/lara/iftalabel/index.d.ts +16 -0
  529. package/themes/lara/lara.d.ts +43 -0
  530. package/themes/nora/floatlabel/index.d.ts +26 -0
  531. package/themes/nora/iftalabel/index.d.ts +16 -0
  532. package/themes/nora/nora.d.ts +43 -0
  533. package/tieredmenu/public_api.d.ts +1 -0
  534. package/timeline/public_api.d.ts +1 -0
  535. package/timeline/timeline.d.ts +1 -0
  536. package/toast/public_api.d.ts +1 -0
  537. package/togglebutton/public_api.d.ts +1 -0
  538. package/togglebutton/togglebutton.d.ts +6 -7
  539. package/toggleswitch/public_api.d.ts +1 -0
  540. package/toolbar/public_api.d.ts +1 -0
  541. package/tooltip/public_api.d.ts +1 -0
  542. package/tree/public_api.d.ts +1 -0
  543. package/tree/tree.d.ts +1 -0
  544. package/treeselect/public_api.d.ts +1 -0
  545. package/treetable/public_api.d.ts +1 -0
  546. package/utils/inpututils.d.ts +2 -0
  547. package/utils/public_api.d.ts +2 -1
  548. package/accordion/accordion.interface.d.ts +0 -49
  549. package/esm2022/accordion/accordion.interface.mjs +0 -2
  550. package/esm2022/stepper/stepper.interface.mjs +0 -2
  551. package/esm2022/tabs/tabs.interface.mjs +0 -2
  552. package/stepper/stepper.interface.d.ts +0 -26
  553. package/tabs/tabs.interface.d.ts +0 -49
@@ -1,18 +1,16 @@
1
1
  import * as i1 from '@angular/common';
2
2
  import { CommonModule, isPlatformBrowser } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, inject, forwardRef, booleanAttribute, Component, Input, ContentChildren, EventEmitter, numberAttribute, ChangeDetectionStrategy, ViewEncapsulation, HostBinding, Output, ViewChild, NgModule } from '@angular/core';
5
- import { PrimeTemplate, SharedModule } from 'primeng/api';
4
+ import { Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, inject, forwardRef, model, computed, signal, effect, ContentChild, ViewChild, ContentChildren, input, booleanAttribute, HostListener, numberAttribute, NgModule } from '@angular/core';
5
+ import { BaseComponent } from 'primeng/basecomponent';
6
+ import { BaseStyle } from 'primeng/base';
7
+ import { ObjectUtils, UniqueComponentId } from 'primeng/utils';
8
+ import * as i2 from 'primeng/ripple';
9
+ import { RippleModule, Ripple } from 'primeng/ripple';
6
10
  import { DomHandler } from 'primeng/dom';
7
11
  import { ChevronLeftIcon } from 'primeng/icons/chevronleft';
8
12
  import { ChevronRightIcon } from 'primeng/icons/chevronright';
9
- import { TimesIcon } from 'primeng/icons/times';
10
- import { Ripple } from 'primeng/ripple';
11
- import * as i2 from 'primeng/tooltip';
12
- import { TooltipModule } from 'primeng/tooltip';
13
- import { UniqueComponentId } from 'primeng/utils';
14
- import { BaseStyle } from 'primeng/base';
15
- import { BaseComponent } from 'primeng/basecomponent';
13
+ import { PrimeTemplate } from 'primeng/api';
16
14
 
17
15
  const theme = ({ dt }) => `
18
16
  .p-tabs {
@@ -222,987 +220,563 @@ var TabsClasses;
222
220
  TabsClasses["tabpanel"] = "p-tabs-panel";
223
221
  })(TabsClasses || (TabsClasses = {}));
224
222
 
223
+ /**
224
+ * TabPanels is a helper component for Tabs component.
225
+ * @group Components
226
+ */
227
+ class TabPanels extends BaseComponent {
228
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TabPanels, deps: null, target: i0.ɵɵFactoryTarget.Component });
229
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: TabPanels, isStandalone: true, selector: "p-tabpanels", host: { properties: { "class.p-tabpanels": "true", "class.p-component": "true", "attr.data-pc-name": "\"tabpanels\"", "attr.role": "\"presentation\"" } }, usesInheritance: true, ngImport: i0, template: ` <ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
230
+ }
231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TabPanels, decorators: [{
232
+ type: Component,
233
+ args: [{
234
+ selector: 'p-tabpanels',
235
+ standalone: true,
236
+ imports: [CommonModule],
237
+ template: ` <ng-content></ng-content>`,
238
+ changeDetection: ChangeDetectionStrategy.OnPush,
239
+ encapsulation: ViewEncapsulation.None,
240
+ host: {
241
+ '[class.p-tabpanels]': 'true',
242
+ '[class.p-component]': 'true',
243
+ '[attr.data-pc-name]': '"tabpanels"',
244
+ '[attr.role]': '"presentation"',
245
+ },
246
+ }]
247
+ }] });
248
+
225
249
  /**
226
250
  * TabPanel is a helper component for Tabs component.
227
251
  * @group Components
228
252
  */
229
253
  class TabPanel extends BaseComponent {
254
+ pcTabs = inject(forwardRef(() => Tabs));
230
255
  /**
231
- * Defines if tab can be removed.
232
- * @group Props
233
- */
234
- closable = false;
235
- /**
236
- * Inline style of the tab header.
237
- * @group Props
238
- */
239
- get headerStyle() {
240
- return this._headerStyle;
241
- }
242
- set headerStyle(headerStyle) {
243
- this._headerStyle = headerStyle;
244
- this.tabs.cd.markForCheck();
245
- }
246
- /**
247
- * Style class of the tab header.
248
- * @group Props
249
- */
250
- get headerStyleClass() {
251
- return this._headerStyleClass;
252
- }
253
- set headerStyleClass(headerStyleClass) {
254
- this._headerStyleClass = headerStyleClass;
255
- this.tabs.cd.markForCheck();
256
- }
257
- /**
258
- * Whether a lazy loaded panel should avoid getting loaded again on reselection.
259
- * @group Props
260
- */
261
- cache = true;
262
- /**
263
- * Advisory information to display in a tooltip on hover.
264
- * @group Props
265
- */
266
- tooltip;
267
- /**
268
- * Position of the tooltip.
269
- * @group Props
270
- */
271
- tooltipPosition = 'top';
272
- /**
273
- * Type of CSS position.
256
+ * Value of the active tab.
257
+ * @defaultValue undefined
274
258
  * @group Props
275
259
  */
276
- tooltipPositionStyle = 'absolute';
277
- /**
278
- * Style class of the tooltip.
279
- * @group Props
280
- */
281
- tooltipStyleClass;
282
- /**
283
- * Defines if tab is active.
284
- * @defaultValue false
285
- * @group Props
286
- */
287
- get selected() {
288
- return !!this._selected;
289
- }
290
- set selected(val) {
291
- this._selected = val;
292
- if (!this.loaded) {
293
- this.cd.detectChanges();
294
- }
295
- if (val)
296
- this.loaded = true;
297
- }
298
- /**
299
- * When true, tab cannot be activated.
300
- * @defaultValue false
301
- * @group Props
302
- */
303
- get disabled() {
304
- return !!this._disabled;
305
- }
306
- set disabled(disabled) {
307
- this._disabled = disabled;
308
- this.tabs.cd.markForCheck();
309
- }
310
- /**
311
- * Title of the tabPanel.
312
- * @group Props
313
- */
314
- get header() {
315
- return this._header;
316
- }
317
- set header(header) {
318
- this._header = header;
319
- // We have to wait for the rendering and then retrieve the actual size element from the DOM.
320
- // in future `Promise.resolve` can be changed to `queueMicrotask` (if ie11 support will be dropped)
321
- Promise.resolve().then(() => {
322
- this.tabs.updateInkBar();
323
- this.tabs.cd.markForCheck();
324
- });
325
- }
326
- /**
327
- * Left icon of the tabPanel.
328
- * @group Props
329
- * @deprecated since v15.4.2, use `lefticon` template instead.
330
- */
331
- get leftIcon() {
332
- return this._leftIcon;
333
- }
334
- set leftIcon(leftIcon) {
335
- this._leftIcon = leftIcon;
336
- this.tabs.cd.markForCheck();
337
- }
338
- /**
339
- * Left icon of the tabPanel.
340
- * @group Props
341
- * @deprecated since v15.4.2, use `righticon` template instead.
342
- */
343
- get rightIcon() {
344
- return this._rightIcon;
345
- }
346
- set rightIcon(rightIcon) {
347
- this._rightIcon = rightIcon;
348
- this.tabs.cd.markForCheck();
349
- }
350
- templates;
351
- closed = false;
352
- _headerStyle;
353
- _headerStyleClass;
354
- _selected;
355
- _disabled;
356
- _header;
357
- _leftIcon;
358
- _rightIcon = undefined;
359
- loaded = false;
360
- id = UniqueComponentId();
361
- contentTemplate;
362
- headerTemplate;
363
- leftIconTemplate;
364
- rightIconTemplate;
365
- closeIconTemplate;
366
- tabs = inject(forwardRef(() => Tabs));
367
- _componentStyle = inject(TabsStyle);
368
- ngAfterContentInit() {
369
- this.templates.forEach((item) => {
370
- switch (item.getType()) {
371
- case 'header':
372
- this.headerTemplate = item.template;
373
- break;
374
- case 'content':
375
- this.contentTemplate = item.template;
376
- break;
377
- case 'righticon':
378
- this.rightIconTemplate = item.template;
379
- break;
380
- case 'lefticon':
381
- this.leftIconTemplate = item.template;
382
- break;
383
- case 'closeicon':
384
- this.closeIconTemplate = item.template;
385
- break;
386
- default:
387
- this.contentTemplate = item.template;
388
- break;
389
- }
390
- });
391
- }
260
+ value = model(undefined);
261
+ id = computed(() => `${this.pcTabs.id()}_tabpanel_${this.value()}`);
262
+ ariaLabelledby = computed(() => `${this.pcTabs.id()}_tab_${this.value()}`);
263
+ active = computed(() => ObjectUtils.equals(this.pcTabs.value(), this.value()));
392
264
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TabPanel, deps: null, target: i0.ɵɵFactoryTarget.Component });
393
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.2", type: TabPanel, isStandalone: true, selector: "p-tabpanel", inputs: { closable: ["closable", "closable", booleanAttribute], headerStyle: "headerStyle", headerStyleClass: "headerStyleClass", cache: ["cache", "cache", booleanAttribute], tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", selected: "selected", disabled: "disabled", header: "header", leftIcon: "leftIcon", rightIcon: "rightIcon" }, providers: [TabsStyle], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], usesInheritance: true, ngImport: i0, template: `
394
- <div
395
- *ngIf="!closed"
396
- class="p-tabs-panel"
397
- role="tabpanel"
398
- [hidden]="!selected"
399
- [attr.id]="tabs.getTabContentId(id)"
400
- [attr.aria-hidden]="!selected"
401
- [attr.aria-labelledby]="tabs.getTabHeaderActionId(id)"
402
- [attr.data-pc-name]="'tabpanel'"
403
- >
404
- <ng-content></ng-content>
405
- <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
406
- <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
407
- </ng-container>
408
- </div>
409
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: SharedModule }] });
265
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: TabPanel, isStandalone: true, selector: "p-tabpanel", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class.p-tabpanel": "true", "class.p-component": "true", "attr.data-pc-name": "\"tabpanel\"", "attr.id": "id()", "attr.role": "\"tabpanel\"", "attr.aria-labelledby": "ariaLabelledby()", "attr.data-p-active": "active()" } }, usesInheritance: true, ngImport: i0, template: `@if (active()) {
266
+ <ng-content></ng-content>
267
+ }`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
410
268
  }
411
269
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TabPanel, decorators: [{
412
270
  type: Component,
413
271
  args: [{
414
272
  selector: 'p-tabpanel',
415
273
  standalone: true,
416
- imports: [CommonModule, SharedModule],
417
- template: `
418
- <div
419
- *ngIf="!closed"
420
- class="p-tabs-panel"
421
- role="tabpanel"
422
- [hidden]="!selected"
423
- [attr.id]="tabs.getTabContentId(id)"
424
- [attr.aria-hidden]="!selected"
425
- [attr.aria-labelledby]="tabs.getTabHeaderActionId(id)"
426
- [attr.data-pc-name]="'tabpanel'"
427
- >
428
- <ng-content></ng-content>
429
- <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
430
- <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
431
- </ng-container>
432
- </div>
433
- `,
434
- providers: [TabsStyle],
274
+ imports: [CommonModule],
275
+ template: `@if (active()) {
276
+ <ng-content></ng-content>
277
+ }`,
278
+ changeDetection: ChangeDetectionStrategy.OnPush,
279
+ encapsulation: ViewEncapsulation.None,
280
+ host: {
281
+ '[class.p-tabpanel]': 'true',
282
+ '[class.p-component]': 'true',
283
+ '[attr.data-pc-name]': '"tabpanel"',
284
+ '[attr.id]': 'id()',
285
+ '[attr.role]': '"tabpanel"',
286
+ '[attr.aria-labelledby]': 'ariaLabelledby()',
287
+ '[attr.data-p-active]': 'active()',
288
+ },
435
289
  }]
436
- }], propDecorators: { closable: [{
437
- type: Input,
438
- args: [{ transform: booleanAttribute }]
439
- }], headerStyle: [{
440
- type: Input
441
- }], headerStyleClass: [{
442
- type: Input
443
- }], cache: [{
444
- type: Input,
445
- args: [{ transform: booleanAttribute }]
446
- }], tooltip: [{
447
- type: Input
448
- }], tooltipPosition: [{
449
- type: Input
450
- }], tooltipPositionStyle: [{
451
- type: Input
452
- }], tooltipStyleClass: [{
453
- type: Input
454
- }], selected: [{
455
- type: Input
456
- }], disabled: [{
457
- type: Input
458
- }], header: [{
459
- type: Input
460
- }], leftIcon: [{
461
- type: Input
462
- }], rightIcon: [{
463
- type: Input
464
- }], templates: [{
465
- type: ContentChildren,
466
- args: [PrimeTemplate]
467
- }] } });
290
+ }] });
291
+
468
292
  /**
469
- * Tabs is a container component to group content with tabs.
293
+ * TabList is a helper component for Tabs component.
470
294
  * @group Components
471
295
  */
472
- class Tabs extends BaseComponent {
473
- get hostClass() {
474
- return this.styleClass;
475
- }
476
- get hostStyle() {
477
- return this.style;
478
- }
479
- /**
480
- * Inline style of the component.
481
- * @group Props
482
- */
483
- style;
484
- /**
485
- * Style class of the component.
486
- * @group Props
487
- */
488
- styleClass;
489
- /**
490
- * Whether tab close is controlled at onClose event or not.
491
- * @defaultValue false
492
- * @group Props
493
- */
494
- controlClose;
495
- /**
496
- * When enabled displays buttons at each side of the tab headers to scroll the tab list.
497
- * @defaultValue false
498
- * @group Props
499
- */
500
- scrollable;
296
+ class TabList extends BaseComponent {
501
297
  /**
502
- * Index of the active tab to change selected tab programmatically.
503
- * @group Props
298
+ * A template reference variable that represents the previous icon in a UI component.
299
+ * @type {TemplateRef<any> | undefined}
300
+ * @group Templates
504
301
  */
505
- get activeIndex() {
506
- return this._activeIndex;
507
- }
508
- set activeIndex(val) {
509
- this._activeIndex = val;
510
- if (this.preventActiveIndexPropagation) {
511
- this.preventActiveIndexPropagation = false;
512
- return;
513
- }
514
- if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {
515
- this.findSelectedTab().selected = false;
516
- this.tabs[this._activeIndex].selected = true;
517
- this.tabChanged = true;
518
- this.updateScrollBar(val);
519
- }
520
- }
302
+ prevIconTemplate;
521
303
  /**
522
- * When enabled, the focused tab is activated.
523
- * @group Props
524
- */
525
- selectOnFocus = false;
526
- /**
527
- * Used to define a string aria label attribute the forward navigation button.
528
- * @group Props
304
+ * A template reference variable that represents the next icon in a UI component.
305
+ * @type {TemplateRef<any> | undefined}
306
+ * @group Templates
529
307
  */
530
- nextButtonAriaLabel;
531
- /**
532
- * Used to define a string aria label attribute the backward navigation button.
533
- * @group Props
534
- */
535
- prevButtonAriaLabel;
536
- /**
537
- * When activated, navigation buttons will automatically hide or show based on the available space within the container.
538
- * @group Props
539
- */
540
- autoHideButtons = true;
541
- /**
542
- * Index of the element in tabbing order.
543
- * @group Props
544
- */
545
- tabindex = 0;
546
- /**
547
- * Callback to invoke on tab change.
548
- * @param {TabsChangeEvent} event - Custom tab change event
549
- * @group Emits
550
- */
551
- onChange = new EventEmitter();
552
- /**
553
- * Callback to invoke on tab close.
554
- * @param {TabsCloseEvent} event - Custom tab close event
555
- * @group Emits
556
- */
557
- onClose = new EventEmitter();
558
- /**
559
- * Callback to invoke on the active tab change.
560
- * @param {number} index - New active index
561
- * @group Emits
562
- */
563
- activeIndexChange = new EventEmitter();
308
+ nextIconTemplate;
564
309
  content;
565
- navbar;
566
- prevBtn;
567
- nextBtn;
310
+ prevButton;
311
+ nextButton;
568
312
  inkbar;
569
- tabPanels;
570
- templates;
571
- initialized;
572
313
  tabs;
573
- _activeIndex;
574
- preventActiveIndexPropagation;
575
- tabChanged;
576
- backwardIsDisabled = true;
577
- forwardIsDisabled = false;
578
- tabChangesSubscription;
579
- nextIconTemplate;
580
- previousIconTemplate;
314
+ templates;
315
+ pcTabs = inject(forwardRef(() => Tabs));
316
+ isPrevButtonEnabled = signal(false);
317
+ isNextButtonEnabled = signal(false);
581
318
  resizeObserver;
582
- container;
583
- list;
584
- buttonVisible;
585
- elementToObserve;
586
- _componentStyle = inject(TabsStyle);
587
- ngAfterContentInit() {
588
- this.initTabs();
589
- this.tabChangesSubscription = this.tabPanels.changes.subscribe((_) => {
590
- this.initTabs();
591
- this.refreshButtonState();
592
- });
593
- this.templates.forEach((item) => {
594
- switch (item.getType()) {
595
- case 'previousicon':
596
- this.previousIconTemplate = item.template;
597
- break;
598
- case 'nexticon':
599
- this.nextIconTemplate = item.template;
600
- break;
319
+ showNavigators = computed(() => this.pcTabs.showNavigators());
320
+ tabindex = computed(() => this.pcTabs.tabindex());
321
+ scrollable = computed(() => this.pcTabs.scrollable());
322
+ get prevButtonAriaLabel() {
323
+ return this.config.translation.aria.previous;
324
+ }
325
+ get nextButtonAriaLabel() {
326
+ return this.config.translation.aria.next;
327
+ }
328
+ constructor() {
329
+ super();
330
+ effect(() => {
331
+ this.pcTabs.value();
332
+ if (isPlatformBrowser(this.platformId)) {
333
+ setTimeout(() => {
334
+ this.updateInkBar();
335
+ });
601
336
  }
602
337
  });
603
338
  }
604
339
  ngAfterViewInit() {
605
340
  super.ngAfterViewInit();
606
- if (isPlatformBrowser(this.platformId)) {
607
- if (this.autoHideButtons) {
608
- this.bindResizeObserver();
609
- }
341
+ if (this.showNavigators() && isPlatformBrowser(this.platformId)) {
342
+ this.updateButtonState();
343
+ this.bindResizeObserver();
610
344
  }
611
345
  }
612
- bindResizeObserver() {
613
- this.container = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section="navcontent"]');
614
- this.list = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section="nav"]');
615
- this.resizeObserver = new ResizeObserver(() => {
616
- if (this.list.offsetWidth >= this.container.offsetWidth) {
617
- this.buttonVisible = true;
618
- }
619
- else {
620
- this.buttonVisible = false;
346
+ ngAfterContentInit() {
347
+ this.templates.forEach((t) => {
348
+ switch (t.getType()) {
349
+ case 'previcon':
350
+ this.prevIconTemplate = t.template;
351
+ break;
352
+ case 'nexticon':
353
+ this.nextIconTemplate = t.template;
354
+ break;
621
355
  }
622
- this.updateButtonState();
623
- this.cd.detectChanges();
624
356
  });
625
- this.resizeObserver.observe(this.container);
626
- }
627
- unbindResizeObserver() {
628
- this.resizeObserver.unobserve(this.elementToObserve.nativeElement);
629
- this.resizeObserver = null;
630
- }
631
- ngAfterViewChecked() {
632
- if (isPlatformBrowser(this.platformId)) {
633
- if (this.tabChanged) {
634
- this.updateInkBar();
635
- this.tabChanged = false;
636
- }
637
- }
638
357
  }
639
358
  ngOnDestroy() {
640
- if (this.tabChangesSubscription) {
641
- this.tabChangesSubscription.unsubscribe();
642
- }
643
- if (this.resizeObserver) {
644
- this.unbindResizeObserver();
645
- }
359
+ this.unbindResizeObserver();
646
360
  super.ngOnDestroy();
647
361
  }
648
- getTabHeaderActionId(tabId) {
649
- return `${tabId}_header_action`;
650
- }
651
- getTabContentId(tabId) {
652
- return `${tabId}_content`;
653
- }
654
- initTabs() {
655
- this.tabs = this.tabPanels.toArray();
656
- let selectedTab = this.findSelectedTab();
657
- if (!selectedTab && this.tabs.length) {
658
- if (this.activeIndex != null && this.tabs.length > this.activeIndex)
659
- this.tabs[this.activeIndex].selected = true;
660
- else
661
- this.tabs[0].selected = true;
662
- this.tabChanged = true;
663
- }
664
- this.cd.markForCheck();
665
- }
666
- onTabKeyDown(event, tab) {
667
- switch (event.code) {
668
- case 'ArrowLeft':
669
- this.onTabArrowLeftKey(event);
670
- break;
671
- case 'ArrowRight':
672
- this.onTabArrowRightKey(event);
673
- break;
674
- case 'Home':
675
- this.onTabHomeKey(event);
676
- break;
677
- case 'End':
678
- this.onTabEndKey(event);
679
- break;
680
- case 'PageDown':
681
- this.onTabEndKey(event);
682
- break;
683
- case 'PageUp':
684
- this.onTabHomeKey(event);
685
- break;
686
- case 'Enter':
687
- case 'Space':
688
- this.open(event, tab);
689
- break;
690
- default:
691
- break;
692
- }
693
- }
694
- onTabArrowLeftKey(event) {
695
- const prevHeaderAction = this.findPrevHeaderAction(event.currentTarget);
696
- const index = DomHandler.getAttribute(prevHeaderAction, 'data-pc-index');
697
- prevHeaderAction ? this.changeFocusedTab(event, prevHeaderAction, index) : this.onTabEndKey(event);
698
- event.preventDefault();
699
- }
700
- onTabArrowRightKey(event) {
701
- const nextHeaderAction = this.findNextHeaderAction(event.currentTarget);
702
- const index = DomHandler.getAttribute(nextHeaderAction, 'data-pc-index');
703
- nextHeaderAction ? this.changeFocusedTab(event, nextHeaderAction, index) : this.onTabHomeKey(event);
704
- event.preventDefault();
705
- }
706
- onTabHomeKey(event) {
707
- const firstHeaderAction = this.findFirstHeaderAction();
708
- const index = DomHandler.getAttribute(firstHeaderAction, 'data-pc-index');
709
- this.changeFocusedTab(event, firstHeaderAction, index);
710
- event.preventDefault();
711
- }
712
- onTabEndKey(event) {
713
- const lastHeaderAction = this.findLastHeaderAction();
714
- const index = DomHandler.getAttribute(lastHeaderAction, 'data-pc-index');
715
- this.changeFocusedTab(event, lastHeaderAction, index);
362
+ onScroll(event) {
363
+ this.showNavigators() && this.updateButtonState();
716
364
  event.preventDefault();
717
365
  }
718
- changeFocusedTab(event, element, index) {
719
- if (element) {
720
- DomHandler.focus(element);
721
- element.scrollIntoView({ block: 'nearest' });
722
- if (this.selectOnFocus) {
723
- const tab = this.tabs[index];
724
- this.open(event, tab);
725
- }
726
- }
727
- }
728
- findNextHeaderAction(tabElement, selfCheck = false) {
729
- const headerElement = selfCheck ? tabElement : tabElement.nextElementSibling;
730
- return headerElement
731
- ? DomHandler.getAttribute(headerElement, 'data-p-disabled') ||
732
- DomHandler.getAttribute(headerElement, 'data-pc-section') === 'inkbar'
733
- ? this.findNextHeaderAction(headerElement)
734
- : headerElement
735
- : null;
736
- }
737
- findPrevHeaderAction(tabElement, selfCheck = false) {
738
- const headerElement = selfCheck ? tabElement : tabElement.previousElementSibling;
739
- return headerElement
740
- ? DomHandler.getAttribute(headerElement, 'data-p-disabled') ||
741
- DomHandler.getAttribute(headerElement, 'data-pc-section') === 'inkbar'
742
- ? this.findPrevHeaderAction(headerElement)
743
- : headerElement
744
- : null;
745
- }
746
- findFirstHeaderAction() {
747
- const firstEl = this.navbar.nativeElement.firstElementChild;
748
- return this.findNextHeaderAction(firstEl, true);
749
- }
750
- findLastHeaderAction() {
751
- const lastEl = this.navbar.nativeElement.lastElementChild;
752
- const lastHeaderAction = DomHandler.getAttribute(lastEl, 'data-pc-section') === 'inkbar' ? lastEl.previousElementSibling : lastEl;
753
- return this.findPrevHeaderAction(lastHeaderAction, true);
754
- }
755
- open(event, tab) {
756
- if (tab.disabled) {
757
- if (event) {
758
- event.preventDefault();
759
- }
760
- return;
761
- }
762
- if (!tab.selected) {
763
- let selectedTab = this.findSelectedTab();
764
- if (selectedTab) {
765
- selectedTab.selected = false;
766
- }
767
- this.tabChanged = true;
768
- tab.selected = true;
769
- let selectedTabIndex = this.findTabIndex(tab);
770
- this.preventActiveIndexPropagation = true;
771
- this.activeIndexChange.emit(selectedTabIndex);
772
- this.onChange.emit({ originalEvent: event, index: selectedTabIndex });
773
- this.updateScrollBar(selectedTabIndex);
774
- }
775
- if (event) {
776
- event.preventDefault();
777
- }
778
- }
779
- close(event, tab) {
780
- if (this.controlClose) {
781
- this.onClose.emit({
782
- originalEvent: event,
783
- index: this.findTabIndex(tab),
784
- close: () => {
785
- this.closeTab(tab);
786
- },
787
- });
788
- }
789
- else {
790
- this.closeTab(tab);
791
- this.onClose.emit({
792
- originalEvent: event,
793
- index: this.findTabIndex(tab),
794
- });
795
- }
796
- event.stopPropagation();
797
- }
798
- closeTab(tab) {
799
- if (tab.disabled) {
800
- return;
801
- }
802
- if (tab.selected) {
803
- this.tabChanged = true;
804
- tab.selected = false;
805
- for (let i = 0; i < this.tabs.length; i++) {
806
- let tabPanel = this.tabs[i];
807
- if (!tabPanel.closed && !tab.disabled) {
808
- tabPanel.selected = true;
809
- break;
810
- }
811
- }
812
- }
813
- tab.closed = true;
814
- }
815
- findSelectedTab() {
816
- for (let i = 0; i < this.tabs.length; i++) {
817
- if (this.tabs[i].selected) {
818
- return this.tabs[i];
819
- }
820
- }
821
- return null;
822
- }
823
- findTabIndex(tab) {
824
- let index = -1;
825
- for (let i = 0; i < this.tabs.length; i++) {
826
- if (this.tabs[i] == tab) {
827
- index = i;
828
- break;
829
- }
830
- }
831
- return index;
832
- }
833
- getBlockableElement() {
834
- return this.el.nativeElement.children[0];
366
+ onPrevButtonClick() {
367
+ const _content = this.content.nativeElement;
368
+ const width = DomHandler.getWidth(_content);
369
+ const pos = _content.scrollLeft - width;
370
+ _content.scrollLeft = pos <= 0 ? 0 : pos;
835
371
  }
836
- updateInkBar() {
837
- if (isPlatformBrowser(this.platformId)) {
838
- if (this.navbar) {
839
- const tabHeader = DomHandler.findSingle(this.navbar.nativeElement, '[data-pc-section="headeraction"][data-p-active="true"]');
840
- if (!tabHeader) {
841
- return;
842
- }
843
- this.inkbar.nativeElement.style.width = DomHandler.getOuterWidth(tabHeader) + 'px';
844
- this.inkbar.nativeElement.style.left =
845
- DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';
846
- }
847
- }
848
- }
849
- updateScrollBar(index) {
850
- let tabHeader = DomHandler.find(this.navbar.nativeElement, '[data-pc-section="headeraction"]')[index];
851
- if (tabHeader) {
852
- tabHeader.scrollIntoView({ block: 'nearest' });
853
- }
372
+ onNextButtonClick() {
373
+ const _content = this.content.nativeElement;
374
+ const width = DomHandler.getWidth(_content) - this.getVisibleButtonWidths();
375
+ const pos = _content.scrollLeft + width;
376
+ const lastPos = _content.scrollWidth - width;
377
+ _content.scrollLeft = pos >= lastPos ? lastPos : pos;
854
378
  }
855
379
  updateButtonState() {
856
- const content = this.content.nativeElement;
857
- const { scrollLeft, scrollWidth } = content;
858
- const width = DomHandler.getWidth(content);
859
- this.backwardIsDisabled = scrollLeft === 0;
860
- this.forwardIsDisabled = Math.round(scrollLeft) === scrollWidth - width;
861
- }
862
- refreshButtonState() {
863
- this.container = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section="navcontent"]');
864
- this.list = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section="nav"]');
865
- if (this.list.offsetWidth >= this.container.offsetWidth) {
866
- if (this.list.offsetWidth >= this.container.offsetWidth) {
867
- this.buttonVisible = true;
868
- }
869
- else {
870
- this.buttonVisible = false;
871
- }
872
- this.updateButtonState();
873
- this.cd.markForCheck();
874
- }
380
+ const _content = this.content?.nativeElement;
381
+ const _list = this.el?.nativeElement;
382
+ const { scrollLeft, scrollTop, scrollWidth, scrollHeight, offsetWidth, offsetHeight } = _content;
383
+ const [width, height] = [DomHandler.getWidth(_content), DomHandler.getHeight(_content)];
384
+ this.isPrevButtonEnabled.set(scrollLeft !== 0);
385
+ this.isNextButtonEnabled.set(_list.offsetWidth >= offsetWidth && scrollLeft !== scrollWidth - width);
875
386
  }
876
- onScroll(event) {
877
- this.scrollable && this.updateButtonState();
878
- event.preventDefault();
387
+ updateInkBar() {
388
+ const _content = this.content.nativeElement;
389
+ const _inkbar = this.inkbar.nativeElement;
390
+ const _tabs = this.tabs.nativeElement;
391
+ const activeTab = DomHandler.findSingle(_content, '[data-pc-name="tab"][data-p-active="true"]');
392
+ _inkbar.style.width = DomHandler.getOuterWidth(activeTab) + 'px';
393
+ _inkbar.style.left = DomHandler.getOffset(activeTab).left - DomHandler.getOffset(_tabs).left + 'px';
879
394
  }
880
395
  getVisibleButtonWidths() {
881
- return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => (el ? acc + DomHandler.getWidth(el) : acc), 0);
396
+ const _prevBtn = this.prevButton?.nativeElement;
397
+ const _nextBtn = this.nextButton?.nativeElement;
398
+ return [_prevBtn, _nextBtn].reduce((acc, el) => (el ? acc + DomHandler.getWidth(el) : acc), 0);
882
399
  }
883
- navBackward() {
884
- const content = this.content.nativeElement;
885
- const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();
886
- const pos = content.scrollLeft - width;
887
- content.scrollLeft = pos <= 0 ? 0 : pos;
400
+ bindResizeObserver() {
401
+ this.resizeObserver = new ResizeObserver(() => this.updateButtonState());
402
+ this.resizeObserver.observe(this.el.nativeElement);
888
403
  }
889
- navForward() {
890
- const content = this.content.nativeElement;
891
- const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();
892
- const pos = content.scrollLeft + width;
893
- const lastPos = content.scrollWidth - width;
894
- content.scrollLeft = pos >= lastPos ? lastPos : pos;
404
+ unbindResizeObserver() {
405
+ if (this.resizeObserver) {
406
+ this.resizeObserver.unobserve(this.el.nativeElement);
407
+ this.resizeObserver = null;
408
+ }
895
409
  }
896
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: Tabs, deps: null, target: i0.ɵɵFactoryTarget.Component });
897
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: Tabs, isStandalone: true, selector: "p-tabs", inputs: { style: "style", styleClass: "styleClass", controlClose: ["controlClose", "controlClose", booleanAttribute], scrollable: ["scrollable", "scrollable", booleanAttribute], activeIndex: "activeIndex", selectOnFocus: ["selectOnFocus", "selectOnFocus", booleanAttribute], nextButtonAriaLabel: "nextButtonAriaLabel", prevButtonAriaLabel: "prevButtonAriaLabel", autoHideButtons: ["autoHideButtons", "autoHideButtons", booleanAttribute], tabindex: ["tabindex", "tabindex", numberAttribute] }, outputs: { onChange: "onChange", onClose: "onClose", activeIndexChange: "activeIndexChange" }, host: { properties: { "class.p-tabs": "true", "class.p-tabs-scrollable": "scrollable", "class.p-component": "true", "attr.data-pc-name": "tabs", "class": "this.hostClass", "style": "this.hostStyle" } }, providers: [TabsStyle], queries: [{ propertyName: "tabPanels", predicate: TabPanel }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "prevBtn", first: true, predicate: ["prevBtn"], descendants: true }, { propertyName: "nextBtn", first: true, predicate: ["nextBtn"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }, { propertyName: "elementToObserve", first: true, predicate: ["elementToObserve"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
898
- <div #elementToObserve class="p-tablist">
410
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TabList, deps: [], target: i0.ɵɵFactoryTarget.Component });
411
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: TabList, isStandalone: true, selector: "p-tablist", host: { properties: { "class.p-tablist": "true", "class.p-component": "true", "attr.data-pc-name": "\"tablist\"" } }, queries: [{ propertyName: "prevIconTemplate", first: true, predicate: ["previcon"], descendants: true }, { propertyName: "nextIconTemplate", first: true, predicate: ["nexticon"], descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "prevButton", first: true, predicate: ["prevButton"], descendants: true }, { propertyName: "nextButton", first: true, predicate: ["nextButton"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }, { propertyName: "tabs", first: true, predicate: ["tabs"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
412
+ @if (showNavigators() && isPrevButtonEnabled()) {
899
413
  <button
900
- *ngIf="scrollable && !backwardIsDisabled && autoHideButtons"
901
- #prevBtn
902
- class="p-tablist-prev-button p-tablist-nav-button"
903
- (click)="navBackward()"
904
- [attr.tabindex]="tabindex"
905
- [attr.aria-label]="prevButtonAriaLabel"
906
- type="button"
414
+ #prevButton
907
415
  pRipple
416
+ class="p-tablist-nav-button p-tablist-prev-button"
417
+ [attr.aria-label]="prevButtonAriaLabel"
418
+ [attr.tabindex]="tabindex"
419
+ [attr.data-pc-group-section]="'navigator'"
420
+ (click)="onPrevButtonClick()"
908
421
  >
909
- <ChevronLeftIcon *ngIf="!previousIconTemplate" [attr.aria-hidden]="true" />
910
- <ng-template *ngTemplateOutlet="previousIconTemplate"></ng-template>
422
+ @if (prevIconTemplate) {
423
+ <ng-container *ngTemplateOutlet="prevIconTemplate"></ng-container>
424
+ } @else {
425
+ <ChevronLeftIcon />
426
+ }
911
427
  </button>
912
- <div
913
- #content
914
- class="p-tablist-content"
915
- [ngClass]="{ 'p-tablist-viewport': scrollable }"
916
- (scroll)="onScroll($event)"
917
- [attr.data-pc-section]="'navcontent'"
918
- >
919
- <div #navbar class="p-tablist-tab-list" role="tablist" [attr.data-pc-section]="'nav'">
920
- @for (tab of tabs; track tab; let i = $index) {
921
- @if (!tab.closed) {
922
- <button
923
- [ngClass]="{
924
- 'p-tab': true,
925
- 'p-tab-active': tab.selected,
926
- 'p-disabled': tab.disabled,
927
- }"
928
- [attr.role]="'tab'"
929
- [class]="tab.headerStyleClass"
930
- [ngStyle]="tab.headerStyle"
931
- [pTooltip]="tab.tooltip"
932
- [tooltipPosition]="tab.tooltipPosition"
933
- [positionStyle]="tab.tooltipPositionStyle"
934
- [tooltipStyleClass]="tab.tooltipStyleClass"
935
- [attr.id]="getTabHeaderActionId(tab.id)"
936
- [attr.aria-controls]="getTabContentId(tab.id)"
937
- [attr.aria-selected]="tab.selected"
938
- [attr.tabindex]="tab.disabled || !tab.selected ? '-1' : tabindex"
939
- [attr.aria-disabled]="tab.disabled"
940
- [disabled]="tab.disabled"
941
- [attr.data-pc-index]="i"
942
- [attr.data-p-disabled]="tab.disabled"
943
- [attr.data-pc-section]="'headeraction'"
944
- [attr.data-p-active]="tab.selected"
945
- (click)="open($event, tab)"
946
- (keydown)="onTabKeyDown($event, tab)"
947
- pRipple
948
- >
949
- @if (tab.headerTemplate) {
950
- <ng-container *ngTemplateOutlet="tab.headerTemplate"></ng-container>
951
- } @else {
952
- @if (tab.leftIconTemplate) {
953
- <ng-template *ngTemplateOutlet="tab.leftIconTemplate"></ng-template>
954
- } @else if (tab.leftIcon && !tab.leftIconTemplate) {
955
- <span class="p-tabs-left-icon" [ngClass]="tab.leftIcon"></span>
956
- }
957
-
958
- {{ tab.header }}
959
-
960
- @if (tab.rightIconTemplate) {
961
- <ng-template *ngTemplateOutlet="tab.rightIconTemplate"></ng-template>
962
- } @else if (tab.rightIcon && !tab.rightIconTemplate) {
963
- <span class="p-tabs-right-icon" [ngClass]="tab.rightIcon"></span>
964
- }
965
-
966
- @if (tab.closable) {
967
- @if (tab.closeIconTemplate) {
968
- <ng-template *ngTemplateOutlet="tab.closeIconTemplate"></ng-template>
969
- } @else {
970
- <TimesIcon (click)="close($event, tab)" />
971
- }
972
- }
973
- }
974
- </button>
975
- <span
976
- #inkbar
977
- class="p-tablist-active-bar"
978
- role="presentation"
979
- [attr.aria-hidden]="true"
980
- [attr.data-pc-section]="'inkbar'"
981
- ></span>
982
- }
983
- }
984
- </div>
428
+ }
429
+ <div #content class="p-tablist-content" [ngClass]="{ 'p-tablist-viewport': scrollable() }" (scroll)="onScroll($event)">
430
+ <div #tabs class="p-tablist-tab-list" role="tablist">
431
+ <ng-content></ng-content>
432
+ <span #inkbar role="presentation" class="p-tablist-active-bar" [attr.data-pc-section]="'inkbar'"></span>
985
433
  </div>
434
+ </div>
435
+ @if (showNavigators() && isNextButtonEnabled()) {
986
436
  <button
987
- *ngIf="scrollable && !forwardIsDisabled && buttonVisible"
988
- #nextBtn
989
- [attr.tabindex]="tabindex"
990
- [attr.aria-label]="nextButtonAriaLabel"
991
- class="p-tablist-next-button p-tablist-nav-button"
992
- (click)="navForward()"
993
- type="button"
437
+ #nextButton
994
438
  pRipple
439
+ class="p-tablist-nav-button p-tablist-next-button"
440
+ [attr.aria-label]="nextButtonAriaLabel"
441
+ [attr.tabindex]="tabindex"
442
+ [attr.data-pc-group-section]="'navigator'"
443
+ (click)="onNextButtonClick()"
995
444
  >
996
445
  @if (nextIconTemplate) {
997
- <ng-template *ngTemplateOutlet="nextIconTemplate"></ng-template>
446
+ <ng-container *ngTemplateOutlet="nextIconTemplate"></ng-container>
998
447
  } @else {
999
- <ChevronRightIcon [attr.aria-hidden]="true" />
448
+ <ChevronRightIcon />
1000
449
  }
1001
450
  </button>
1002
- </div>
1003
- <div class="p-tabpanels">
1004
- <ng-content></ng-content>
1005
- </div>
1006
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: Ripple, selector: "[pRipple]" }, { kind: "component", type: TimesIcon, selector: "TimesIcon" }, { kind: "component", type: ChevronLeftIcon, selector: "ChevronLeftIcon" }, { kind: "component", type: ChevronRightIcon, selector: "ChevronRightIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
451
+ }
452
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ChevronLeftIcon, selector: "ChevronLeftIcon" }, { kind: "component", type: ChevronRightIcon, selector: "ChevronRightIcon" }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i2.Ripple, selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1007
453
  }
1008
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: Tabs, decorators: [{
454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TabList, decorators: [{
1009
455
  type: Component,
1010
456
  args: [{
1011
- selector: 'p-tabs',
457
+ selector: 'p-tablist',
1012
458
  standalone: true,
1013
- imports: [CommonModule, TabPanel, SharedModule, TooltipModule, Ripple, TimesIcon, ChevronLeftIcon, ChevronRightIcon],
459
+ imports: [CommonModule, ChevronLeftIcon, ChevronRightIcon, RippleModule],
1014
460
  template: `
1015
- <div #elementToObserve class="p-tablist">
461
+ @if (showNavigators() && isPrevButtonEnabled()) {
1016
462
  <button
1017
- *ngIf="scrollable && !backwardIsDisabled && autoHideButtons"
1018
- #prevBtn
1019
- class="p-tablist-prev-button p-tablist-nav-button"
1020
- (click)="navBackward()"
1021
- [attr.tabindex]="tabindex"
1022
- [attr.aria-label]="prevButtonAriaLabel"
1023
- type="button"
463
+ #prevButton
1024
464
  pRipple
465
+ class="p-tablist-nav-button p-tablist-prev-button"
466
+ [attr.aria-label]="prevButtonAriaLabel"
467
+ [attr.tabindex]="tabindex"
468
+ [attr.data-pc-group-section]="'navigator'"
469
+ (click)="onPrevButtonClick()"
1025
470
  >
1026
- <ChevronLeftIcon *ngIf="!previousIconTemplate" [attr.aria-hidden]="true" />
1027
- <ng-template *ngTemplateOutlet="previousIconTemplate"></ng-template>
471
+ @if (prevIconTemplate) {
472
+ <ng-container *ngTemplateOutlet="prevIconTemplate"></ng-container>
473
+ } @else {
474
+ <ChevronLeftIcon />
475
+ }
1028
476
  </button>
1029
- <div
1030
- #content
1031
- class="p-tablist-content"
1032
- [ngClass]="{ 'p-tablist-viewport': scrollable }"
1033
- (scroll)="onScroll($event)"
1034
- [attr.data-pc-section]="'navcontent'"
1035
- >
1036
- <div #navbar class="p-tablist-tab-list" role="tablist" [attr.data-pc-section]="'nav'">
1037
- @for (tab of tabs; track tab; let i = $index) {
1038
- @if (!tab.closed) {
1039
- <button
1040
- [ngClass]="{
1041
- 'p-tab': true,
1042
- 'p-tab-active': tab.selected,
1043
- 'p-disabled': tab.disabled,
1044
- }"
1045
- [attr.role]="'tab'"
1046
- [class]="tab.headerStyleClass"
1047
- [ngStyle]="tab.headerStyle"
1048
- [pTooltip]="tab.tooltip"
1049
- [tooltipPosition]="tab.tooltipPosition"
1050
- [positionStyle]="tab.tooltipPositionStyle"
1051
- [tooltipStyleClass]="tab.tooltipStyleClass"
1052
- [attr.id]="getTabHeaderActionId(tab.id)"
1053
- [attr.aria-controls]="getTabContentId(tab.id)"
1054
- [attr.aria-selected]="tab.selected"
1055
- [attr.tabindex]="tab.disabled || !tab.selected ? '-1' : tabindex"
1056
- [attr.aria-disabled]="tab.disabled"
1057
- [disabled]="tab.disabled"
1058
- [attr.data-pc-index]="i"
1059
- [attr.data-p-disabled]="tab.disabled"
1060
- [attr.data-pc-section]="'headeraction'"
1061
- [attr.data-p-active]="tab.selected"
1062
- (click)="open($event, tab)"
1063
- (keydown)="onTabKeyDown($event, tab)"
1064
- pRipple
1065
- >
1066
- @if (tab.headerTemplate) {
1067
- <ng-container *ngTemplateOutlet="tab.headerTemplate"></ng-container>
1068
- } @else {
1069
- @if (tab.leftIconTemplate) {
1070
- <ng-template *ngTemplateOutlet="tab.leftIconTemplate"></ng-template>
1071
- } @else if (tab.leftIcon && !tab.leftIconTemplate) {
1072
- <span class="p-tabs-left-icon" [ngClass]="tab.leftIcon"></span>
1073
- }
1074
-
1075
- {{ tab.header }}
1076
-
1077
- @if (tab.rightIconTemplate) {
1078
- <ng-template *ngTemplateOutlet="tab.rightIconTemplate"></ng-template>
1079
- } @else if (tab.rightIcon && !tab.rightIconTemplate) {
1080
- <span class="p-tabs-right-icon" [ngClass]="tab.rightIcon"></span>
1081
- }
1082
-
1083
- @if (tab.closable) {
1084
- @if (tab.closeIconTemplate) {
1085
- <ng-template *ngTemplateOutlet="tab.closeIconTemplate"></ng-template>
1086
- } @else {
1087
- <TimesIcon (click)="close($event, tab)" />
1088
- }
1089
- }
1090
- }
1091
- </button>
1092
- <span
1093
- #inkbar
1094
- class="p-tablist-active-bar"
1095
- role="presentation"
1096
- [attr.aria-hidden]="true"
1097
- [attr.data-pc-section]="'inkbar'"
1098
- ></span>
1099
- }
1100
- }
1101
- </div>
477
+ }
478
+ <div #content class="p-tablist-content" [ngClass]="{ 'p-tablist-viewport': scrollable() }" (scroll)="onScroll($event)">
479
+ <div #tabs class="p-tablist-tab-list" role="tablist">
480
+ <ng-content></ng-content>
481
+ <span #inkbar role="presentation" class="p-tablist-active-bar" [attr.data-pc-section]="'inkbar'"></span>
1102
482
  </div>
483
+ </div>
484
+ @if (showNavigators() && isNextButtonEnabled()) {
1103
485
  <button
1104
- *ngIf="scrollable && !forwardIsDisabled && buttonVisible"
1105
- #nextBtn
1106
- [attr.tabindex]="tabindex"
1107
- [attr.aria-label]="nextButtonAriaLabel"
1108
- class="p-tablist-next-button p-tablist-nav-button"
1109
- (click)="navForward()"
1110
- type="button"
486
+ #nextButton
1111
487
  pRipple
488
+ class="p-tablist-nav-button p-tablist-next-button"
489
+ [attr.aria-label]="nextButtonAriaLabel"
490
+ [attr.tabindex]="tabindex"
491
+ [attr.data-pc-group-section]="'navigator'"
492
+ (click)="onNextButtonClick()"
1112
493
  >
1113
494
  @if (nextIconTemplate) {
1114
- <ng-template *ngTemplateOutlet="nextIconTemplate"></ng-template>
495
+ <ng-container *ngTemplateOutlet="nextIconTemplate"></ng-container>
1115
496
  } @else {
1116
- <ChevronRightIcon [attr.aria-hidden]="true" />
497
+ <ChevronRightIcon />
1117
498
  }
1118
499
  </button>
1119
- </div>
1120
- <div class="p-tabpanels">
1121
- <ng-content></ng-content>
1122
- </div>
500
+ }
1123
501
  `,
1124
502
  changeDetection: ChangeDetectionStrategy.OnPush,
1125
503
  encapsulation: ViewEncapsulation.None,
1126
504
  host: {
1127
- '[class.p-tabs]': 'true',
1128
- '[class.p-tabs-scrollable]': 'scrollable',
505
+ '[class.p-tablist]': 'true',
1129
506
  '[class.p-component]': 'true',
1130
- '[attr.data-pc-name]': 'tabs',
507
+ '[attr.data-pc-name]': '"tablist"',
1131
508
  },
1132
- providers: [TabsStyle],
1133
509
  }]
1134
- }], propDecorators: { hostClass: [{
1135
- type: HostBinding,
1136
- args: ['class']
1137
- }], hostStyle: [{
1138
- type: HostBinding,
1139
- args: ['style']
1140
- }], style: [{
1141
- type: Input
1142
- }], styleClass: [{
1143
- type: Input
1144
- }], controlClose: [{
1145
- type: Input,
1146
- args: [{ transform: booleanAttribute }]
1147
- }], scrollable: [{
1148
- type: Input,
1149
- args: [{ transform: booleanAttribute }]
1150
- }], activeIndex: [{
1151
- type: Input
1152
- }], selectOnFocus: [{
1153
- type: Input,
1154
- args: [{ transform: booleanAttribute }]
1155
- }], nextButtonAriaLabel: [{
1156
- type: Input
1157
- }], prevButtonAriaLabel: [{
1158
- type: Input
1159
- }], autoHideButtons: [{
1160
- type: Input,
1161
- args: [{ transform: booleanAttribute }]
1162
- }], tabindex: [{
1163
- type: Input,
1164
- args: [{ transform: numberAttribute }]
1165
- }], onChange: [{
1166
- type: Output
1167
- }], onClose: [{
1168
- type: Output
1169
- }], activeIndexChange: [{
1170
- type: Output
510
+ }], ctorParameters: () => [], propDecorators: { prevIconTemplate: [{
511
+ type: ContentChild,
512
+ args: ['previcon']
513
+ }], nextIconTemplate: [{
514
+ type: ContentChild,
515
+ args: ['nexticon']
1171
516
  }], content: [{
1172
517
  type: ViewChild,
1173
518
  args: ['content']
1174
- }], navbar: [{
1175
- type: ViewChild,
1176
- args: ['navbar']
1177
- }], prevBtn: [{
519
+ }], prevButton: [{
1178
520
  type: ViewChild,
1179
- args: ['prevBtn']
1180
- }], nextBtn: [{
521
+ args: ['prevButton']
522
+ }], nextButton: [{
1181
523
  type: ViewChild,
1182
- args: ['nextBtn']
524
+ args: ['nextButton']
1183
525
  }], inkbar: [{
1184
526
  type: ViewChild,
1185
527
  args: ['inkbar']
1186
- }], tabPanels: [{
1187
- type: ContentChildren,
1188
- args: [TabPanel]
528
+ }], tabs: [{
529
+ type: ViewChild,
530
+ args: ['tabs']
1189
531
  }], templates: [{
1190
532
  type: ContentChildren,
1191
533
  args: [PrimeTemplate]
1192
- }], elementToObserve: [{
1193
- type: ViewChild,
1194
- args: ['elementToObserve']
1195
534
  }] } });
535
+
536
+ /**
537
+ * Defines valid properties in Tab component.
538
+ * @group Components
539
+ */
540
+ class Tab extends BaseComponent {
541
+ /**
542
+ * Value of tab.
543
+ * @defaultValue undefined
544
+ * @group Props
545
+ */
546
+ value = model();
547
+ /**
548
+ * Whether the tab is disabled.
549
+ * @defaultValue false
550
+ * @group Props
551
+ */
552
+ disabled = input(false, { transform: booleanAttribute });
553
+ pcTabs = inject(forwardRef(() => Tabs));
554
+ pcTabList = inject(forwardRef(() => TabList));
555
+ ripple = computed(() => this.config.ripple());
556
+ id = computed(() => `${this.pcTabs.id()}_tab_${this.value()}`);
557
+ ariaControls = computed(() => `${this.pcTabs.id()}_tabpanel_${this.value()}`);
558
+ active = computed(() => ObjectUtils.equals(this.pcTabs.value(), this.value()));
559
+ tabindex = computed(() => (this.active() ? this.pcTabs.tabindex() : -1));
560
+ onFocus(event) {
561
+ this.pcTabs.selectOnFocus() && this.changeActiveValue();
562
+ }
563
+ onClick(event) {
564
+ this.changeActiveValue();
565
+ }
566
+ onKeyDown(event) {
567
+ switch (event.code) {
568
+ case 'ArrowRight':
569
+ this.onArrowRightKey(event);
570
+ break;
571
+ case 'ArrowLeft':
572
+ this.onArrowLeftKey(event);
573
+ break;
574
+ case 'Home':
575
+ this.onHomeKey(event);
576
+ break;
577
+ case 'End':
578
+ this.onEndKey(event);
579
+ break;
580
+ case 'PageDown':
581
+ this.onPageDownKey(event);
582
+ break;
583
+ case 'PageUp':
584
+ this.onPageUpKey(event);
585
+ break;
586
+ case 'Enter':
587
+ case 'NumpadEnter':
588
+ case 'Space':
589
+ this.onEnterKey(event);
590
+ break;
591
+ default:
592
+ break;
593
+ }
594
+ event.stopPropagation();
595
+ }
596
+ onArrowRightKey(event) {
597
+ const nextTab = this.findNextTab(event.currentTarget);
598
+ nextTab ? this.changeFocusedTab(event, nextTab) : this.onHomeKey(event);
599
+ event.preventDefault();
600
+ }
601
+ onArrowLeftKey(event) {
602
+ const prevTab = this.findPrevTab(event.currentTarget);
603
+ prevTab ? this.changeFocusedTab(event, prevTab) : this.onEndKey(event);
604
+ event.preventDefault();
605
+ }
606
+ onHomeKey(event) {
607
+ const firstTab = this.findFirstTab();
608
+ this.changeFocusedTab(event, firstTab);
609
+ event.preventDefault();
610
+ }
611
+ onEndKey(event) {
612
+ const lastTab = this.findLastTab();
613
+ this.changeFocusedTab(event, lastTab);
614
+ event.preventDefault();
615
+ }
616
+ onPageDownKey(event) {
617
+ this.scrollInView(this.findLastTab());
618
+ event.preventDefault();
619
+ }
620
+ onPageUpKey(event) {
621
+ this.scrollInView(this.findFirstTab());
622
+ event.preventDefault();
623
+ }
624
+ onEnterKey(event) {
625
+ this.changeActiveValue();
626
+ event.preventDefault();
627
+ }
628
+ findNextTab(tabElement, selfCheck = false) {
629
+ const element = selfCheck ? tabElement : tabElement.nextElementSibling;
630
+ return element
631
+ ? DomHandler.getAttribute(element, 'data-p-disabled') || DomHandler.getAttribute(element, 'data-pc-section') === 'inkbar'
632
+ ? this.findNextTab(element)
633
+ : element
634
+ : null;
635
+ }
636
+ findPrevTab(tabElement, selfCheck = false) {
637
+ const element = selfCheck ? tabElement : tabElement.previousElementSibling;
638
+ return element
639
+ ? DomHandler.getAttribute(element, 'data-p-disabled') || DomHandler.getAttribute(element, 'data-pc-section') === 'inkbar'
640
+ ? this.findPrevTab(element)
641
+ : element
642
+ : null;
643
+ }
644
+ findFirstTab() {
645
+ return this.findNextTab(this.pcTabList?.tabs?.nativeElement?.firstElementChild, true);
646
+ }
647
+ findLastTab() {
648
+ return this.findPrevTab(this.pcTabList?.tabs?.nativeElement?.lastElementChild, true);
649
+ }
650
+ changeActiveValue() {
651
+ this.pcTabs.updateValue(this.value());
652
+ }
653
+ changeFocusedTab(event, element) {
654
+ DomHandler.focus(element);
655
+ this.scrollInView(element);
656
+ }
657
+ scrollInView(element) {
658
+ element?.scrollIntoView?.({ block: 'nearest' });
659
+ }
660
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: Tab, deps: null, target: i0.ɵɵFactoryTarget.Component });
661
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.2", type: Tab, isStandalone: true, selector: "p-tab", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "focus": "onFocus($event)", "click": "onClick($event)", "keydown": "onKeyDown($event)" }, properties: { "class.p-tab": "true", "class.p-component": "true", "attr.data-pc-name": "\"tab\"", "attr.id": "id()", "attr.aria-controls": "ariaControls()", "attr.role": "\"tab\"", "attr.aria-selected": "active()", "attr.data-p-disabled": "disabled()", "attr.data-p-active": "active()", "attr.tabindex": "tabindex()" } }, usesInheritance: true, hostDirectives: [{ directive: i2.Ripple }], ngImport: i0, template: ` <ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
662
+ }
663
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: Tab, decorators: [{
664
+ type: Component,
665
+ args: [{
666
+ selector: 'p-tab',
667
+ standalone: true,
668
+ imports: [CommonModule, Ripple],
669
+ template: ` <ng-content></ng-content>`,
670
+ changeDetection: ChangeDetectionStrategy.OnPush,
671
+ encapsulation: ViewEncapsulation.None,
672
+ host: {
673
+ '[class.p-tab]': 'true',
674
+ '[class.p-component]': 'true',
675
+ '[attr.data-pc-name]': '"tab"',
676
+ '[attr.id]': 'id()',
677
+ '[attr.aria-controls]': 'ariaControls()',
678
+ '[attr.role]': '"tab"',
679
+ '[attr.aria-selected]': 'active()',
680
+ '[attr.data-p-disabled]': 'disabled()',
681
+ '[attr.data-p-active]': 'active()',
682
+ '[attr.tabindex]': 'tabindex()',
683
+ },
684
+ hostDirectives: [Ripple],
685
+ }]
686
+ }], propDecorators: { onFocus: [{
687
+ type: HostListener,
688
+ args: ['focus', ['$event']]
689
+ }], onClick: [{
690
+ type: HostListener,
691
+ args: ['click', ['$event']]
692
+ }], onKeyDown: [{
693
+ type: HostListener,
694
+ args: ['keydown', ['$event']]
695
+ }] } });
696
+
697
+ /**
698
+ * Tabs facilitates seamless switching between different views.
699
+ * @group Components
700
+ */
701
+ class Tabs extends BaseComponent {
702
+ /**
703
+ * Value of the active tab.
704
+ * @defaultValue undefined
705
+ * @group Props
706
+ */
707
+ value = model(undefined);
708
+ /**
709
+ * When specified, enables horizontal and/or vertical scrolling.
710
+ * @type boolean
711
+ * @defaultValue false
712
+ * @group Props
713
+ */
714
+ scrollable = input(false, { transform: booleanAttribute });
715
+ /**
716
+ * When enabled, hidden tabs are not rendered at all. Defaults to false that hides tabs with css.
717
+ * @type boolean
718
+ * @defaultValue false
719
+ * @group Props
720
+ */
721
+ lazy = input(false, { transform: booleanAttribute });
722
+ /**
723
+ * When enabled, the focused tab is activated.
724
+ * @type boolean
725
+ * @defaultValue false
726
+ * @group Props
727
+ */
728
+ selectOnFocus = input(false, { transform: booleanAttribute });
729
+ /**
730
+ * Whether to display navigation buttons in container when scrollable is enabled.
731
+ * @type boolean
732
+ * @defaultValue true
733
+ * @group Props
734
+ */
735
+ showNavigators = input(true, { transform: booleanAttribute });
736
+ /**
737
+ * Tabindex of the tab buttons.
738
+ * @type number
739
+ * @defaultValue 0
740
+ * @group Props
741
+ */
742
+ tabindex = input(0, { transform: numberAttribute });
743
+ id = signal(UniqueComponentId());
744
+ _componentStyle = inject(TabsStyle);
745
+ updateValue(newValue) {
746
+ this.value.update(() => newValue);
747
+ }
748
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: Tabs, deps: null, target: i0.ɵɵFactoryTarget.Component });
749
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.2", type: Tabs, isStandalone: true, selector: "p-tabs", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, selectOnFocus: { classPropertyName: "selectOnFocus", publicName: "selectOnFocus", isSignal: true, isRequired: false, transformFunction: null }, showNavigators: { classPropertyName: "showNavigators", publicName: "showNavigators", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class.p-tabs": "true", "class.p-tabs-scrollable": "scrollable()", "class.p-component": "true", "attr.data-pc-name": "\"tabs\"", "attr.id": "id" } }, providers: [TabsStyle], usesInheritance: true, ngImport: i0, template: ` <ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
750
+ }
751
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: Tabs, decorators: [{
752
+ type: Component,
753
+ args: [{
754
+ selector: 'p-tabs',
755
+ standalone: true,
756
+ imports: [CommonModule],
757
+ template: ` <ng-content></ng-content>`,
758
+ changeDetection: ChangeDetectionStrategy.OnPush,
759
+ encapsulation: ViewEncapsulation.None,
760
+ providers: [TabsStyle],
761
+ host: {
762
+ '[class.p-tabs]': 'true',
763
+ '[class.p-tabs-scrollable]': 'scrollable()',
764
+ '[class.p-component]': 'true',
765
+ '[attr.data-pc-name]': '"tabs"',
766
+ '[attr.id]': 'id',
767
+ },
768
+ }]
769
+ }] });
1196
770
  class TabsModule {
1197
771
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1198
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: TabsModule, imports: [Tabs, TabPanel], exports: [Tabs, TabPanel, SharedModule] });
1199
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TabsModule, imports: [Tabs, TabPanel, SharedModule] });
772
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: TabsModule, imports: [Tabs, TabPanels, TabPanel, TabList, Tab], exports: [Tabs, TabPanels, TabPanel, TabList, Tab] });
773
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TabsModule, imports: [Tabs, TabPanels, TabPanel, TabList, Tab] });
1200
774
  }
1201
775
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TabsModule, decorators: [{
1202
776
  type: NgModule,
1203
777
  args: [{
1204
- imports: [Tabs, TabPanel],
1205
- exports: [Tabs, TabPanel, SharedModule],
778
+ imports: [Tabs, TabPanels, TabPanel, TabList, Tab],
779
+ exports: [Tabs, TabPanels, TabPanel, TabList, Tab],
1206
780
  }]
1207
781
  }] });
1208
782
 
@@ -1210,5 +784,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
1210
784
  * Generated bundle index. Do not edit.
1211
785
  */
1212
786
 
1213
- export { TabPanel, Tabs, TabsModule };
787
+ export { Tab, TabList, TabPanel, TabPanels, Tabs, TabsClasses, TabsModule, TabsStyle };
1214
788
  //# sourceMappingURL=primeng-tabs.mjs.map