primeng 22.1.2 → 22.1.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 (406) 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 +41 -31
  10. package/fesm2022/primeng-basecomponent.mjs +108 -44
  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 +39 -18
  30. package/fesm2022/primeng-confirmdialog.mjs +29 -21
  31. package/fesm2022/primeng-confirmpopup.mjs +22 -21
  32. package/fesm2022/primeng-contextmenu.mjs +29 -28
  33. package/fesm2022/primeng-dataview.mjs +10 -11
  34. package/fesm2022/primeng-datepicker.mjs +110 -87
  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 +20 -22
  41. package/fesm2022/primeng-dynamicdialog.mjs +23 -22
  42. package/fesm2022/primeng-editor.mjs +10 -11
  43. package/fesm2022/primeng-fieldset.mjs +13 -15
  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 -15
  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 +16 -14
  151. package/fesm2022/primeng-scrollpanel.mjs +23 -24
  152. package/fesm2022/primeng-scrolltop.mjs +12 -13
  153. package/fesm2022/primeng-select.mjs +243 -146
  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 +183 -162
  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 +18 -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 +3 -1
  189. package/types/primeng-basecomponent.d.ts +34 -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 +27 -2
  194. package/types/primeng-confirmdialog.d.ts +1 -0
  195. package/types/primeng-confirmpopup.d.ts +1 -3
  196. package/types/primeng-datepicker.d.ts +2 -12
  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 +2 -1
  214. package/types/primeng-select.d.ts +54 -13
  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 +2 -75
  219. package/types/primeng-tabs.d.ts +2 -16
  220. package/types/primeng-toast.d.ts +4 -2
  221. package/types/primeng-treetable.d.ts +4 -92
  222. package/types/primeng-types-listbox.d.ts +1 -1
  223. package/types/primeng-types-select.d.ts +4 -0
  224. package/types/primeng-useid.d.ts +15 -0
  225. package/types/primeng-usestyle.d.ts +87 -7
  226. package/types/primeng-utils.d.ts +42 -0
  227. package/fesm2022/primeng-accordion.mjs.map +0 -1
  228. package/fesm2022/primeng-animateonscroll.mjs.map +0 -1
  229. package/fesm2022/primeng-api.mjs.map +0 -1
  230. package/fesm2022/primeng-autocomplete.mjs.map +0 -1
  231. package/fesm2022/primeng-autofocus.mjs.map +0 -1
  232. package/fesm2022/primeng-avatar.mjs.map +0 -1
  233. package/fesm2022/primeng-avatargroup.mjs.map +0 -1
  234. package/fesm2022/primeng-badge.mjs.map +0 -1
  235. package/fesm2022/primeng-base.mjs.map +0 -1
  236. package/fesm2022/primeng-basecomponent.mjs.map +0 -1
  237. package/fesm2022/primeng-baseeditableholder.mjs.map +0 -1
  238. package/fesm2022/primeng-baseinput.mjs.map +0 -1
  239. package/fesm2022/primeng-basemodelholder.mjs.map +0 -1
  240. package/fesm2022/primeng-bind.mjs.map +0 -1
  241. package/fesm2022/primeng-blockui.mjs.map +0 -1
  242. package/fesm2022/primeng-breadcrumb.mjs.map +0 -1
  243. package/fesm2022/primeng-button.mjs.map +0 -1
  244. package/fesm2022/primeng-buttongroup.mjs.map +0 -1
  245. package/fesm2022/primeng-card.mjs.map +0 -1
  246. package/fesm2022/primeng-carousel.mjs.map +0 -1
  247. package/fesm2022/primeng-cascadeselect.mjs.map +0 -1
  248. package/fesm2022/primeng-chart.mjs.map +0 -1
  249. package/fesm2022/primeng-checkbox.mjs.map +0 -1
  250. package/fesm2022/primeng-chip.mjs.map +0 -1
  251. package/fesm2022/primeng-classnames.mjs.map +0 -1
  252. package/fesm2022/primeng-colorpicker.mjs.map +0 -1
  253. package/fesm2022/primeng-commandmenu.mjs.map +0 -1
  254. package/fesm2022/primeng-compare.mjs.map +0 -1
  255. package/fesm2022/primeng-config.mjs.map +0 -1
  256. package/fesm2022/primeng-confirmdialog.mjs.map +0 -1
  257. package/fesm2022/primeng-confirmpopup.mjs.map +0 -1
  258. package/fesm2022/primeng-contextmenu.mjs.map +0 -1
  259. package/fesm2022/primeng-dataview.mjs.map +0 -1
  260. package/fesm2022/primeng-datepicker.mjs.map +0 -1
  261. package/fesm2022/primeng-dialog.mjs.map +0 -1
  262. package/fesm2022/primeng-divider.mjs.map +0 -1
  263. package/fesm2022/primeng-dock.mjs.map +0 -1
  264. package/fesm2022/primeng-dom.mjs.map +0 -1
  265. package/fesm2022/primeng-dragdrop.mjs.map +0 -1
  266. package/fesm2022/primeng-drawer.mjs.map +0 -1
  267. package/fesm2022/primeng-dynamicdialog.mjs.map +0 -1
  268. package/fesm2022/primeng-editor.mjs.map +0 -1
  269. package/fesm2022/primeng-fieldset.mjs.map +0 -1
  270. package/fesm2022/primeng-fileupload.mjs.map +0 -1
  271. package/fesm2022/primeng-floatlabel.mjs.map +0 -1
  272. package/fesm2022/primeng-fluid.mjs.map +0 -1
  273. package/fesm2022/primeng-focustrap.mjs.map +0 -1
  274. package/fesm2022/primeng-galleria.mjs.map +0 -1
  275. package/fesm2022/primeng-gallery.mjs.map +0 -1
  276. package/fesm2022/primeng-iconfield.mjs.map +0 -1
  277. package/fesm2022/primeng-icons-angledoubledown.mjs.map +0 -1
  278. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +0 -1
  279. package/fesm2022/primeng-icons-angledoubleright.mjs.map +0 -1
  280. package/fesm2022/primeng-icons-angledoubleup.mjs.map +0 -1
  281. package/fesm2022/primeng-icons-angledown.mjs.map +0 -1
  282. package/fesm2022/primeng-icons-angleleft.mjs.map +0 -1
  283. package/fesm2022/primeng-icons-angleright.mjs.map +0 -1
  284. package/fesm2022/primeng-icons-angleup.mjs.map +0 -1
  285. package/fesm2022/primeng-icons-arrowdown.mjs.map +0 -1
  286. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +0 -1
  287. package/fesm2022/primeng-icons-arrowdownright.mjs.map +0 -1
  288. package/fesm2022/primeng-icons-arrowleft.mjs.map +0 -1
  289. package/fesm2022/primeng-icons-arrowright.mjs.map +0 -1
  290. package/fesm2022/primeng-icons-arrowup.mjs.map +0 -1
  291. package/fesm2022/primeng-icons-ban.mjs.map +0 -1
  292. package/fesm2022/primeng-icons-bars.mjs.map +0 -1
  293. package/fesm2022/primeng-icons-baseicon.mjs.map +0 -1
  294. package/fesm2022/primeng-icons-blank.mjs.map +0 -1
  295. package/fesm2022/primeng-icons-calendar.mjs.map +0 -1
  296. package/fesm2022/primeng-icons-caretleft.mjs.map +0 -1
  297. package/fesm2022/primeng-icons-caretright.mjs.map +0 -1
  298. package/fesm2022/primeng-icons-check.mjs.map +0 -1
  299. package/fesm2022/primeng-icons-chevrondown.mjs.map +0 -1
  300. package/fesm2022/primeng-icons-chevronleft.mjs.map +0 -1
  301. package/fesm2022/primeng-icons-chevronright.mjs.map +0 -1
  302. package/fesm2022/primeng-icons-chevronup.mjs.map +0 -1
  303. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +0 -1
  304. package/fesm2022/primeng-icons-eye.mjs.map +0 -1
  305. package/fesm2022/primeng-icons-eyeslash.mjs.map +0 -1
  306. package/fesm2022/primeng-icons-filter.mjs.map +0 -1
  307. package/fesm2022/primeng-icons-filterfill.mjs.map +0 -1
  308. package/fesm2022/primeng-icons-filterslash.mjs.map +0 -1
  309. package/fesm2022/primeng-icons-home.mjs.map +0 -1
  310. package/fesm2022/primeng-icons-infocircle.mjs.map +0 -1
  311. package/fesm2022/primeng-icons-minus.mjs.map +0 -1
  312. package/fesm2022/primeng-icons-pencil.mjs.map +0 -1
  313. package/fesm2022/primeng-icons-plus.mjs.map +0 -1
  314. package/fesm2022/primeng-icons-refresh.mjs.map +0 -1
  315. package/fesm2022/primeng-icons-search.mjs.map +0 -1
  316. package/fesm2022/primeng-icons-searchminus.mjs.map +0 -1
  317. package/fesm2022/primeng-icons-searchplus.mjs.map +0 -1
  318. package/fesm2022/primeng-icons-sortalt.mjs.map +0 -1
  319. package/fesm2022/primeng-icons-sortamountdown.mjs.map +0 -1
  320. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +0 -1
  321. package/fesm2022/primeng-icons-spinner.mjs.map +0 -1
  322. package/fesm2022/primeng-icons-star.mjs.map +0 -1
  323. package/fesm2022/primeng-icons-starfill.mjs.map +0 -1
  324. package/fesm2022/primeng-icons-thlarge.mjs.map +0 -1
  325. package/fesm2022/primeng-icons-times.mjs.map +0 -1
  326. package/fesm2022/primeng-icons-timescircle.mjs.map +0 -1
  327. package/fesm2022/primeng-icons-trash.mjs.map +0 -1
  328. package/fesm2022/primeng-icons-undo.mjs.map +0 -1
  329. package/fesm2022/primeng-icons-upload.mjs.map +0 -1
  330. package/fesm2022/primeng-icons-windowmaximize.mjs.map +0 -1
  331. package/fesm2022/primeng-icons-windowminimize.mjs.map +0 -1
  332. package/fesm2022/primeng-iftalabel.mjs.map +0 -1
  333. package/fesm2022/primeng-image.mjs.map +0 -1
  334. package/fesm2022/primeng-imagecompare.mjs.map +0 -1
  335. package/fesm2022/primeng-inplace.mjs.map +0 -1
  336. package/fesm2022/primeng-inputcolor.mjs.map +0 -1
  337. package/fesm2022/primeng-inputgroup.mjs.map +0 -1
  338. package/fesm2022/primeng-inputgroupaddon.mjs.map +0 -1
  339. package/fesm2022/primeng-inputicon.mjs.map +0 -1
  340. package/fesm2022/primeng-inputmask.mjs.map +0 -1
  341. package/fesm2022/primeng-inputnumber.mjs.map +0 -1
  342. package/fesm2022/primeng-inputotp.mjs.map +0 -1
  343. package/fesm2022/primeng-inputpassword.mjs.map +0 -1
  344. package/fesm2022/primeng-inputtags.mjs.map +0 -1
  345. package/fesm2022/primeng-inputtext.mjs.map +0 -1
  346. package/fesm2022/primeng-keyfilter.mjs.map +0 -1
  347. package/fesm2022/primeng-knob.mjs.map +0 -1
  348. package/fesm2022/primeng-label.mjs.map +0 -1
  349. package/fesm2022/primeng-license.mjs.map +0 -1
  350. package/fesm2022/primeng-listbox.mjs.map +0 -1
  351. package/fesm2022/primeng-megamenu.mjs.map +0 -1
  352. package/fesm2022/primeng-menu.mjs.map +0 -1
  353. package/fesm2022/primeng-menubar.mjs.map +0 -1
  354. package/fesm2022/primeng-message.mjs.map +0 -1
  355. package/fesm2022/primeng-metergroup.mjs.map +0 -1
  356. package/fesm2022/primeng-motion.mjs.map +0 -1
  357. package/fesm2022/primeng-multiselect.mjs.map +0 -1
  358. package/fesm2022/primeng-orderlist.mjs.map +0 -1
  359. package/fesm2022/primeng-organizationchart.mjs.map +0 -1
  360. package/fesm2022/primeng-overlay.mjs.map +0 -1
  361. package/fesm2022/primeng-overlaybadge.mjs.map +0 -1
  362. package/fesm2022/primeng-paginator.mjs.map +0 -1
  363. package/fesm2022/primeng-panel.mjs.map +0 -1
  364. package/fesm2022/primeng-panelmenu.mjs.map +0 -1
  365. package/fesm2022/primeng-passthrough.mjs.map +0 -1
  366. package/fesm2022/primeng-password.mjs.map +0 -1
  367. package/fesm2022/primeng-picklist.mjs.map +0 -1
  368. package/fesm2022/primeng-popover.mjs.map +0 -1
  369. package/fesm2022/primeng-progressbar.mjs.map +0 -1
  370. package/fesm2022/primeng-progressspinner.mjs.map +0 -1
  371. package/fesm2022/primeng-radiobutton.mjs.map +0 -1
  372. package/fesm2022/primeng-rating.mjs.map +0 -1
  373. package/fesm2022/primeng-ripple.mjs.map +0 -1
  374. package/fesm2022/primeng-scrollarea.mjs.map +0 -1
  375. package/fesm2022/primeng-scroller.mjs.map +0 -1
  376. package/fesm2022/primeng-scrollpanel.mjs.map +0 -1
  377. package/fesm2022/primeng-scrolltop.mjs.map +0 -1
  378. package/fesm2022/primeng-select.mjs.map +0 -1
  379. package/fesm2022/primeng-selectbutton.mjs.map +0 -1
  380. package/fesm2022/primeng-sidebar.mjs.map +0 -1
  381. package/fesm2022/primeng-skeleton.mjs.map +0 -1
  382. package/fesm2022/primeng-slider.mjs.map +0 -1
  383. package/fesm2022/primeng-speeddial.mjs.map +0 -1
  384. package/fesm2022/primeng-splitbutton.mjs.map +0 -1
  385. package/fesm2022/primeng-splitter.mjs.map +0 -1
  386. package/fesm2022/primeng-stepper.mjs.map +0 -1
  387. package/fesm2022/primeng-steps.mjs.map +0 -1
  388. package/fesm2022/primeng-styleclass.mjs.map +0 -1
  389. package/fesm2022/primeng-table.mjs.map +0 -1
  390. package/fesm2022/primeng-tabs.mjs.map +0 -1
  391. package/fesm2022/primeng-tag.mjs.map +0 -1
  392. package/fesm2022/primeng-terminal.mjs.map +0 -1
  393. package/fesm2022/primeng-textarea.mjs.map +0 -1
  394. package/fesm2022/primeng-tieredmenu.mjs.map +0 -1
  395. package/fesm2022/primeng-timeline.mjs.map +0 -1
  396. package/fesm2022/primeng-toast.mjs.map +0 -1
  397. package/fesm2022/primeng-togglebutton.mjs.map +0 -1
  398. package/fesm2022/primeng-toggleswitch.mjs.map +0 -1
  399. package/fesm2022/primeng-toolbar.mjs.map +0 -1
  400. package/fesm2022/primeng-tooltip.mjs.map +0 -1
  401. package/fesm2022/primeng-tree.mjs.map +0 -1
  402. package/fesm2022/primeng-treeselect.mjs.map +0 -1
  403. package/fesm2022/primeng-treetable.mjs.map +0 -1
  404. package/fesm2022/primeng-usestyle.mjs.map +0 -1
  405. package/fesm2022/primeng-utils.mjs.map +0 -1
  406. 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", () => 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
  }
@@ -1022,18 +1020,9 @@ var Select = class Select extends BaseInput {
1022
1020
  onAfterViewInit() {
1023
1021
  if (!isPlatformBrowser(this.platformId)) return;
1024
1022
  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
1023
  }
1035
1024
  updateEditableLabel() {
1036
- if (this.editableInputViewChild()) this.editableInputViewChild().nativeElement.value = this.getOptionLabel(this.selectedOption()) || this.modelValue() || "";
1025
+ if (this.editableInputViewChild()) this.editableInputViewChild().nativeElement.value = this.getOptionLabel(this.selectedOption()) || this.getValueLabel(this.modelValue()) || this.modelValue() || "";
1037
1026
  }
1038
1027
  clearEditableLabel() {
1039
1028
  if (this.editableInputViewChild()) this.editableInputViewChild().nativeElement.value = "";
@@ -1044,6 +1033,11 @@ var Select = class Select extends BaseInput {
1044
1033
  getOptionLabel(option) {
1045
1034
  return this.optionLabel() !== void 0 && this.optionLabel() !== null ? resolveFieldData(option, this.optionLabel()) : option && option.label !== void 0 ? option.label : option;
1046
1035
  }
1036
+ getValueLabel(value) {
1037
+ if (this.optionValue() || value == null) return null;
1038
+ const label = this.getOptionLabel(value);
1039
+ return isScalar(label) && label !== "" ? label : null;
1040
+ }
1047
1041
  getOptionValue(option) {
1048
1042
  return this.optionValue() && this.optionValue() !== null ? resolveFieldData(option, this.optionValue()) : !this.optionLabel() && option && option.value !== void 0 ? option.value : option;
1049
1043
  }
@@ -1096,10 +1090,9 @@ var Select = class Select extends BaseInput {
1096
1090
  onEditableInput(event) {
1097
1091
  const value = event.target.value;
1098
1092
  this.searchValue = "";
1099
- if (!this.searchOptions(event, value)) this.focusedOptionIndex.set(-1);
1100
- this.onModelChange(value);
1093
+ if (!this.searchOptions(event, value, false)) this.focusedOptionIndex.set(-1);
1101
1094
  this.updateModel(value || null, event);
1102
- setTimeout(() => {
1095
+ this.changeTimeout = setTimeout(() => {
1103
1096
  this.onChange.emit({
1104
1097
  originalEvent: event,
1105
1098
  value
@@ -1127,7 +1120,7 @@ var Select = class Select extends BaseInput {
1127
1120
  if (this._options() && this._options().length) {
1128
1121
  if (this.virtualScroll()) {
1129
1122
  const selectedIndex = this.modelValue() ? this.focusedOptionIndex() : -1;
1130
- if (selectedIndex !== -1) setTimeout(() => {
1123
+ if (selectedIndex !== -1) this.scrollToSelectedTimeout = setTimeout(() => {
1131
1124
  this.scroller()?.scrollToIndex(selectedIndex);
1132
1125
  }, 10);
1133
1126
  } else {
@@ -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":
@@ -1229,6 +1223,7 @@ var Select = class Select extends BaseInput {
1229
1223
  this.clicked.set(false);
1230
1224
  }
1231
1225
  onFilterKeyDown(event) {
1226
+ if (event.isComposing || event.keyCode === 229) return;
1232
1227
  switch (event.code) {
1233
1228
  case "ArrowDown":
1234
1229
  this.onArrowDownKey(event);
@@ -1270,29 +1265,26 @@ var Select = class Select extends BaseInput {
1270
1265
  event.preventDefault();
1271
1266
  event.stopPropagation();
1272
1267
  }
1273
- changeFocusedOptionIndex(event, index) {
1268
+ changeFocusedOptionIndex(event, index, withSelection = true) {
1274
1269
  if (this.focusedOptionIndex() !== index) {
1275
1270
  this.focusedOptionIndex.set(index);
1276
1271
  this.scrollInView();
1277
- if (this.selectOnFocus() && !this.multiple()) {
1272
+ if (this.selectOnFocus() && withSelection && !this.multiple()) {
1278
1273
  const option = this.visibleOptions()[index];
1279
1274
  this.onOptionSelect(event, option, false);
1280
1275
  }
1281
1276
  }
1282
1277
  }
1283
1278
  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
- }
1279
+ this.scrollInViewTimeout = setTimeout(() => {
1280
+ const id = index !== -1 ? `${this.$id()}_${index}` : this.focusedOptionId();
1281
+ const element = this.itemsViewChild()?.nativeElement ? findSingle(this.itemsViewChild().nativeElement, `li[id="${id}"]`) : null;
1282
+ if (element) element.scrollIntoView?.({
1283
+ block: "nearest",
1284
+ inline: "nearest"
1285
+ });
1286
+ else if (!this.virtualScrollerDisabled() && this.virtualScroll()) this.scroller()?.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());
1287
+ }, 0);
1296
1288
  }
1297
1289
  hasSelectedOption() {
1298
1290
  return this.modelValue() !== void 0;
@@ -1463,16 +1455,16 @@ var Select = class Select extends BaseInput {
1463
1455
  searchFields() {
1464
1456
  return this.filterBy()?.split(",") || this.filterFields() || [this.optionLabel()];
1465
1457
  }
1466
- searchOptions(event, char) {
1458
+ searchOptions(event, char, withSelection = true) {
1467
1459
  this.searchValue = (this.searchValue || "") + char;
1468
- let optionIndex = -1;
1469
1460
  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
- });
1461
+ if (isNotEmpty(this.searchValue)) {
1462
+ let optionIndex = this.visibleOptions().findIndex((option) => this.isOptionExactMatched(option));
1463
+ if (optionIndex === -1) optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));
1464
+ if (optionIndex !== -1) matched = true;
1465
+ if (optionIndex === -1 && this.focusedOptionIndex() === -1) optionIndex = this.findFirstFocusedOptionIndex();
1466
+ if (optionIndex !== -1) this.changeFocusedOptionIndex(event, optionIndex, withSelection);
1467
+ }
1476
1468
  if (this.searchTimeout) clearTimeout(this.searchTimeout);
1477
1469
  this.searchTimeout = setTimeout(() => {
1478
1470
  this.searchValue = "";
@@ -1480,8 +1472,11 @@ var Select = class Select extends BaseInput {
1480
1472
  }, 500);
1481
1473
  return matched;
1482
1474
  }
1475
+ isOptionExactMatched(option) {
1476
+ return this.isValidOption(option) && this.getOptionLabel(option).toString().toLocaleLowerCase(this.filterLocale()) === (this.searchValue ?? "").toLocaleLowerCase(this.filterLocale());
1477
+ }
1483
1478
  isOptionMatched(option) {
1484
- return this.isValidOption(option) && this.getOptionLabel(option).toString().toLocaleLowerCase(this.filterLocale()).startsWith(this.searchValue?.toLocaleLowerCase(this.filterLocale()));
1479
+ return this.isValidOption(option) && this.getOptionLabel(option).toString().toLocaleLowerCase(this.filterLocale()).startsWith((this.searchValue ?? "").toLocaleLowerCase(this.filterLocale()));
1485
1480
  }
1486
1481
  onFilterInputChange(event) {
1487
1482
  let value = event.target.value;
@@ -1492,10 +1487,26 @@ var Select = class Select extends BaseInput {
1492
1487
  filter: this._filterValue()
1493
1488
  });
1494
1489
  if (!this.virtualScrollerDisabled()) this.scroller()?.scrollToIndex(0);
1495
- setTimeout(() => {
1490
+ clearTimeout(this.alignOverlayTimeout);
1491
+ this.alignOverlayTimeout = setTimeout(() => {
1496
1492
  this.overlayViewChild()?.alignOverlay();
1497
1493
  });
1498
1494
  }
1495
+ clearTimers() {
1496
+ clearTimeout(this.alignOverlayTimeout);
1497
+ clearTimeout(this.changeTimeout);
1498
+ clearTimeout(this.scrollToSelectedTimeout);
1499
+ clearTimeout(this.scrollInViewTimeout);
1500
+ clearTimeout(this.searchTimeout);
1501
+ this.alignOverlayTimeout = null;
1502
+ this.changeTimeout = null;
1503
+ this.scrollToSelectedTimeout = null;
1504
+ this.scrollInViewTimeout = null;
1505
+ this.searchTimeout = null;
1506
+ }
1507
+ onDestroy() {
1508
+ this.clearTimers();
1509
+ }
1499
1510
  applyFocus() {
1500
1511
  if (this.editable()) findSingle(this.el.nativeElement, "[data-pc-section=\"label\"]").focus();
1501
1512
  else focus(this.focusInputViewChild()?.nativeElement);
@@ -1524,7 +1535,7 @@ var Select = class Select extends BaseInput {
1524
1535
  }
1525
1536
  static ɵfac = i0.ɵɵngDeclareFactory({
1526
1537
  minVersion: "12.0.0",
1527
- version: "22.2.0",
1538
+ version: "22.2.3",
1528
1539
  ngImport: i0,
1529
1540
  type: Select,
1530
1541
  deps: [],
@@ -1532,7 +1543,7 @@ var Select = class Select extends BaseInput {
1532
1543
  });
1533
1544
  static ɵcmp = i0.ɵɵngDeclareComponent({
1534
1545
  minVersion: "17.0.0",
1535
- version: "22.2.0",
1546
+ version: "22.2.3",
1536
1547
  type: Select,
1537
1548
  isStandalone: true,
1538
1549
  selector: "p-select",
@@ -1747,6 +1758,27 @@ var Select = class Select extends BaseInput {
1747
1758
  isRequired: false,
1748
1759
  transformFunction: null
1749
1760
  },
1761
+ filterMessage: {
1762
+ classPropertyName: "filterMessage",
1763
+ publicName: "filterMessage",
1764
+ isSignal: true,
1765
+ isRequired: false,
1766
+ transformFunction: null
1767
+ },
1768
+ selectionMessage: {
1769
+ classPropertyName: "selectionMessage",
1770
+ publicName: "selectionMessage",
1771
+ isSignal: true,
1772
+ isRequired: false,
1773
+ transformFunction: null
1774
+ },
1775
+ emptySelectionMessage: {
1776
+ classPropertyName: "emptySelectionMessage",
1777
+ publicName: "emptySelectionMessage",
1778
+ isSignal: true,
1779
+ isRequired: false,
1780
+ transformFunction: null
1781
+ },
1750
1782
  lazy: {
1751
1783
  classPropertyName: "lazy",
1752
1784
  publicName: "lazy",
@@ -2110,7 +2142,7 @@ var Select = class Select extends BaseInput {
2110
2142
  [attr.aria-labelledby]="ariaLabelledBy()"
2111
2143
  [attr.aria-haspopup]="'listbox'"
2112
2144
  [attr.aria-expanded]="$ariaExpanded"
2113
- [attr.aria-multiselectable]="$ariaMultiselectable()"
2145
+ [attr.aria-readonly]="$ariaReadonly()"
2114
2146
  [attr.aria-controls]="$ariaControls()"
2115
2147
  [attr.tabindex]="$tabindex()"
2116
2148
  [pAutoFocus]="autofocus()"
@@ -2119,7 +2151,6 @@ var Select = class Select extends BaseInput {
2119
2151
  (blur)="onInputBlur($event)"
2120
2152
  (keydown)="onKeyDown($event)"
2121
2153
  [attr.aria-required]="required()"
2122
- [attr.required]="$required()"
2123
2154
  [attr.disabled]="$disabledAttr()"
2124
2155
  [attr.data-p]="labelDataP()"
2125
2156
  >
@@ -2140,9 +2171,14 @@ var Select = class Select extends BaseInput {
2140
2171
  [attr.id]="inputId()"
2141
2172
  [class]="cx('label')"
2142
2173
  [pBind]="ptm('label')"
2174
+ role="combobox"
2175
+ [attr.aria-autocomplete]="'list'"
2143
2176
  [attr.aria-haspopup]="'listbox'"
2177
+ [attr.aria-expanded]="$ariaExpanded"
2178
+ [attr.aria-controls]="$ariaControls()"
2144
2179
  [attr.placeholder]="$placeholder()"
2145
- [attr.aria-label]="$ariaLabel()"
2180
+ [attr.aria-label]="ariaLabel()"
2181
+ [attr.aria-labelledby]="ariaLabelledBy()"
2146
2182
  (input)="onEditableInput($event)"
2147
2183
  (keydown)="onKeyDown($event)"
2148
2184
  [pAutoFocus]="autofocus()"
@@ -2186,12 +2222,12 @@ var Select = class Select extends BaseInput {
2186
2222
  } @else {
2187
2223
  @if (!dropdownIconTemplate()) {
2188
2224
  @if (dropdownIcon()) {
2189
- <span [class]="cn(cx('dropdownIcon'), dropdownIcon())" [pBind]="ptm('dropdownIcon')"></span>
2225
+ <span [class]="cn(cx('dropdownIcon'), dropdownIcon())" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true" [attr.data-p]="dropdownIconDataP()"></span>
2190
2226
  } @else {
2191
- <svg data-p-icon="chevron-down" [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" />
2227
+ <svg data-p-icon="chevron-down" [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true" [attr.data-p]="dropdownIconDataP()" />
2192
2228
  }
2193
2229
  } @else {
2194
- <span [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')">
2230
+ <span [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true">
2195
2231
  <ng-template *ngTemplateOutlet="dropdownIconTemplate(); context: dropdownIconContext()"></ng-template>
2196
2232
  </span>
2197
2233
  }
@@ -2217,8 +2253,7 @@ var Select = class Select extends BaseInput {
2217
2253
  <div [class]="cn(cx('overlay'), panelStyleClass())" [style]="panelStyle()" [pBind]="ptm('overlay')" [attr.data-p]="overlayDataP()">
2218
2254
  <span
2219
2255
  #firstHiddenFocusableEl
2220
- role="presentation"
2221
- class="p-hidden-accessible p-hidden-focusable"
2256
+ [class]="pcn('p-hidden-accessible p-hidden-focusable')"
2222
2257
  [attr.tabindex]="0"
2223
2258
  (focus)="onFirstHiddenFocus($event)"
2224
2259
  [attr.data-p-hidden-accessible]="true"
@@ -2264,6 +2299,9 @@ var Select = class Select extends BaseInput {
2264
2299
  </p-inputicon>
2265
2300
  </p-iconfield>
2266
2301
  }
2302
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenFilterResult')" [attr.data-p-hidden-accessible]="true">
2303
+ {{ filterResultMessageText() }}
2304
+ </span>
2267
2305
  </div>
2268
2306
  }
2269
2307
  <div [class]="cx('listContainer')" [style.max-height]="virtualScroll() ? 'auto' : scrollHeight() || 'auto'" [pBind]="ptm('listContainer')">
@@ -2294,10 +2332,19 @@ var Select = class Select extends BaseInput {
2294
2332
  }
2295
2333
 
2296
2334
  <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')">
2335
+ <ul
2336
+ #items
2337
+ [attr.id]="$id() + '_list'"
2338
+ [attr.aria-label]="listLabel()"
2339
+ [class]="cn(cx('list'), scrollerOptions.contentStyleClass)"
2340
+ [style]="scrollerOptions.contentStyle"
2341
+ role="listbox"
2342
+ [attr.aria-multiselectable]="$ariaMultiselectable()"
2343
+ [pBind]="ptm('list')"
2344
+ >
2298
2345
  @for (option of items; track trackOption(option, i); let i = $index) {
2299
2346
  @if (isOptionGroup(option)) {
2300
- <li [class]="cx('optionGroup')" [attr.id]="$id() + '_' + getOptionIndex(i, scrollerOptions)" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('optionGroup')">
2347
+ <li [class]="cx('optionGroup')" [attr.id]="$id() + '_' + getOptionIndex(i, scrollerOptions)" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('optionGroup')">
2301
2348
  @if (!groupTemplate()) {
2302
2349
  <span [class]="cx('optionGroupLabel')" [pBind]="ptm('optionGroupLabel')">{{ getOptionGroupLabel(option.optionGroup) }}</span>
2303
2350
  }
@@ -2324,7 +2371,7 @@ var Select = class Select extends BaseInput {
2324
2371
  }
2325
2372
  }
2326
2373
  @if (showEmptyFilterMessage()) {
2327
- <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('emptyMessage')">
2374
+ <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('emptyMessage')">
2328
2375
  @if (!hasEmptyTemplate()) {
2329
2376
  {{ emptyFilterMessageLabel() }}
2330
2377
  } @else {
@@ -2333,7 +2380,7 @@ var Select = class Select extends BaseInput {
2333
2380
  </li>
2334
2381
  }
2335
2382
  @if (showEmptyMessage()) {
2336
- <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('emptyMessage')">
2383
+ <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('emptyMessage')">
2337
2384
  @if (!emptyTemplate()) {
2338
2385
  {{ emptyMessageLabel() || emptyFilterMessageLabel() }}
2339
2386
  } @else {
@@ -2345,10 +2392,17 @@ var Select = class Select extends BaseInput {
2345
2392
  </ng-template>
2346
2393
  </div>
2347
2394
  <ng-container *ngTemplateOutlet="footerTemplate()"></ng-container>
2395
+ @if (!filter() && !_options()?.length) {
2396
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenEmptyMessage')" [attr.data-p-hidden-accessible]="true">
2397
+ {{ emptyMessageLabel() }}
2398
+ </span>
2399
+ }
2400
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenSelectedMessage')" [attr.data-p-hidden-accessible]="true">
2401
+ {{ selectedMessageText() }}
2402
+ </span>
2348
2403
  <span
2349
2404
  #lastHiddenFocusableEl
2350
- role="presentation"
2351
- class="p-hidden-accessible p-hidden-focusable"
2405
+ [class]="pcn('p-hidden-accessible p-hidden-focusable')"
2352
2406
  [pBind]="ptm('hiddenLastFocusableEl')"
2353
2407
  [attr.tabindex]="0"
2354
2408
  (focus)="onLastHiddenFocus($event)"
@@ -2382,8 +2436,6 @@ var Select = class Select extends BaseInput {
2382
2436
  "focused",
2383
2437
  "label",
2384
2438
  "disabled",
2385
- "visible",
2386
- "itemSize",
2387
2439
  "ariaPosInset",
2388
2440
  "ariaSetSize",
2389
2441
  "template",
@@ -2566,7 +2618,7 @@ var Select = class Select extends BaseInput {
2566
2618
  };
2567
2619
  i0.ɵɵngDeclareClassMetadata({
2568
2620
  minVersion: "12.0.0",
2569
- version: "22.2.0",
2621
+ version: "22.2.3",
2570
2622
  ngImport: i0,
2571
2623
  type: Select,
2572
2624
  decorators: [{
@@ -2608,7 +2660,7 @@ i0.ɵɵngDeclareClassMetadata({
2608
2660
  [attr.aria-labelledby]="ariaLabelledBy()"
2609
2661
  [attr.aria-haspopup]="'listbox'"
2610
2662
  [attr.aria-expanded]="$ariaExpanded"
2611
- [attr.aria-multiselectable]="$ariaMultiselectable()"
2663
+ [attr.aria-readonly]="$ariaReadonly()"
2612
2664
  [attr.aria-controls]="$ariaControls()"
2613
2665
  [attr.tabindex]="$tabindex()"
2614
2666
  [pAutoFocus]="autofocus()"
@@ -2617,7 +2669,6 @@ i0.ɵɵngDeclareClassMetadata({
2617
2669
  (blur)="onInputBlur($event)"
2618
2670
  (keydown)="onKeyDown($event)"
2619
2671
  [attr.aria-required]="required()"
2620
- [attr.required]="$required()"
2621
2672
  [attr.disabled]="$disabledAttr()"
2622
2673
  [attr.data-p]="labelDataP()"
2623
2674
  >
@@ -2638,9 +2689,14 @@ i0.ɵɵngDeclareClassMetadata({
2638
2689
  [attr.id]="inputId()"
2639
2690
  [class]="cx('label')"
2640
2691
  [pBind]="ptm('label')"
2692
+ role="combobox"
2693
+ [attr.aria-autocomplete]="'list'"
2641
2694
  [attr.aria-haspopup]="'listbox'"
2695
+ [attr.aria-expanded]="$ariaExpanded"
2696
+ [attr.aria-controls]="$ariaControls()"
2642
2697
  [attr.placeholder]="$placeholder()"
2643
- [attr.aria-label]="$ariaLabel()"
2698
+ [attr.aria-label]="ariaLabel()"
2699
+ [attr.aria-labelledby]="ariaLabelledBy()"
2644
2700
  (input)="onEditableInput($event)"
2645
2701
  (keydown)="onKeyDown($event)"
2646
2702
  [pAutoFocus]="autofocus()"
@@ -2684,12 +2740,12 @@ i0.ɵɵngDeclareClassMetadata({
2684
2740
  } @else {
2685
2741
  @if (!dropdownIconTemplate()) {
2686
2742
  @if (dropdownIcon()) {
2687
- <span [class]="cn(cx('dropdownIcon'), dropdownIcon())" [pBind]="ptm('dropdownIcon')"></span>
2743
+ <span [class]="cn(cx('dropdownIcon'), dropdownIcon())" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true" [attr.data-p]="dropdownIconDataP()"></span>
2688
2744
  } @else {
2689
- <svg data-p-icon="chevron-down" [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" />
2745
+ <svg data-p-icon="chevron-down" [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true" [attr.data-p]="dropdownIconDataP()" />
2690
2746
  }
2691
2747
  } @else {
2692
- <span [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')">
2748
+ <span [class]="cx('dropdownIcon')" [pBind]="ptm('dropdownIcon')" [attr.aria-hidden]="true">
2693
2749
  <ng-template *ngTemplateOutlet="dropdownIconTemplate(); context: dropdownIconContext()"></ng-template>
2694
2750
  </span>
2695
2751
  }
@@ -2715,8 +2771,7 @@ i0.ɵɵngDeclareClassMetadata({
2715
2771
  <div [class]="cn(cx('overlay'), panelStyleClass())" [style]="panelStyle()" [pBind]="ptm('overlay')" [attr.data-p]="overlayDataP()">
2716
2772
  <span
2717
2773
  #firstHiddenFocusableEl
2718
- role="presentation"
2719
- class="p-hidden-accessible p-hidden-focusable"
2774
+ [class]="pcn('p-hidden-accessible p-hidden-focusable')"
2720
2775
  [attr.tabindex]="0"
2721
2776
  (focus)="onFirstHiddenFocus($event)"
2722
2777
  [attr.data-p-hidden-accessible]="true"
@@ -2762,6 +2817,9 @@ i0.ɵɵngDeclareClassMetadata({
2762
2817
  </p-inputicon>
2763
2818
  </p-iconfield>
2764
2819
  }
2820
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenFilterResult')" [attr.data-p-hidden-accessible]="true">
2821
+ {{ filterResultMessageText() }}
2822
+ </span>
2765
2823
  </div>
2766
2824
  }
2767
2825
  <div [class]="cx('listContainer')" [style.max-height]="virtualScroll() ? 'auto' : scrollHeight() || 'auto'" [pBind]="ptm('listContainer')">
@@ -2792,10 +2850,19 @@ i0.ɵɵngDeclareClassMetadata({
2792
2850
  }
2793
2851
 
2794
2852
  <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')">
2853
+ <ul
2854
+ #items
2855
+ [attr.id]="$id() + '_list'"
2856
+ [attr.aria-label]="listLabel()"
2857
+ [class]="cn(cx('list'), scrollerOptions.contentStyleClass)"
2858
+ [style]="scrollerOptions.contentStyle"
2859
+ role="listbox"
2860
+ [attr.aria-multiselectable]="$ariaMultiselectable()"
2861
+ [pBind]="ptm('list')"
2862
+ >
2796
2863
  @for (option of items; track trackOption(option, i); let i = $index) {
2797
2864
  @if (isOptionGroup(option)) {
2798
- <li [class]="cx('optionGroup')" [attr.id]="$id() + '_' + getOptionIndex(i, scrollerOptions)" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('optionGroup')">
2865
+ <li [class]="cx('optionGroup')" [attr.id]="$id() + '_' + getOptionIndex(i, scrollerOptions)" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('optionGroup')">
2799
2866
  @if (!groupTemplate()) {
2800
2867
  <span [class]="cx('optionGroupLabel')" [pBind]="ptm('optionGroupLabel')">{{ getOptionGroupLabel(option.optionGroup) }}</span>
2801
2868
  }
@@ -2822,7 +2889,7 @@ i0.ɵɵngDeclareClassMetadata({
2822
2889
  }
2823
2890
  }
2824
2891
  @if (showEmptyFilterMessage()) {
2825
- <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('emptyMessage')">
2892
+ <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('emptyMessage')">
2826
2893
  @if (!hasEmptyTemplate()) {
2827
2894
  {{ emptyFilterMessageLabel() }}
2828
2895
  } @else {
@@ -2831,7 +2898,7 @@ i0.ɵɵngDeclareClassMetadata({
2831
2898
  </li>
2832
2899
  }
2833
2900
  @if (showEmptyMessage()) {
2834
- <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="option" [pBind]="ptm('emptyMessage')">
2901
+ <li [class]="cx('emptyMessage')" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('emptyMessage')">
2835
2902
  @if (!emptyTemplate()) {
2836
2903
  {{ emptyMessageLabel() || emptyFilterMessageLabel() }}
2837
2904
  } @else {
@@ -2843,10 +2910,17 @@ i0.ɵɵngDeclareClassMetadata({
2843
2910
  </ng-template>
2844
2911
  </div>
2845
2912
  <ng-container *ngTemplateOutlet="footerTemplate()"></ng-container>
2913
+ @if (!filter() && !_options()?.length) {
2914
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenEmptyMessage')" [attr.data-p-hidden-accessible]="true">
2915
+ {{ emptyMessageLabel() }}
2916
+ </span>
2917
+ }
2918
+ <span role="status" aria-live="polite" [class]="pcn('p-hidden-accessible')" [pBind]="ptm('hiddenSelectedMessage')" [attr.data-p-hidden-accessible]="true">
2919
+ {{ selectedMessageText() }}
2920
+ </span>
2846
2921
  <span
2847
2922
  #lastHiddenFocusableEl
2848
- role="presentation"
2849
- class="p-hidden-accessible p-hidden-focusable"
2923
+ [class]="pcn('p-hidden-accessible p-hidden-focusable')"
2850
2924
  [pBind]="ptm('hiddenLastFocusableEl')"
2851
2925
  [attr.tabindex]="0"
2852
2926
  (focus)="onLastHiddenFocus($event)"
@@ -3122,6 +3196,30 @@ i0.ɵɵngDeclareClassMetadata({
3122
3196
  required: false
3123
3197
  }]
3124
3198
  }],
3199
+ filterMessage: [{
3200
+ type: i0.Input,
3201
+ args: [{
3202
+ isSignal: true,
3203
+ alias: "filterMessage",
3204
+ required: false
3205
+ }]
3206
+ }],
3207
+ selectionMessage: [{
3208
+ type: i0.Input,
3209
+ args: [{
3210
+ isSignal: true,
3211
+ alias: "selectionMessage",
3212
+ required: false
3213
+ }]
3214
+ }],
3215
+ emptySelectionMessage: [{
3216
+ type: i0.Input,
3217
+ args: [{
3218
+ isSignal: true,
3219
+ alias: "emptySelectionMessage",
3220
+ required: false
3221
+ }]
3222
+ }],
3125
3223
  lazy: [{
3126
3224
  type: i0.Input,
3127
3225
  args: [{
@@ -3483,7 +3581,7 @@ i0.ɵɵngDeclareClassMetadata({
3483
3581
  var SelectModule = class SelectModule {
3484
3582
  static ɵfac = i0.ɵɵngDeclareFactory({
3485
3583
  minVersion: "12.0.0",
3486
- version: "22.2.0",
3584
+ version: "22.2.3",
3487
3585
  ngImport: i0,
3488
3586
  type: SelectModule,
3489
3587
  deps: [],
@@ -3491,7 +3589,7 @@ var SelectModule = class SelectModule {
3491
3589
  });
3492
3590
  static ɵmod = i0.ɵɵngDeclareNgModule({
3493
3591
  minVersion: "14.0.0",
3494
- version: "22.2.0",
3592
+ version: "22.2.3",
3495
3593
  ngImport: i0,
3496
3594
  type: SelectModule,
3497
3595
  imports: [Select, SharedModule],
@@ -3499,7 +3597,7 @@ var SelectModule = class SelectModule {
3499
3597
  });
3500
3598
  static ɵinj = i0.ɵɵngDeclareInjector({
3501
3599
  minVersion: "12.0.0",
3502
- version: "22.2.0",
3600
+ version: "22.2.3",
3503
3601
  ngImport: i0,
3504
3602
  type: SelectModule,
3505
3603
  imports: [
@@ -3511,7 +3609,7 @@ var SelectModule = class SelectModule {
3511
3609
  };
3512
3610
  i0.ɵɵngDeclareClassMetadata({
3513
3611
  minVersion: "12.0.0",
3514
- version: "22.2.0",
3612
+ version: "22.2.3",
3515
3613
  ngImport: i0,
3516
3614
  type: SelectModule,
3517
3615
  decorators: [{
@@ -3524,4 +3622,3 @@ i0.ɵɵngDeclareClassMetadata({
3524
3622
  });
3525
3623
  export { SELECT_VALUE_ACCESSOR, Select, SelectClasses, SelectModule, SelectStyle };
3526
3624
 
3527
- //# sourceMappingURL=primeng-select.mjs.map