primeng 22.1.2 → 22.1.4

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 (408) hide show
  1. package/fesm2022/primeng-accordion.mjs +23 -24
  2. package/fesm2022/primeng-animateonscroll.mjs +9 -10
  3. package/fesm2022/primeng-api.mjs +31 -32
  4. package/fesm2022/primeng-autocomplete.mjs +17 -18
  5. package/fesm2022/primeng-autofocus.mjs +7 -8
  6. package/fesm2022/primeng-avatar.mjs +10 -11
  7. package/fesm2022/primeng-avatargroup.mjs +10 -11
  8. package/fesm2022/primeng-badge.mjs +10 -11
  9. package/fesm2022/primeng-base.mjs +47 -32
  10. package/fesm2022/primeng-basecomponent.mjs +125 -52
  11. package/fesm2022/primeng-baseeditableholder.mjs +3 -4
  12. package/fesm2022/primeng-baseinput.mjs +3 -4
  13. package/fesm2022/primeng-basemodelholder.mjs +3 -4
  14. package/fesm2022/primeng-bind.mjs +10 -9
  15. package/fesm2022/primeng-blockui.mjs +23 -24
  16. package/fesm2022/primeng-breadcrumb.mjs +10 -11
  17. package/fesm2022/primeng-button.mjs +33 -39
  18. package/fesm2022/primeng-buttongroup.mjs +12 -13
  19. package/fesm2022/primeng-card.mjs +10 -11
  20. package/fesm2022/primeng-carousel.mjs +47 -46
  21. package/fesm2022/primeng-cascadeselect.mjs +23 -24
  22. package/fesm2022/primeng-chart.mjs +10 -11
  23. package/fesm2022/primeng-checkbox.mjs +10 -11
  24. package/fesm2022/primeng-chip.mjs +10 -11
  25. package/fesm2022/primeng-classnames.mjs +7 -8
  26. package/fesm2022/primeng-colorpicker.mjs +10 -11
  27. package/fesm2022/primeng-commandmenu.mjs +12 -13
  28. package/fesm2022/primeng-compare.mjs +19 -20
  29. package/fesm2022/primeng-config.mjs +42 -19
  30. package/fesm2022/primeng-confirmdialog.mjs +29 -21
  31. package/fesm2022/primeng-confirmpopup.mjs +26 -25
  32. package/fesm2022/primeng-contextmenu.mjs +29 -28
  33. package/fesm2022/primeng-dataview.mjs +10 -11
  34. package/fesm2022/primeng-datepicker.mjs +141 -91
  35. package/fesm2022/primeng-dialog.mjs +46 -34
  36. package/fesm2022/primeng-divider.mjs +10 -11
  37. package/fesm2022/primeng-dock.mjs +12 -13
  38. package/fesm2022/primeng-dom.mjs +18 -6
  39. package/fesm2022/primeng-dragdrop.mjs +15 -14
  40. package/fesm2022/primeng-drawer.mjs +21 -25
  41. package/fesm2022/primeng-dynamicdialog.mjs +23 -22
  42. package/fesm2022/primeng-editor.mjs +10 -11
  43. package/fesm2022/primeng-fieldset.mjs +13 -17
  44. package/fesm2022/primeng-fileupload.mjs +24 -25
  45. package/fesm2022/primeng-floatlabel.mjs +10 -11
  46. package/fesm2022/primeng-fluid.mjs +10 -11
  47. package/fesm2022/primeng-focustrap.mjs +11 -12
  48. package/fesm2022/primeng-galleria.mjs +40 -37
  49. package/fesm2022/primeng-gallery.mjs +73 -74
  50. package/fesm2022/primeng-iconfield.mjs +10 -11
  51. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -4
  52. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -4
  53. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -4
  54. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -4
  55. package/fesm2022/primeng-icons-angledown.mjs +3 -4
  56. package/fesm2022/primeng-icons-angleleft.mjs +3 -4
  57. package/fesm2022/primeng-icons-angleright.mjs +3 -4
  58. package/fesm2022/primeng-icons-angleup.mjs +3 -4
  59. package/fesm2022/primeng-icons-arrowdown.mjs +4 -6
  60. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -4
  61. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -4
  62. package/fesm2022/primeng-icons-arrowleft.mjs +4 -6
  63. package/fesm2022/primeng-icons-arrowright.mjs +3 -4
  64. package/fesm2022/primeng-icons-arrowup.mjs +4 -6
  65. package/fesm2022/primeng-icons-ban.mjs +4 -6
  66. package/fesm2022/primeng-icons-bars.mjs +3 -4
  67. package/fesm2022/primeng-icons-baseicon.mjs +6 -7
  68. package/fesm2022/primeng-icons-blank.mjs +3 -4
  69. package/fesm2022/primeng-icons-calendar.mjs +3 -4
  70. package/fesm2022/primeng-icons-caretleft.mjs +3 -4
  71. package/fesm2022/primeng-icons-caretright.mjs +3 -4
  72. package/fesm2022/primeng-icons-check.mjs +3 -4
  73. package/fesm2022/primeng-icons-chevrondown.mjs +3 -4
  74. package/fesm2022/primeng-icons-chevronleft.mjs +3 -4
  75. package/fesm2022/primeng-icons-chevronright.mjs +3 -4
  76. package/fesm2022/primeng-icons-chevronup.mjs +3 -4
  77. package/fesm2022/primeng-icons-exclamationtriangle.mjs +4 -6
  78. package/fesm2022/primeng-icons-eye.mjs +3 -4
  79. package/fesm2022/primeng-icons-eyeslash.mjs +4 -6
  80. package/fesm2022/primeng-icons-filter.mjs +4 -6
  81. package/fesm2022/primeng-icons-filterfill.mjs +3 -4
  82. package/fesm2022/primeng-icons-filterslash.mjs +4 -6
  83. package/fesm2022/primeng-icons-home.mjs +4 -6
  84. package/fesm2022/primeng-icons-infocircle.mjs +4 -6
  85. package/fesm2022/primeng-icons-minus.mjs +3 -4
  86. package/fesm2022/primeng-icons-pencil.mjs +4 -6
  87. package/fesm2022/primeng-icons-plus.mjs +4 -6
  88. package/fesm2022/primeng-icons-refresh.mjs +4 -6
  89. package/fesm2022/primeng-icons-search.mjs +4 -6
  90. package/fesm2022/primeng-icons-searchminus.mjs +4 -6
  91. package/fesm2022/primeng-icons-searchplus.mjs +4 -6
  92. package/fesm2022/primeng-icons-sortalt.mjs +4 -6
  93. package/fesm2022/primeng-icons-sortamountdown.mjs +4 -6
  94. package/fesm2022/primeng-icons-sortamountupalt.mjs +4 -6
  95. package/fesm2022/primeng-icons-spinner.mjs +4 -6
  96. package/fesm2022/primeng-icons-star.mjs +4 -6
  97. package/fesm2022/primeng-icons-starfill.mjs +4 -6
  98. package/fesm2022/primeng-icons-thlarge.mjs +4 -6
  99. package/fesm2022/primeng-icons-times.mjs +3 -4
  100. package/fesm2022/primeng-icons-timescircle.mjs +4 -6
  101. package/fesm2022/primeng-icons-trash.mjs +4 -6
  102. package/fesm2022/primeng-icons-undo.mjs +4 -6
  103. package/fesm2022/primeng-icons-upload.mjs +4 -6
  104. package/fesm2022/primeng-icons-windowmaximize.mjs +4 -6
  105. package/fesm2022/primeng-icons-windowminimize.mjs +4 -6
  106. package/fesm2022/primeng-iftalabel.mjs +10 -11
  107. package/fesm2022/primeng-image.mjs +34 -20
  108. package/fesm2022/primeng-imagecompare.mjs +10 -11
  109. package/fesm2022/primeng-inplace.mjs +16 -17
  110. package/fesm2022/primeng-inputcolor.mjs +46 -51
  111. package/fesm2022/primeng-inputgroup.mjs +10 -11
  112. package/fesm2022/primeng-inputgroupaddon.mjs +10 -11
  113. package/fesm2022/primeng-inputicon.mjs +10 -11
  114. package/fesm2022/primeng-inputmask.mjs +15 -16
  115. package/fesm2022/primeng-inputnumber.mjs +10 -11
  116. package/fesm2022/primeng-inputotp.mjs +10 -11
  117. package/fesm2022/primeng-inputpassword.mjs +10 -11
  118. package/fesm2022/primeng-inputtags.mjs +12 -13
  119. package/fesm2022/primeng-inputtext.mjs +10 -11
  120. package/fesm2022/primeng-isolation.mjs +280 -0
  121. package/fesm2022/primeng-keyfilter.mjs +7 -8
  122. package/fesm2022/primeng-knob.mjs +13 -15
  123. package/fesm2022/primeng-label.mjs +10 -11
  124. package/fesm2022/primeng-license.mjs +0 -1
  125. package/fesm2022/primeng-listbox.mjs +32 -29
  126. package/fesm2022/primeng-megamenu.mjs +30 -34
  127. package/fesm2022/primeng-menu.mjs +36 -43
  128. package/fesm2022/primeng-menubar.mjs +26 -24
  129. package/fesm2022/primeng-message.mjs +16 -19
  130. package/fesm2022/primeng-metergroup.mjs +13 -14
  131. package/fesm2022/primeng-motion.mjs +13 -14
  132. package/fesm2022/primeng-multiselect.mjs +34 -27
  133. package/fesm2022/primeng-orderlist.mjs +31 -23
  134. package/fesm2022/primeng-organizationchart.mjs +13 -14
  135. package/fesm2022/primeng-overlay.mjs +24 -22
  136. package/fesm2022/primeng-overlaybadge.mjs +10 -11
  137. package/fesm2022/primeng-paginator.mjs +13 -11
  138. package/fesm2022/primeng-panel.mjs +13 -17
  139. package/fesm2022/primeng-panelmenu.mjs +22 -23
  140. package/fesm2022/primeng-passthrough.mjs +0 -1
  141. package/fesm2022/primeng-password.mjs +29 -30
  142. package/fesm2022/primeng-picklist.mjs +28 -20
  143. package/fesm2022/primeng-popover.mjs +21 -21
  144. package/fesm2022/primeng-progressbar.mjs +10 -11
  145. package/fesm2022/primeng-progressspinner.mjs +10 -11
  146. package/fesm2022/primeng-radiobutton.mjs +13 -14
  147. package/fesm2022/primeng-rating.mjs +14 -16
  148. package/fesm2022/primeng-ripple.mjs +24 -23
  149. package/fesm2022/primeng-scrollarea.mjs +25 -26
  150. package/fesm2022/primeng-scroller.mjs +35 -18
  151. package/fesm2022/primeng-scrollpanel.mjs +23 -24
  152. package/fesm2022/primeng-scrolltop.mjs +12 -13
  153. package/fesm2022/primeng-select.mjs +254 -155
  154. package/fesm2022/primeng-selectbutton.mjs +10 -11
  155. package/fesm2022/primeng-sidebar.mjs +82 -84
  156. package/fesm2022/primeng-skeleton.mjs +10 -11
  157. package/fesm2022/primeng-slider.mjs +10 -11
  158. package/fesm2022/primeng-speeddial.mjs +20 -19
  159. package/fesm2022/primeng-splitbutton.mjs +11 -13
  160. package/fesm2022/primeng-splitter.mjs +13 -14
  161. package/fesm2022/primeng-stepper.mjs +47 -48
  162. package/fesm2022/primeng-steps.mjs +10 -11
  163. package/fesm2022/primeng-styleclass.mjs +10 -9
  164. package/fesm2022/primeng-table.mjs +193 -172
  165. package/fesm2022/primeng-tabs.mjs +36 -37
  166. package/fesm2022/primeng-tag.mjs +10 -11
  167. package/fesm2022/primeng-terminal.mjs +13 -14
  168. package/fesm2022/primeng-textarea.mjs +10 -11
  169. package/fesm2022/primeng-tieredmenu.mjs +26 -26
  170. package/fesm2022/primeng-timeline.mjs +10 -11
  171. package/fesm2022/primeng-toast.mjs +48 -33
  172. package/fesm2022/primeng-togglebutton.mjs +10 -11
  173. package/fesm2022/primeng-toggleswitch.mjs +10 -11
  174. package/fesm2022/primeng-toolbar.mjs +10 -11
  175. package/fesm2022/primeng-tooltip.mjs +24 -25
  176. package/fesm2022/primeng-tree.mjs +19 -20
  177. package/fesm2022/primeng-treeselect.mjs +45 -19
  178. package/fesm2022/primeng-treetable.mjs +93 -88
  179. package/fesm2022/primeng-useid.mjs +38 -0
  180. package/fesm2022/primeng-usestyle.mjs +265 -44
  181. package/fesm2022/primeng-utils.mjs +33 -2
  182. package/fesm2022/primeng.mjs +0 -1
  183. package/package.json +12 -4
  184. package/types/primeng-accordion.d.ts +0 -9
  185. package/types/primeng-animateonscroll.d.ts +2 -1
  186. package/types/primeng-api.d.ts +3 -1
  187. package/types/primeng-autocomplete.d.ts +1 -3
  188. package/types/primeng-base.d.ts +4 -1
  189. package/types/primeng-basecomponent.d.ts +36 -16
  190. package/types/primeng-button.d.ts +9 -12
  191. package/types/primeng-carousel.d.ts +3 -25
  192. package/types/primeng-compare.d.ts +0 -9
  193. package/types/primeng-config.d.ts +34 -4
  194. package/types/primeng-confirmdialog.d.ts +1 -0
  195. package/types/primeng-confirmpopup.d.ts +3 -5
  196. package/types/primeng-datepicker.d.ts +10 -11
  197. package/types/primeng-dialog.d.ts +1 -0
  198. package/types/primeng-dom.d.ts +6 -11
  199. package/types/primeng-dragdrop.d.ts +1 -0
  200. package/types/primeng-dynamicdialog.d.ts +3 -1
  201. package/types/primeng-focustrap.d.ts +1 -1
  202. package/types/primeng-gallery.d.ts +0 -63
  203. package/types/primeng-inputcolor.d.ts +0 -33
  204. package/types/primeng-isolation.d.ts +21 -0
  205. package/types/primeng-listbox.d.ts +1 -0
  206. package/types/primeng-megamenu.d.ts +5 -1
  207. package/types/primeng-menu.d.ts +6 -7
  208. package/types/primeng-motion.d.ts +2 -7
  209. package/types/primeng-multiselect.d.ts +3 -1
  210. package/types/primeng-orderlist.d.ts +1 -0
  211. package/types/primeng-picklist.d.ts +1 -0
  212. package/types/primeng-scrollarea.d.ts +0 -15
  213. package/types/primeng-scroller.d.ts +6 -4
  214. package/types/primeng-select.d.ts +57 -16
  215. package/types/primeng-sidebar.d.ts +0 -69
  216. package/types/primeng-splitter.d.ts +0 -3
  217. package/types/primeng-stepper.d.ts +2 -19
  218. package/types/primeng-table.d.ts +5 -78
  219. package/types/primeng-tabs.d.ts +2 -16
  220. package/types/primeng-toast.d.ts +4 -2
  221. package/types/primeng-treeselect.d.ts +9 -2
  222. package/types/primeng-treetable.d.ts +4 -92
  223. package/types/primeng-types-listbox.d.ts +1 -1
  224. package/types/primeng-types-select.d.ts +4 -0
  225. package/types/primeng-types-treeselect.d.ts +15 -0
  226. package/types/primeng-useid.d.ts +15 -0
  227. package/types/primeng-usestyle.d.ts +87 -7
  228. package/types/primeng-utils.d.ts +42 -0
  229. package/fesm2022/primeng-accordion.mjs.map +0 -1
  230. package/fesm2022/primeng-animateonscroll.mjs.map +0 -1
  231. package/fesm2022/primeng-api.mjs.map +0 -1
  232. package/fesm2022/primeng-autocomplete.mjs.map +0 -1
  233. package/fesm2022/primeng-autofocus.mjs.map +0 -1
  234. package/fesm2022/primeng-avatar.mjs.map +0 -1
  235. package/fesm2022/primeng-avatargroup.mjs.map +0 -1
  236. package/fesm2022/primeng-badge.mjs.map +0 -1
  237. package/fesm2022/primeng-base.mjs.map +0 -1
  238. package/fesm2022/primeng-basecomponent.mjs.map +0 -1
  239. package/fesm2022/primeng-baseeditableholder.mjs.map +0 -1
  240. package/fesm2022/primeng-baseinput.mjs.map +0 -1
  241. package/fesm2022/primeng-basemodelholder.mjs.map +0 -1
  242. package/fesm2022/primeng-bind.mjs.map +0 -1
  243. package/fesm2022/primeng-blockui.mjs.map +0 -1
  244. package/fesm2022/primeng-breadcrumb.mjs.map +0 -1
  245. package/fesm2022/primeng-button.mjs.map +0 -1
  246. package/fesm2022/primeng-buttongroup.mjs.map +0 -1
  247. package/fesm2022/primeng-card.mjs.map +0 -1
  248. package/fesm2022/primeng-carousel.mjs.map +0 -1
  249. package/fesm2022/primeng-cascadeselect.mjs.map +0 -1
  250. package/fesm2022/primeng-chart.mjs.map +0 -1
  251. package/fesm2022/primeng-checkbox.mjs.map +0 -1
  252. package/fesm2022/primeng-chip.mjs.map +0 -1
  253. package/fesm2022/primeng-classnames.mjs.map +0 -1
  254. package/fesm2022/primeng-colorpicker.mjs.map +0 -1
  255. package/fesm2022/primeng-commandmenu.mjs.map +0 -1
  256. package/fesm2022/primeng-compare.mjs.map +0 -1
  257. package/fesm2022/primeng-config.mjs.map +0 -1
  258. package/fesm2022/primeng-confirmdialog.mjs.map +0 -1
  259. package/fesm2022/primeng-confirmpopup.mjs.map +0 -1
  260. package/fesm2022/primeng-contextmenu.mjs.map +0 -1
  261. package/fesm2022/primeng-dataview.mjs.map +0 -1
  262. package/fesm2022/primeng-datepicker.mjs.map +0 -1
  263. package/fesm2022/primeng-dialog.mjs.map +0 -1
  264. package/fesm2022/primeng-divider.mjs.map +0 -1
  265. package/fesm2022/primeng-dock.mjs.map +0 -1
  266. package/fesm2022/primeng-dom.mjs.map +0 -1
  267. package/fesm2022/primeng-dragdrop.mjs.map +0 -1
  268. package/fesm2022/primeng-drawer.mjs.map +0 -1
  269. package/fesm2022/primeng-dynamicdialog.mjs.map +0 -1
  270. package/fesm2022/primeng-editor.mjs.map +0 -1
  271. package/fesm2022/primeng-fieldset.mjs.map +0 -1
  272. package/fesm2022/primeng-fileupload.mjs.map +0 -1
  273. package/fesm2022/primeng-floatlabel.mjs.map +0 -1
  274. package/fesm2022/primeng-fluid.mjs.map +0 -1
  275. package/fesm2022/primeng-focustrap.mjs.map +0 -1
  276. package/fesm2022/primeng-galleria.mjs.map +0 -1
  277. package/fesm2022/primeng-gallery.mjs.map +0 -1
  278. package/fesm2022/primeng-iconfield.mjs.map +0 -1
  279. package/fesm2022/primeng-icons-angledoubledown.mjs.map +0 -1
  280. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +0 -1
  281. package/fesm2022/primeng-icons-angledoubleright.mjs.map +0 -1
  282. package/fesm2022/primeng-icons-angledoubleup.mjs.map +0 -1
  283. package/fesm2022/primeng-icons-angledown.mjs.map +0 -1
  284. package/fesm2022/primeng-icons-angleleft.mjs.map +0 -1
  285. package/fesm2022/primeng-icons-angleright.mjs.map +0 -1
  286. package/fesm2022/primeng-icons-angleup.mjs.map +0 -1
  287. package/fesm2022/primeng-icons-arrowdown.mjs.map +0 -1
  288. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +0 -1
  289. package/fesm2022/primeng-icons-arrowdownright.mjs.map +0 -1
  290. package/fesm2022/primeng-icons-arrowleft.mjs.map +0 -1
  291. package/fesm2022/primeng-icons-arrowright.mjs.map +0 -1
  292. package/fesm2022/primeng-icons-arrowup.mjs.map +0 -1
  293. package/fesm2022/primeng-icons-ban.mjs.map +0 -1
  294. package/fesm2022/primeng-icons-bars.mjs.map +0 -1
  295. package/fesm2022/primeng-icons-baseicon.mjs.map +0 -1
  296. package/fesm2022/primeng-icons-blank.mjs.map +0 -1
  297. package/fesm2022/primeng-icons-calendar.mjs.map +0 -1
  298. package/fesm2022/primeng-icons-caretleft.mjs.map +0 -1
  299. package/fesm2022/primeng-icons-caretright.mjs.map +0 -1
  300. package/fesm2022/primeng-icons-check.mjs.map +0 -1
  301. package/fesm2022/primeng-icons-chevrondown.mjs.map +0 -1
  302. package/fesm2022/primeng-icons-chevronleft.mjs.map +0 -1
  303. package/fesm2022/primeng-icons-chevronright.mjs.map +0 -1
  304. package/fesm2022/primeng-icons-chevronup.mjs.map +0 -1
  305. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +0 -1
  306. package/fesm2022/primeng-icons-eye.mjs.map +0 -1
  307. package/fesm2022/primeng-icons-eyeslash.mjs.map +0 -1
  308. package/fesm2022/primeng-icons-filter.mjs.map +0 -1
  309. package/fesm2022/primeng-icons-filterfill.mjs.map +0 -1
  310. package/fesm2022/primeng-icons-filterslash.mjs.map +0 -1
  311. package/fesm2022/primeng-icons-home.mjs.map +0 -1
  312. package/fesm2022/primeng-icons-infocircle.mjs.map +0 -1
  313. package/fesm2022/primeng-icons-minus.mjs.map +0 -1
  314. package/fesm2022/primeng-icons-pencil.mjs.map +0 -1
  315. package/fesm2022/primeng-icons-plus.mjs.map +0 -1
  316. package/fesm2022/primeng-icons-refresh.mjs.map +0 -1
  317. package/fesm2022/primeng-icons-search.mjs.map +0 -1
  318. package/fesm2022/primeng-icons-searchminus.mjs.map +0 -1
  319. package/fesm2022/primeng-icons-searchplus.mjs.map +0 -1
  320. package/fesm2022/primeng-icons-sortalt.mjs.map +0 -1
  321. package/fesm2022/primeng-icons-sortamountdown.mjs.map +0 -1
  322. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +0 -1
  323. package/fesm2022/primeng-icons-spinner.mjs.map +0 -1
  324. package/fesm2022/primeng-icons-star.mjs.map +0 -1
  325. package/fesm2022/primeng-icons-starfill.mjs.map +0 -1
  326. package/fesm2022/primeng-icons-thlarge.mjs.map +0 -1
  327. package/fesm2022/primeng-icons-times.mjs.map +0 -1
  328. package/fesm2022/primeng-icons-timescircle.mjs.map +0 -1
  329. package/fesm2022/primeng-icons-trash.mjs.map +0 -1
  330. package/fesm2022/primeng-icons-undo.mjs.map +0 -1
  331. package/fesm2022/primeng-icons-upload.mjs.map +0 -1
  332. package/fesm2022/primeng-icons-windowmaximize.mjs.map +0 -1
  333. package/fesm2022/primeng-icons-windowminimize.mjs.map +0 -1
  334. package/fesm2022/primeng-iftalabel.mjs.map +0 -1
  335. package/fesm2022/primeng-image.mjs.map +0 -1
  336. package/fesm2022/primeng-imagecompare.mjs.map +0 -1
  337. package/fesm2022/primeng-inplace.mjs.map +0 -1
  338. package/fesm2022/primeng-inputcolor.mjs.map +0 -1
  339. package/fesm2022/primeng-inputgroup.mjs.map +0 -1
  340. package/fesm2022/primeng-inputgroupaddon.mjs.map +0 -1
  341. package/fesm2022/primeng-inputicon.mjs.map +0 -1
  342. package/fesm2022/primeng-inputmask.mjs.map +0 -1
  343. package/fesm2022/primeng-inputnumber.mjs.map +0 -1
  344. package/fesm2022/primeng-inputotp.mjs.map +0 -1
  345. package/fesm2022/primeng-inputpassword.mjs.map +0 -1
  346. package/fesm2022/primeng-inputtags.mjs.map +0 -1
  347. package/fesm2022/primeng-inputtext.mjs.map +0 -1
  348. package/fesm2022/primeng-keyfilter.mjs.map +0 -1
  349. package/fesm2022/primeng-knob.mjs.map +0 -1
  350. package/fesm2022/primeng-label.mjs.map +0 -1
  351. package/fesm2022/primeng-license.mjs.map +0 -1
  352. package/fesm2022/primeng-listbox.mjs.map +0 -1
  353. package/fesm2022/primeng-megamenu.mjs.map +0 -1
  354. package/fesm2022/primeng-menu.mjs.map +0 -1
  355. package/fesm2022/primeng-menubar.mjs.map +0 -1
  356. package/fesm2022/primeng-message.mjs.map +0 -1
  357. package/fesm2022/primeng-metergroup.mjs.map +0 -1
  358. package/fesm2022/primeng-motion.mjs.map +0 -1
  359. package/fesm2022/primeng-multiselect.mjs.map +0 -1
  360. package/fesm2022/primeng-orderlist.mjs.map +0 -1
  361. package/fesm2022/primeng-organizationchart.mjs.map +0 -1
  362. package/fesm2022/primeng-overlay.mjs.map +0 -1
  363. package/fesm2022/primeng-overlaybadge.mjs.map +0 -1
  364. package/fesm2022/primeng-paginator.mjs.map +0 -1
  365. package/fesm2022/primeng-panel.mjs.map +0 -1
  366. package/fesm2022/primeng-panelmenu.mjs.map +0 -1
  367. package/fesm2022/primeng-passthrough.mjs.map +0 -1
  368. package/fesm2022/primeng-password.mjs.map +0 -1
  369. package/fesm2022/primeng-picklist.mjs.map +0 -1
  370. package/fesm2022/primeng-popover.mjs.map +0 -1
  371. package/fesm2022/primeng-progressbar.mjs.map +0 -1
  372. package/fesm2022/primeng-progressspinner.mjs.map +0 -1
  373. package/fesm2022/primeng-radiobutton.mjs.map +0 -1
  374. package/fesm2022/primeng-rating.mjs.map +0 -1
  375. package/fesm2022/primeng-ripple.mjs.map +0 -1
  376. package/fesm2022/primeng-scrollarea.mjs.map +0 -1
  377. package/fesm2022/primeng-scroller.mjs.map +0 -1
  378. package/fesm2022/primeng-scrollpanel.mjs.map +0 -1
  379. package/fesm2022/primeng-scrolltop.mjs.map +0 -1
  380. package/fesm2022/primeng-select.mjs.map +0 -1
  381. package/fesm2022/primeng-selectbutton.mjs.map +0 -1
  382. package/fesm2022/primeng-sidebar.mjs.map +0 -1
  383. package/fesm2022/primeng-skeleton.mjs.map +0 -1
  384. package/fesm2022/primeng-slider.mjs.map +0 -1
  385. package/fesm2022/primeng-speeddial.mjs.map +0 -1
  386. package/fesm2022/primeng-splitbutton.mjs.map +0 -1
  387. package/fesm2022/primeng-splitter.mjs.map +0 -1
  388. package/fesm2022/primeng-stepper.mjs.map +0 -1
  389. package/fesm2022/primeng-steps.mjs.map +0 -1
  390. package/fesm2022/primeng-styleclass.mjs.map +0 -1
  391. package/fesm2022/primeng-table.mjs.map +0 -1
  392. package/fesm2022/primeng-tabs.mjs.map +0 -1
  393. package/fesm2022/primeng-tag.mjs.map +0 -1
  394. package/fesm2022/primeng-terminal.mjs.map +0 -1
  395. package/fesm2022/primeng-textarea.mjs.map +0 -1
  396. package/fesm2022/primeng-tieredmenu.mjs.map +0 -1
  397. package/fesm2022/primeng-timeline.mjs.map +0 -1
  398. package/fesm2022/primeng-toast.mjs.map +0 -1
  399. package/fesm2022/primeng-togglebutton.mjs.map +0 -1
  400. package/fesm2022/primeng-toggleswitch.mjs.map +0 -1
  401. package/fesm2022/primeng-toolbar.mjs.map +0 -1
  402. package/fesm2022/primeng-tooltip.mjs.map +0 -1
  403. package/fesm2022/primeng-tree.mjs.map +0 -1
  404. package/fesm2022/primeng-treeselect.mjs.map +0 -1
  405. package/fesm2022/primeng-treetable.mjs.map +0 -1
  406. package/fesm2022/primeng-usestyle.mjs.map +0 -1
  407. package/fesm2022/primeng-utils.mjs.map +0 -1
  408. package/fesm2022/primeng.mjs.map +0 -1
@@ -1,26 +1,27 @@
1
1
  import { NgTemplateOutlet, isPlatformBrowser } from "@angular/common";
2
2
  import * as i0 from "@angular/core";
3
- import { ChangeDetectionStrategy, Component, Injectable, InjectionToken, NgModule, ViewEncapsulation, booleanAttribute, computed, contentChild, effect, forwardRef, inject, input, isDevMode, numberAttribute, output, signal, viewChild } from "@angular/core";
3
+ import { ChangeDetectionStrategy, Component, Injectable, InjectionToken, NgModule, ViewEncapsulation, afterRenderEffect, booleanAttribute, computed, contentChild, effect, forwardRef, inject, input, isDevMode, numberAttribute, output, signal, untracked, viewChild } from "@angular/core";
4
+ import { toSignal } from "@angular/core/rxjs-interop";
4
5
  import { NG_VALUE_ACCESSOR } from "@angular/forms";
5
6
  import { ChevronDown } from "@primeicons/angular/chevron-down";
6
7
  import { Search } from "@primeicons/angular/search";
7
8
  import { Times } from "@primeicons/angular/times";
8
- import { deepEquals, equals, findLastIndex, findSingle, focus, getFirstFocusableElement, getFocusableElements, getLastFocusableElement, isEmpty, isNotEmpty, isPrintableCharacter, resolveFieldData, scrollInView, uuid } from "@primeuix/utils";
9
+ import { deepEquals, equals, findLastIndex, findSingle, focus, getFirstFocusableElement, getFocusableElements, getLastFocusableElement, isEmpty, isNotEmpty, isPrintableCharacter, isScalar, resolveFieldData, scrollInView } from "@primeuix/utils";
9
10
  import { FilterService, SharedModule, TranslationKeys } from "primeng/api";
10
11
  import { AutoFocus } from "primeng/autofocus";
11
12
  import { BaseComponent, PARENT_INSTANCE } from "primeng/basecomponent";
12
13
  import { BaseInput } from "primeng/baseinput";
13
14
  import * as i1 from "primeng/bind";
14
15
  import { Bind, BindModule } from "primeng/bind";
15
- import { unblockBodyScroll } from "primeng/dom";
16
+ import { getShadowRoot, unblockBodyScroll } from "primeng/dom";
16
17
  import { IconField } from "primeng/iconfield";
17
18
  import { InputIcon } from "primeng/inputicon";
18
19
  import { InputText } from "primeng/inputtext";
19
20
  import { Overlay } from "primeng/overlay";
20
21
  import { Scroller } from "primeng/scroller";
21
22
  import { Tooltip } from "primeng/tooltip";
22
- import { Check } from "@primeicons/angular/check";
23
23
  import { Blank } from "@primeicons/angular/blank";
24
+ import { Check } from "@primeicons/angular/check";
24
25
  import { Ripple } from "primeng/ripple";
25
26
  import { style } from "@primeuix/styles/select";
26
27
  import { BaseStyle } from "primeng/base";
@@ -40,7 +41,7 @@ const classes = {
40
41
  "p-select-lg p-inputfield-lg": instance.size() === "large"
41
42
  }],
42
43
  label: ({ instance }) => ["p-select-label", {
43
- "p-placeholder": instance.placeholder() && instance.label() === instance.placeholder(),
44
+ "p-placeholder": !instance.editable() && instance.placeholder() && instance.label() === instance.placeholder(),
44
45
  "p-select-label-empty": !instance.editable() && !instance.selectedItemTemplate() && (instance.label() === void 0 || instance.label() === null || instance.label() === "p-emptylabel" || instance.label().length === 0)
45
46
  }],
46
47
  clearIcon: "p-select-clear-icon",
@@ -70,7 +71,7 @@ var SelectStyle = class SelectStyle extends BaseStyle {
70
71
  classes = classes;
71
72
  static ɵfac = i0.ɵɵngDeclareFactory({
72
73
  minVersion: "12.0.0",
73
- version: "22.2.0",
74
+ version: "22.2.3",
74
75
  ngImport: i0,
75
76
  type: SelectStyle,
76
77
  deps: null,
@@ -78,14 +79,14 @@ var SelectStyle = class SelectStyle extends BaseStyle {
78
79
  });
79
80
  static ɵprov = i0.ɵɵngDeclareInjectable({
80
81
  minVersion: "12.0.0",
81
- version: "22.2.0",
82
+ version: "22.2.3",
82
83
  ngImport: i0,
83
84
  type: SelectStyle
84
85
  });
85
86
  };
86
87
  i0.ɵɵngDeclareClassMetadata({
87
88
  minVersion: "12.0.0",
88
- version: "22.2.0",
89
+ version: "22.2.3",
89
90
  ngImport: i0,
90
91
  type: SelectStyle,
91
92
  decorators: [{ type: Injectable }]
@@ -132,14 +133,6 @@ var SelectItem = class SelectItem extends BaseComponent {
132
133
  ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
133
134
  transform: booleanAttribute
134
135
  });
135
- visible = input(void 0, {
136
- ...ngDevMode ? { debugName: "visible" } : /* istanbul ignore next */ {},
137
- transform: booleanAttribute
138
- });
139
- itemSize = input(void 0, {
140
- ...ngDevMode ? { debugName: "itemSize" } : /* istanbul ignore next */ {},
141
- transform: numberAttribute
142
- });
143
136
  ariaPosInset = input(...ngDevMode ? [void 0, { debugName: "ariaPosInset" }] : /* istanbul ignore next */ []);
144
137
  ariaSetSize = input(...ngDevMode ? [void 0, { debugName: "ariaSetSize" }] : /* istanbul ignore next */ []);
145
138
  template = input(...ngDevMode ? [void 0, { debugName: "template" }] : /* istanbul ignore next */ []);
@@ -161,8 +154,9 @@ var SelectItem = class SelectItem extends BaseComponent {
161
154
  this.onMouseEnter.emit(event);
162
155
  }
163
156
  getPTOptions() {
164
- return this.$pcSelect?.getPTItemOptions?.(this.option(), this.scrollerOptions(), this.index() ?? 0, "option") ?? this.$pcSelect?.ptm("option", { context: {
157
+ return this.$pcSelect?.ptm("option", { context: {
165
158
  option: this.option(),
159
+ index: this.index() ?? 0,
166
160
  selected: this.selected(),
167
161
  focused: this.focused(),
168
162
  disabled: this.disabled()
@@ -170,7 +164,7 @@ var SelectItem = class SelectItem extends BaseComponent {
170
164
  }
171
165
  static ɵfac = i0.ɵɵngDeclareFactory({
172
166
  minVersion: "12.0.0",
173
- version: "22.2.0",
167
+ version: "22.2.3",
174
168
  ngImport: i0,
175
169
  type: SelectItem,
176
170
  deps: null,
@@ -178,7 +172,7 @@ var SelectItem = class SelectItem extends BaseComponent {
178
172
  });
179
173
  static ɵcmp = i0.ɵɵngDeclareComponent({
180
174
  minVersion: "17.0.0",
181
- version: "22.2.0",
175
+ version: "22.2.3",
182
176
  type: SelectItem,
183
177
  isStandalone: true,
184
178
  selector: "p-select-item",
@@ -225,20 +219,6 @@ var SelectItem = class SelectItem extends BaseComponent {
225
219
  isRequired: false,
226
220
  transformFunction: null
227
221
  },
228
- visible: {
229
- classPropertyName: "visible",
230
- publicName: "visible",
231
- isSignal: true,
232
- isRequired: false,
233
- transformFunction: null
234
- },
235
- itemSize: {
236
- classPropertyName: "itemSize",
237
- publicName: "itemSize",
238
- isSignal: true,
239
- isRequired: false,
240
- transformFunction: null
241
- },
242
222
  ariaPosInset: {
243
223
  classPropertyName: "ariaPosInset",
244
224
  publicName: "ariaPosInset",
@@ -300,7 +280,7 @@ var SelectItem = class SelectItem extends BaseComponent {
300
280
  (mouseenter)="onOptionMouseEnter($event)"
301
281
  role="option"
302
282
  pRipple
303
- [attr.aria-label]="label()"
283
+ [attr.aria-label]="template() ? undefined : label()"
304
284
  [attr.aria-setsize]="ariaSetSize()"
305
285
  [attr.aria-posinset]="ariaPosInset()"
306
286
  [attr.aria-selected]="selected()"
@@ -370,7 +350,7 @@ var SelectItem = class SelectItem extends BaseComponent {
370
350
  };
371
351
  i0.ɵɵngDeclareClassMetadata({
372
352
  minVersion: "12.0.0",
373
- version: "22.2.0",
353
+ version: "22.2.3",
374
354
  ngImport: i0,
375
355
  type: SelectItem,
376
356
  decorators: [{
@@ -394,7 +374,7 @@ i0.ɵɵngDeclareClassMetadata({
394
374
  (mouseenter)="onOptionMouseEnter($event)"
395
375
  role="option"
396
376
  pRipple
397
- [attr.aria-label]="label()"
377
+ [attr.aria-label]="template() ? undefined : label()"
398
378
  [attr.aria-setsize]="ariaSetSize()"
399
379
  [attr.aria-posinset]="ariaPosInset()"
400
380
  [attr.aria-selected]="selected()"
@@ -473,22 +453,6 @@ i0.ɵɵngDeclareClassMetadata({
473
453
  required: false
474
454
  }]
475
455
  }],
476
- visible: [{
477
- type: i0.Input,
478
- args: [{
479
- isSignal: true,
480
- alias: "visible",
481
- required: false
482
- }]
483
- }],
484
- itemSize: [{
485
- type: i0.Input,
486
- args: [{
487
- isSignal: true,
488
- alias: "itemSize",
489
- required: false
490
- }]
491
- }],
492
456
  ariaPosInset: [{
493
457
  type: i0.Input,
494
458
  args: [{
@@ -557,7 +521,7 @@ var Select = class Select extends BaseInput {
557
521
  bindDirectiveInstance = inject(Bind, { self: true });
558
522
  filterService = inject(FilterService);
559
523
  id = input(...ngDevMode ? [void 0, { debugName: "id" }] : /* istanbul ignore next */ []);
560
- _internalId = uuid("pn_id_");
524
+ _internalId = this.$useId.next("pn_id_");
561
525
  $id = computed(() => this.id() || this._internalId, ...ngDevMode ? [{ debugName: "$id" }] : /* istanbul ignore next */ []);
562
526
  scrollHeight = input("200px", ...ngDevMode ? [{ debugName: "scrollHeight" }] : /* istanbul ignore next */ []);
563
527
  filter = input(void 0, {
@@ -618,6 +582,9 @@ var Select = class Select extends BaseInput {
618
582
  });
619
583
  emptyFilterMessage = input("", ...ngDevMode ? [{ debugName: "emptyFilterMessage" }] : /* istanbul ignore next */ []);
620
584
  emptyMessage = input("", ...ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []);
585
+ filterMessage = input(...ngDevMode ? [void 0, { debugName: "filterMessage" }] : /* istanbul ignore next */ []);
586
+ selectionMessage = input(...ngDevMode ? [void 0, { debugName: "selectionMessage" }] : /* istanbul ignore next */ []);
587
+ emptySelectionMessage = input(...ngDevMode ? [void 0, { debugName: "emptySelectionMessage" }] : /* istanbul ignore next */ []);
621
588
  lazy = input(false, {
622
589
  ...ngDevMode ? { debugName: "lazy" } : /* istanbul ignore next */ {},
623
590
  transform: booleanAttribute
@@ -750,29 +717,37 @@ var Select = class Select extends BaseInput {
750
717
  });
751
718
  filterOptions;
752
719
  _filterValue = signal(null, ...ngDevMode ? [{ debugName: "_filterValue" }] : /* istanbul ignore next */ []);
753
- _placeholder = signal(void 0, ...ngDevMode ? [{ debugName: "_placeholder" }] : /* istanbul ignore next */ []);
754
720
  _options = signal(null, ...ngDevMode ? [{ debugName: "_options" }] : /* istanbul ignore next */ []);
755
721
  value;
756
- hover;
757
722
  focused = signal(false, ...ngDevMode ? [{ debugName: "focused" }] : /* istanbul ignore next */ []);
758
723
  overlayVisible = signal(false, ...ngDevMode ? [{ debugName: "overlayVisible" }] : /* istanbul ignore next */ []);
759
724
  optionsChanged;
760
- panel;
761
- dimensionsUpdated;
762
- hoveredItem;
763
725
  selectedOptionUpdated;
764
726
  searchValue;
765
- searchIndex;
766
727
  searchTimeout;
767
- previousSearchChar;
768
- currentSearchChar;
728
+ alignOverlayTimeout;
729
+ changeTimeout;
730
+ scrollToSelectedTimeout;
731
+ scrollInViewTimeout;
769
732
  preventModelTouched;
770
733
  focusedOptionIndex = signal(-1, ...ngDevMode ? [{ debugName: "focusedOptionIndex" }] : /* istanbul ignore next */ []);
771
- labelId;
772
- listId;
773
734
  clicked = signal(false, ...ngDevMode ? [{ debugName: "clicked" }] : /* istanbul ignore next */ []);
774
- emptyMessageLabel = computed(() => this.emptyMessage() || this.translate(TranslationKeys.EMPTY_MESSAGE), ...ngDevMode ? [{ debugName: "emptyMessageLabel" }] : /* istanbul ignore next */ []);
775
- emptyFilterMessageLabel = computed(() => this.emptyFilterMessage() || this.translate(TranslationKeys.EMPTY_FILTER_MESSAGE), ...ngDevMode ? [{ debugName: "emptyFilterMessageLabel" }] : /* istanbul ignore next */ []);
735
+ translation = toSignal(this.config.translationObserver, { initialValue: this.config.translation });
736
+ emptyMessageLabel = computed(() => this.emptyMessage() || this.translation()?.emptyMessage || "", ...ngDevMode ? [{ debugName: "emptyMessageLabel" }] : /* istanbul ignore next */ []);
737
+ emptyFilterMessageLabel = computed(() => this.emptyFilterMessage() || this.translation()?.emptyFilterMessage || "", ...ngDevMode ? [{ debugName: "emptyFilterMessageLabel" }] : /* istanbul ignore next */ []);
738
+ filterMessageText = computed(() => this.filterMessage() || this.translation()?.searchMessage || "", ...ngDevMode ? [{ debugName: "filterMessageText" }] : /* istanbul ignore next */ []);
739
+ emptyFilterMessageText = computed(() => this.emptyFilterMessage() || this.translation()?.emptySearchMessage || this.translation()?.emptyFilterMessage || "", ...ngDevMode ? [{ debugName: "emptyFilterMessageText" }] : /* istanbul ignore next */ []);
740
+ filterResultMessageText = computed(() => {
741
+ const count = this.visibleOptions()?.filter((option) => !this.isOptionGroup(option)).length ?? 0;
742
+ return count ? this.filterMessageText().replaceAll("{0}", String(count)) : this.emptyFilterMessageText();
743
+ }, ...ngDevMode ? [{ debugName: "filterResultMessageText" }] : /* istanbul ignore next */ []);
744
+ selectionMessageText = computed(() => this.selectionMessage() || this.translation()?.selectionMessage || "", ...ngDevMode ? [{ debugName: "selectionMessageText" }] : /* istanbul ignore next */ []);
745
+ emptySelectionMessageText = computed(() => this.emptySelectionMessage() || this.translation()?.emptySelectionMessage || "", ...ngDevMode ? [{ debugName: "emptySelectionMessageText" }] : /* istanbul ignore next */ []);
746
+ selectedMessageText = computed(() => {
747
+ const value = this.modelValue();
748
+ const selectedCount = this.multiple() ? Array.isArray(value) ? value.length : 0 : 1;
749
+ return this.$filled() ? this.selectionMessageText().replaceAll("{0}", String(selectedCount)) : this.emptySelectionMessageText();
750
+ }, ...ngDevMode ? [{ debugName: "selectedMessageText" }] : /* istanbul ignore next */ []);
776
751
  largeListWarned = false;
777
752
  isVisibleClearIcon = computed(() => {
778
753
  if (!this.showClear() || this.$disabled() || this.readonly() || this.loading()) return false;
@@ -792,8 +767,11 @@ var Select = class Select extends BaseInput {
792
767
  if (this.group()) {
793
768
  const optionGroups = this._options() || [];
794
769
  const filtered = [];
770
+ const filteredSet = new Set(filteredOptions);
795
771
  optionGroups.forEach((group) => {
796
- const filteredItems = this.getOptionGroupChildren(group).filter((item) => filteredOptions?.includes(item));
772
+ const groupChildren = this.getOptionGroupChildren(group);
773
+ if (!groupChildren || !groupChildren.length) return;
774
+ const filteredItems = groupChildren.filter((item) => filteredSet.has(item));
797
775
  if (filteredItems.length > 0) filtered.push({
798
776
  ...group,
799
777
  [typeof this.optionGroupChildren() === "string" ? this.optionGroupChildren() : "items"]: [...filteredItems]
@@ -823,13 +801,14 @@ var Select = class Select extends BaseInput {
823
801
  const selectedOption = options[selectedOptionIndex];
824
802
  return this.getOptionLabel(selectedOption);
825
803
  }
826
- return this.placeholder() || "p-emptylabel";
804
+ return this.getValueLabel(this.modelValue()) ?? (this.placeholder() || "p-emptylabel");
827
805
  }, ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
828
806
  $ariaLabel = computed(() => this.ariaLabel() || (this.label() === "p-emptylabel" ? void 0 : this.label()), ...ngDevMode ? [{ debugName: "$ariaLabel" }] : /* istanbul ignore next */ []);
829
807
  $ariaMultiselectable = computed(() => this.multiple() || void 0, ...ngDevMode ? [{ debugName: "$ariaMultiselectable" }] : /* istanbul ignore next */ []);
808
+ $ariaReadonly = computed(() => this.readonly() || void 0, ...ngDevMode ? [{ debugName: "$ariaReadonly" }] : /* istanbul ignore next */ []);
830
809
  $placeholder = computed(() => {
831
810
  const modelVal = this.modelValue();
832
- return modelVal === void 0 || modelVal === null ? this.placeholder() || this._placeholder() : void 0;
811
+ return modelVal === void 0 || modelVal === null ? this.placeholder() : void 0;
833
812
  }, ...ngDevMode ? [{ debugName: "$placeholder" }] : /* istanbul ignore next */ []);
834
813
  $required = computed(() => this.required() ? "" : void 0, ...ngDevMode ? [{ debugName: "$required" }] : /* istanbul ignore next */ []);
835
814
  $readonly = computed(() => this.readonly() ? "" : void 0, ...ngDevMode ? [{ debugName: "$readonly" }] : /* istanbul ignore next */ []);
@@ -865,7 +844,7 @@ var Select = class Select extends BaseInput {
865
844
  [this.size()]: this.size()
866
845
  }), ...ngDevMode ? [{ debugName: "containerDataP" }] : /* istanbul ignore next */ []);
867
846
  labelDataP = computed(() => this.cn({
868
- placeholder: this.label() === this.placeholder(),
847
+ placeholder: !this.editable() && this.label() === this.placeholder(),
869
848
  clearable: this.showClear(),
870
849
  disabled: this.$disabled(),
871
850
  [this.size()]: this.size(),
@@ -901,6 +880,24 @@ var Select = class Select extends BaseInput {
901
880
  this.optionsChanged = true;
902
881
  }
903
882
  });
883
+ afterRenderEffect((onCleanup) => {
884
+ const inputId = this.inputId();
885
+ if (!inputId || this.editable()) return;
886
+ const label = (getShadowRoot(this.el.nativeElement) ?? this.document).querySelector(`label[for="${inputId}"]`);
887
+ if (label) onCleanup(this.renderer.listen(label, "click", () => !this.$disabled() && focus(this.focusInputViewChild()?.nativeElement)));
888
+ });
889
+ effect(() => {
890
+ const options = this.visibleOptions();
891
+ if (!this.overlayVisible()) return;
892
+ untracked(() => {
893
+ const index = this.focusedOptionIndex();
894
+ if (index !== -1 && this.isValidOption(options[index])) return;
895
+ if (index === -1 && !(this.autoOptionFocus() && !this.editable() && this._filterValue() == null)) return;
896
+ const next = this.autoOptionFocus() ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex();
897
+ this.focusedOptionIndex.set(next);
898
+ if (next !== -1) this.scrollInView(next);
899
+ });
900
+ });
904
901
  }
905
902
  isModelValueNotSet() {
906
903
  return this.modelValue() === null && !this.isOptionValueEqualsModelValue(this.selectedOption());
@@ -938,7 +935,8 @@ var Select = class Select extends BaseInput {
938
935
  this.bindDirectiveInstance.setAttrs(this.ptms(["host", "root"]));
939
936
  if (this.optionsChanged && this.overlayVisible()) {
940
937
  this.optionsChanged = false;
941
- setTimeout(() => {
938
+ clearTimeout(this.alignOverlayTimeout);
939
+ this.alignOverlayTimeout = setTimeout(() => {
942
940
  if (this.overlayViewChild()) this.overlayViewChild()?.alignOverlay();
943
941
  }, 1);
944
942
  }
@@ -1004,9 +1002,6 @@ var Select = class Select extends BaseInput {
1004
1002
  this.writeModelValue(value);
1005
1003
  this.selectedOptionUpdated = true;
1006
1004
  }
1007
- allowModelChange() {
1008
- return !!this.modelValue() && !this.placeholder() && (this.modelValue() === void 0 || this.modelValue() === null) && !this.editable() && this._options() && this._options().length;
1009
- }
1010
1005
  isSelected(option) {
1011
1006
  if (this.multiple()) {
1012
1007
  const currentValue = this.modelValue();
@@ -1022,18 +1017,9 @@ var Select = class Select extends BaseInput {
1022
1017
  onAfterViewInit() {
1023
1018
  if (!isPlatformBrowser(this.platformId)) return;
1024
1019
  if (this.editable()) this.updateEditableLabel();
1025
- this.updatePlaceHolderForFloatingLabel();
1026
- }
1027
- updatePlaceHolderForFloatingLabel() {
1028
- const parentElement = this.el.nativeElement.parentElement;
1029
- const isInFloatingLabel = parentElement?.classList.contains("p-float-label");
1030
- if (parentElement && isInFloatingLabel && !this.selectedOption()) {
1031
- const label = parentElement.querySelector("label");
1032
- if (label) this._placeholder.set(label.textContent);
1033
- }
1034
1020
  }
1035
1021
  updateEditableLabel() {
1036
- if (this.editableInputViewChild()) this.editableInputViewChild().nativeElement.value = this.getOptionLabel(this.selectedOption()) || this.modelValue() || "";
1022
+ if (this.editableInputViewChild()) this.editableInputViewChild().nativeElement.value = this.getOptionLabel(this.selectedOption()) || this.getValueLabel(this.modelValue()) || this.modelValue() || "";
1037
1023
  }
1038
1024
  clearEditableLabel() {
1039
1025
  if (this.editableInputViewChild()) this.editableInputViewChild().nativeElement.value = "";
@@ -1044,6 +1030,11 @@ var Select = class Select extends BaseInput {
1044
1030
  getOptionLabel(option) {
1045
1031
  return this.optionLabel() !== void 0 && this.optionLabel() !== null ? resolveFieldData(option, this.optionLabel()) : option && option.label !== void 0 ? option.label : option;
1046
1032
  }
1033
+ getValueLabel(value) {
1034
+ if (this.optionValue() || value == null) return null;
1035
+ const label = this.getOptionLabel(value);
1036
+ return isScalar(label) && label !== "" ? label : null;
1037
+ }
1047
1038
  getOptionValue(option) {
1048
1039
  return this.optionValue() && this.optionValue() !== null ? resolveFieldData(option, this.optionValue()) : !this.optionLabel() && option && option.value !== void 0 ? option.value : option;
1049
1040
  }
@@ -1096,10 +1087,9 @@ var Select = class Select extends BaseInput {
1096
1087
  onEditableInput(event) {
1097
1088
  const value = event.target.value;
1098
1089
  this.searchValue = "";
1099
- if (!this.searchOptions(event, value)) this.focusedOptionIndex.set(-1);
1100
- this.onModelChange(value);
1090
+ if (!this.searchOptions(event, value, false)) this.focusedOptionIndex.set(-1);
1101
1091
  this.updateModel(value || null, event);
1102
- setTimeout(() => {
1092
+ this.changeTimeout = setTimeout(() => {
1103
1093
  this.onChange.emit({
1104
1094
  originalEvent: event,
1105
1095
  value
@@ -1127,9 +1117,12 @@ var Select = class Select extends BaseInput {
1127
1117
  if (this._options() && this._options().length) {
1128
1118
  if (this.virtualScroll()) {
1129
1119
  const selectedIndex = this.modelValue() ? this.focusedOptionIndex() : -1;
1130
- if (selectedIndex !== -1) setTimeout(() => {
1131
- this.scroller()?.scrollToIndex(selectedIndex);
1132
- }, 10);
1120
+ if (selectedIndex !== -1) {
1121
+ if (this.scrollToSelectedTimeout) clearTimeout(this.scrollToSelectedTimeout);
1122
+ this.scrollToSelectedTimeout = setTimeout(() => {
1123
+ this.scroller()?.scrollToIndex(selectedIndex);
1124
+ }, 10);
1125
+ }
1133
1126
  } else {
1134
1127
  let selectedListItem = findSingle(this.itemsWrapper, "[data-p-selected=\"true\"]");
1135
1128
  if (selectedListItem) selectedListItem.scrollIntoView({
@@ -1176,6 +1169,7 @@ var Select = class Select extends BaseInput {
1176
1169
  this.preventModelTouched = false;
1177
1170
  }
1178
1171
  onKeyDown(event, search = false) {
1172
+ if (event.isComposing || event.keyCode === 229) return;
1179
1173
  if (this.$disabled() || this.readonly() || this.loading()) return;
1180
1174
  switch (event.code) {
1181
1175
  case "ArrowDown":
@@ -1228,7 +1222,11 @@ var Select = class Select extends BaseInput {
1228
1222
  }
1229
1223
  this.clicked.set(false);
1230
1224
  }
1225
+ onFilterTemplateKeyDown(event) {
1226
+ if (this.filterTemplate() && event.target instanceof HTMLInputElement) this.onFilterKeyDown(event);
1227
+ }
1231
1228
  onFilterKeyDown(event) {
1229
+ if (event.isComposing || event.keyCode === 229) return;
1232
1230
  switch (event.code) {
1233
1231
  case "ArrowDown":
1234
1232
  this.onArrowDownKey(event);
@@ -1270,29 +1268,27 @@ var Select = class Select extends BaseInput {
1270
1268
  event.preventDefault();
1271
1269
  event.stopPropagation();
1272
1270
  }
1273
- changeFocusedOptionIndex(event, index) {
1271
+ changeFocusedOptionIndex(event, index, withSelection = true) {
1274
1272
  if (this.focusedOptionIndex() !== index) {
1275
1273
  this.focusedOptionIndex.set(index);
1276
1274
  this.scrollInView();
1277
- if (this.selectOnFocus() && !this.multiple()) {
1275
+ if (this.selectOnFocus() && withSelection && !this.multiple()) {
1278
1276
  const option = this.visibleOptions()[index];
1279
1277
  this.onOptionSelect(event, option, false);
1280
1278
  }
1281
1279
  }
1282
1280
  }
1283
1281
  scrollInView(index = -1) {
1284
- const id = index !== -1 ? `${this.$id()}_${index}` : this.focusedOptionId();
1285
- if (this.itemsViewChild() && this.itemsViewChild().nativeElement) {
1286
- const element = findSingle(this.itemsViewChild().nativeElement, `li[id="${id}"]`);
1287
- if (element) {
1288
- if (element.scrollIntoView) element.scrollIntoView({
1289
- block: "nearest",
1290
- inline: "nearest"
1291
- });
1292
- } else if (!this.virtualScrollerDisabled()) setTimeout(() => {
1293
- if (this.virtualScroll()) this.scroller()?.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());
1294
- }, 0);
1295
- }
1282
+ if (this.scrollInViewTimeout) clearTimeout(this.scrollInViewTimeout);
1283
+ this.scrollInViewTimeout = setTimeout(() => {
1284
+ const id = index !== -1 ? `${this.$id()}_${index}` : this.focusedOptionId();
1285
+ const element = this.itemsViewChild()?.nativeElement ? findSingle(this.itemsViewChild().nativeElement, `li[id="${id}"]`) : null;
1286
+ if (element) element.scrollIntoView?.({
1287
+ block: "nearest",
1288
+ inline: "nearest"
1289
+ });
1290
+ else if (!this.virtualScrollerDisabled() && this.virtualScroll()) this.scroller()?.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());
1291
+ }, 0);
1296
1292
  }
1297
1293
  hasSelectedOption() {
1298
1294
  return this.modelValue() !== void 0;
@@ -1440,7 +1436,6 @@ var Select = class Select extends BaseInput {
1440
1436
  this.onOptionSelect(event, option);
1441
1437
  }
1442
1438
  if (this.overlayVisible()) this.hide(this.filter());
1443
- if (consumedByOverlay) event.stopPropagation();
1444
1439
  }
1445
1440
  }
1446
1441
  }
@@ -1463,16 +1458,16 @@ var Select = class Select extends BaseInput {
1463
1458
  searchFields() {
1464
1459
  return this.filterBy()?.split(",") || this.filterFields() || [this.optionLabel()];
1465
1460
  }
1466
- searchOptions(event, char) {
1461
+ searchOptions(event, char, withSelection = true) {
1467
1462
  this.searchValue = (this.searchValue || "") + char;
1468
- let optionIndex = -1;
1469
1463
  let matched = false;
1470
- optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));
1471
- if (optionIndex !== -1) matched = true;
1472
- if (optionIndex === -1 && this.focusedOptionIndex() === -1) optionIndex = this.findFirstFocusedOptionIndex();
1473
- if (optionIndex !== -1) setTimeout(() => {
1474
- this.changeFocusedOptionIndex(event, optionIndex);
1475
- });
1464
+ if (isNotEmpty(this.searchValue)) {
1465
+ let optionIndex = this.visibleOptions().findIndex((option) => this.isOptionExactMatched(option));
1466
+ if (optionIndex === -1) optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));
1467
+ if (optionIndex !== -1) matched = true;
1468
+ if (optionIndex === -1 && this.focusedOptionIndex() === -1) optionIndex = this.findFirstFocusedOptionIndex();
1469
+ if (optionIndex !== -1) this.changeFocusedOptionIndex(event, optionIndex, withSelection);
1470
+ }
1476
1471
  if (this.searchTimeout) clearTimeout(this.searchTimeout);
1477
1472
  this.searchTimeout = setTimeout(() => {
1478
1473
  this.searchValue = "";
@@ -1480,8 +1475,11 @@ var Select = class Select extends BaseInput {
1480
1475
  }, 500);
1481
1476
  return matched;
1482
1477
  }
1478
+ isOptionExactMatched(option) {
1479
+ return this.isValidOption(option) && this.getOptionLabel(option).toString().toLocaleLowerCase(this.filterLocale()) === (this.searchValue ?? "").toLocaleLowerCase(this.filterLocale());
1480
+ }
1483
1481
  isOptionMatched(option) {
1484
- return this.isValidOption(option) && this.getOptionLabel(option).toString().toLocaleLowerCase(this.filterLocale()).startsWith(this.searchValue?.toLocaleLowerCase(this.filterLocale()));
1482
+ return this.isValidOption(option) && this.getOptionLabel(option).toString().toLocaleLowerCase(this.filterLocale()).startsWith((this.searchValue ?? "").toLocaleLowerCase(this.filterLocale()));
1485
1483
  }
1486
1484
  onFilterInputChange(event) {
1487
1485
  let value = event.target.value;
@@ -1492,10 +1490,26 @@ var Select = class Select extends BaseInput {
1492
1490
  filter: this._filterValue()
1493
1491
  });
1494
1492
  if (!this.virtualScrollerDisabled()) this.scroller()?.scrollToIndex(0);
1495
- setTimeout(() => {
1493
+ clearTimeout(this.alignOverlayTimeout);
1494
+ this.alignOverlayTimeout = setTimeout(() => {
1496
1495
  this.overlayViewChild()?.alignOverlay();
1497
1496
  });
1498
1497
  }
1498
+ clearTimers() {
1499
+ clearTimeout(this.alignOverlayTimeout);
1500
+ clearTimeout(this.changeTimeout);
1501
+ clearTimeout(this.scrollToSelectedTimeout);
1502
+ clearTimeout(this.scrollInViewTimeout);
1503
+ clearTimeout(this.searchTimeout);
1504
+ this.alignOverlayTimeout = null;
1505
+ this.changeTimeout = null;
1506
+ this.scrollToSelectedTimeout = null;
1507
+ this.scrollInViewTimeout = null;
1508
+ this.searchTimeout = null;
1509
+ }
1510
+ onDestroy() {
1511
+ this.clearTimers();
1512
+ }
1499
1513
  applyFocus() {
1500
1514
  if (this.editable()) findSingle(this.el.nativeElement, "[data-pc-section=\"label\"]").focus();
1501
1515
  else focus(this.focusInputViewChild()?.nativeElement);
@@ -1518,13 +1532,12 @@ var Select = class Select extends BaseInput {
1518
1532
  writeControlValue(value, setModelValue) {
1519
1533
  if (this.filter()) this.resetFilter();
1520
1534
  this.value = value;
1521
- if (this.allowModelChange()) this.onModelChange(value);
1522
1535
  setModelValue(this.value);
1523
1536
  this.updateEditableLabel();
1524
1537
  }
1525
1538
  static ɵfac = i0.ɵɵngDeclareFactory({
1526
1539
  minVersion: "12.0.0",
1527
- version: "22.2.0",
1540
+ version: "22.2.3",
1528
1541
  ngImport: i0,
1529
1542
  type: Select,
1530
1543
  deps: [],
@@ -1532,7 +1545,7 @@ var Select = class Select extends BaseInput {
1532
1545
  });
1533
1546
  static ɵcmp = i0.ɵɵngDeclareComponent({
1534
1547
  minVersion: "17.0.0",
1535
- version: "22.2.0",
1548
+ version: "22.2.3",
1536
1549
  type: Select,
1537
1550
  isStandalone: true,
1538
1551
  selector: "p-select",
@@ -1747,6 +1760,27 @@ var Select = class Select extends BaseInput {
1747
1760
  isRequired: false,
1748
1761
  transformFunction: null
1749
1762
  },
1763
+ filterMessage: {
1764
+ classPropertyName: "filterMessage",
1765
+ publicName: "filterMessage",
1766
+ isSignal: true,
1767
+ isRequired: false,
1768
+ transformFunction: null
1769
+ },
1770
+ selectionMessage: {
1771
+ classPropertyName: "selectionMessage",
1772
+ publicName: "selectionMessage",
1773
+ isSignal: true,
1774
+ isRequired: false,
1775
+ transformFunction: null
1776
+ },
1777
+ emptySelectionMessage: {
1778
+ classPropertyName: "emptySelectionMessage",
1779
+ publicName: "emptySelectionMessage",
1780
+ isSignal: true,
1781
+ isRequired: false,
1782
+ transformFunction: null
1783
+ },
1750
1784
  lazy: {
1751
1785
  classPropertyName: "lazy",
1752
1786
  publicName: "lazy",
@@ -2110,7 +2144,7 @@ var Select = class Select extends BaseInput {
2110
2144
  [attr.aria-labelledby]="ariaLabelledBy()"
2111
2145
  [attr.aria-haspopup]="'listbox'"
2112
2146
  [attr.aria-expanded]="$ariaExpanded"
2113
- [attr.aria-multiselectable]="$ariaMultiselectable()"
2147
+ [attr.aria-readonly]="$ariaReadonly()"
2114
2148
  [attr.aria-controls]="$ariaControls()"
2115
2149
  [attr.tabindex]="$tabindex()"
2116
2150
  [pAutoFocus]="autofocus()"
@@ -2119,7 +2153,6 @@ var Select = class Select extends BaseInput {
2119
2153
  (blur)="onInputBlur($event)"
2120
2154
  (keydown)="onKeyDown($event)"
2121
2155
  [attr.aria-required]="required()"
2122
- [attr.required]="$required()"
2123
2156
  [attr.disabled]="$disabledAttr()"
2124
2157
  [attr.data-p]="labelDataP()"
2125
2158
  >
@@ -2140,9 +2173,14 @@ var Select = class Select extends BaseInput {
2140
2173
  [attr.id]="inputId()"
2141
2174
  [class]="cx('label')"
2142
2175
  [pBind]="ptm('label')"
2176
+ role="combobox"
2177
+ [attr.aria-autocomplete]="'list'"
2143
2178
  [attr.aria-haspopup]="'listbox'"
2179
+ [attr.aria-expanded]="$ariaExpanded"
2180
+ [attr.aria-controls]="$ariaControls()"
2144
2181
  [attr.placeholder]="$placeholder()"
2145
- [attr.aria-label]="$ariaLabel()"
2182
+ [attr.aria-label]="ariaLabel()"
2183
+ [attr.aria-labelledby]="ariaLabelledBy()"
2146
2184
  (input)="onEditableInput($event)"
2147
2185
  (keydown)="onKeyDown($event)"
2148
2186
  [pAutoFocus]="autofocus()"
@@ -2186,12 +2224,12 @@ var Select = class Select extends BaseInput {
2186
2224
  } @else {
2187
2225
  @if (!dropdownIconTemplate()) {
2188
2226
  @if (dropdownIcon()) {
2189
- <span [class]="cn(cx('dropdownIcon'), dropdownIcon())" [pBind]="ptm('dropdownIcon')"></span>
2227
+ <span [class]="cn(cx('dropdownIcon'), dropdownIcon())" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true" [attr.data-p]="dropdownIconDataP()"></span>
2190
2228
  } @else {
2191
- <svg data-p-icon="chevron-down" [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" />
2229
+ <svg data-p-icon="chevron-down" [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true" [attr.data-p]="dropdownIconDataP()" />
2192
2230
  }
2193
2231
  } @else {
2194
- <span [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')">
2232
+ <span [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true">
2195
2233
  <ng-template *ngTemplateOutlet="dropdownIconTemplate(); context: dropdownIconContext()"></ng-template>
2196
2234
  </span>
2197
2235
  }
@@ -2217,8 +2255,7 @@ var Select = class Select extends BaseInput {
2217
2255
  <div [class]="cn(cx('overlay'), panelStyleClass())" [style]="panelStyle()" [pBind]="ptm('overlay')" [attr.data-p]="overlayDataP()">
2218
2256
  <span
2219
2257
  #firstHiddenFocusableEl
2220
- role="presentation"
2221
- class="p-hidden-accessible p-hidden-focusable"
2258
+ [class]="pcn('p-hidden-accessible p-hidden-focusable')"
2222
2259
  [attr.tabindex]="0"
2223
2260
  (focus)="onFirstHiddenFocus($event)"
2224
2261
  [attr.data-p-hidden-accessible]="true"
@@ -2228,7 +2265,7 @@ var Select = class Select extends BaseInput {
2228
2265
  </span>
2229
2266
  <ng-container *ngTemplateOutlet="headerTemplate(); context: { class: cx('header') }"></ng-container>
2230
2267
  @if (filter()) {
2231
- <div [class]="cx('header')" (click)="$event.stopPropagation()" [pBind]="ptm('header')">
2268
+ <div [class]="cx('header')" (click)="$event.stopPropagation()" (keydown)="onFilterTemplateKeyDown($event)" [pBind]="ptm('header')">
2232
2269
  @if (filterTemplate()) {
2233
2270
  <ng-container *ngTemplateOutlet="filterTemplate(); context: filterTemplateContext()"></ng-container>
2234
2271
  } @else {
@@ -2264,6 +2301,9 @@ var Select = class Select extends BaseInput {
2264
2301
  </p-inputicon>
2265
2302
  </p-iconfield>
2266
2303
  }
2304
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenFilterResult')" [attr.data-p-hidden-accessible]="true">
2305
+ {{ filterResultMessageText() }}
2306
+ </span>
2267
2307
  </div>
2268
2308
  }
2269
2309
  <div [class]="cx('listContainer')" [style.max-height]="virtualScroll() ? 'auto' : scrollHeight() || 'auto'" [pBind]="ptm('listContainer')">
@@ -2294,10 +2334,19 @@ var Select = class Select extends BaseInput {
2294
2334
  }
2295
2335
 
2296
2336
  <ng-template #buildInItems let-items let-scrollerOptions="options">
2297
- <ul #items [attr.id]="$id() + '_list'" [attr.aria-label]="listLabel()" [class]="cn(cx('list'), scrollerOptions.contentStyleClass)" [style]="scrollerOptions.contentStyle" role="listbox" [pBind]="ptm('list')">
2337
+ <ul
2338
+ #items
2339
+ [attr.id]="$id() + '_list'"
2340
+ [attr.aria-label]="listLabel()"
2341
+ [class]="cn(cx('list'), scrollerOptions.contentStyleClass)"
2342
+ [style]="scrollerOptions.contentStyle"
2343
+ role="listbox"
2344
+ [attr.aria-multiselectable]="$ariaMultiselectable()"
2345
+ [pBind]="ptm('list')"
2346
+ >
2298
2347
  @for (option of items; track trackOption(option, i); let i = $index) {
2299
2348
  @if (isOptionGroup(option)) {
2300
- <li [class]="cx('optionGroup')" [attr.id]="$id() + '_' + getOptionIndex(i, scrollerOptions)" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('optionGroup')">
2349
+ <li [class]="cx('optionGroup')" [attr.id]="$id() + '_' + getOptionIndex(i, scrollerOptions)" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('optionGroup')">
2301
2350
  @if (!groupTemplate()) {
2302
2351
  <span [class]="cx('optionGroupLabel')" [pBind]="ptm('optionGroupLabel')">{{ getOptionGroupLabel(option.optionGroup) }}</span>
2303
2352
  }
@@ -2324,7 +2373,7 @@ var Select = class Select extends BaseInput {
2324
2373
  }
2325
2374
  }
2326
2375
  @if (showEmptyFilterMessage()) {
2327
- <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('emptyMessage')">
2376
+ <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('emptyMessage')">
2328
2377
  @if (!hasEmptyTemplate()) {
2329
2378
  {{ emptyFilterMessageLabel() }}
2330
2379
  } @else {
@@ -2333,7 +2382,7 @@ var Select = class Select extends BaseInput {
2333
2382
  </li>
2334
2383
  }
2335
2384
  @if (showEmptyMessage()) {
2336
- <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('emptyMessage')">
2385
+ <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('emptyMessage')">
2337
2386
  @if (!emptyTemplate()) {
2338
2387
  {{ emptyMessageLabel() || emptyFilterMessageLabel() }}
2339
2388
  } @else {
@@ -2345,10 +2394,17 @@ var Select = class Select extends BaseInput {
2345
2394
  </ng-template>
2346
2395
  </div>
2347
2396
  <ng-container *ngTemplateOutlet="footerTemplate()"></ng-container>
2397
+ @if (!filter() && !_options()?.length) {
2398
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenEmptyMessage')" [attr.data-p-hidden-accessible]="true">
2399
+ {{ emptyMessageLabel() }}
2400
+ </span>
2401
+ }
2402
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenSelectedMessage')" [attr.data-p-hidden-accessible]="true">
2403
+ {{ selectedMessageText() }}
2404
+ </span>
2348
2405
  <span
2349
2406
  #lastHiddenFocusableEl
2350
- role="presentation"
2351
- class="p-hidden-accessible p-hidden-focusable"
2407
+ [class]="pcn('p-hidden-accessible p-hidden-focusable')"
2352
2408
  [pBind]="ptm('hiddenLastFocusableEl')"
2353
2409
  [attr.tabindex]="0"
2354
2410
  (focus)="onLastHiddenFocus($event)"
@@ -2382,8 +2438,6 @@ var Select = class Select extends BaseInput {
2382
2438
  "focused",
2383
2439
  "label",
2384
2440
  "disabled",
2385
- "visible",
2386
- "itemSize",
2387
2441
  "ariaPosInset",
2388
2442
  "ariaSetSize",
2389
2443
  "template",
@@ -2566,7 +2620,7 @@ var Select = class Select extends BaseInput {
2566
2620
  };
2567
2621
  i0.ɵɵngDeclareClassMetadata({
2568
2622
  minVersion: "12.0.0",
2569
- version: "22.2.0",
2623
+ version: "22.2.3",
2570
2624
  ngImport: i0,
2571
2625
  type: Select,
2572
2626
  decorators: [{
@@ -2608,7 +2662,7 @@ i0.ɵɵngDeclareClassMetadata({
2608
2662
  [attr.aria-labelledby]="ariaLabelledBy()"
2609
2663
  [attr.aria-haspopup]="'listbox'"
2610
2664
  [attr.aria-expanded]="$ariaExpanded"
2611
- [attr.aria-multiselectable]="$ariaMultiselectable()"
2665
+ [attr.aria-readonly]="$ariaReadonly()"
2612
2666
  [attr.aria-controls]="$ariaControls()"
2613
2667
  [attr.tabindex]="$tabindex()"
2614
2668
  [pAutoFocus]="autofocus()"
@@ -2617,7 +2671,6 @@ i0.ɵɵngDeclareClassMetadata({
2617
2671
  (blur)="onInputBlur($event)"
2618
2672
  (keydown)="onKeyDown($event)"
2619
2673
  [attr.aria-required]="required()"
2620
- [attr.required]="$required()"
2621
2674
  [attr.disabled]="$disabledAttr()"
2622
2675
  [attr.data-p]="labelDataP()"
2623
2676
  >
@@ -2638,9 +2691,14 @@ i0.ɵɵngDeclareClassMetadata({
2638
2691
  [attr.id]="inputId()"
2639
2692
  [class]="cx('label')"
2640
2693
  [pBind]="ptm('label')"
2694
+ role="combobox"
2695
+ [attr.aria-autocomplete]="'list'"
2641
2696
  [attr.aria-haspopup]="'listbox'"
2697
+ [attr.aria-expanded]="$ariaExpanded"
2698
+ [attr.aria-controls]="$ariaControls()"
2642
2699
  [attr.placeholder]="$placeholder()"
2643
- [attr.aria-label]="$ariaLabel()"
2700
+ [attr.aria-label]="ariaLabel()"
2701
+ [attr.aria-labelledby]="ariaLabelledBy()"
2644
2702
  (input)="onEditableInput($event)"
2645
2703
  (keydown)="onKeyDown($event)"
2646
2704
  [pAutoFocus]="autofocus()"
@@ -2684,12 +2742,12 @@ i0.ɵɵngDeclareClassMetadata({
2684
2742
  } @else {
2685
2743
  @if (!dropdownIconTemplate()) {
2686
2744
  @if (dropdownIcon()) {
2687
- <span [class]="cn(cx('dropdownIcon'), dropdownIcon())" [pBind]="ptm('dropdownIcon')"></span>
2745
+ <span [class]="cn(cx('dropdownIcon'), dropdownIcon())" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true" [attr.data-p]="dropdownIconDataP()"></span>
2688
2746
  } @else {
2689
- <svg data-p-icon="chevron-down" [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" />
2747
+ <svg data-p-icon="chevron-down" [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true" [attr.data-p]="dropdownIconDataP()" />
2690
2748
  }
2691
2749
  } @else {
2692
- <span [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')">
2750
+ <span [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true">
2693
2751
  <ng-template *ngTemplateOutlet="dropdownIconTemplate(); context: dropdownIconContext()"></ng-template>
2694
2752
  </span>
2695
2753
  }
@@ -2715,8 +2773,7 @@ i0.ɵɵngDeclareClassMetadata({
2715
2773
  <div [class]="cn(cx('overlay'), panelStyleClass())" [style]="panelStyle()" [pBind]="ptm('overlay')" [attr.data-p]="overlayDataP()">
2716
2774
  <span
2717
2775
  #firstHiddenFocusableEl
2718
- role="presentation"
2719
- class="p-hidden-accessible p-hidden-focusable"
2776
+ [class]="pcn('p-hidden-accessible p-hidden-focusable')"
2720
2777
  [attr.tabindex]="0"
2721
2778
  (focus)="onFirstHiddenFocus($event)"
2722
2779
  [attr.data-p-hidden-accessible]="true"
@@ -2726,7 +2783,7 @@ i0.ɵɵngDeclareClassMetadata({
2726
2783
  </span>
2727
2784
  <ng-container *ngTemplateOutlet="headerTemplate(); context: { class: cx('header') }"></ng-container>
2728
2785
  @if (filter()) {
2729
- <div [class]="cx('header')" (click)="$event.stopPropagation()" [pBind]="ptm('header')">
2786
+ <div [class]="cx('header')" (click)="$event.stopPropagation()" (keydown)="onFilterTemplateKeyDown($event)" [pBind]="ptm('header')">
2730
2787
  @if (filterTemplate()) {
2731
2788
  <ng-container *ngTemplateOutlet="filterTemplate(); context: filterTemplateContext()"></ng-container>
2732
2789
  } @else {
@@ -2762,6 +2819,9 @@ i0.ɵɵngDeclareClassMetadata({
2762
2819
  </p-inputicon>
2763
2820
  </p-iconfield>
2764
2821
  }
2822
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenFilterResult')" [attr.data-p-hidden-accessible]="true">
2823
+ {{ filterResultMessageText() }}
2824
+ </span>
2765
2825
  </div>
2766
2826
  }
2767
2827
  <div [class]="cx('listContainer')" [style.max-height]="virtualScroll() ? 'auto' : scrollHeight() || 'auto'" [pBind]="ptm('listContainer')">
@@ -2792,10 +2852,19 @@ i0.ɵɵngDeclareClassMetadata({
2792
2852
  }
2793
2853
 
2794
2854
  <ng-template #buildInItems let-items let-scrollerOptions="options">
2795
- <ul #items [attr.id]="$id() + '_list'" [attr.aria-label]="listLabel()" [class]="cn(cx('list'), scrollerOptions.contentStyleClass)" [style]="scrollerOptions.contentStyle" role="listbox" [pBind]="ptm('list')">
2855
+ <ul
2856
+ #items
2857
+ [attr.id]="$id() + '_list'"
2858
+ [attr.aria-label]="listLabel()"
2859
+ [class]="cn(cx('list'), scrollerOptions.contentStyleClass)"
2860
+ [style]="scrollerOptions.contentStyle"
2861
+ role="listbox"
2862
+ [attr.aria-multiselectable]="$ariaMultiselectable()"
2863
+ [pBind]="ptm('list')"
2864
+ >
2796
2865
  @for (option of items; track trackOption(option, i); let i = $index) {
2797
2866
  @if (isOptionGroup(option)) {
2798
- <li [class]="cx('optionGroup')" [attr.id]="$id() + '_' + getOptionIndex(i, scrollerOptions)" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('optionGroup')">
2867
+ <li [class]="cx('optionGroup')" [attr.id]="$id() + '_' + getOptionIndex(i, scrollerOptions)" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('optionGroup')">
2799
2868
  @if (!groupTemplate()) {
2800
2869
  <span [class]="cx('optionGroupLabel')" [pBind]="ptm('optionGroupLabel')">{{ getOptionGroupLabel(option.optionGroup) }}</span>
2801
2870
  }
@@ -2822,7 +2891,7 @@ i0.ɵɵngDeclareClassMetadata({
2822
2891
  }
2823
2892
  }
2824
2893
  @if (showEmptyFilterMessage()) {
2825
- <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('emptyMessage')">
2894
+ <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('emptyMessage')">
2826
2895
  @if (!hasEmptyTemplate()) {
2827
2896
  {{ emptyFilterMessageLabel() }}
2828
2897
  } @else {
@@ -2831,7 +2900,7 @@ i0.ɵɵngDeclareClassMetadata({
2831
2900
  </li>
2832
2901
  }
2833
2902
  @if (showEmptyMessage()) {
2834
- <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('emptyMessage')">
2903
+ <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('emptyMessage')">
2835
2904
  @if (!emptyTemplate()) {
2836
2905
  {{ emptyMessageLabel() || emptyFilterMessageLabel() }}
2837
2906
  } @else {
@@ -2843,10 +2912,17 @@ i0.ɵɵngDeclareClassMetadata({
2843
2912
  </ng-template>
2844
2913
  </div>
2845
2914
  <ng-container *ngTemplateOutlet="footerTemplate()"></ng-container>
2915
+ @if (!filter() && !_options()?.length) {
2916
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenEmptyMessage')" [attr.data-p-hidden-accessible]="true">
2917
+ {{ emptyMessageLabel() }}
2918
+ </span>
2919
+ }
2920
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenSelectedMessage')" [attr.data-p-hidden-accessible]="true">
2921
+ {{ selectedMessageText() }}
2922
+ </span>
2846
2923
  <span
2847
2924
  #lastHiddenFocusableEl
2848
- role="presentation"
2849
- class="p-hidden-accessible p-hidden-focusable"
2925
+ [class]="pcn('p-hidden-accessible p-hidden-focusable')"
2850
2926
  [pBind]="ptm('hiddenLastFocusableEl')"
2851
2927
  [attr.tabindex]="0"
2852
2928
  (focus)="onLastHiddenFocus($event)"
@@ -3122,6 +3198,30 @@ i0.ɵɵngDeclareClassMetadata({
3122
3198
  required: false
3123
3199
  }]
3124
3200
  }],
3201
+ filterMessage: [{
3202
+ type: i0.Input,
3203
+ args: [{
3204
+ isSignal: true,
3205
+ alias: "filterMessage",
3206
+ required: false
3207
+ }]
3208
+ }],
3209
+ selectionMessage: [{
3210
+ type: i0.Input,
3211
+ args: [{
3212
+ isSignal: true,
3213
+ alias: "selectionMessage",
3214
+ required: false
3215
+ }]
3216
+ }],
3217
+ emptySelectionMessage: [{
3218
+ type: i0.Input,
3219
+ args: [{
3220
+ isSignal: true,
3221
+ alias: "emptySelectionMessage",
3222
+ required: false
3223
+ }]
3224
+ }],
3125
3225
  lazy: [{
3126
3226
  type: i0.Input,
3127
3227
  args: [{
@@ -3483,7 +3583,7 @@ i0.ɵɵngDeclareClassMetadata({
3483
3583
  var SelectModule = class SelectModule {
3484
3584
  static ɵfac = i0.ɵɵngDeclareFactory({
3485
3585
  minVersion: "12.0.0",
3486
- version: "22.2.0",
3586
+ version: "22.2.3",
3487
3587
  ngImport: i0,
3488
3588
  type: SelectModule,
3489
3589
  deps: [],
@@ -3491,7 +3591,7 @@ var SelectModule = class SelectModule {
3491
3591
  });
3492
3592
  static ɵmod = i0.ɵɵngDeclareNgModule({
3493
3593
  minVersion: "14.0.0",
3494
- version: "22.2.0",
3594
+ version: "22.2.3",
3495
3595
  ngImport: i0,
3496
3596
  type: SelectModule,
3497
3597
  imports: [Select, SharedModule],
@@ -3499,7 +3599,7 @@ var SelectModule = class SelectModule {
3499
3599
  });
3500
3600
  static ɵinj = i0.ɵɵngDeclareInjector({
3501
3601
  minVersion: "12.0.0",
3502
- version: "22.2.0",
3602
+ version: "22.2.3",
3503
3603
  ngImport: i0,
3504
3604
  type: SelectModule,
3505
3605
  imports: [
@@ -3511,7 +3611,7 @@ var SelectModule = class SelectModule {
3511
3611
  };
3512
3612
  i0.ɵɵngDeclareClassMetadata({
3513
3613
  minVersion: "12.0.0",
3514
- version: "22.2.0",
3614
+ version: "22.2.3",
3515
3615
  ngImport: i0,
3516
3616
  type: SelectModule,
3517
3617
  decorators: [{
@@ -3524,4 +3624,3 @@ i0.ɵɵngDeclareClassMetadata({
3524
3624
  });
3525
3625
  export { SELECT_VALUE_ACCESSOR, Select, SelectClasses, SelectModule, SelectStyle };
3526
3626
 
3527
- //# sourceMappingURL=primeng-select.mjs.map