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,7 +1,7 @@
1
1
  import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, forwardRef, EventEmitter, booleanAttribute, numberAttribute, Component, ViewEncapsulation, Input, Output, inject, signal, computed, effect, ChangeDetectionStrategy, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';
4
+ import { Injectable, forwardRef, EventEmitter, booleanAttribute, numberAttribute, Component, ViewEncapsulation, Input, Output, inject, signal, computed, effect, ChangeDetectionStrategy, ViewChild, ContentChild, ContentChildren, HostBinding, NgModule } from '@angular/core';
5
5
  import * as i5 from '@angular/forms';
6
6
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
7
7
  import * as i2 from 'primeng/api';
@@ -424,7 +424,6 @@ class MultiSelectItem extends BaseComponent {
424
424
  [ngStyle]="{ height: itemSize + 'px' }"
425
425
  [ngClass]="{
426
426
  'p-multiselect-option': true,
427
- 'p-multiselect-option-selected': selected,
428
427
  'p-disabled': disabled,
429
428
  'p-focus': focused,
430
429
  }"
@@ -465,7 +464,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
465
464
  [ngStyle]="{ height: itemSize + 'px' }"
466
465
  [ngClass]="{
467
466
  'p-multiselect-option': true,
468
- 'p-multiselect-option-selected': selected,
469
467
  'p-disabled': disabled,
470
468
  'p-focus': focused,
471
469
  }"
@@ -816,7 +814,7 @@ class MultiSelect extends BaseComponent {
816
814
  * Applies focus to the filter element when the overlay is shown.
817
815
  * @group Props
818
816
  */
819
- autofocusFilter = true;
817
+ autofocusFilter = false;
820
818
  /**
821
819
  * Defines how the selected items are displayed.
822
820
  * @group Props
@@ -1035,7 +1033,6 @@ class MultiSelect extends BaseComponent {
1035
1033
  * @group Emits
1036
1034
  */
1037
1035
  onSelectAllChange = new EventEmitter();
1038
- containerViewChild;
1039
1036
  overlayViewChild;
1040
1037
  filterInputChild;
1041
1038
  focusInputViewChild;
@@ -1100,6 +1097,24 @@ class MultiSelect extends BaseComponent {
1100
1097
  focusedOptionIndex = signal(-1);
1101
1098
  selectedOptions;
1102
1099
  clickInProgress = false;
1100
+ get hostClasses() {
1101
+ const classes = [];
1102
+ if (typeof this.rootClass === 'string') {
1103
+ classes.push(this.rootClass);
1104
+ }
1105
+ else if (Array.isArray(this.rootClass)) {
1106
+ classes.push(...this.rootClass);
1107
+ }
1108
+ else if (typeof this.rootClass === 'object') {
1109
+ Object.keys(this.rootClass)
1110
+ .filter((key) => this.rootClass[key])
1111
+ .forEach((key) => classes.push(key));
1112
+ }
1113
+ if (this.styleClass) {
1114
+ classes.push(this.styleClass);
1115
+ }
1116
+ return classes.join(' ');
1117
+ }
1103
1118
  get rootClass() {
1104
1119
  return this._componentStyle.classes.root({ instance: this });
1105
1120
  }
@@ -2104,722 +2119,713 @@ class MultiSelect extends BaseComponent {
2104
2119
  return this._filterValue() && this._filterValue().trim().length > 0;
2105
2120
  }
2106
2121
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MultiSelect, deps: [{ token: i0.NgZone }, { token: i2.FilterService }, { token: i2.PrimeNGConfig }, { token: i2.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
2107
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.2", type: MultiSelect, selector: "p-multiSelect, p-multiselect", inputs: { id: "id", ariaLabel: "ariaLabel", style: "style", styleClass: "styleClass", panelStyle: "panelStyle", panelStyleClass: "panelStyleClass", inputId: "inputId", disabled: ["disabled", "disabled", booleanAttribute], fluid: ["fluid", "fluid", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], group: ["group", "group", booleanAttribute], filter: ["filter", "filter", booleanAttribute], filterPlaceHolder: "filterPlaceHolder", filterLocale: "filterLocale", overlayVisible: ["overlayVisible", "overlayVisible", booleanAttribute], tabindex: ["tabindex", "tabindex", numberAttribute], variant: "variant", appendTo: "appendTo", dataKey: "dataKey", name: "name", ariaLabelledBy: "ariaLabelledBy", displaySelectedLabel: "displaySelectedLabel", maxSelectedLabels: "maxSelectedLabels", selectionLimit: ["selectionLimit", "selectionLimit", numberAttribute], selectedItemsLabel: "selectedItemsLabel", showToggleAll: ["showToggleAll", "showToggleAll", booleanAttribute], emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", resetFilterOnHide: ["resetFilterOnHide", "resetFilterOnHide", booleanAttribute], dropdownIcon: "dropdownIcon", chipIcon: "chipIcon", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", showHeader: ["showHeader", "showHeader", booleanAttribute], filterBy: "filterBy", scrollHeight: "scrollHeight", lazy: ["lazy", "lazy", booleanAttribute], virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], loading: ["loading", "loading", booleanAttribute], virtualScrollItemSize: ["virtualScrollItemSize", "virtualScrollItemSize", numberAttribute], loadingIcon: "loadingIcon", virtualScrollOptions: "virtualScrollOptions", overlayOptions: "overlayOptions", ariaFilterLabel: "ariaFilterLabel", filterMatchMode: "filterMatchMode", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", autofocusFilter: ["autofocusFilter", "autofocusFilter", booleanAttribute], display: "display", autocomplete: "autocomplete", showClear: ["showClear", "showClear", booleanAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", defaultLabel: "defaultLabel", placeholder: "placeholder", options: "options", filterValue: "filterValue", itemSize: "itemSize", selectAll: "selectAll", focusOnHover: ["focusOnHover", "focusOnHover", booleanAttribute], filterFields: "filterFields", selectOnFocus: ["selectOnFocus", "selectOnFocus", booleanAttribute], autoOptionFocus: ["autoOptionFocus", "autoOptionFocus", booleanAttribute] }, outputs: { onChange: "onChange", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onClick: "onClick", onClear: "onClear", onPanelShow: "onPanelShow", onPanelHide: "onPanelHide", onLazyLoad: "onLazyLoad", onRemove: "onRemove", onSelectAllChange: "onSelectAllChange" }, providers: [MULTISELECT_VALUE_ACCESSOR, MultiSelectStyle], queries: [{ propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "overlayViewChild", first: true, predicate: ["overlay"], descendants: true }, { propertyName: "filterInputChild", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "focusInputViewChild", first: true, predicate: ["focusInput"], descendants: true }, { propertyName: "itemsViewChild", first: true, predicate: ["items"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "lastHiddenFocusableElementOnOverlay", first: true, predicate: ["lastHiddenFocusableEl"], descendants: true }, { propertyName: "firstHiddenFocusableElementOnOverlay", first: true, predicate: ["firstHiddenFocusableEl"], descendants: true }, { propertyName: "headerCheckboxViewChild", first: true, predicate: ["headerCheckbox"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
2108
- <div #container [attr.id]="id" [ngClass]="rootClass" [ngStyle]="style" [class]="styleClass" (click)="onContainerClick($event)">
2109
- <div class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
2110
- <input
2111
- #focusInput
2112
- [pTooltip]="tooltip"
2113
- [tooltipPosition]="tooltipPosition"
2114
- [positionStyle]="tooltipPositionStyle"
2115
- [tooltipStyleClass]="tooltipStyleClass"
2116
- [attr.aria-disabled]="disabled"
2117
- [attr.id]="inputId"
2118
- role="combobox"
2119
- [attr.aria-label]="ariaLabel"
2120
- [attr.aria-labelledby]="ariaLabelledBy"
2121
- [attr.aria-haspopup]="'listbox'"
2122
- [attr.aria-expanded]="overlayVisible ?? false"
2123
- [attr.aria-controls]="overlayVisible ? id + '_list' : null"
2124
- [attr.tabindex]="!disabled ? tabindex : -1"
2125
- [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
2126
- (focus)="onInputFocus($event)"
2127
- (blur)="onInputBlur($event)"
2128
- (keydown)="onKeyDown($event)"
2129
- pAutoFocus
2130
- [autofocus]="autofocus"
2131
- />
2132
- </div>
2133
- <div
2134
- class="p-multiselect-label-container"
2122
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.2", type: MultiSelect, selector: "p-multiSelect, p-multiselect", inputs: { id: "id", ariaLabel: "ariaLabel", style: "style", styleClass: "styleClass", panelStyle: "panelStyle", panelStyleClass: "panelStyleClass", inputId: "inputId", disabled: ["disabled", "disabled", booleanAttribute], fluid: ["fluid", "fluid", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], group: ["group", "group", booleanAttribute], filter: ["filter", "filter", booleanAttribute], filterPlaceHolder: "filterPlaceHolder", filterLocale: "filterLocale", overlayVisible: ["overlayVisible", "overlayVisible", booleanAttribute], tabindex: ["tabindex", "tabindex", numberAttribute], variant: "variant", appendTo: "appendTo", dataKey: "dataKey", name: "name", ariaLabelledBy: "ariaLabelledBy", displaySelectedLabel: "displaySelectedLabel", maxSelectedLabels: "maxSelectedLabels", selectionLimit: ["selectionLimit", "selectionLimit", numberAttribute], selectedItemsLabel: "selectedItemsLabel", showToggleAll: ["showToggleAll", "showToggleAll", booleanAttribute], emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", resetFilterOnHide: ["resetFilterOnHide", "resetFilterOnHide", booleanAttribute], dropdownIcon: "dropdownIcon", chipIcon: "chipIcon", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", showHeader: ["showHeader", "showHeader", booleanAttribute], filterBy: "filterBy", scrollHeight: "scrollHeight", lazy: ["lazy", "lazy", booleanAttribute], virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], loading: ["loading", "loading", booleanAttribute], virtualScrollItemSize: ["virtualScrollItemSize", "virtualScrollItemSize", numberAttribute], loadingIcon: "loadingIcon", virtualScrollOptions: "virtualScrollOptions", overlayOptions: "overlayOptions", ariaFilterLabel: "ariaFilterLabel", filterMatchMode: "filterMatchMode", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", autofocusFilter: ["autofocusFilter", "autofocusFilter", booleanAttribute], display: "display", autocomplete: "autocomplete", showClear: ["showClear", "showClear", booleanAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", defaultLabel: "defaultLabel", placeholder: "placeholder", options: "options", filterValue: "filterValue", itemSize: "itemSize", selectAll: "selectAll", focusOnHover: ["focusOnHover", "focusOnHover", booleanAttribute], filterFields: "filterFields", selectOnFocus: ["selectOnFocus", "selectOnFocus", booleanAttribute], autoOptionFocus: ["autoOptionFocus", "autoOptionFocus", booleanAttribute] }, outputs: { onChange: "onChange", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onClick: "onClick", onClear: "onClear", onPanelShow: "onPanelShow", onPanelHide: "onPanelHide", onLazyLoad: "onLazyLoad", onRemove: "onRemove", onSelectAllChange: "onSelectAllChange" }, host: { listeners: { "click": "onContainerClick($event)" }, properties: { "attr.id": "id", "style": "style", "class": "this.hostClasses" } }, providers: [MULTISELECT_VALUE_ACCESSOR, MultiSelectStyle], queries: [{ propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "overlayViewChild", first: true, predicate: ["overlay"], descendants: true }, { propertyName: "filterInputChild", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "focusInputViewChild", first: true, predicate: ["focusInput"], descendants: true }, { propertyName: "itemsViewChild", first: true, predicate: ["items"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "lastHiddenFocusableElementOnOverlay", first: true, predicate: ["lastHiddenFocusableEl"], descendants: true }, { propertyName: "firstHiddenFocusableElementOnOverlay", first: true, predicate: ["firstHiddenFocusableEl"], descendants: true }, { propertyName: "headerCheckboxViewChild", first: true, predicate: ["headerCheckbox"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
2123
+ <div class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
2124
+ <input
2125
+ #focusInput
2135
2126
  [pTooltip]="tooltip"
2136
- (mouseleave)="labelContainerMouseLeave()"
2137
- [tooltipDisabled]="_disableTooltip"
2138
2127
  [tooltipPosition]="tooltipPosition"
2139
2128
  [positionStyle]="tooltipPositionStyle"
2140
2129
  [tooltipStyleClass]="tooltipStyleClass"
2141
- >
2142
- <div [ngClass]="labelClass">
2143
- <ng-container *ngIf="!selectedItemsTemplate">
2144
- <ng-container *ngIf="display === 'comma'">{{ label() || 'empty' }}</ng-container>
2145
- <ng-container *ngIf="display === 'chip'">
2146
- <div #token *ngFor="let item of chipSelectedItems(); let i = index" class="p-multiselect-chip-item">
2147
- <p-chip
2148
- styleClass="p-multiselect-chip"
2149
- [label]="getLabelByValue(item)"
2150
- [removable]="true"
2151
- (onRemove)="removeOption(item, $event)"
2152
- [removeIcon]="chipIcon"
2153
- >
2154
- <ng-container *ngIf="chipIconTemplate || removeTokenIconTemplate">
2155
- <ng-template pTemplate="removeicon">
2156
- <ng-container *ngIf="!disabled">
2157
- <span
2158
- class="p-multiselect-chip-icon"
2159
- *ngIf="chipIconTemplate || removeTokenIconTemplate"
2160
- (click)="removeOption(item, event)"
2161
- [attr.data-pc-section]="'clearicon'"
2162
- [attr.aria-hidden]="true"
2163
- >
2164
- <ng-container
2165
- *ngTemplateOutlet="
2166
- chipIconTemplate || removeTokenIconTemplate;
2167
- context: { class: 'p-multiselect-chip-icon' }
2168
- "
2169
- ></ng-container>
2170
- </span>
2171
- </ng-container>
2172
- </ng-template>
2173
- </ng-container>
2174
- </p-chip>
2175
- </div>
2176
- <ng-container *ngIf="!modelValue() || modelValue().length === 0">{{
2177
- placeholder() || defaultLabel || 'empty'
2178
- }}</ng-container>
2179
- </ng-container>
2130
+ [attr.aria-disabled]="disabled"
2131
+ [attr.id]="inputId"
2132
+ role="combobox"
2133
+ [attr.aria-label]="ariaLabel"
2134
+ [attr.aria-labelledby]="ariaLabelledBy"
2135
+ [attr.aria-haspopup]="'listbox'"
2136
+ [attr.aria-expanded]="overlayVisible ?? false"
2137
+ [attr.aria-controls]="overlayVisible ? id + '_list' : null"
2138
+ [attr.tabindex]="!disabled ? tabindex : -1"
2139
+ [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
2140
+ (focus)="onInputFocus($event)"
2141
+ (blur)="onInputBlur($event)"
2142
+ (keydown)="onKeyDown($event)"
2143
+ pAutoFocus
2144
+ [autofocus]="autofocus"
2145
+ />
2146
+ </div>
2147
+ <div
2148
+ class="p-multiselect-label-container"
2149
+ [pTooltip]="tooltip"
2150
+ (mouseleave)="labelContainerMouseLeave()"
2151
+ [tooltipDisabled]="_disableTooltip"
2152
+ [tooltipPosition]="tooltipPosition"
2153
+ [positionStyle]="tooltipPositionStyle"
2154
+ [tooltipStyleClass]="tooltipStyleClass"
2155
+ >
2156
+ <div [ngClass]="labelClass">
2157
+ <ng-container *ngIf="!selectedItemsTemplate">
2158
+ <ng-container *ngIf="display === 'comma'">{{ label() || 'empty' }}</ng-container>
2159
+ <ng-container *ngIf="display === 'chip'">
2160
+ <div #token *ngFor="let item of chipSelectedItems(); let i = index" class="p-multiselect-chip-item">
2161
+ <p-chip
2162
+ styleClass="p-multiselect-chip"
2163
+ [label]="getLabelByValue(item)"
2164
+ [removable]="true"
2165
+ (onRemove)="removeOption(item, $event)"
2166
+ [removeIcon]="chipIcon"
2167
+ >
2168
+ <ng-container *ngIf="chipIconTemplate || removeTokenIconTemplate">
2169
+ <ng-template pTemplate="removeicon">
2170
+ <ng-container *ngIf="!disabled">
2171
+ <span
2172
+ class="p-multiselect-chip-icon"
2173
+ *ngIf="chipIconTemplate || removeTokenIconTemplate"
2174
+ (click)="removeOption(item, event)"
2175
+ [attr.data-pc-section]="'clearicon'"
2176
+ [attr.aria-hidden]="true"
2177
+ >
2178
+ <ng-container
2179
+ *ngTemplateOutlet="
2180
+ chipIconTemplate || removeTokenIconTemplate;
2181
+ context: { class: 'p-multiselect-chip-icon' }
2182
+ "
2183
+ ></ng-container>
2184
+ </span>
2185
+ </ng-container>
2186
+ </ng-template>
2187
+ </ng-container>
2188
+ </p-chip>
2189
+ </div>
2190
+ <ng-container *ngIf="!modelValue() || modelValue().length === 0">{{
2191
+ placeholder() || defaultLabel || 'empty'
2192
+ }}</ng-container>
2180
2193
  </ng-container>
2181
- <ng-container
2182
- *ngTemplateOutlet="
2183
- selectedItemsTemplate;
2184
- context: { $implicit: selectedOptions, removeChip: removeOption.bind(this) }
2185
- "
2186
- ></ng-container>
2187
- </div>
2194
+ </ng-container>
2195
+ <ng-container
2196
+ *ngTemplateOutlet="selectedItemsTemplate; context: { $implicit: selectedOptions, removeChip: removeOption.bind(this) }"
2197
+ ></ng-container>
2188
2198
  </div>
2189
- <ng-container *ngIf="isVisibleClearIcon">
2190
- <TimesIcon
2191
- *ngIf="!clearIconTemplate"
2192
- class="p-multiselect-clear-icon"
2193
- (click)="clear($event)"
2194
- [attr.data-pc-section]="'clearicon'"
2195
- [attr.aria-hidden]="true"
2196
- />
2197
- <span
2198
- *ngIf="clearIconTemplate"
2199
- class="p-multiselect-clear-icon"
2200
- (click)="clear($event)"
2201
- [attr.data-pc-section]="'clearicon'"
2202
- [attr.aria-hidden]="true"
2203
- >
2204
- <ng-template *ngTemplateOutlet="clearIconTemplate"></ng-template>
2205
- </span>
2206
- </ng-container>
2207
- <div class="p-multiselect-dropdown">
2208
- <ng-container *ngIf="loading; else elseBlock">
2209
- <ng-container *ngIf="loadingIconTemplate">
2210
- <ng-container *ngTemplateOutlet="loadingIconTemplate"></ng-container>
2211
- </ng-container>
2212
- <ng-container *ngIf="!loadingIconTemplate">
2213
- <span *ngIf="loadingIcon" [ngClass]="'p-multiselect-loading-icon pi-spin ' + loadingIcon" aria-hidden="true"></span>
2214
- <span *ngIf="!loadingIcon" [class]="'p-multiselect-loading-icon pi pi-spinner pi-spin'" aria-hidden="true"></span>
2215
- </ng-container>
2199
+ </div>
2200
+ <ng-container *ngIf="isVisibleClearIcon">
2201
+ <TimesIcon
2202
+ *ngIf="!clearIconTemplate"
2203
+ class="p-multiselect-clear-icon"
2204
+ (click)="clear($event)"
2205
+ [attr.data-pc-section]="'clearicon'"
2206
+ [attr.aria-hidden]="true"
2207
+ />
2208
+ <span
2209
+ *ngIf="clearIconTemplate"
2210
+ class="p-multiselect-clear-icon"
2211
+ (click)="clear($event)"
2212
+ [attr.data-pc-section]="'clearicon'"
2213
+ [attr.aria-hidden]="true"
2214
+ >
2215
+ <ng-template *ngTemplateOutlet="clearIconTemplate"></ng-template>
2216
+ </span>
2217
+ </ng-container>
2218
+ <div class="p-multiselect-dropdown">
2219
+ <ng-container *ngIf="loading; else elseBlock">
2220
+ <ng-container *ngIf="loadingIconTemplate">
2221
+ <ng-container *ngTemplateOutlet="loadingIconTemplate"></ng-container>
2216
2222
  </ng-container>
2217
- <ng-template #elseBlock>
2218
- <ng-container *ngIf="!dropdownIconTemplate">
2219
- <span
2220
- *ngIf="dropdownIcon"
2221
- class="p-multiselect-dropdown-icon"
2222
- [ngClass]="dropdownIcon"
2223
- [attr.data-pc-section]="'triggericon'"
2224
- [attr.aria-hidden]="true"
2225
- ></span>
2226
- <ChevronDownIcon
2227
- *ngIf="!dropdownIcon"
2228
- [styleClass]="'p-multiselect-dropdown-icon'"
2229
- [attr.data-pc-section]="'triggericon'"
2230
- [attr.aria-hidden]="true"
2231
- />
2232
- </ng-container>
2223
+ <ng-container *ngIf="!loadingIconTemplate">
2224
+ <span *ngIf="loadingIcon" [ngClass]="'p-multiselect-loading-icon pi-spin ' + loadingIcon" aria-hidden="true"></span>
2225
+ <span *ngIf="!loadingIcon" [class]="'p-multiselect-loading-icon pi pi-spinner pi-spin'" aria-hidden="true"></span>
2226
+ </ng-container>
2227
+ </ng-container>
2228
+ <ng-template #elseBlock>
2229
+ <ng-container *ngIf="!dropdownIconTemplate">
2233
2230
  <span
2234
- *ngIf="dropdownIconTemplate"
2231
+ *ngIf="dropdownIcon"
2235
2232
  class="p-multiselect-dropdown-icon"
2233
+ [ngClass]="dropdownIcon"
2234
+ [attr.data-pc-section]="'triggericon'"
2235
+ [attr.aria-hidden]="true"
2236
+ ></span>
2237
+ <ChevronDownIcon
2238
+ *ngIf="!dropdownIcon"
2239
+ [styleClass]="'p-multiselect-dropdown-icon'"
2236
2240
  [attr.data-pc-section]="'triggericon'"
2237
2241
  [attr.aria-hidden]="true"
2242
+ />
2243
+ </ng-container>
2244
+ <span
2245
+ *ngIf="dropdownIconTemplate"
2246
+ class="p-multiselect-dropdown-icon"
2247
+ [attr.data-pc-section]="'triggericon'"
2248
+ [attr.aria-hidden]="true"
2249
+ >
2250
+ <ng-template *ngTemplateOutlet="dropdownIconTemplate"></ng-template>
2251
+ </span>
2252
+ </ng-template>
2253
+ </div>
2254
+ <p-overlay
2255
+ #overlay
2256
+ [(visible)]="overlayVisible"
2257
+ [options]="overlayOptions"
2258
+ [target]="'@parent'"
2259
+ [appendTo]="appendTo"
2260
+ [autoZIndex]="autoZIndex"
2261
+ [baseZIndex]="baseZIndex"
2262
+ [showTransitionOptions]="showTransitionOptions"
2263
+ [hideTransitionOptions]="hideTransitionOptions"
2264
+ (onAnimationStart)="onOverlayAnimationStart($event)"
2265
+ (onHide)="hide()"
2266
+ >
2267
+ <ng-template pTemplate="content">
2268
+ <div
2269
+ [attr.id]="id + '_list'"
2270
+ [ngClass]="'p-multiselect-overlay p-component'"
2271
+ [ngStyle]="panelStyle"
2272
+ [class]="panelStyleClass"
2273
+ >
2274
+ <span
2275
+ #firstHiddenFocusableEl
2276
+ role="presentation"
2277
+ class="p-hidden-accessible p-hidden-focusable"
2278
+ [attr.tabindex]="0"
2279
+ (focus)="onFirstHiddenFocus($event)"
2280
+ [attr.data-p-hidden-accessible]="true"
2281
+ [attr.data-p-hidden-focusable]="true"
2238
2282
  >
2239
- <ng-template *ngTemplateOutlet="dropdownIconTemplate"></ng-template>
2240
2283
  </span>
2241
- </ng-template>
2242
- </div>
2243
- <p-overlay
2244
- #overlay
2245
- [(visible)]="overlayVisible"
2246
- [options]="overlayOptions"
2247
- [target]="'@parent'"
2248
- [appendTo]="appendTo"
2249
- [autoZIndex]="autoZIndex"
2250
- [baseZIndex]="baseZIndex"
2251
- [showTransitionOptions]="showTransitionOptions"
2252
- [hideTransitionOptions]="hideTransitionOptions"
2253
- (onAnimationStart)="onOverlayAnimationStart($event)"
2254
- (onHide)="hide()"
2255
- >
2256
- <ng-template pTemplate="content">
2257
- <div
2258
- [attr.id]="id + '_list'"
2259
- [ngClass]="'p-multiselect-overlay p-component'"
2260
- [ngStyle]="panelStyle"
2261
- [class]="panelStyleClass"
2262
- >
2263
- <span
2264
- #firstHiddenFocusableEl
2265
- role="presentation"
2266
- class="p-hidden-accessible p-hidden-focusable"
2267
- [attr.tabindex]="0"
2268
- (focus)="onFirstHiddenFocus($event)"
2269
- [attr.data-p-hidden-accessible]="true"
2270
- [attr.data-p-hidden-focusable]="true"
2271
- >
2272
- </span>
2273
- <div class="p-multiselect-header" *ngIf="showHeader">
2274
- <ng-content select="p-header"></ng-content>
2275
- <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
2276
- <ng-container *ngIf="filterTemplate; else builtInFilterElement">
2277
- <ng-container *ngTemplateOutlet="filterTemplate; context: { options: filterOptions }"></ng-container>
2278
- </ng-container>
2279
- <ng-template #builtInFilterElement>
2280
- <p-checkbox
2281
- [ngModel]="allSelected()"
2282
- [binary]="true"
2283
- (onChange)="onToggleAll($event)"
2284
- *ngIf="showToggleAll && !selectionLimit"
2285
- [variant]="variant"
2286
- [disabled]="disabled || toggleAllDisabled"
2287
- >
2288
- <ng-template pTemplate="icon" let-class="class">
2289
- <CheckIcon
2290
- *ngIf="!headerCheckboxIconTemplate && allSelected()"
2291
- [styleClass]="class"
2292
- [attr.data-pc-section]="'icon'"
2293
- />
2294
- <ng-template
2295
- *ngTemplateOutlet="
2296
- headerCheckboxIconTemplate;
2297
- context: {
2298
- checked: allSelected(),
2299
- partialSelected: partialSelected(),
2300
- class: class,
2301
- }
2302
- "
2303
- ></ng-template>
2304
- </ng-template>
2305
- </p-checkbox>
2306
-
2307
- <div class="p-multiselect-filter-container" *ngIf="filter">
2308
- <p-iconfield>
2309
- <input
2310
- #filterInput
2311
- pInputText
2312
- [variant]="variant"
2313
- type="text"
2314
- role="searchbox"
2315
- [attr.autocomplete]="autocomplete"
2316
- [attr.placeholder]="filterPlaceHolder"
2317
- role="searchbox"
2318
- [attr.aria-owns]="id + '_list'"
2319
- [attr.aria-activedescendant]="focusedOptionId"
2320
- [value]="_filterValue() || ''"
2321
- (input)="onFilterInputChange($event)"
2322
- (keydown)="onFilterKeyDown($event)"
2323
- (click)="onInputClick($event)"
2324
- (blur)="onFilterBlur($event)"
2325
- class="p-multiselect-filter"
2326
- [disabled]="disabled"
2327
- [attr.placeholder]="filterPlaceHolder"
2328
- [attr.aria-label]="ariaFilterLabel"
2329
- />
2330
- <p-inputicon>
2331
- <SearchIcon [styleClass]="'p-multiselect-filter-icon'" *ngIf="!filterIconTemplate" />
2332
- <span *ngIf="filterIconTemplate" class="p-multiselect-filter-icon">
2333
- <ng-template *ngTemplateOutlet="filterIconTemplate"></ng-template>
2334
- </span>
2335
- </p-inputicon>
2336
- </p-iconfield>
2337
- </div>
2338
- </ng-template>
2339
- </div>
2340
- <div class="p-multiselect-list-container" [style.max-height]="virtualScroll ? 'auto' : scrollHeight || 'auto'">
2341
- <p-scroller
2342
- *ngIf="virtualScroll"
2343
- #scroller
2344
- [items]="visibleOptions()"
2345
- [style]="{ height: scrollHeight }"
2346
- [itemSize]="virtualScrollItemSize || _itemSize"
2347
- [autoSize]="true"
2348
- [tabindex]="-1"
2349
- [lazy]="lazy"
2350
- (onLazyLoad)="onLazyLoad.emit($event)"
2351
- [options]="virtualScrollOptions"
2284
+ <div class="p-multiselect-header" *ngIf="showHeader">
2285
+ <ng-content select="p-header"></ng-content>
2286
+ <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
2287
+ <ng-container *ngIf="filterTemplate; else builtInFilterElement">
2288
+ <ng-container *ngTemplateOutlet="filterTemplate; context: { options: filterOptions }"></ng-container>
2289
+ </ng-container>
2290
+ <ng-template #builtInFilterElement>
2291
+ <p-checkbox
2292
+ [ngModel]="allSelected()"
2293
+ [binary]="true"
2294
+ (onChange)="onToggleAll($event)"
2295
+ *ngIf="showToggleAll && !selectionLimit"
2296
+ [variant]="variant"
2297
+ [disabled]="disabled || toggleAllDisabled"
2352
2298
  >
2353
- <ng-template pTemplate="content" let-items let-scrollerOptions="options">
2354
- <ng-container
2355
- *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"
2356
- ></ng-container>
2299
+ <ng-template pTemplate="icon" let-class="class">
2300
+ <CheckIcon
2301
+ *ngIf="!headerCheckboxIconTemplate && allSelected()"
2302
+ [styleClass]="class"
2303
+ [attr.data-pc-section]="'icon'"
2304
+ />
2305
+ <ng-template
2306
+ *ngTemplateOutlet="
2307
+ headerCheckboxIconTemplate;
2308
+ context: {
2309
+ checked: allSelected(),
2310
+ partialSelected: partialSelected(),
2311
+ class: class,
2312
+ }
2313
+ "
2314
+ ></ng-template>
2357
2315
  </ng-template>
2358
- <ng-container *ngIf="loaderTemplate">
2359
- <ng-template pTemplate="loader" let-scrollerOptions="options">
2360
- <ng-container
2361
- *ngTemplateOutlet="loaderTemplate; context: { options: scrollerOptions }"
2362
- ></ng-container>
2363
- </ng-template>
2364
- </ng-container>
2365
- </p-scroller>
2366
- <ng-container *ngIf="!virtualScroll">
2316
+ </p-checkbox>
2317
+
2318
+ <div class="p-multiselect-filter-container" *ngIf="filter">
2319
+ <p-iconfield>
2320
+ <input
2321
+ #filterInput
2322
+ pInputText
2323
+ [variant]="variant"
2324
+ type="text"
2325
+ role="searchbox"
2326
+ [attr.autocomplete]="autocomplete"
2327
+ [attr.placeholder]="filterPlaceHolder"
2328
+ role="searchbox"
2329
+ [attr.aria-owns]="id + '_list'"
2330
+ [attr.aria-activedescendant]="focusedOptionId"
2331
+ [value]="_filterValue() || ''"
2332
+ (input)="onFilterInputChange($event)"
2333
+ (keydown)="onFilterKeyDown($event)"
2334
+ (click)="onInputClick($event)"
2335
+ (blur)="onFilterBlur($event)"
2336
+ class="p-multiselect-filter"
2337
+ [disabled]="disabled"
2338
+ [attr.placeholder]="filterPlaceHolder"
2339
+ [attr.aria-label]="ariaFilterLabel"
2340
+ />
2341
+ <p-inputicon>
2342
+ <SearchIcon [styleClass]="'p-multiselect-filter-icon'" *ngIf="!filterIconTemplate" />
2343
+ <span *ngIf="filterIconTemplate" class="p-multiselect-filter-icon">
2344
+ <ng-template *ngTemplateOutlet="filterIconTemplate"></ng-template>
2345
+ </span>
2346
+ </p-inputicon>
2347
+ </p-iconfield>
2348
+ </div>
2349
+ </ng-template>
2350
+ </div>
2351
+ <div class="p-multiselect-list-container" [style.max-height]="virtualScroll ? 'auto' : scrollHeight || 'auto'">
2352
+ <p-scroller
2353
+ *ngIf="virtualScroll"
2354
+ #scroller
2355
+ [items]="visibleOptions()"
2356
+ [style]="{ height: scrollHeight }"
2357
+ [itemSize]="virtualScrollItemSize || _itemSize"
2358
+ [autoSize]="true"
2359
+ [tabindex]="-1"
2360
+ [lazy]="lazy"
2361
+ (onLazyLoad)="onLazyLoad.emit($event)"
2362
+ [options]="virtualScrollOptions"
2363
+ >
2364
+ <ng-template pTemplate="content" let-items let-scrollerOptions="options">
2367
2365
  <ng-container
2368
- *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"
2366
+ *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"
2369
2367
  ></ng-container>
2368
+ </ng-template>
2369
+ <ng-container *ngIf="loaderTemplate">
2370
+ <ng-template pTemplate="loader" let-scrollerOptions="options">
2371
+ <ng-container *ngTemplateOutlet="loaderTemplate; context: { options: scrollerOptions }"></ng-container>
2372
+ </ng-template>
2370
2373
  </ng-container>
2374
+ </p-scroller>
2375
+ <ng-container *ngIf="!virtualScroll">
2376
+ <ng-container
2377
+ *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"
2378
+ ></ng-container>
2379
+ </ng-container>
2371
2380
 
2372
- <ng-template #buildInItems let-items let-scrollerOptions="options">
2373
- <ul
2374
- #items
2375
- class="p-multiselect-list"
2376
- [ngClass]="scrollerOptions.contentStyleClass"
2377
- [style]="scrollerOptions.contentStyle"
2378
- role="listbox"
2379
- aria-multiselectable="true"
2380
- [attr.aria-label]="listLabel"
2381
- >
2382
- <ng-template ngFor let-option [ngForOf]="items" let-i="index">
2383
- <ng-container *ngIf="isOptionGroup(option)">
2384
- <li
2385
- [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
2386
- class="p-multiselect-option-group"
2387
- [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2388
- role="option"
2389
- >
2390
- <span *ngIf="!groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
2391
- <ng-container
2392
- *ngTemplateOutlet="groupTemplate; context: { $implicit: option.optionGroup }"
2393
- ></ng-container>
2394
- </li>
2395
- </ng-container>
2396
- <ng-container *ngIf="!isOptionGroup(option)">
2397
- <p-multiselect-item
2398
- [id]="id + '_' + getOptionIndex(i, scrollerOptions)"
2399
- [option]="option"
2400
- [selected]="isSelected(option)"
2401
- [label]="getOptionLabel(option)"
2402
- [disabled]="isOptionDisabled(option)"
2403
- [template]="itemTemplate"
2404
- [checkIconTemplate]="checkIconTemplate"
2405
- [itemCheckboxIconTemplate]="itemCheckboxIconTemplate"
2406
- [itemSize]="scrollerOptions.itemSize"
2407
- [focused]="focusedOptionIndex() === getOptionIndex(i, scrollerOptions)"
2408
- [ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
2409
- [ariaSetSize]="ariaSetSize"
2410
- [variant]="variant"
2411
- (onClick)="onOptionSelect($event, false, getOptionIndex(i, scrollerOptions))"
2412
- (onMouseEnter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
2413
- ></p-multiselect-item>
2414
- </ng-container>
2415
- </ng-template>
2416
-
2417
- <li
2418
- *ngIf="hasFilter() && isEmpty()"
2419
- class="p-multiselect-empty-message"
2420
- [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2421
- role="option"
2422
- >
2423
- <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
2424
- {{ emptyFilterMessageLabel }}
2425
- </ng-container>
2426
- <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
2427
- </li>
2428
- <li
2429
- *ngIf="!hasFilter() && isEmpty()"
2430
- class="p-multiselect-empty-message"
2431
- [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2432
- role="option"
2433
- >
2434
- <ng-container *ngIf="!emptyTemplate; else empty">
2435
- {{ emptyMessageLabel }}
2436
- </ng-container>
2437
- <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
2438
- </li>
2439
- </ul>
2440
- </ng-template>
2441
- </div>
2442
- <div *ngIf="footerFacet || footerTemplate">
2443
- <ng-content select="p-footer"></ng-content>
2444
- <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
2445
- </div>
2381
+ <ng-template #buildInItems let-items let-scrollerOptions="options">
2382
+ <ul
2383
+ #items
2384
+ class="p-multiselect-list"
2385
+ [ngClass]="scrollerOptions.contentStyleClass"
2386
+ [style]="scrollerOptions.contentStyle"
2387
+ role="listbox"
2388
+ aria-multiselectable="true"
2389
+ [attr.aria-label]="listLabel"
2390
+ >
2391
+ <ng-template ngFor let-option [ngForOf]="items" let-i="index">
2392
+ <ng-container *ngIf="isOptionGroup(option)">
2393
+ <li
2394
+ [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
2395
+ class="p-multiselect-option-group"
2396
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2397
+ role="option"
2398
+ >
2399
+ <span *ngIf="!groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
2400
+ <ng-container
2401
+ *ngTemplateOutlet="groupTemplate; context: { $implicit: option.optionGroup }"
2402
+ ></ng-container>
2403
+ </li>
2404
+ </ng-container>
2405
+ <ng-container *ngIf="!isOptionGroup(option)">
2406
+ <p-multiselect-item
2407
+ [id]="id + '_' + getOptionIndex(i, scrollerOptions)"
2408
+ [option]="option"
2409
+ [selected]="isSelected(option)"
2410
+ [label]="getOptionLabel(option)"
2411
+ [disabled]="isOptionDisabled(option)"
2412
+ [template]="itemTemplate"
2413
+ [checkIconTemplate]="checkIconTemplate"
2414
+ [itemCheckboxIconTemplate]="itemCheckboxIconTemplate"
2415
+ [itemSize]="scrollerOptions.itemSize"
2416
+ [focused]="focusedOptionIndex() === getOptionIndex(i, scrollerOptions)"
2417
+ [ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
2418
+ [ariaSetSize]="ariaSetSize"
2419
+ [variant]="variant"
2420
+ (onClick)="onOptionSelect($event, false, getOptionIndex(i, scrollerOptions))"
2421
+ (onMouseEnter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
2422
+ ></p-multiselect-item>
2423
+ </ng-container>
2424
+ </ng-template>
2446
2425
 
2447
- <span
2448
- #lastHiddenFocusableEl
2449
- role="presentation"
2450
- class="p-hidden-accessible p-hidden-focusable"
2451
- [attr.tabindex]="0"
2452
- (focus)="onLastHiddenFocus($event)"
2453
- [attr.data-p-hidden-accessible]="true"
2454
- [attr.data-p-hidden-focusable]="true"
2455
- ></span>
2426
+ <li
2427
+ *ngIf="hasFilter() && isEmpty()"
2428
+ class="p-multiselect-empty-message"
2429
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2430
+ role="option"
2431
+ >
2432
+ <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
2433
+ {{ emptyFilterMessageLabel }}
2434
+ </ng-container>
2435
+ <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
2436
+ </li>
2437
+ <li
2438
+ *ngIf="!hasFilter() && isEmpty()"
2439
+ class="p-multiselect-empty-message"
2440
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2441
+ role="option"
2442
+ >
2443
+ <ng-container *ngIf="!emptyTemplate; else empty">
2444
+ {{ emptyMessageLabel }}
2445
+ </ng-container>
2446
+ <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
2447
+ </li>
2448
+ </ul>
2449
+ </ng-template>
2456
2450
  </div>
2457
- </ng-template>
2458
- </p-overlay>
2459
- </div>
2460
- `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => i6.Overlay), selector: "p-overlay", inputs: ["visible", "mode", "style", "styleClass", "contentStyle", "contentStyleClass", "target", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "listener", "responsive", "options"], outputs: ["visibleChange", "onBeforeShow", "onShow", "onBeforeHide", "onHide", "onAnimationStart", "onAnimationDone"] }, { kind: "directive", type: i0.forwardRef(() => i2.PrimeTemplate), selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i7.Tooltip), selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i0.forwardRef(() => i8.Scroller), selector: "p-scroller", inputs: ["id", "style", "styleClass", "tabindex", "items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "step", "delay", "resizeDelay", "appendOnly", "inline", "lazy", "disabled", "loaderDisabled", "columns", "showSpacer", "showLoader", "numToleratedItems", "loading", "autoSize", "trackBy", "options"], outputs: ["onLazyLoad", "onScroll", "onScrollIndexChange"] }, { kind: "directive", type: i0.forwardRef(() => i9.AutoFocus), selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "component", type: i0.forwardRef(() => CheckIcon), selector: "CheckIcon" }, { kind: "component", type: i0.forwardRef(() => SearchIcon), selector: "SearchIcon" }, { kind: "component", type: i0.forwardRef(() => TimesIcon), selector: "TimesIcon" }, { kind: "component", type: i0.forwardRef(() => ChevronDownIcon), selector: "ChevronDownIcon" }, { kind: "component", type: i0.forwardRef(() => i10.IconField), selector: "p-iconfield, p-iconField", inputs: ["iconPosition", "styleClass"] }, { kind: "component", type: i0.forwardRef(() => i11.InputIcon), selector: "p-inputicon, p-inputIcon", inputs: ["styleClass"] }, { kind: "directive", type: i0.forwardRef(() => i12.InputText), selector: "[pInputText]", inputs: ["variant", "fluid"] }, { kind: "component", type: i0.forwardRef(() => i13.Chip), selector: "p-chip", inputs: ["label", "icon", "image", "alt", "style", "styleClass", "removable", "removeIcon", "chipProps"], outputs: ["onRemove", "onImageError"] }, { kind: "component", type: i0.forwardRef(() => i4.Checkbox), selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "directive", type: i0.forwardRef(() => i5.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i5.NgModel), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i0.forwardRef(() => MultiSelectItem), selector: "p-multiSelectItem, p-multiselect-item", inputs: ["id", "option", "selected", "label", "disabled", "itemSize", "focused", "ariaPosInset", "ariaSetSize", "variant", "template", "checkIconTemplate", "itemCheckboxIconTemplate"], outputs: ["onClick", "onMouseEnter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2451
+ <div *ngIf="footerFacet || footerTemplate">
2452
+ <ng-content select="p-footer"></ng-content>
2453
+ <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
2454
+ </div>
2455
+
2456
+ <span
2457
+ #lastHiddenFocusableEl
2458
+ role="presentation"
2459
+ class="p-hidden-accessible p-hidden-focusable"
2460
+ [attr.tabindex]="0"
2461
+ (focus)="onLastHiddenFocus($event)"
2462
+ [attr.data-p-hidden-accessible]="true"
2463
+ [attr.data-p-hidden-focusable]="true"
2464
+ ></span>
2465
+ </div>
2466
+ </ng-template>
2467
+ </p-overlay>
2468
+ `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => i6.Overlay), selector: "p-overlay", inputs: ["visible", "mode", "style", "styleClass", "contentStyle", "contentStyleClass", "target", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "listener", "responsive", "options"], outputs: ["visibleChange", "onBeforeShow", "onShow", "onBeforeHide", "onHide", "onAnimationStart", "onAnimationDone"] }, { kind: "directive", type: i0.forwardRef(() => i2.PrimeTemplate), selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i7.Tooltip), selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i0.forwardRef(() => i8.Scroller), selector: "p-scroller", inputs: ["id", "style", "styleClass", "tabindex", "items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "step", "delay", "resizeDelay", "appendOnly", "inline", "lazy", "disabled", "loaderDisabled", "columns", "showSpacer", "showLoader", "numToleratedItems", "loading", "autoSize", "trackBy", "options"], outputs: ["onLazyLoad", "onScroll", "onScrollIndexChange"] }, { kind: "directive", type: i0.forwardRef(() => i9.AutoFocus), selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "component", type: i0.forwardRef(() => CheckIcon), selector: "CheckIcon" }, { kind: "component", type: i0.forwardRef(() => SearchIcon), selector: "SearchIcon" }, { kind: "component", type: i0.forwardRef(() => TimesIcon), selector: "TimesIcon" }, { kind: "component", type: i0.forwardRef(() => ChevronDownIcon), selector: "ChevronDownIcon" }, { kind: "component", type: i0.forwardRef(() => i10.IconField), selector: "p-iconfield, p-iconField", inputs: ["iconPosition", "styleClass"] }, { kind: "component", type: i0.forwardRef(() => i11.InputIcon), selector: "p-inputicon, p-inputIcon", inputs: ["styleClass"] }, { kind: "directive", type: i0.forwardRef(() => i12.InputText), selector: "[pInputText]", inputs: ["variant", "fluid", "size"] }, { kind: "component", type: i0.forwardRef(() => i13.Chip), selector: "p-chip", inputs: ["label", "icon", "image", "alt", "style", "styleClass", "removable", "removeIcon", "chipProps"], outputs: ["onRemove", "onImageError"] }, { kind: "component", type: i0.forwardRef(() => i4.Checkbox), selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "directive", type: i0.forwardRef(() => i5.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i5.NgModel), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i0.forwardRef(() => MultiSelectItem), selector: "p-multiSelectItem, p-multiselect-item", inputs: ["id", "option", "selected", "label", "disabled", "itemSize", "focused", "ariaPosInset", "ariaSetSize", "variant", "template", "checkIconTemplate", "itemCheckboxIconTemplate"], outputs: ["onClick", "onMouseEnter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2461
2469
  }
2462
2470
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MultiSelect, decorators: [{
2463
2471
  type: Component,
2464
2472
  args: [{
2465
2473
  selector: 'p-multiSelect, p-multiselect',
2466
2474
  template: `
2467
- <div #container [attr.id]="id" [ngClass]="rootClass" [ngStyle]="style" [class]="styleClass" (click)="onContainerClick($event)">
2468
- <div class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
2469
- <input
2470
- #focusInput
2471
- [pTooltip]="tooltip"
2472
- [tooltipPosition]="tooltipPosition"
2473
- [positionStyle]="tooltipPositionStyle"
2474
- [tooltipStyleClass]="tooltipStyleClass"
2475
- [attr.aria-disabled]="disabled"
2476
- [attr.id]="inputId"
2477
- role="combobox"
2478
- [attr.aria-label]="ariaLabel"
2479
- [attr.aria-labelledby]="ariaLabelledBy"
2480
- [attr.aria-haspopup]="'listbox'"
2481
- [attr.aria-expanded]="overlayVisible ?? false"
2482
- [attr.aria-controls]="overlayVisible ? id + '_list' : null"
2483
- [attr.tabindex]="!disabled ? tabindex : -1"
2484
- [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
2485
- (focus)="onInputFocus($event)"
2486
- (blur)="onInputBlur($event)"
2487
- (keydown)="onKeyDown($event)"
2488
- pAutoFocus
2489
- [autofocus]="autofocus"
2490
- />
2491
- </div>
2492
- <div
2493
- class="p-multiselect-label-container"
2475
+ <div class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
2476
+ <input
2477
+ #focusInput
2494
2478
  [pTooltip]="tooltip"
2495
- (mouseleave)="labelContainerMouseLeave()"
2496
- [tooltipDisabled]="_disableTooltip"
2497
2479
  [tooltipPosition]="tooltipPosition"
2498
2480
  [positionStyle]="tooltipPositionStyle"
2499
2481
  [tooltipStyleClass]="tooltipStyleClass"
2500
- >
2501
- <div [ngClass]="labelClass">
2502
- <ng-container *ngIf="!selectedItemsTemplate">
2503
- <ng-container *ngIf="display === 'comma'">{{ label() || 'empty' }}</ng-container>
2504
- <ng-container *ngIf="display === 'chip'">
2505
- <div #token *ngFor="let item of chipSelectedItems(); let i = index" class="p-multiselect-chip-item">
2506
- <p-chip
2507
- styleClass="p-multiselect-chip"
2508
- [label]="getLabelByValue(item)"
2509
- [removable]="true"
2510
- (onRemove)="removeOption(item, $event)"
2511
- [removeIcon]="chipIcon"
2512
- >
2513
- <ng-container *ngIf="chipIconTemplate || removeTokenIconTemplate">
2514
- <ng-template pTemplate="removeicon">
2515
- <ng-container *ngIf="!disabled">
2516
- <span
2517
- class="p-multiselect-chip-icon"
2518
- *ngIf="chipIconTemplate || removeTokenIconTemplate"
2519
- (click)="removeOption(item, event)"
2520
- [attr.data-pc-section]="'clearicon'"
2521
- [attr.aria-hidden]="true"
2522
- >
2523
- <ng-container
2524
- *ngTemplateOutlet="
2525
- chipIconTemplate || removeTokenIconTemplate;
2526
- context: { class: 'p-multiselect-chip-icon' }
2527
- "
2528
- ></ng-container>
2529
- </span>
2530
- </ng-container>
2531
- </ng-template>
2532
- </ng-container>
2533
- </p-chip>
2534
- </div>
2535
- <ng-container *ngIf="!modelValue() || modelValue().length === 0">{{
2536
- placeholder() || defaultLabel || 'empty'
2537
- }}</ng-container>
2538
- </ng-container>
2482
+ [attr.aria-disabled]="disabled"
2483
+ [attr.id]="inputId"
2484
+ role="combobox"
2485
+ [attr.aria-label]="ariaLabel"
2486
+ [attr.aria-labelledby]="ariaLabelledBy"
2487
+ [attr.aria-haspopup]="'listbox'"
2488
+ [attr.aria-expanded]="overlayVisible ?? false"
2489
+ [attr.aria-controls]="overlayVisible ? id + '_list' : null"
2490
+ [attr.tabindex]="!disabled ? tabindex : -1"
2491
+ [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
2492
+ (focus)="onInputFocus($event)"
2493
+ (blur)="onInputBlur($event)"
2494
+ (keydown)="onKeyDown($event)"
2495
+ pAutoFocus
2496
+ [autofocus]="autofocus"
2497
+ />
2498
+ </div>
2499
+ <div
2500
+ class="p-multiselect-label-container"
2501
+ [pTooltip]="tooltip"
2502
+ (mouseleave)="labelContainerMouseLeave()"
2503
+ [tooltipDisabled]="_disableTooltip"
2504
+ [tooltipPosition]="tooltipPosition"
2505
+ [positionStyle]="tooltipPositionStyle"
2506
+ [tooltipStyleClass]="tooltipStyleClass"
2507
+ >
2508
+ <div [ngClass]="labelClass">
2509
+ <ng-container *ngIf="!selectedItemsTemplate">
2510
+ <ng-container *ngIf="display === 'comma'">{{ label() || 'empty' }}</ng-container>
2511
+ <ng-container *ngIf="display === 'chip'">
2512
+ <div #token *ngFor="let item of chipSelectedItems(); let i = index" class="p-multiselect-chip-item">
2513
+ <p-chip
2514
+ styleClass="p-multiselect-chip"
2515
+ [label]="getLabelByValue(item)"
2516
+ [removable]="true"
2517
+ (onRemove)="removeOption(item, $event)"
2518
+ [removeIcon]="chipIcon"
2519
+ >
2520
+ <ng-container *ngIf="chipIconTemplate || removeTokenIconTemplate">
2521
+ <ng-template pTemplate="removeicon">
2522
+ <ng-container *ngIf="!disabled">
2523
+ <span
2524
+ class="p-multiselect-chip-icon"
2525
+ *ngIf="chipIconTemplate || removeTokenIconTemplate"
2526
+ (click)="removeOption(item, event)"
2527
+ [attr.data-pc-section]="'clearicon'"
2528
+ [attr.aria-hidden]="true"
2529
+ >
2530
+ <ng-container
2531
+ *ngTemplateOutlet="
2532
+ chipIconTemplate || removeTokenIconTemplate;
2533
+ context: { class: 'p-multiselect-chip-icon' }
2534
+ "
2535
+ ></ng-container>
2536
+ </span>
2537
+ </ng-container>
2538
+ </ng-template>
2539
+ </ng-container>
2540
+ </p-chip>
2541
+ </div>
2542
+ <ng-container *ngIf="!modelValue() || modelValue().length === 0">{{
2543
+ placeholder() || defaultLabel || 'empty'
2544
+ }}</ng-container>
2539
2545
  </ng-container>
2540
- <ng-container
2541
- *ngTemplateOutlet="
2542
- selectedItemsTemplate;
2543
- context: { $implicit: selectedOptions, removeChip: removeOption.bind(this) }
2544
- "
2545
- ></ng-container>
2546
- </div>
2546
+ </ng-container>
2547
+ <ng-container
2548
+ *ngTemplateOutlet="selectedItemsTemplate; context: { $implicit: selectedOptions, removeChip: removeOption.bind(this) }"
2549
+ ></ng-container>
2547
2550
  </div>
2548
- <ng-container *ngIf="isVisibleClearIcon">
2549
- <TimesIcon
2550
- *ngIf="!clearIconTemplate"
2551
- class="p-multiselect-clear-icon"
2552
- (click)="clear($event)"
2553
- [attr.data-pc-section]="'clearicon'"
2554
- [attr.aria-hidden]="true"
2555
- />
2556
- <span
2557
- *ngIf="clearIconTemplate"
2558
- class="p-multiselect-clear-icon"
2559
- (click)="clear($event)"
2560
- [attr.data-pc-section]="'clearicon'"
2561
- [attr.aria-hidden]="true"
2562
- >
2563
- <ng-template *ngTemplateOutlet="clearIconTemplate"></ng-template>
2564
- </span>
2565
- </ng-container>
2566
- <div class="p-multiselect-dropdown">
2567
- <ng-container *ngIf="loading; else elseBlock">
2568
- <ng-container *ngIf="loadingIconTemplate">
2569
- <ng-container *ngTemplateOutlet="loadingIconTemplate"></ng-container>
2570
- </ng-container>
2571
- <ng-container *ngIf="!loadingIconTemplate">
2572
- <span *ngIf="loadingIcon" [ngClass]="'p-multiselect-loading-icon pi-spin ' + loadingIcon" aria-hidden="true"></span>
2573
- <span *ngIf="!loadingIcon" [class]="'p-multiselect-loading-icon pi pi-spinner pi-spin'" aria-hidden="true"></span>
2574
- </ng-container>
2551
+ </div>
2552
+ <ng-container *ngIf="isVisibleClearIcon">
2553
+ <TimesIcon
2554
+ *ngIf="!clearIconTemplate"
2555
+ class="p-multiselect-clear-icon"
2556
+ (click)="clear($event)"
2557
+ [attr.data-pc-section]="'clearicon'"
2558
+ [attr.aria-hidden]="true"
2559
+ />
2560
+ <span
2561
+ *ngIf="clearIconTemplate"
2562
+ class="p-multiselect-clear-icon"
2563
+ (click)="clear($event)"
2564
+ [attr.data-pc-section]="'clearicon'"
2565
+ [attr.aria-hidden]="true"
2566
+ >
2567
+ <ng-template *ngTemplateOutlet="clearIconTemplate"></ng-template>
2568
+ </span>
2569
+ </ng-container>
2570
+ <div class="p-multiselect-dropdown">
2571
+ <ng-container *ngIf="loading; else elseBlock">
2572
+ <ng-container *ngIf="loadingIconTemplate">
2573
+ <ng-container *ngTemplateOutlet="loadingIconTemplate"></ng-container>
2575
2574
  </ng-container>
2576
- <ng-template #elseBlock>
2577
- <ng-container *ngIf="!dropdownIconTemplate">
2578
- <span
2579
- *ngIf="dropdownIcon"
2580
- class="p-multiselect-dropdown-icon"
2581
- [ngClass]="dropdownIcon"
2582
- [attr.data-pc-section]="'triggericon'"
2583
- [attr.aria-hidden]="true"
2584
- ></span>
2585
- <ChevronDownIcon
2586
- *ngIf="!dropdownIcon"
2587
- [styleClass]="'p-multiselect-dropdown-icon'"
2588
- [attr.data-pc-section]="'triggericon'"
2589
- [attr.aria-hidden]="true"
2590
- />
2591
- </ng-container>
2575
+ <ng-container *ngIf="!loadingIconTemplate">
2576
+ <span *ngIf="loadingIcon" [ngClass]="'p-multiselect-loading-icon pi-spin ' + loadingIcon" aria-hidden="true"></span>
2577
+ <span *ngIf="!loadingIcon" [class]="'p-multiselect-loading-icon pi pi-spinner pi-spin'" aria-hidden="true"></span>
2578
+ </ng-container>
2579
+ </ng-container>
2580
+ <ng-template #elseBlock>
2581
+ <ng-container *ngIf="!dropdownIconTemplate">
2592
2582
  <span
2593
- *ngIf="dropdownIconTemplate"
2583
+ *ngIf="dropdownIcon"
2594
2584
  class="p-multiselect-dropdown-icon"
2585
+ [ngClass]="dropdownIcon"
2586
+ [attr.data-pc-section]="'triggericon'"
2587
+ [attr.aria-hidden]="true"
2588
+ ></span>
2589
+ <ChevronDownIcon
2590
+ *ngIf="!dropdownIcon"
2591
+ [styleClass]="'p-multiselect-dropdown-icon'"
2595
2592
  [attr.data-pc-section]="'triggericon'"
2596
2593
  [attr.aria-hidden]="true"
2594
+ />
2595
+ </ng-container>
2596
+ <span
2597
+ *ngIf="dropdownIconTemplate"
2598
+ class="p-multiselect-dropdown-icon"
2599
+ [attr.data-pc-section]="'triggericon'"
2600
+ [attr.aria-hidden]="true"
2601
+ >
2602
+ <ng-template *ngTemplateOutlet="dropdownIconTemplate"></ng-template>
2603
+ </span>
2604
+ </ng-template>
2605
+ </div>
2606
+ <p-overlay
2607
+ #overlay
2608
+ [(visible)]="overlayVisible"
2609
+ [options]="overlayOptions"
2610
+ [target]="'@parent'"
2611
+ [appendTo]="appendTo"
2612
+ [autoZIndex]="autoZIndex"
2613
+ [baseZIndex]="baseZIndex"
2614
+ [showTransitionOptions]="showTransitionOptions"
2615
+ [hideTransitionOptions]="hideTransitionOptions"
2616
+ (onAnimationStart)="onOverlayAnimationStart($event)"
2617
+ (onHide)="hide()"
2618
+ >
2619
+ <ng-template pTemplate="content">
2620
+ <div
2621
+ [attr.id]="id + '_list'"
2622
+ [ngClass]="'p-multiselect-overlay p-component'"
2623
+ [ngStyle]="panelStyle"
2624
+ [class]="panelStyleClass"
2625
+ >
2626
+ <span
2627
+ #firstHiddenFocusableEl
2628
+ role="presentation"
2629
+ class="p-hidden-accessible p-hidden-focusable"
2630
+ [attr.tabindex]="0"
2631
+ (focus)="onFirstHiddenFocus($event)"
2632
+ [attr.data-p-hidden-accessible]="true"
2633
+ [attr.data-p-hidden-focusable]="true"
2597
2634
  >
2598
- <ng-template *ngTemplateOutlet="dropdownIconTemplate"></ng-template>
2599
2635
  </span>
2600
- </ng-template>
2601
- </div>
2602
- <p-overlay
2603
- #overlay
2604
- [(visible)]="overlayVisible"
2605
- [options]="overlayOptions"
2606
- [target]="'@parent'"
2607
- [appendTo]="appendTo"
2608
- [autoZIndex]="autoZIndex"
2609
- [baseZIndex]="baseZIndex"
2610
- [showTransitionOptions]="showTransitionOptions"
2611
- [hideTransitionOptions]="hideTransitionOptions"
2612
- (onAnimationStart)="onOverlayAnimationStart($event)"
2613
- (onHide)="hide()"
2614
- >
2615
- <ng-template pTemplate="content">
2616
- <div
2617
- [attr.id]="id + '_list'"
2618
- [ngClass]="'p-multiselect-overlay p-component'"
2619
- [ngStyle]="panelStyle"
2620
- [class]="panelStyleClass"
2621
- >
2622
- <span
2623
- #firstHiddenFocusableEl
2624
- role="presentation"
2625
- class="p-hidden-accessible p-hidden-focusable"
2626
- [attr.tabindex]="0"
2627
- (focus)="onFirstHiddenFocus($event)"
2628
- [attr.data-p-hidden-accessible]="true"
2629
- [attr.data-p-hidden-focusable]="true"
2630
- >
2631
- </span>
2632
- <div class="p-multiselect-header" *ngIf="showHeader">
2633
- <ng-content select="p-header"></ng-content>
2634
- <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
2635
- <ng-container *ngIf="filterTemplate; else builtInFilterElement">
2636
- <ng-container *ngTemplateOutlet="filterTemplate; context: { options: filterOptions }"></ng-container>
2637
- </ng-container>
2638
- <ng-template #builtInFilterElement>
2639
- <p-checkbox
2640
- [ngModel]="allSelected()"
2641
- [binary]="true"
2642
- (onChange)="onToggleAll($event)"
2643
- *ngIf="showToggleAll && !selectionLimit"
2644
- [variant]="variant"
2645
- [disabled]="disabled || toggleAllDisabled"
2646
- >
2647
- <ng-template pTemplate="icon" let-class="class">
2648
- <CheckIcon
2649
- *ngIf="!headerCheckboxIconTemplate && allSelected()"
2650
- [styleClass]="class"
2651
- [attr.data-pc-section]="'icon'"
2652
- />
2653
- <ng-template
2654
- *ngTemplateOutlet="
2655
- headerCheckboxIconTemplate;
2656
- context: {
2657
- checked: allSelected(),
2658
- partialSelected: partialSelected(),
2659
- class: class,
2660
- }
2661
- "
2662
- ></ng-template>
2663
- </ng-template>
2664
- </p-checkbox>
2665
-
2666
- <div class="p-multiselect-filter-container" *ngIf="filter">
2667
- <p-iconfield>
2668
- <input
2669
- #filterInput
2670
- pInputText
2671
- [variant]="variant"
2672
- type="text"
2673
- role="searchbox"
2674
- [attr.autocomplete]="autocomplete"
2675
- [attr.placeholder]="filterPlaceHolder"
2676
- role="searchbox"
2677
- [attr.aria-owns]="id + '_list'"
2678
- [attr.aria-activedescendant]="focusedOptionId"
2679
- [value]="_filterValue() || ''"
2680
- (input)="onFilterInputChange($event)"
2681
- (keydown)="onFilterKeyDown($event)"
2682
- (click)="onInputClick($event)"
2683
- (blur)="onFilterBlur($event)"
2684
- class="p-multiselect-filter"
2685
- [disabled]="disabled"
2686
- [attr.placeholder]="filterPlaceHolder"
2687
- [attr.aria-label]="ariaFilterLabel"
2688
- />
2689
- <p-inputicon>
2690
- <SearchIcon [styleClass]="'p-multiselect-filter-icon'" *ngIf="!filterIconTemplate" />
2691
- <span *ngIf="filterIconTemplate" class="p-multiselect-filter-icon">
2692
- <ng-template *ngTemplateOutlet="filterIconTemplate"></ng-template>
2693
- </span>
2694
- </p-inputicon>
2695
- </p-iconfield>
2696
- </div>
2697
- </ng-template>
2698
- </div>
2699
- <div class="p-multiselect-list-container" [style.max-height]="virtualScroll ? 'auto' : scrollHeight || 'auto'">
2700
- <p-scroller
2701
- *ngIf="virtualScroll"
2702
- #scroller
2703
- [items]="visibleOptions()"
2704
- [style]="{ height: scrollHeight }"
2705
- [itemSize]="virtualScrollItemSize || _itemSize"
2706
- [autoSize]="true"
2707
- [tabindex]="-1"
2708
- [lazy]="lazy"
2709
- (onLazyLoad)="onLazyLoad.emit($event)"
2710
- [options]="virtualScrollOptions"
2636
+ <div class="p-multiselect-header" *ngIf="showHeader">
2637
+ <ng-content select="p-header"></ng-content>
2638
+ <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
2639
+ <ng-container *ngIf="filterTemplate; else builtInFilterElement">
2640
+ <ng-container *ngTemplateOutlet="filterTemplate; context: { options: filterOptions }"></ng-container>
2641
+ </ng-container>
2642
+ <ng-template #builtInFilterElement>
2643
+ <p-checkbox
2644
+ [ngModel]="allSelected()"
2645
+ [binary]="true"
2646
+ (onChange)="onToggleAll($event)"
2647
+ *ngIf="showToggleAll && !selectionLimit"
2648
+ [variant]="variant"
2649
+ [disabled]="disabled || toggleAllDisabled"
2711
2650
  >
2712
- <ng-template pTemplate="content" let-items let-scrollerOptions="options">
2713
- <ng-container
2714
- *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"
2715
- ></ng-container>
2651
+ <ng-template pTemplate="icon" let-class="class">
2652
+ <CheckIcon
2653
+ *ngIf="!headerCheckboxIconTemplate && allSelected()"
2654
+ [styleClass]="class"
2655
+ [attr.data-pc-section]="'icon'"
2656
+ />
2657
+ <ng-template
2658
+ *ngTemplateOutlet="
2659
+ headerCheckboxIconTemplate;
2660
+ context: {
2661
+ checked: allSelected(),
2662
+ partialSelected: partialSelected(),
2663
+ class: class,
2664
+ }
2665
+ "
2666
+ ></ng-template>
2716
2667
  </ng-template>
2717
- <ng-container *ngIf="loaderTemplate">
2718
- <ng-template pTemplate="loader" let-scrollerOptions="options">
2719
- <ng-container
2720
- *ngTemplateOutlet="loaderTemplate; context: { options: scrollerOptions }"
2721
- ></ng-container>
2722
- </ng-template>
2723
- </ng-container>
2724
- </p-scroller>
2725
- <ng-container *ngIf="!virtualScroll">
2668
+ </p-checkbox>
2669
+
2670
+ <div class="p-multiselect-filter-container" *ngIf="filter">
2671
+ <p-iconfield>
2672
+ <input
2673
+ #filterInput
2674
+ pInputText
2675
+ [variant]="variant"
2676
+ type="text"
2677
+ role="searchbox"
2678
+ [attr.autocomplete]="autocomplete"
2679
+ [attr.placeholder]="filterPlaceHolder"
2680
+ role="searchbox"
2681
+ [attr.aria-owns]="id + '_list'"
2682
+ [attr.aria-activedescendant]="focusedOptionId"
2683
+ [value]="_filterValue() || ''"
2684
+ (input)="onFilterInputChange($event)"
2685
+ (keydown)="onFilterKeyDown($event)"
2686
+ (click)="onInputClick($event)"
2687
+ (blur)="onFilterBlur($event)"
2688
+ class="p-multiselect-filter"
2689
+ [disabled]="disabled"
2690
+ [attr.placeholder]="filterPlaceHolder"
2691
+ [attr.aria-label]="ariaFilterLabel"
2692
+ />
2693
+ <p-inputicon>
2694
+ <SearchIcon [styleClass]="'p-multiselect-filter-icon'" *ngIf="!filterIconTemplate" />
2695
+ <span *ngIf="filterIconTemplate" class="p-multiselect-filter-icon">
2696
+ <ng-template *ngTemplateOutlet="filterIconTemplate"></ng-template>
2697
+ </span>
2698
+ </p-inputicon>
2699
+ </p-iconfield>
2700
+ </div>
2701
+ </ng-template>
2702
+ </div>
2703
+ <div class="p-multiselect-list-container" [style.max-height]="virtualScroll ? 'auto' : scrollHeight || 'auto'">
2704
+ <p-scroller
2705
+ *ngIf="virtualScroll"
2706
+ #scroller
2707
+ [items]="visibleOptions()"
2708
+ [style]="{ height: scrollHeight }"
2709
+ [itemSize]="virtualScrollItemSize || _itemSize"
2710
+ [autoSize]="true"
2711
+ [tabindex]="-1"
2712
+ [lazy]="lazy"
2713
+ (onLazyLoad)="onLazyLoad.emit($event)"
2714
+ [options]="virtualScrollOptions"
2715
+ >
2716
+ <ng-template pTemplate="content" let-items let-scrollerOptions="options">
2726
2717
  <ng-container
2727
- *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"
2718
+ *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"
2728
2719
  ></ng-container>
2720
+ </ng-template>
2721
+ <ng-container *ngIf="loaderTemplate">
2722
+ <ng-template pTemplate="loader" let-scrollerOptions="options">
2723
+ <ng-container *ngTemplateOutlet="loaderTemplate; context: { options: scrollerOptions }"></ng-container>
2724
+ </ng-template>
2729
2725
  </ng-container>
2726
+ </p-scroller>
2727
+ <ng-container *ngIf="!virtualScroll">
2728
+ <ng-container
2729
+ *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"
2730
+ ></ng-container>
2731
+ </ng-container>
2730
2732
 
2731
- <ng-template #buildInItems let-items let-scrollerOptions="options">
2732
- <ul
2733
- #items
2734
- class="p-multiselect-list"
2735
- [ngClass]="scrollerOptions.contentStyleClass"
2736
- [style]="scrollerOptions.contentStyle"
2737
- role="listbox"
2738
- aria-multiselectable="true"
2739
- [attr.aria-label]="listLabel"
2740
- >
2741
- <ng-template ngFor let-option [ngForOf]="items" let-i="index">
2742
- <ng-container *ngIf="isOptionGroup(option)">
2743
- <li
2744
- [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
2745
- class="p-multiselect-option-group"
2746
- [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2747
- role="option"
2748
- >
2749
- <span *ngIf="!groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
2750
- <ng-container
2751
- *ngTemplateOutlet="groupTemplate; context: { $implicit: option.optionGroup }"
2752
- ></ng-container>
2753
- </li>
2754
- </ng-container>
2755
- <ng-container *ngIf="!isOptionGroup(option)">
2756
- <p-multiselect-item
2757
- [id]="id + '_' + getOptionIndex(i, scrollerOptions)"
2758
- [option]="option"
2759
- [selected]="isSelected(option)"
2760
- [label]="getOptionLabel(option)"
2761
- [disabled]="isOptionDisabled(option)"
2762
- [template]="itemTemplate"
2763
- [checkIconTemplate]="checkIconTemplate"
2764
- [itemCheckboxIconTemplate]="itemCheckboxIconTemplate"
2765
- [itemSize]="scrollerOptions.itemSize"
2766
- [focused]="focusedOptionIndex() === getOptionIndex(i, scrollerOptions)"
2767
- [ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
2768
- [ariaSetSize]="ariaSetSize"
2769
- [variant]="variant"
2770
- (onClick)="onOptionSelect($event, false, getOptionIndex(i, scrollerOptions))"
2771
- (onMouseEnter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
2772
- ></p-multiselect-item>
2773
- </ng-container>
2774
- </ng-template>
2775
-
2776
- <li
2777
- *ngIf="hasFilter() && isEmpty()"
2778
- class="p-multiselect-empty-message"
2779
- [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2780
- role="option"
2781
- >
2782
- <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
2783
- {{ emptyFilterMessageLabel }}
2784
- </ng-container>
2785
- <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
2786
- </li>
2787
- <li
2788
- *ngIf="!hasFilter() && isEmpty()"
2789
- class="p-multiselect-empty-message"
2790
- [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2791
- role="option"
2792
- >
2793
- <ng-container *ngIf="!emptyTemplate; else empty">
2794
- {{ emptyMessageLabel }}
2795
- </ng-container>
2796
- <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
2797
- </li>
2798
- </ul>
2799
- </ng-template>
2800
- </div>
2801
- <div *ngIf="footerFacet || footerTemplate">
2802
- <ng-content select="p-footer"></ng-content>
2803
- <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
2804
- </div>
2733
+ <ng-template #buildInItems let-items let-scrollerOptions="options">
2734
+ <ul
2735
+ #items
2736
+ class="p-multiselect-list"
2737
+ [ngClass]="scrollerOptions.contentStyleClass"
2738
+ [style]="scrollerOptions.contentStyle"
2739
+ role="listbox"
2740
+ aria-multiselectable="true"
2741
+ [attr.aria-label]="listLabel"
2742
+ >
2743
+ <ng-template ngFor let-option [ngForOf]="items" let-i="index">
2744
+ <ng-container *ngIf="isOptionGroup(option)">
2745
+ <li
2746
+ [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
2747
+ class="p-multiselect-option-group"
2748
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2749
+ role="option"
2750
+ >
2751
+ <span *ngIf="!groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
2752
+ <ng-container
2753
+ *ngTemplateOutlet="groupTemplate; context: { $implicit: option.optionGroup }"
2754
+ ></ng-container>
2755
+ </li>
2756
+ </ng-container>
2757
+ <ng-container *ngIf="!isOptionGroup(option)">
2758
+ <p-multiselect-item
2759
+ [id]="id + '_' + getOptionIndex(i, scrollerOptions)"
2760
+ [option]="option"
2761
+ [selected]="isSelected(option)"
2762
+ [label]="getOptionLabel(option)"
2763
+ [disabled]="isOptionDisabled(option)"
2764
+ [template]="itemTemplate"
2765
+ [checkIconTemplate]="checkIconTemplate"
2766
+ [itemCheckboxIconTemplate]="itemCheckboxIconTemplate"
2767
+ [itemSize]="scrollerOptions.itemSize"
2768
+ [focused]="focusedOptionIndex() === getOptionIndex(i, scrollerOptions)"
2769
+ [ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
2770
+ [ariaSetSize]="ariaSetSize"
2771
+ [variant]="variant"
2772
+ (onClick)="onOptionSelect($event, false, getOptionIndex(i, scrollerOptions))"
2773
+ (onMouseEnter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
2774
+ ></p-multiselect-item>
2775
+ </ng-container>
2776
+ </ng-template>
2805
2777
 
2806
- <span
2807
- #lastHiddenFocusableEl
2808
- role="presentation"
2809
- class="p-hidden-accessible p-hidden-focusable"
2810
- [attr.tabindex]="0"
2811
- (focus)="onLastHiddenFocus($event)"
2812
- [attr.data-p-hidden-accessible]="true"
2813
- [attr.data-p-hidden-focusable]="true"
2814
- ></span>
2778
+ <li
2779
+ *ngIf="hasFilter() && isEmpty()"
2780
+ class="p-multiselect-empty-message"
2781
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2782
+ role="option"
2783
+ >
2784
+ <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
2785
+ {{ emptyFilterMessageLabel }}
2786
+ </ng-container>
2787
+ <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
2788
+ </li>
2789
+ <li
2790
+ *ngIf="!hasFilter() && isEmpty()"
2791
+ class="p-multiselect-empty-message"
2792
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
2793
+ role="option"
2794
+ >
2795
+ <ng-container *ngIf="!emptyTemplate; else empty">
2796
+ {{ emptyMessageLabel }}
2797
+ </ng-container>
2798
+ <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
2799
+ </li>
2800
+ </ul>
2801
+ </ng-template>
2815
2802
  </div>
2816
- </ng-template>
2817
- </p-overlay>
2818
- </div>
2803
+ <div *ngIf="footerFacet || footerTemplate">
2804
+ <ng-content select="p-footer"></ng-content>
2805
+ <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
2806
+ </div>
2807
+
2808
+ <span
2809
+ #lastHiddenFocusableEl
2810
+ role="presentation"
2811
+ class="p-hidden-accessible p-hidden-focusable"
2812
+ [attr.tabindex]="0"
2813
+ (focus)="onLastHiddenFocus($event)"
2814
+ [attr.data-p-hidden-accessible]="true"
2815
+ [attr.data-p-hidden-focusable]="true"
2816
+ ></span>
2817
+ </div>
2818
+ </ng-template>
2819
+ </p-overlay>
2819
2820
  `,
2820
2821
  providers: [MULTISELECT_VALUE_ACCESSOR, MultiSelectStyle],
2821
2822
  changeDetection: ChangeDetectionStrategy.OnPush,
2822
2823
  encapsulation: ViewEncapsulation.None,
2824
+ host: {
2825
+ '[attr.id]': 'id',
2826
+ '[style]': 'style',
2827
+ '(click)': 'onContainerClick($event)',
2828
+ },
2823
2829
  }]
2824
2830
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i2.FilterService }, { type: i2.PrimeNGConfig }, { type: i2.OverlayService }], propDecorators: { id: [{
2825
2831
  type: Input
@@ -3006,9 +3012,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
3006
3012
  type: Output
3007
3013
  }], onSelectAllChange: [{
3008
3014
  type: Output
3009
- }], containerViewChild: [{
3010
- type: ViewChild,
3011
- args: ['container']
3012
3015
  }], overlayViewChild: [{
3013
3016
  type: ViewChild,
3014
3017
  args: ['overlay']
@@ -3042,6 +3045,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
3042
3045
  }], templates: [{
3043
3046
  type: ContentChildren,
3044
3047
  args: [PrimeTemplate]
3048
+ }], hostClasses: [{
3049
+ type: HostBinding,
3050
+ args: ['class']
3045
3051
  }] } });
3046
3052
  class MultiSelectModule {
3047
3053
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -3120,5 +3126,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
3120
3126
  * Generated bundle index. Do not edit.
3121
3127
  */
3122
3128
 
3123
- export { MULTISELECT_VALUE_ACCESSOR, MultiSelect, MultiSelectItem, MultiSelectModule };
3129
+ export { MULTISELECT_VALUE_ACCESSOR, MultiSelect, MultiSelectClasses, MultiSelectItem, MultiSelectModule, MultiSelectStyle };
3124
3130
  //# sourceMappingURL=primeng-multiselect.mjs.map