primeng 0.0.0-watch

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 (507) hide show
  1. package/LICENSE.md +77 -0
  2. package/README.md +11 -0
  3. package/accordion/index.d.ts +255 -0
  4. package/animateonscroll/index.d.ts +71 -0
  5. package/api/index.d.ts +1820 -0
  6. package/autocomplete/index.d.ts +925 -0
  7. package/autofocus/index.d.ts +31 -0
  8. package/avatar/index.d.ts +115 -0
  9. package/avatargroup/index.d.ts +60 -0
  10. package/badge/index.d.ts +156 -0
  11. package/base/index.d.ts +63 -0
  12. package/basecomponent/index.d.ts +54 -0
  13. package/baseeditableholder/index.d.ts +45 -0
  14. package/baseinput/index.d.ts +73 -0
  15. package/basemodelholder/index.d.ts +12 -0
  16. package/blockui/index.d.ts +114 -0
  17. package/breadcrumb/index.d.ts +179 -0
  18. package/button/index.d.ts +478 -0
  19. package/buttongroup/index.d.ts +43 -0
  20. package/card/index.d.ts +154 -0
  21. package/carousel/index.d.ts +443 -0
  22. package/cascadeselect/index.d.ts +729 -0
  23. package/chart/index.d.ts +128 -0
  24. package/checkbox/index.d.ts +248 -0
  25. package/chip/index.d.ts +165 -0
  26. package/colorpicker/index.d.ts +329 -0
  27. package/config/index.d.ts +89 -0
  28. package/confirmdialog/index.d.ts +358 -0
  29. package/confirmpopup/index.d.ts +218 -0
  30. package/contextmenu/index.d.ts +356 -0
  31. package/dataview/index.d.ts +539 -0
  32. package/datepicker/index.d.ts +1191 -0
  33. package/dialog/index.d.ts +531 -0
  34. package/divider/index.d.ts +114 -0
  35. package/dock/index.d.ts +201 -0
  36. package/dom/index.d.ts +109 -0
  37. package/dragdrop/index.d.ts +121 -0
  38. package/drawer/index.d.ts +309 -0
  39. package/dynamicdialog/index.d.ts +544 -0
  40. package/editor/index.d.ts +306 -0
  41. package/fesm2022/primeng-accordion.mjs +593 -0
  42. package/fesm2022/primeng-accordion.mjs.map +1 -0
  43. package/fesm2022/primeng-animateonscroll.mjs +178 -0
  44. package/fesm2022/primeng-animateonscroll.mjs.map +1 -0
  45. package/fesm2022/primeng-api.mjs +836 -0
  46. package/fesm2022/primeng-api.mjs.map +1 -0
  47. package/fesm2022/primeng-autocomplete.mjs +2073 -0
  48. package/fesm2022/primeng-autocomplete.mjs.map +1 -0
  49. package/fesm2022/primeng-autofocus.mjs +83 -0
  50. package/fesm2022/primeng-autofocus.mjs.map +1 -0
  51. package/fesm2022/primeng-avatar.mjs +181 -0
  52. package/fesm2022/primeng-avatar.mjs.map +1 -0
  53. package/fesm2022/primeng-avatargroup.mjs +103 -0
  54. package/fesm2022/primeng-avatargroup.mjs.map +1 -0
  55. package/fesm2022/primeng-badge.mjs +366 -0
  56. package/fesm2022/primeng-badge.mjs.map +1 -0
  57. package/fesm2022/primeng-base.mjs +127 -0
  58. package/fesm2022/primeng-base.mjs.map +1 -0
  59. package/fesm2022/primeng-basecomponent.mjs +173 -0
  60. package/fesm2022/primeng-basecomponent.mjs.map +1 -0
  61. package/fesm2022/primeng-baseeditableholder.mjs +67 -0
  62. package/fesm2022/primeng-baseeditableholder.mjs.map +1 -0
  63. package/fesm2022/primeng-baseinput.mjs +85 -0
  64. package/fesm2022/primeng-baseinput.mjs.map +1 -0
  65. package/fesm2022/primeng-basemodelholder.mjs +25 -0
  66. package/fesm2022/primeng-basemodelholder.mjs.map +1 -0
  67. package/fesm2022/primeng-blockui.mjs +237 -0
  68. package/fesm2022/primeng-blockui.mjs.map +1 -0
  69. package/fesm2022/primeng-breadcrumb.mjs +457 -0
  70. package/fesm2022/primeng-breadcrumb.mjs.map +1 -0
  71. package/fesm2022/primeng-button.mjs +864 -0
  72. package/fesm2022/primeng-button.mjs.map +1 -0
  73. package/fesm2022/primeng-buttongroup.mjs +109 -0
  74. package/fesm2022/primeng-buttongroup.mjs.map +1 -0
  75. package/fesm2022/primeng-card.mjs +271 -0
  76. package/fesm2022/primeng-card.mjs.map +1 -0
  77. package/fesm2022/primeng-carousel.mjs +1101 -0
  78. package/fesm2022/primeng-carousel.mjs.map +1 -0
  79. package/fesm2022/primeng-cascadeselect.mjs +1778 -0
  80. package/fesm2022/primeng-cascadeselect.mjs.map +1 -0
  81. package/fesm2022/primeng-chart.mjs +246 -0
  82. package/fesm2022/primeng-chart.mjs.map +1 -0
  83. package/fesm2022/primeng-checkbox.mjs +441 -0
  84. package/fesm2022/primeng-checkbox.mjs.map +1 -0
  85. package/fesm2022/primeng-chip.mjs +323 -0
  86. package/fesm2022/primeng-chip.mjs.map +1 -0
  87. package/fesm2022/primeng-colorpicker.mjs +865 -0
  88. package/fesm2022/primeng-colorpicker.mjs.map +1 -0
  89. package/fesm2022/primeng-config.mjs +289 -0
  90. package/fesm2022/primeng-config.mjs.map +1 -0
  91. package/fesm2022/primeng-confirmdialog.mjs +823 -0
  92. package/fesm2022/primeng-confirmdialog.mjs.map +1 -0
  93. package/fesm2022/primeng-confirmpopup.mjs +630 -0
  94. package/fesm2022/primeng-confirmpopup.mjs.map +1 -0
  95. package/fesm2022/primeng-contextmenu.mjs +1410 -0
  96. package/fesm2022/primeng-contextmenu.mjs.map +1 -0
  97. package/fesm2022/primeng-dataview.mjs +812 -0
  98. package/fesm2022/primeng-dataview.mjs.map +1 -0
  99. package/fesm2022/primeng-datepicker.mjs +4373 -0
  100. package/fesm2022/primeng-datepicker.mjs.map +1 -0
  101. package/fesm2022/primeng-dialog.mjs +1278 -0
  102. package/fesm2022/primeng-dialog.mjs.map +1 -0
  103. package/fesm2022/primeng-divider.mjs +145 -0
  104. package/fesm2022/primeng-divider.mjs.map +1 -0
  105. package/fesm2022/primeng-dock.mjs +540 -0
  106. package/fesm2022/primeng-dock.mjs.map +1 -0
  107. package/fesm2022/primeng-dom.mjs +775 -0
  108. package/fesm2022/primeng-dom.mjs.map +1 -0
  109. package/fesm2022/primeng-dragdrop.mjs +336 -0
  110. package/fesm2022/primeng-dragdrop.mjs.map +1 -0
  111. package/fesm2022/primeng-drawer.mjs +738 -0
  112. package/fesm2022/primeng-drawer.mjs.map +1 -0
  113. package/fesm2022/primeng-dynamicdialog.mjs +1242 -0
  114. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -0
  115. package/fesm2022/primeng-editor.mjs +511 -0
  116. package/fesm2022/primeng-editor.mjs.map +1 -0
  117. package/fesm2022/primeng-fieldset.mjs +417 -0
  118. package/fesm2022/primeng-fieldset.mjs.map +1 -0
  119. package/fesm2022/primeng-fileupload.mjs +1561 -0
  120. package/fesm2022/primeng-fileupload.mjs.map +1 -0
  121. package/fesm2022/primeng-floatlabel.mjs +103 -0
  122. package/fesm2022/primeng-floatlabel.mjs.map +1 -0
  123. package/fesm2022/primeng-fluid.mjs +80 -0
  124. package/fesm2022/primeng-fluid.mjs.map +1 -0
  125. package/fesm2022/primeng-focustrap.mjs +110 -0
  126. package/fesm2022/primeng-focustrap.mjs.map +1 -0
  127. package/fesm2022/primeng-galleria.mjs +1874 -0
  128. package/fesm2022/primeng-galleria.mjs.map +1 -0
  129. package/fesm2022/primeng-iconfield.mjs +101 -0
  130. package/fesm2022/primeng-iconfield.mjs.map +1 -0
  131. package/fesm2022/primeng-icons-angledoubledown.mjs +37 -0
  132. package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -0
  133. package/fesm2022/primeng-icons-angledoubleleft.mjs +37 -0
  134. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -0
  135. package/fesm2022/primeng-icons-angledoubleright.mjs +37 -0
  136. package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -0
  137. package/fesm2022/primeng-icons-angledoubleup.mjs +37 -0
  138. package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -0
  139. package/fesm2022/primeng-icons-angledown.mjs +33 -0
  140. package/fesm2022/primeng-icons-angledown.mjs.map +1 -0
  141. package/fesm2022/primeng-icons-angleleft.mjs +33 -0
  142. package/fesm2022/primeng-icons-angleleft.mjs.map +1 -0
  143. package/fesm2022/primeng-icons-angleright.mjs +33 -0
  144. package/fesm2022/primeng-icons-angleright.mjs.map +1 -0
  145. package/fesm2022/primeng-icons-angleup.mjs +33 -0
  146. package/fesm2022/primeng-icons-angleup.mjs.map +1 -0
  147. package/fesm2022/primeng-icons-arrowdown.mjs +57 -0
  148. package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -0
  149. package/fesm2022/primeng-icons-arrowdownleft.mjs +33 -0
  150. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -0
  151. package/fesm2022/primeng-icons-arrowdownright.mjs +33 -0
  152. package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -0
  153. package/fesm2022/primeng-icons-arrowleft.mjs +57 -0
  154. package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -0
  155. package/fesm2022/primeng-icons-arrowright.mjs +37 -0
  156. package/fesm2022/primeng-icons-arrowright.mjs.map +1 -0
  157. package/fesm2022/primeng-icons-arrowup.mjs +57 -0
  158. package/fesm2022/primeng-icons-arrowup.mjs.map +1 -0
  159. package/fesm2022/primeng-icons-ban.mjs +53 -0
  160. package/fesm2022/primeng-icons-ban.mjs.map +1 -0
  161. package/fesm2022/primeng-icons-bars.mjs +37 -0
  162. package/fesm2022/primeng-icons-bars.mjs.map +1 -0
  163. package/fesm2022/primeng-icons-baseicon.mjs +102 -0
  164. package/fesm2022/primeng-icons-baseicon.mjs.map +1 -0
  165. package/fesm2022/primeng-icons-blank.mjs +23 -0
  166. package/fesm2022/primeng-icons-blank.mjs.map +1 -0
  167. package/fesm2022/primeng-icons-calendar.mjs +33 -0
  168. package/fesm2022/primeng-icons-calendar.mjs.map +1 -0
  169. package/fesm2022/primeng-icons-caretleft.mjs +33 -0
  170. package/fesm2022/primeng-icons-caretleft.mjs.map +1 -0
  171. package/fesm2022/primeng-icons-caretright.mjs +33 -0
  172. package/fesm2022/primeng-icons-caretright.mjs.map +1 -0
  173. package/fesm2022/primeng-icons-check.mjs +33 -0
  174. package/fesm2022/primeng-icons-check.mjs.map +1 -0
  175. package/fesm2022/primeng-icons-chevrondown.mjs +33 -0
  176. package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -0
  177. package/fesm2022/primeng-icons-chevronleft.mjs +33 -0
  178. package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -0
  179. package/fesm2022/primeng-icons-chevronright.mjs +33 -0
  180. package/fesm2022/primeng-icons-chevronright.mjs.map +1 -0
  181. package/fesm2022/primeng-icons-chevronup.mjs +33 -0
  182. package/fesm2022/primeng-icons-chevronup.mjs.map +1 -0
  183. package/fesm2022/primeng-icons-exclamationtriangle.mjs +69 -0
  184. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -0
  185. package/fesm2022/primeng-icons-eye.mjs +37 -0
  186. package/fesm2022/primeng-icons-eye.mjs.map +1 -0
  187. package/fesm2022/primeng-icons-eyeslash.mjs +57 -0
  188. package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -0
  189. package/fesm2022/primeng-icons-filter.mjs +53 -0
  190. package/fesm2022/primeng-icons-filter.mjs.map +1 -0
  191. package/fesm2022/primeng-icons-filterfill.mjs +33 -0
  192. package/fesm2022/primeng-icons-filterfill.mjs.map +1 -0
  193. package/fesm2022/primeng-icons-filterslash.mjs +57 -0
  194. package/fesm2022/primeng-icons-filterslash.mjs.map +1 -0
  195. package/fesm2022/primeng-icons-home.mjs +57 -0
  196. package/fesm2022/primeng-icons-home.mjs.map +1 -0
  197. package/fesm2022/primeng-icons-infocircle.mjs +57 -0
  198. package/fesm2022/primeng-icons-infocircle.mjs.map +1 -0
  199. package/fesm2022/primeng-icons-minus.mjs +33 -0
  200. package/fesm2022/primeng-icons-minus.mjs.map +1 -0
  201. package/fesm2022/primeng-icons-pencil.mjs +53 -0
  202. package/fesm2022/primeng-icons-pencil.mjs.map +1 -0
  203. package/fesm2022/primeng-icons-plus.mjs +53 -0
  204. package/fesm2022/primeng-icons-plus.mjs.map +1 -0
  205. package/fesm2022/primeng-icons-refresh.mjs +57 -0
  206. package/fesm2022/primeng-icons-refresh.mjs.map +1 -0
  207. package/fesm2022/primeng-icons-search.mjs +57 -0
  208. package/fesm2022/primeng-icons-search.mjs.map +1 -0
  209. package/fesm2022/primeng-icons-searchminus.mjs +57 -0
  210. package/fesm2022/primeng-icons-searchminus.mjs.map +1 -0
  211. package/fesm2022/primeng-icons-searchplus.mjs +57 -0
  212. package/fesm2022/primeng-icons-searchplus.mjs.map +1 -0
  213. package/fesm2022/primeng-icons-sortalt.mjs +65 -0
  214. package/fesm2022/primeng-icons-sortalt.mjs.map +1 -0
  215. package/fesm2022/primeng-icons-sortamountdown.mjs +53 -0
  216. package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -0
  217. package/fesm2022/primeng-icons-sortamountupalt.mjs +53 -0
  218. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -0
  219. package/fesm2022/primeng-icons-spinner.mjs +53 -0
  220. package/fesm2022/primeng-icons-spinner.mjs.map +1 -0
  221. package/fesm2022/primeng-icons-star.mjs +53 -0
  222. package/fesm2022/primeng-icons-star.mjs.map +1 -0
  223. package/fesm2022/primeng-icons-starfill.mjs +53 -0
  224. package/fesm2022/primeng-icons-starfill.mjs.map +1 -0
  225. package/fesm2022/primeng-icons-thlarge.mjs +57 -0
  226. package/fesm2022/primeng-icons-thlarge.mjs.map +1 -0
  227. package/fesm2022/primeng-icons-times.mjs +33 -0
  228. package/fesm2022/primeng-icons-times.mjs.map +1 -0
  229. package/fesm2022/primeng-icons-timescircle.mjs +57 -0
  230. package/fesm2022/primeng-icons-timescircle.mjs.map +1 -0
  231. package/fesm2022/primeng-icons-trash.mjs +57 -0
  232. package/fesm2022/primeng-icons-trash.mjs.map +1 -0
  233. package/fesm2022/primeng-icons-undo.mjs +57 -0
  234. package/fesm2022/primeng-icons-undo.mjs.map +1 -0
  235. package/fesm2022/primeng-icons-upload.mjs +57 -0
  236. package/fesm2022/primeng-icons-upload.mjs.map +1 -0
  237. package/fesm2022/primeng-icons-windowmaximize.mjs +57 -0
  238. package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -0
  239. package/fesm2022/primeng-icons-windowminimize.mjs +57 -0
  240. package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -0
  241. package/fesm2022/primeng-icons.mjs +63 -0
  242. package/fesm2022/primeng-icons.mjs.map +1 -0
  243. package/fesm2022/primeng-iftalabel.mjs +89 -0
  244. package/fesm2022/primeng-iftalabel.mjs.map +1 -0
  245. package/fesm2022/primeng-image.mjs +705 -0
  246. package/fesm2022/primeng-image.mjs.map +1 -0
  247. package/fesm2022/primeng-imagecompare.mjs +192 -0
  248. package/fesm2022/primeng-imagecompare.mjs.map +1 -0
  249. package/fesm2022/primeng-inplace.mjs +319 -0
  250. package/fesm2022/primeng-inplace.mjs.map +1 -0
  251. package/fesm2022/primeng-inputgroup.mjs +128 -0
  252. package/fesm2022/primeng-inputgroup.mjs.map +1 -0
  253. package/fesm2022/primeng-inputgroupaddon.mjs +83 -0
  254. package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -0
  255. package/fesm2022/primeng-inputicon.mjs +71 -0
  256. package/fesm2022/primeng-inputicon.mjs.map +1 -0
  257. package/fesm2022/primeng-inputmask.mjs +926 -0
  258. package/fesm2022/primeng-inputmask.mjs.map +1 -0
  259. package/fesm2022/primeng-inputnumber.mjs +1621 -0
  260. package/fesm2022/primeng-inputnumber.mjs.map +1 -0
  261. package/fesm2022/primeng-inputotp.mjs +443 -0
  262. package/fesm2022/primeng-inputotp.mjs.map +1 -0
  263. package/fesm2022/primeng-inputtext.mjs +145 -0
  264. package/fesm2022/primeng-inputtext.mjs.map +1 -0
  265. package/fesm2022/primeng-keyfilter.mjs +267 -0
  266. package/fesm2022/primeng-keyfilter.mjs.map +1 -0
  267. package/fesm2022/primeng-knob.mjs +491 -0
  268. package/fesm2022/primeng-knob.mjs.map +1 -0
  269. package/fesm2022/primeng-listbox.mjs +1925 -0
  270. package/fesm2022/primeng-listbox.mjs.map +1 -0
  271. package/fesm2022/primeng-megamenu.mjs +1493 -0
  272. package/fesm2022/primeng-megamenu.mjs.map +1 -0
  273. package/fesm2022/primeng-menu.mjs +1069 -0
  274. package/fesm2022/primeng-menu.mjs.map +1 -0
  275. package/fesm2022/primeng-menubar.mjs +1391 -0
  276. package/fesm2022/primeng-menubar.mjs.map +1 -0
  277. package/fesm2022/primeng-message.mjs +420 -0
  278. package/fesm2022/primeng-message.mjs.map +1 -0
  279. package/fesm2022/primeng-metergroup.mjs +393 -0
  280. package/fesm2022/primeng-metergroup.mjs.map +1 -0
  281. package/fesm2022/primeng-multiselect.mjs +2519 -0
  282. package/fesm2022/primeng-multiselect.mjs.map +1 -0
  283. package/fesm2022/primeng-orderlist.mjs +890 -0
  284. package/fesm2022/primeng-orderlist.mjs.map +1 -0
  285. package/fesm2022/primeng-organizationchart.mjs +520 -0
  286. package/fesm2022/primeng-organizationchart.mjs.map +1 -0
  287. package/fesm2022/primeng-overlay.mjs +776 -0
  288. package/fesm2022/primeng-overlay.mjs.map +1 -0
  289. package/fesm2022/primeng-overlaybadge.mjs +151 -0
  290. package/fesm2022/primeng-overlaybadge.mjs.map +1 -0
  291. package/fesm2022/primeng-paginator.mjs +802 -0
  292. package/fesm2022/primeng-paginator.mjs.map +1 -0
  293. package/fesm2022/primeng-panel.mjs +595 -0
  294. package/fesm2022/primeng-panel.mjs.map +1 -0
  295. package/fesm2022/primeng-panelmenu.mjs +1442 -0
  296. package/fesm2022/primeng-panelmenu.mjs.map +1 -0
  297. package/fesm2022/primeng-password.mjs +1156 -0
  298. package/fesm2022/primeng-password.mjs.map +1 -0
  299. package/fesm2022/primeng-picklist.mjs +2057 -0
  300. package/fesm2022/primeng-picklist.mjs.map +1 -0
  301. package/fesm2022/primeng-popover.mjs +611 -0
  302. package/fesm2022/primeng-popover.mjs.map +1 -0
  303. package/fesm2022/primeng-progressbar.mjs +196 -0
  304. package/fesm2022/primeng-progressbar.mjs.map +1 -0
  305. package/fesm2022/primeng-progressspinner.mjs +140 -0
  306. package/fesm2022/primeng-progressspinner.mjs.map +1 -0
  307. package/fesm2022/primeng-radiobutton.mjs +358 -0
  308. package/fesm2022/primeng-radiobutton.mjs.map +1 -0
  309. package/fesm2022/primeng-rating.mjs +388 -0
  310. package/fesm2022/primeng-rating.mjs.map +1 -0
  311. package/fesm2022/primeng-ripple.mjs +190 -0
  312. package/fesm2022/primeng-ripple.mjs.map +1 -0
  313. package/fesm2022/primeng-scroller.mjs +1306 -0
  314. package/fesm2022/primeng-scroller.mjs.map +1 -0
  315. package/fesm2022/primeng-scrollpanel.mjs +560 -0
  316. package/fesm2022/primeng-scrollpanel.mjs.map +1 -0
  317. package/fesm2022/primeng-scrolltop.mjs +339 -0
  318. package/fesm2022/primeng-scrolltop.mjs.map +1 -0
  319. package/fesm2022/primeng-select.mjs +2250 -0
  320. package/fesm2022/primeng-select.mjs.map +1 -0
  321. package/fesm2022/primeng-selectbutton.mjs +413 -0
  322. package/fesm2022/primeng-selectbutton.mjs.map +1 -0
  323. package/fesm2022/primeng-skeleton.mjs +154 -0
  324. package/fesm2022/primeng-skeleton.mjs.map +1 -0
  325. package/fesm2022/primeng-slider.mjs +843 -0
  326. package/fesm2022/primeng-slider.mjs.map +1 -0
  327. package/fesm2022/primeng-speeddial.mjs +901 -0
  328. package/fesm2022/primeng-speeddial.mjs.map +1 -0
  329. package/fesm2022/primeng-splitbutton.mjs +598 -0
  330. package/fesm2022/primeng-splitbutton.mjs.map +1 -0
  331. package/fesm2022/primeng-splitter.mjs +587 -0
  332. package/fesm2022/primeng-splitter.mjs.map +1 -0
  333. package/fesm2022/primeng-stepper.mjs +683 -0
  334. package/fesm2022/primeng-stepper.mjs.map +1 -0
  335. package/fesm2022/primeng-steps.mjs +424 -0
  336. package/fesm2022/primeng-steps.mjs.map +1 -0
  337. package/fesm2022/primeng-styleclass.mjs +354 -0
  338. package/fesm2022/primeng-styleclass.mjs.map +1 -0
  339. package/fesm2022/primeng-table.mjs +7540 -0
  340. package/fesm2022/primeng-table.mjs.map +1 -0
  341. package/fesm2022/primeng-tabs.mjs +794 -0
  342. package/fesm2022/primeng-tabs.mjs.map +1 -0
  343. package/fesm2022/primeng-tag.mjs +176 -0
  344. package/fesm2022/primeng-tag.mjs.map +1 -0
  345. package/fesm2022/primeng-terminal.mjs +254 -0
  346. package/fesm2022/primeng-terminal.mjs.map +1 -0
  347. package/fesm2022/primeng-textarea.mjs +197 -0
  348. package/fesm2022/primeng-textarea.mjs.map +1 -0
  349. package/fesm2022/primeng-tieredmenu.mjs +1457 -0
  350. package/fesm2022/primeng-tieredmenu.mjs.map +1 -0
  351. package/fesm2022/primeng-timeline.mjs +228 -0
  352. package/fesm2022/primeng-timeline.mjs.map +1 -0
  353. package/fesm2022/primeng-toast.mjs +751 -0
  354. package/fesm2022/primeng-toast.mjs.map +1 -0
  355. package/fesm2022/primeng-togglebutton.mjs +361 -0
  356. package/fesm2022/primeng-togglebutton.mjs.map +1 -0
  357. package/fesm2022/primeng-toggleswitch.mjs +330 -0
  358. package/fesm2022/primeng-toggleswitch.mjs.map +1 -0
  359. package/fesm2022/primeng-toolbar.mjs +189 -0
  360. package/fesm2022/primeng-toolbar.mjs.map +1 -0
  361. package/fesm2022/primeng-tooltip.mjs +757 -0
  362. package/fesm2022/primeng-tooltip.mjs.map +1 -0
  363. package/fesm2022/primeng-tree.mjs +2188 -0
  364. package/fesm2022/primeng-tree.mjs.map +1 -0
  365. package/fesm2022/primeng-treeselect.mjs +1328 -0
  366. package/fesm2022/primeng-treeselect.mjs.map +1 -0
  367. package/fesm2022/primeng-treetable.mjs +5080 -0
  368. package/fesm2022/primeng-treetable.mjs.map +1 -0
  369. package/fesm2022/primeng-ts-helpers.mjs +4 -0
  370. package/fesm2022/primeng-ts-helpers.mjs.map +1 -0
  371. package/fesm2022/primeng-usestyle.mjs +52 -0
  372. package/fesm2022/primeng-usestyle.mjs.map +1 -0
  373. package/fesm2022/primeng-utils.mjs +332 -0
  374. package/fesm2022/primeng-utils.mjs.map +1 -0
  375. package/fesm2022/primeng.mjs +6 -0
  376. package/fesm2022/primeng.mjs.map +1 -0
  377. package/fieldset/index.d.ts +217 -0
  378. package/fileupload/index.d.ts +786 -0
  379. package/floatlabel/index.d.ts +59 -0
  380. package/fluid/index.d.ts +48 -0
  381. package/focustrap/index.d.ts +36 -0
  382. package/galleria/index.d.ts +710 -0
  383. package/iconfield/index.d.ts +64 -0
  384. package/icons/angledoubledown/index.d.ts +9 -0
  385. package/icons/angledoubleleft/index.d.ts +9 -0
  386. package/icons/angledoubleright/index.d.ts +9 -0
  387. package/icons/angledoubleup/index.d.ts +9 -0
  388. package/icons/angledown/index.d.ts +9 -0
  389. package/icons/angleleft/index.d.ts +9 -0
  390. package/icons/angleright/index.d.ts +9 -0
  391. package/icons/angleup/index.d.ts +9 -0
  392. package/icons/arrowdown/index.d.ts +12 -0
  393. package/icons/arrowdownleft/index.d.ts +9 -0
  394. package/icons/arrowdownright/index.d.ts +9 -0
  395. package/icons/arrowleft/index.d.ts +11 -0
  396. package/icons/arrowright/index.d.ts +9 -0
  397. package/icons/arrowup/index.d.ts +11 -0
  398. package/icons/ban/index.d.ts +11 -0
  399. package/icons/bars/index.d.ts +9 -0
  400. package/icons/baseicon/index.d.ts +33 -0
  401. package/icons/blank/index.d.ts +9 -0
  402. package/icons/calendar/index.d.ts +9 -0
  403. package/icons/caretleft/index.d.ts +9 -0
  404. package/icons/caretright/index.d.ts +9 -0
  405. package/icons/check/index.d.ts +9 -0
  406. package/icons/chevrondown/index.d.ts +9 -0
  407. package/icons/chevronleft/index.d.ts +9 -0
  408. package/icons/chevronright/index.d.ts +9 -0
  409. package/icons/chevronup/index.d.ts +9 -0
  410. package/icons/exclamationtriangle/index.d.ts +12 -0
  411. package/icons/eye/index.d.ts +9 -0
  412. package/icons/eyeslash/index.d.ts +11 -0
  413. package/icons/filter/index.d.ts +11 -0
  414. package/icons/filterfill/index.d.ts +9 -0
  415. package/icons/filterslash/index.d.ts +11 -0
  416. package/icons/home/index.d.ts +11 -0
  417. package/icons/index.d.ts +53 -0
  418. package/icons/infocircle/index.d.ts +11 -0
  419. package/icons/minus/index.d.ts +9 -0
  420. package/icons/pencil/index.d.ts +11 -0
  421. package/icons/plus/index.d.ts +11 -0
  422. package/icons/refresh/index.d.ts +11 -0
  423. package/icons/search/index.d.ts +11 -0
  424. package/icons/searchminus/index.d.ts +11 -0
  425. package/icons/searchplus/index.d.ts +11 -0
  426. package/icons/sortalt/index.d.ts +11 -0
  427. package/icons/sortamountdown/index.d.ts +11 -0
  428. package/icons/sortamountupalt/index.d.ts +11 -0
  429. package/icons/spinner/index.d.ts +11 -0
  430. package/icons/star/index.d.ts +11 -0
  431. package/icons/starfill/index.d.ts +11 -0
  432. package/icons/thlarge/index.d.ts +11 -0
  433. package/icons/times/index.d.ts +9 -0
  434. package/icons/timescircle/index.d.ts +11 -0
  435. package/icons/trash/index.d.ts +11 -0
  436. package/icons/undo/index.d.ts +11 -0
  437. package/icons/upload/index.d.ts +11 -0
  438. package/icons/windowmaximize/index.d.ts +11 -0
  439. package/icons/windowminimize/index.d.ts +11 -0
  440. package/iftalabel/index.d.ts +50 -0
  441. package/image/index.d.ts +376 -0
  442. package/imagecompare/index.d.ts +93 -0
  443. package/index.d.ts +2 -0
  444. package/inplace/index.d.ts +183 -0
  445. package/inputgroup/index.d.ts +58 -0
  446. package/inputgroupaddon/index.d.ts +45 -0
  447. package/inputicon/index.d.ts +36 -0
  448. package/inputmask/index.d.ts +282 -0
  449. package/inputnumber/index.d.ts +466 -0
  450. package/inputotp/index.d.ts +209 -0
  451. package/inputtext/index.d.ts +89 -0
  452. package/keyfilter/index.d.ts +66 -0
  453. package/knob/index.d.ts +206 -0
  454. package/listbox/index.d.ts +802 -0
  455. package/megamenu/index.d.ts +408 -0
  456. package/menu/index.d.ts +341 -0
  457. package/menubar/index.d.ts +418 -0
  458. package/message/index.d.ts +195 -0
  459. package/metergroup/index.d.ts +291 -0
  460. package/multiselect/index.d.ts +1060 -0
  461. package/orderlist/index.d.ts +464 -0
  462. package/organizationchart/index.d.ts +285 -0
  463. package/overlay/index.d.ts +255 -0
  464. package/overlaybadge/index.d.ts +73 -0
  465. package/package.json +725 -0
  466. package/paginator/index.d.ts +393 -0
  467. package/panel/index.d.ts +266 -0
  468. package/panelmenu/index.d.ts +380 -0
  469. package/password/index.d.ts +436 -0
  470. package/picklist/index.d.ts +906 -0
  471. package/popover/index.d.ts +176 -0
  472. package/progressbar/index.d.ts +112 -0
  473. package/progressspinner/index.d.ts +85 -0
  474. package/radiobutton/index.d.ts +201 -0
  475. package/rating/index.d.ts +218 -0
  476. package/ripple/index.d.ts +62 -0
  477. package/scroller/index.d.ts +614 -0
  478. package/scrollpanel/index.d.ts +161 -0
  479. package/scrolltop/index.d.ts +158 -0
  480. package/select/index.d.ts +923 -0
  481. package/selectbutton/index.d.ts +221 -0
  482. package/skeleton/index.d.ts +96 -0
  483. package/slider/index.d.ts +255 -0
  484. package/speeddial/index.d.ts +454 -0
  485. package/splitbutton/index.d.ts +306 -0
  486. package/splitter/index.d.ts +239 -0
  487. package/stepper/index.d.ts +297 -0
  488. package/steps/index.d.ts +152 -0
  489. package/styleclass/index.d.ts +115 -0
  490. package/table/index.d.ts +2700 -0
  491. package/tabs/index.d.ts +321 -0
  492. package/tag/index.d.ts +114 -0
  493. package/terminal/index.d.ts +134 -0
  494. package/textarea/index.d.ts +108 -0
  495. package/tieredmenu/index.d.ts +430 -0
  496. package/timeline/index.d.ts +170 -0
  497. package/toast/index.d.ts +320 -0
  498. package/togglebutton/index.d.ts +243 -0
  499. package/toggleswitch/index.d.ts +188 -0
  500. package/toolbar/index.d.ts +118 -0
  501. package/tooltip/index.d.ts +247 -0
  502. package/tree/index.d.ts +847 -0
  503. package/treeselect/index.d.ts +655 -0
  504. package/treetable/index.d.ts +1727 -0
  505. package/ts-helpers/index.d.ts +6 -0
  506. package/usestyle/index.d.ts +15 -0
  507. package/utils/index.d.ts +43 -0
@@ -0,0 +1,1925 @@
1
+ import * as i4 from '@angular/cdk/drag-drop';
2
+ import { DragDropModule, CDK_DRAG_CONFIG } from '@angular/cdk/drag-drop';
3
+ import * as i2 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i0 from '@angular/core';
6
+ import { Injectable, forwardRef, input, booleanAttribute, EventEmitter, signal, inject, computed, numberAttribute, HostListener, ContentChildren, ContentChild, ViewChild, Output, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
7
+ import * as i3 from '@angular/forms';
8
+ import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
9
+ import { isNotEmpty, uuid, equals, focus, getFirstFocusableElement, isEmpty, isPrintableCharacter, resolveFieldData, findSingle, findLastIndex, isFunction } from '@primeuix/utils';
10
+ import * as i1 from 'primeng/api';
11
+ import { SharedModule, Header, Footer, PrimeTemplate } from 'primeng/api';
12
+ import { BaseEditableHolder } from 'primeng/baseeditableholder';
13
+ import { Checkbox } from 'primeng/checkbox';
14
+ import { IconField } from 'primeng/iconfield';
15
+ import { SearchIcon, CheckIcon, BlankIcon } from 'primeng/icons';
16
+ import { InputIcon } from 'primeng/inputicon';
17
+ import { InputText } from 'primeng/inputtext';
18
+ import { Ripple } from 'primeng/ripple';
19
+ import { Scroller } from 'primeng/scroller';
20
+ import { style } from '@primeuix/styles/listbox';
21
+ import { BaseStyle } from 'primeng/base';
22
+
23
+ const theme = /*css*/ `
24
+ ${style}
25
+
26
+ /* For PrimeNG */
27
+ .p-listbox.ng-invalid.ng-dirty {
28
+ border-color: dt('listbox.invalid.border.color');
29
+ }
30
+
31
+ .p-listbox-header {
32
+ display: flex;
33
+ align-items: center;
34
+ }
35
+
36
+ .p-listbox-header > .p-iconfield {
37
+ flex-grow: 1;
38
+ }
39
+ `;
40
+ const classes = {
41
+ root: ({ instance }) => [
42
+ 'p-listbox p-component',
43
+ {
44
+ 'p-listbox-striped': instance.striped,
45
+ 'p-disabled': instance.$disabled(),
46
+ 'p-invalid': instance.invalid(),
47
+ 'p-listbox-fluid': instance.fluid()
48
+ }
49
+ ],
50
+ header: 'p-listbox-header',
51
+ pcFilter: 'p-listbox-filter',
52
+ listContainer: 'p-listbox-list-container',
53
+ list: 'p-listbox-list',
54
+ optionGroup: 'p-listbox-option-group',
55
+ option: ({ instance, option, i, scrollerOptions }) => [
56
+ 'p-listbox-option',
57
+ {
58
+ 'p-listbox-option-selected': instance.isSelected(option) && instance.highlightOnSelect,
59
+ 'p-focus': instance.focusedOptionIndex() === instance.getOptionIndex(i, scrollerOptions),
60
+ 'p-disabled': instance.isOptionDisabled(option)
61
+ }
62
+ ],
63
+ optionCheckIcon: 'p-listbox-option-check-icon',
64
+ optionBlankIcon: 'p-listbox-option-blank-icon',
65
+ emptyMessage: 'p-listbox-empty-message'
66
+ };
67
+ class ListBoxStyle extends BaseStyle {
68
+ name = 'listbox';
69
+ theme = theme;
70
+ classes = classes;
71
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: ListBoxStyle, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
72
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: ListBoxStyle });
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: ListBoxStyle, decorators: [{
75
+ type: Injectable
76
+ }] });
77
+ /**
78
+ *
79
+ * ListBox is used to select one or more values from a list of items.
80
+ *
81
+ * [Live Demo](https://www.primeng.org/listbox/)
82
+ *
83
+ * @module listboxstyle
84
+ *
85
+ */
86
+ var ListboxClasses;
87
+ (function (ListboxClasses) {
88
+ /**
89
+ * Class name of the root element
90
+ */
91
+ ListboxClasses["root"] = "p-listbox";
92
+ /**
93
+ * Class name of the header element
94
+ */
95
+ ListboxClasses["header"] = "p-listbox-header";
96
+ /**
97
+ * Class name of the filter element
98
+ */
99
+ ListboxClasses["pcFilter"] = "p-listbox-filter";
100
+ /**
101
+ * Class name of the list container element
102
+ */
103
+ ListboxClasses["listContainer"] = "p-listbox-list-container";
104
+ /**
105
+ * Class name of the list element
106
+ */
107
+ ListboxClasses["list"] = "p-listbox-list";
108
+ /**
109
+ * Class name of the option group element
110
+ */
111
+ ListboxClasses["optionGroup"] = "p-listbox-option-group";
112
+ /**
113
+ * Class name of the option element
114
+ */
115
+ ListboxClasses["option"] = "p-listbox-option";
116
+ /**
117
+ * Class name of the option check icon element
118
+ */
119
+ ListboxClasses["optionCheckIcon"] = "p-listbox-option-check-icon";
120
+ /**
121
+ * Class name of the option blank icon element
122
+ */
123
+ ListboxClasses["optionBlankIcon"] = "p-listbox-option-blank-icon";
124
+ /**
125
+ * Class name of the empty message element
126
+ */
127
+ ListboxClasses["emptyMessage"] = "p-listbox-empty-message";
128
+ })(ListboxClasses || (ListboxClasses = {}));
129
+
130
+ const LISTBOX_VALUE_ACCESSOR = {
131
+ provide: NG_VALUE_ACCESSOR,
132
+ useExisting: forwardRef(() => Listbox),
133
+ multi: true
134
+ };
135
+ /**
136
+ * ListBox is used to select one or more values from a list of items.
137
+ * @group Components
138
+ */
139
+ class Listbox extends BaseEditableHolder {
140
+ filterService;
141
+ /**
142
+ * Unique identifier of the component.
143
+ * @group Props
144
+ */
145
+ id;
146
+ /**
147
+ * Text to display when the search is active. Defaults to global value in i18n translation configuration.
148
+ * @group Props
149
+ * @defaultValue '{0} results are available'
150
+ */
151
+ searchMessage;
152
+ /**
153
+ * Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.
154
+ * @group Props
155
+ * @defaultValue 'No selected item'
156
+ */
157
+ emptySelectionMessage;
158
+ /**
159
+ * Text to be displayed in hidden accessible field when options are selected. Defaults to global value in i18n translation configuration.
160
+ * @group Props
161
+ * @defaultValue '{0} items selected'
162
+ */
163
+ selectionMessage;
164
+ /**
165
+ * Whether to focus on the first visible or selected element when the overlay panel is shown.
166
+ * @group Props
167
+ */
168
+ autoOptionFocus = true;
169
+ /**
170
+ * Defines a string that labels the input for accessibility.
171
+ * @group Props
172
+ */
173
+ ariaLabel;
174
+ /**
175
+ * When enabled, the focused option is selected.
176
+ * @group Props
177
+ */
178
+ selectOnFocus;
179
+ /**
180
+ * Locale to use in searching. The default locale is the host environment's current locale.
181
+ * @group Props
182
+ */
183
+ searchLocale;
184
+ /**
185
+ * When enabled, the hovered option will be focused.
186
+ * @group Props
187
+ */
188
+ focusOnHover = true;
189
+ /**
190
+ * Text to display when filtering.
191
+ * @group Props
192
+ */
193
+ filterMessage;
194
+ /**
195
+ * Fields used when filtering the options, defaults to optionLabel.
196
+ * @group Props
197
+ */
198
+ filterFields;
199
+ /**
200
+ * Defines if data is loaded and interacted with in lazy manner.
201
+ * @group Props
202
+ */
203
+ lazy = false;
204
+ /**
205
+ * Whether the data should be loaded on demand during scroll.
206
+ * @group Props
207
+ */
208
+ virtualScroll;
209
+ /**
210
+ * Height of an item in the list for VirtualScrolling.
211
+ * @group Props
212
+ */
213
+ virtualScrollItemSize;
214
+ /**
215
+ * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.
216
+ * @group Props
217
+ */
218
+ virtualScrollOptions;
219
+ /**
220
+ * Height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.
221
+ * @group Props
222
+ */
223
+ scrollHeight = '14rem';
224
+ /**
225
+ * Index of the element in tabbing order.
226
+ * @group Props
227
+ */
228
+ tabindex = 0;
229
+ /**
230
+ * When specified, allows selecting multiple values.
231
+ * @group Props
232
+ */
233
+ multiple;
234
+ /**
235
+ * Style class of the container.
236
+ * @deprecated since v20.0.0, use `class` instead.
237
+ * @group Props
238
+ */
239
+ styleClass;
240
+ /**
241
+ * Inline style of the list element.
242
+ * @group Props
243
+ */
244
+ listStyle;
245
+ /**
246
+ * Style class of the list element.
247
+ * @group Props
248
+ */
249
+ listStyleClass;
250
+ /**
251
+ * When present, it specifies that the element value cannot be changed.
252
+ * @group Props
253
+ */
254
+ readonly;
255
+ /**
256
+ * When specified, allows selecting items with checkboxes.
257
+ * @group Props
258
+ */
259
+ checkbox = false;
260
+ /**
261
+ * When specified, displays a filter input at header.
262
+ * @group Props
263
+ */
264
+ filter = false;
265
+ /**
266
+ * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.
267
+ * @group Props
268
+ */
269
+ filterBy;
270
+ /**
271
+ * Defines how the items are filtered.
272
+ * @group Props
273
+ */
274
+ filterMatchMode = 'contains';
275
+ /**
276
+ * Locale to use in filtering. The default locale is the host environment's current locale.
277
+ * @group Props
278
+ */
279
+ filterLocale;
280
+ /**
281
+ * Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.
282
+ * @group Props
283
+ */
284
+ metaKeySelection = false;
285
+ /**
286
+ * A property to uniquely identify a value in options.
287
+ * @group Props
288
+ */
289
+ dataKey;
290
+ /**
291
+ * Whether header checkbox is shown in multiple mode.
292
+ * @group Props
293
+ */
294
+ showToggleAll = true;
295
+ /**
296
+ * Name of the label field of an option.
297
+ * @group Props
298
+ */
299
+ optionLabel;
300
+ /**
301
+ * Name of the value field of an option.
302
+ * @group Props
303
+ */
304
+ optionValue;
305
+ /**
306
+ * Name of the options field of an option group.
307
+ * @group Props
308
+ */
309
+ optionGroupChildren = 'items';
310
+ /**
311
+ * Name of the label field of an option group.
312
+ * @group Props
313
+ */
314
+ optionGroupLabel = 'label';
315
+ /**
316
+ * Name of the disabled field of an option or function to determine disabled state.
317
+ * @group Props
318
+ */
319
+ optionDisabled;
320
+ /**
321
+ * Defines a string that labels the filter input.
322
+ * @group Props
323
+ */
324
+ ariaFilterLabel;
325
+ /**
326
+ * Defines placeholder of the filter input.
327
+ * @group Props
328
+ */
329
+ filterPlaceHolder;
330
+ /**
331
+ * Text to display when filtering does not return any results.
332
+ * @group Props
333
+ */
334
+ emptyFilterMessage;
335
+ /**
336
+ * Text to display when there is no data. Defaults to global value in i18n translation configuration.
337
+ * @group Props
338
+ */
339
+ emptyMessage;
340
+ /**
341
+ * Whether to display options as grouped when nested options are provided.
342
+ * @group Props
343
+ */
344
+ group;
345
+ /**
346
+ * An array of selectitems to display as the available options.
347
+ * @group Props
348
+ */
349
+ get options() {
350
+ return this._options();
351
+ }
352
+ set options(val) {
353
+ this._options.set(val);
354
+ }
355
+ /**
356
+ * When specified, filter displays with this value.
357
+ * @group Props
358
+ */
359
+ get filterValue() {
360
+ return this._filterValue();
361
+ }
362
+ set filterValue(val) {
363
+ this._filterValue.set(val);
364
+ }
365
+ /**
366
+ * Whether all data is selected.
367
+ * @group Props
368
+ */
369
+ get selectAll() {
370
+ return this._selectAll;
371
+ }
372
+ set selectAll(value) {
373
+ this._selectAll = value;
374
+ }
375
+ /**
376
+ * Whether to displays rows with alternating colors.
377
+ * @group Props
378
+ * @defaultValue false
379
+ */
380
+ striped = false;
381
+ /**
382
+ * Whether the selected option will be add highlight class.
383
+ * @group Props
384
+ * @defaultValue true
385
+ */
386
+ highlightOnSelect = true;
387
+ /**
388
+ * Whether the selected option will be shown with a check mark.
389
+ * @group Props
390
+ * @defaultValue false
391
+ */
392
+ checkmark = false;
393
+ /**
394
+ * Whether to enable dragdrop based reordering.
395
+ * @group Props
396
+ */
397
+ dragdrop = false;
398
+ /**
399
+ * Spans 100% width of the container when enabled.
400
+ * @defaultValue undefined
401
+ * @group Props
402
+ */
403
+ fluid = input(undefined, ...(ngDevMode ? [{ debugName: "fluid", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
404
+ /**
405
+ * Callback to invoke on value change.
406
+ * @param {ListboxChangeEvent} event - Custom change event.
407
+ * @group Emits
408
+ */
409
+ onChange = new EventEmitter();
410
+ /**
411
+ * Callback to invoke when option is clicked.
412
+ * @param {ListboxClickEvent} event - Custom click event.
413
+ * @group Emits
414
+ */
415
+ onClick = new EventEmitter();
416
+ /**
417
+ * Callback to invoke when option is double clicked.
418
+ * @param {ListboxDoubleClickEvent} event - Custom double click event.
419
+ * @group Emits
420
+ */
421
+ onDblClick = new EventEmitter();
422
+ /**
423
+ * Callback to invoke when data is filtered.
424
+ * @param {ListboxFilterEvent} event - Custom filter event.
425
+ * @group Emits
426
+ */
427
+ onFilter = new EventEmitter();
428
+ /**
429
+ * Callback to invoke when component receives focus.
430
+ * @param {FocusEvent} event - Focus event.
431
+ * @group Emits
432
+ */
433
+ onFocus = new EventEmitter();
434
+ /**
435
+ * Callback to invoke when component loses focus.
436
+ * @param {FocusEvent} event - Blur event.
437
+ * @group Emits
438
+ */
439
+ onBlur = new EventEmitter();
440
+ /**
441
+ * Callback to invoke when all data is selected.
442
+ * @param {ListboxSelectAllChangeEvent} event - Custom select event.
443
+ * @group Emits
444
+ */
445
+ onSelectAllChange = new EventEmitter();
446
+ /**
447
+ * Emits on lazy load.
448
+ * @param {ScrollerLazyLoadEvent} event - Scroller lazy load event.
449
+ * @group Emits
450
+ */
451
+ onLazyLoad = new EventEmitter();
452
+ /**
453
+ * Emits on item is dropped.
454
+ * @param {CdkDragDrop<string[]>} event - Scroller lazy load event.
455
+ * @group Emits
456
+ */
457
+ onDrop = new EventEmitter();
458
+ headerCheckboxViewChild;
459
+ filterViewChild;
460
+ lastHiddenFocusableElement;
461
+ firstHiddenFocusableElement;
462
+ scroller;
463
+ listViewChild;
464
+ containerViewChild;
465
+ headerFacet;
466
+ footerFacet;
467
+ /**
468
+ * Custom item template.
469
+ * @group Templates
470
+ */
471
+ itemTemplate;
472
+ /**
473
+ * Custom group template.
474
+ * @group Templates
475
+ */
476
+ groupTemplate;
477
+ /**
478
+ * Custom header template.
479
+ * @group Templates
480
+ */
481
+ headerTemplate;
482
+ /**
483
+ * Custom filter template.
484
+ * @group Templates
485
+ */
486
+ filterTemplate;
487
+ /**
488
+ * Custom footer template.
489
+ * @group Templates
490
+ */
491
+ footerTemplate;
492
+ /**
493
+ * Custom empty filter message template.
494
+ * @group Templates
495
+ */
496
+ emptyFilterTemplate;
497
+ /**
498
+ * Custom empty message template.
499
+ * @group Templates
500
+ */
501
+ emptyTemplate;
502
+ /**
503
+ * Custom filter icon template.
504
+ * @group Templates
505
+ */
506
+ filterIconTemplate;
507
+ /**
508
+ * Custom check icon template.
509
+ * @group Templates
510
+ */
511
+ checkIconTemplate;
512
+ /**
513
+ * Custom checkmark icon template.
514
+ * @group Templates
515
+ */
516
+ checkmarkTemplate;
517
+ /**
518
+ * Custom loader template.
519
+ * @group Templates
520
+ */
521
+ loaderTemplate;
522
+ templates;
523
+ _itemTemplate;
524
+ _groupTemplate;
525
+ _headerTemplate;
526
+ _filterTemplate;
527
+ _footerTemplate;
528
+ _emptyFilterTemplate;
529
+ _emptyTemplate;
530
+ _filterIconTemplate;
531
+ _checkIconTemplate;
532
+ _checkmarkTemplate;
533
+ _loaderTemplate;
534
+ _filterValue = signal(null, ...(ngDevMode ? [{ debugName: "_filterValue" }] : []));
535
+ _filteredOptions;
536
+ filterOptions;
537
+ filtered;
538
+ value;
539
+ optionTouched;
540
+ focus;
541
+ headerCheckboxFocus;
542
+ translationSubscription;
543
+ focused;
544
+ scrollerTabIndex = '0';
545
+ _componentStyle = inject(ListBoxStyle);
546
+ get focusedOptionId() {
547
+ return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;
548
+ }
549
+ get filterResultMessageText() {
550
+ return isNotEmpty(this.visibleOptions()) ? this.filterMessageText.replaceAll('{0}', this.visibleOptions().length) : this.emptyFilterMessageText;
551
+ }
552
+ get filterMessageText() {
553
+ return this.filterMessage || this.config.translation.searchMessage || '';
554
+ }
555
+ get searchMessageText() {
556
+ return this.searchMessage || this.config.translation.searchMessage || '';
557
+ }
558
+ get emptyFilterMessageText() {
559
+ return this.emptyFilterMessage || this.config.translation.emptySearchMessage || this.config.translation.emptyFilterMessage || '';
560
+ }
561
+ get selectionMessageText() {
562
+ return this.selectionMessage || this.config.translation.selectionMessage || '';
563
+ }
564
+ get emptySelectionMessageText() {
565
+ return this.emptySelectionMessage || this.config.translation.emptySelectionMessage || '';
566
+ }
567
+ get selectedMessageText() {
568
+ return this.hasSelectedOption() ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.modelValue().length : '1') : this.emptySelectionMessageText;
569
+ }
570
+ get ariaSetSize() {
571
+ return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;
572
+ }
573
+ get virtualScrollerDisabled() {
574
+ return !this.virtualScroll;
575
+ }
576
+ get searchFields() {
577
+ return this.filterBy?.split(',') || this.filterFields || [this.optionLabel];
578
+ }
579
+ get toggleAllAriaLabel() {
580
+ return this.config.translation.aria ? this.config.translation.aria[this.allSelected() ? 'selectAll' : 'unselectAll'] : undefined;
581
+ }
582
+ searchValue;
583
+ searchTimeout;
584
+ _selectAll = null;
585
+ _options = signal(null, ...(ngDevMode ? [{ debugName: "_options" }] : []));
586
+ startRangeIndex = signal(-1, ...(ngDevMode ? [{ debugName: "startRangeIndex" }] : []));
587
+ focusedOptionIndex = signal(-1, ...(ngDevMode ? [{ debugName: "focusedOptionIndex" }] : []));
588
+ onHostFocusOut(event) {
589
+ this.onFocusout(event);
590
+ }
591
+ visibleOptions = computed(() => {
592
+ const options = this.group ? this.flatOptions(this._options()) : this._options() || [];
593
+ return this._filterValue() ? this.filterService.filter(options, this.searchFields, this._filterValue(), this.filterMatchMode, this.filterLocale) : options;
594
+ }, ...(ngDevMode ? [{ debugName: "visibleOptions" }] : []));
595
+ constructor(filterService) {
596
+ super();
597
+ this.filterService = filterService;
598
+ }
599
+ ngOnInit() {
600
+ super.ngOnInit();
601
+ this.id = this.id || uuid('pn_id_');
602
+ this.translationSubscription = this.config.translationObserver.subscribe(() => {
603
+ this.cd.markForCheck();
604
+ });
605
+ this.autoUpdateModel();
606
+ if (this.filterBy) {
607
+ this.filterOptions = {
608
+ filter: (value) => this.onFilterChange(value),
609
+ reset: () => this.resetFilter()
610
+ };
611
+ }
612
+ }
613
+ ngAfterContentInit() {
614
+ this.templates.forEach((item) => {
615
+ switch (item.getType()) {
616
+ case 'item':
617
+ this._itemTemplate = item.template;
618
+ break;
619
+ case 'group':
620
+ this._groupTemplate = item.template;
621
+ break;
622
+ case 'header':
623
+ this._headerTemplate = item.template;
624
+ break;
625
+ case 'filter':
626
+ this._filterTemplate = item.template;
627
+ break;
628
+ case 'footer':
629
+ this._footerTemplate = item.template;
630
+ break;
631
+ case 'empty':
632
+ this._emptyTemplate = item.template;
633
+ break;
634
+ case 'emptyfilter':
635
+ this._emptyFilterTemplate = item.template;
636
+ break;
637
+ case 'filtericon':
638
+ this._filterIconTemplate = item.template;
639
+ break;
640
+ case 'checkicon':
641
+ this._checkIconTemplate = item.template;
642
+ break;
643
+ case 'checkmark':
644
+ this._checkmarkTemplate = item.template;
645
+ break;
646
+ case 'loader':
647
+ this._loaderTemplate = item.template;
648
+ break;
649
+ default:
650
+ this._itemTemplate = item.template;
651
+ break;
652
+ }
653
+ });
654
+ }
655
+ flatOptions(options) {
656
+ return (options || []).reduce((result, option, index) => {
657
+ result.push({ optionGroup: option, group: true, index });
658
+ const optionGroupChildren = this.getOptionGroupChildren(option);
659
+ optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));
660
+ return result;
661
+ }, []);
662
+ }
663
+ autoUpdateModel() {
664
+ if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption() && !this.multiple) {
665
+ const focusedOptionIndex = this.findFirstFocusedOptionIndex();
666
+ this.focusedOptionIndex.set(focusedOptionIndex);
667
+ this.onOptionSelect(null, this.visibleOptions()[this.focusedOptionIndex()]);
668
+ }
669
+ }
670
+ /**
671
+ * Updates the model value.
672
+ * @group Method
673
+ */
674
+ updateModel(value, event) {
675
+ this.value = value;
676
+ this.writeModelValue(value);
677
+ this.onModelChange(value);
678
+ this.onChange.emit({ originalEvent: event, value: this.value });
679
+ }
680
+ removeOption(option) {
681
+ return this.modelValue().filter((val) => !equals(val, this.getOptionValue(option), this.equalityKey()));
682
+ }
683
+ onOptionSelect(event, option, index = -1) {
684
+ if (this.$disabled() || this.isOptionDisabled(option) || this.readonly) {
685
+ return;
686
+ }
687
+ event && this.onClick.emit({ originalEvent: event, option, value: this.value });
688
+ this.multiple ? this.onOptionSelectMultiple(event, option) : this.onOptionSelectSingle(event, option);
689
+ this.optionTouched = false;
690
+ index !== -1 && this.focusedOptionIndex.set(index);
691
+ }
692
+ onOptionSelectMultiple(event, option) {
693
+ let selected = this.isSelected(option);
694
+ let value = null;
695
+ let metaSelection = this.optionTouched ? false : this.metaKeySelection;
696
+ if (metaSelection) {
697
+ let metaKey = event.metaKey || event.ctrlKey;
698
+ if (selected) {
699
+ value = metaKey ? this.removeOption(option) : [this.getOptionValue(option)];
700
+ }
701
+ else {
702
+ value = metaKey ? this.modelValue() || [] : [];
703
+ value = [...value, this.getOptionValue(option)];
704
+ }
705
+ }
706
+ else {
707
+ value = selected ? this.removeOption(option) : [...(this.modelValue() || []), this.getOptionValue(option)];
708
+ }
709
+ this.updateModel(value, event);
710
+ }
711
+ onOptionSelectSingle(event, option) {
712
+ let selected = this.isSelected(option);
713
+ let valueChanged = false;
714
+ let value = null;
715
+ let metaSelection = this.optionTouched ? false : this.metaKeySelection;
716
+ if (metaSelection) {
717
+ let metaKey = event.metaKey || event.ctrlKey;
718
+ if (selected) {
719
+ if (metaKey) {
720
+ value = null;
721
+ valueChanged = true;
722
+ }
723
+ }
724
+ else {
725
+ value = this.getOptionValue(option);
726
+ valueChanged = true;
727
+ }
728
+ }
729
+ else {
730
+ value = selected ? null : this.getOptionValue(option);
731
+ valueChanged = true;
732
+ }
733
+ if (valueChanged) {
734
+ this.updateModel(value, event);
735
+ }
736
+ }
737
+ onOptionSelectRange(event, start = -1, end = -1) {
738
+ start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));
739
+ end === -1 && (end = this.findNearestSelectedOptionIndex(start));
740
+ if (start !== -1 && end !== -1) {
741
+ const rangeStart = Math.min(start, end);
742
+ const rangeEnd = Math.max(start, end);
743
+ const value = this.visibleOptions()
744
+ .slice(rangeStart, rangeEnd + 1)
745
+ .filter((option) => this.isValidOption(option))
746
+ .map((option) => this.getOptionValue(option));
747
+ this.updateModel(value, event);
748
+ }
749
+ }
750
+ onToggleAll(event) {
751
+ if (this.$disabled() || this.readonly) {
752
+ return;
753
+ }
754
+ focus(this.headerCheckboxViewChild.nativeElement);
755
+ if (this.selectAll !== null) {
756
+ this.onSelectAllChange.emit({
757
+ originalEvent: event,
758
+ checked: !this.allSelected()
759
+ });
760
+ }
761
+ else {
762
+ const value = this.allSelected()
763
+ ? []
764
+ : this.visibleOptions()
765
+ .filter((option) => this.isValidOption(option))
766
+ .map((option) => this.getOptionValue(option));
767
+ this.updateModel(value, event);
768
+ this.onChange.emit({ originalEvent: event, value: this.value });
769
+ }
770
+ }
771
+ allSelected() {
772
+ return this.selectAll !== null ? this.selectAll : isNotEmpty(this.visibleOptions()) && this.visibleOptions().every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));
773
+ }
774
+ onOptionTouchEnd() {
775
+ if (this.$disabled()) {
776
+ return;
777
+ }
778
+ this.optionTouched = true;
779
+ }
780
+ onOptionMouseDown(event, index) {
781
+ this.changeFocusedOptionIndex(event, index);
782
+ }
783
+ onOptionMouseEnter(event, index) {
784
+ if (this.focusOnHover && this.focused) {
785
+ this.changeFocusedOptionIndex(event, index);
786
+ }
787
+ }
788
+ onOptionDoubleClick(event, option) {
789
+ if (this.$disabled() || this.isOptionDisabled(option) || this.readonly) {
790
+ return;
791
+ }
792
+ this.onDblClick.emit({
793
+ originalEvent: event,
794
+ option: option,
795
+ value: this.value
796
+ });
797
+ }
798
+ onFirstHiddenFocus(event) {
799
+ focus(this.listViewChild?.nativeElement);
800
+ const firstFocusableEl = getFirstFocusableElement(this.el.nativeElement, ':not([data-p-hidden-focusable="true"])');
801
+ this.lastHiddenFocusableElement.nativeElement.tabIndex = isEmpty(firstFocusableEl) ? '-1' : undefined;
802
+ this.firstHiddenFocusableElement.nativeElement.tabIndex = -1;
803
+ }
804
+ onLastHiddenFocus(event) {
805
+ const relatedTarget = event.relatedTarget;
806
+ if (relatedTarget === this.listViewChild?.nativeElement) {
807
+ const firstFocusableEl = getFirstFocusableElement(this.el.nativeElement, ':not(.p-hidden-focusable)');
808
+ focus(firstFocusableEl);
809
+ this.firstHiddenFocusableElement.nativeElement.tabIndex = undefined;
810
+ }
811
+ else {
812
+ focus(this.firstHiddenFocusableElement.nativeElement);
813
+ }
814
+ this.lastHiddenFocusableElement.nativeElement.tabIndex = -1;
815
+ }
816
+ onFocusout(event) {
817
+ if (!this.el.nativeElement.contains(event.relatedTarget) && this.lastHiddenFocusableElement && this.firstHiddenFocusableElement) {
818
+ this.firstHiddenFocusableElement.nativeElement.tabIndex = this.lastHiddenFocusableElement.nativeElement.tabIndex = undefined;
819
+ this.scrollerTabIndex = '0';
820
+ }
821
+ }
822
+ onListFocus(event) {
823
+ this.focused = true;
824
+ const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex();
825
+ this.focusedOptionIndex.set(focusedOptionIndex);
826
+ this.scrollInView(focusedOptionIndex);
827
+ this.onFocus.emit(event);
828
+ this.scrollerTabIndex = '-1';
829
+ }
830
+ onListBlur(event) {
831
+ this.focused = false;
832
+ this.focusedOptionIndex.set(-1);
833
+ this.startRangeIndex.set(-1);
834
+ this.searchValue = '';
835
+ this.onBlur.emit(event);
836
+ }
837
+ onHeaderCheckboxKeyDown(event) {
838
+ if (this.$disabled()) {
839
+ event.preventDefault();
840
+ return;
841
+ }
842
+ switch (event.code) {
843
+ case 'Space':
844
+ this.onToggleAll(event);
845
+ break;
846
+ case 'Enter':
847
+ this.onToggleAll(event);
848
+ break;
849
+ case 'Tab':
850
+ this.onHeaderCheckboxTabKeyDown(event);
851
+ break;
852
+ default:
853
+ break;
854
+ }
855
+ }
856
+ onHeaderCheckboxTabKeyDown(event) {
857
+ focus(this.listViewChild?.nativeElement);
858
+ event.preventDefault();
859
+ }
860
+ onFilterChange(event) {
861
+ let value = event.target.value?.trim();
862
+ this._filterValue.set(value);
863
+ this.focusedOptionIndex.set(-1);
864
+ this.startRangeIndex.set(-1);
865
+ this.onFilter.emit({ originalEvent: event, filter: this._filterValue() });
866
+ !this.virtualScrollerDisabled && this.scroller.scrollToIndex(0);
867
+ }
868
+ onFilterBlur(event) {
869
+ this.focusedOptionIndex.set(-1);
870
+ this.startRangeIndex.set(-1);
871
+ }
872
+ onListKeyDown(event) {
873
+ const metaKey = event.metaKey || event.ctrlKey;
874
+ switch (event.code) {
875
+ case 'ArrowDown':
876
+ this.onArrowDownKey(event);
877
+ break;
878
+ case 'ArrowUp':
879
+ this.onArrowUpKey(event);
880
+ break;
881
+ case 'Home':
882
+ this.onHomeKey(event);
883
+ break;
884
+ case 'End':
885
+ this.onEndKey(event);
886
+ break;
887
+ case 'PageDown':
888
+ this.onPageDownKey(event);
889
+ break;
890
+ case 'PageUp':
891
+ this.onPageUpKey(event);
892
+ break;
893
+ case 'Enter':
894
+ case 'Space':
895
+ case 'NumpadEnter':
896
+ this.onSpaceKey(event);
897
+ break;
898
+ case 'Tab':
899
+ //NOOP
900
+ break;
901
+ case 'ShiftLeft':
902
+ case 'ShiftRight':
903
+ this.onShiftKey();
904
+ break;
905
+ default:
906
+ if (this.multiple && event.code === 'KeyA' && metaKey) {
907
+ const value = this.visibleOptions()
908
+ .filter((option) => this.isValidOption(option))
909
+ .map((option) => this.getOptionValue(option));
910
+ this.updateModel(value, event);
911
+ event.preventDefault();
912
+ break;
913
+ }
914
+ if (!metaKey && isPrintableCharacter(event.key)) {
915
+ this.searchOptions(event, event.key);
916
+ event.preventDefault();
917
+ }
918
+ break;
919
+ }
920
+ }
921
+ onFilterKeyDown(event) {
922
+ switch (event.code) {
923
+ case 'ArrowDown':
924
+ this.onArrowDownKey(event);
925
+ break;
926
+ case 'ArrowUp':
927
+ this.onArrowUpKey(event);
928
+ break;
929
+ case 'ArrowLeft':
930
+ case 'ArrowRight':
931
+ this.onArrowLeftKey(event, true);
932
+ break;
933
+ case 'Home':
934
+ this.onHomeKey(event, true);
935
+ break;
936
+ case 'End':
937
+ this.onEndKey(event, true);
938
+ break;
939
+ case 'Enter':
940
+ this.onEnterKey(event);
941
+ break;
942
+ case 'ShiftLeft':
943
+ case 'ShiftRight':
944
+ this.onShiftKey();
945
+ break;
946
+ default:
947
+ break;
948
+ }
949
+ }
950
+ onArrowDownKey(event) {
951
+ const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();
952
+ if (this.multiple && event.shiftKey) {
953
+ this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);
954
+ }
955
+ this.changeFocusedOptionIndex(event, optionIndex);
956
+ event.preventDefault();
957
+ }
958
+ onArrowUpKey(event) {
959
+ const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();
960
+ if (this.multiple && event.shiftKey) {
961
+ this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());
962
+ }
963
+ this.changeFocusedOptionIndex(event, optionIndex);
964
+ event.preventDefault();
965
+ }
966
+ onArrowLeftKey(event, pressedInInputText = false) {
967
+ pressedInInputText && this.focusedOptionIndex.set(-1);
968
+ }
969
+ onHomeKey(event, pressedInInputText = false) {
970
+ if (pressedInInputText) {
971
+ event.currentTarget.setSelectionRange(0, 0);
972
+ this.focusedOptionIndex.set(-1);
973
+ }
974
+ else {
975
+ let metaKey = event.metaKey || event.ctrlKey;
976
+ let optionIndex = this.findFirstOptionIndex();
977
+ if (this.multiple && event.shiftKey && metaKey) {
978
+ this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());
979
+ }
980
+ this.changeFocusedOptionIndex(event, optionIndex);
981
+ }
982
+ event.preventDefault();
983
+ }
984
+ onEndKey(event, pressedInInputText = false) {
985
+ if (pressedInInputText) {
986
+ const target = event.currentTarget;
987
+ const len = target.value.length;
988
+ target.setSelectionRange(len, len);
989
+ this.focusedOptionIndex.set(-1);
990
+ }
991
+ else {
992
+ let metaKey = event.metaKey || event.ctrlKey;
993
+ let optionIndex = this.findLastOptionIndex();
994
+ if (this.multiple && event.shiftKey && metaKey) {
995
+ this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);
996
+ }
997
+ this.changeFocusedOptionIndex(event, optionIndex);
998
+ }
999
+ event.preventDefault();
1000
+ }
1001
+ onPageDownKey(event) {
1002
+ this.scrollInView(0);
1003
+ event.preventDefault();
1004
+ }
1005
+ onPageUpKey(event) {
1006
+ this.scrollInView(this.visibleOptions().length - 1);
1007
+ event.preventDefault();
1008
+ }
1009
+ onEnterKey(event) {
1010
+ if (this.focusedOptionIndex() !== -1) {
1011
+ if (this.multiple && event.shiftKey)
1012
+ this.onOptionSelectRange(event, this.focusedOptionIndex());
1013
+ else
1014
+ this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);
1015
+ }
1016
+ event.preventDefault();
1017
+ }
1018
+ onSpaceKey(event) {
1019
+ this.onEnterKey(event);
1020
+ }
1021
+ onShiftKey() {
1022
+ const focusedOptionIndex = this.focusedOptionIndex();
1023
+ this.startRangeIndex.set(focusedOptionIndex);
1024
+ }
1025
+ getOptionGroupChildren(optionGroup) {
1026
+ return this.optionGroupChildren ? resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
1027
+ }
1028
+ getOptionGroupLabel(optionGroup) {
1029
+ return this.optionGroupLabel ? resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label !== undefined ? optionGroup.label : optionGroup;
1030
+ }
1031
+ getOptionLabel(option) {
1032
+ return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option.label != undefined ? option.label : option;
1033
+ }
1034
+ getOptionIndex(index, scrollerOptions) {
1035
+ return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];
1036
+ }
1037
+ getOptionValue(option) {
1038
+ return this.optionValue ? resolveFieldData(option, this.optionValue) : !this.optionLabel && option && option.value !== undefined ? option.value : option;
1039
+ }
1040
+ getAriaPosInset(index) {
1041
+ return ((this.optionGroupLabel
1042
+ ? index -
1043
+ this.visibleOptions()
1044
+ .slice(0, index)
1045
+ .filter((option) => this.isOptionGroup(option)).length
1046
+ : index) + 1);
1047
+ }
1048
+ hasSelectedOption() {
1049
+ return isNotEmpty(this.modelValue());
1050
+ }
1051
+ isOptionGroup(option) {
1052
+ return this.optionGroupLabel && option.optionGroup && option.group;
1053
+ }
1054
+ changeFocusedOptionIndex(event, index) {
1055
+ if (this.focusedOptionIndex() !== index) {
1056
+ this.focusedOptionIndex.set(index);
1057
+ this.scrollInView();
1058
+ if (this.selectOnFocus && !this.multiple) {
1059
+ this.onOptionSelect(event, this.visibleOptions()[index]);
1060
+ }
1061
+ }
1062
+ }
1063
+ searchOptions(event, char) {
1064
+ this.searchValue = (this.searchValue || '') + char;
1065
+ let optionIndex = -1;
1066
+ let matched = false;
1067
+ if (this.focusedOptionIndex() !== -1) {
1068
+ optionIndex = this.visibleOptions()
1069
+ .slice(this.focusedOptionIndex())
1070
+ .findIndex((option) => this.isOptionMatched(option));
1071
+ optionIndex =
1072
+ optionIndex === -1
1073
+ ? this.visibleOptions()
1074
+ .slice(0, this.focusedOptionIndex())
1075
+ .findIndex((option) => this.isOptionMatched(option))
1076
+ : optionIndex + this.focusedOptionIndex();
1077
+ }
1078
+ else {
1079
+ optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));
1080
+ }
1081
+ if (optionIndex !== -1) {
1082
+ matched = true;
1083
+ }
1084
+ if (optionIndex === -1 && this.focusedOptionIndex() === -1) {
1085
+ optionIndex = this.findFirstFocusedOptionIndex();
1086
+ }
1087
+ if (optionIndex !== -1) {
1088
+ this.changeFocusedOptionIndex(event, optionIndex);
1089
+ }
1090
+ if (this.searchTimeout) {
1091
+ clearTimeout(this.searchTimeout);
1092
+ }
1093
+ this.searchTimeout = setTimeout(() => {
1094
+ this.searchValue = '';
1095
+ this.searchTimeout = null;
1096
+ }, 500);
1097
+ return matched;
1098
+ }
1099
+ isOptionMatched(option) {
1100
+ return this.isValidOption(option) && this.getOptionLabel(option).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));
1101
+ }
1102
+ scrollInView(index = -1) {
1103
+ const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;
1104
+ const element = findSingle(this.listViewChild?.nativeElement, `li[id="${id}"]`);
1105
+ if (element) {
1106
+ element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
1107
+ }
1108
+ else if (!this.virtualScrollerDisabled) {
1109
+ this.virtualScroll && this.scroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());
1110
+ }
1111
+ }
1112
+ findFirstOptionIndex() {
1113
+ return this.visibleOptions().findIndex((option) => this.isValidOption(option));
1114
+ }
1115
+ findLastOptionIndex() {
1116
+ return findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));
1117
+ }
1118
+ findFirstFocusedOptionIndex() {
1119
+ const selectedIndex = this.findFirstSelectedOptionIndex();
1120
+ return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;
1121
+ }
1122
+ findLastFocusedOptionIndex() {
1123
+ const selectedIndex = this.findLastSelectedOptionIndex();
1124
+ return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;
1125
+ }
1126
+ findLastSelectedOptionIndex() {
1127
+ return this.hasSelectedOption() ? findLastIndex(this.visibleOptions(), (option) => this.isValidSelectedOption(option)) : -1;
1128
+ }
1129
+ findNextOptionIndex(index) {
1130
+ const matchedOptionIndex = index < this.visibleOptions().length - 1
1131
+ ? this.visibleOptions()
1132
+ .slice(index + 1)
1133
+ .findIndex((option) => this.isValidOption(option))
1134
+ : -1;
1135
+ return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
1136
+ }
1137
+ findNextSelectedOptionIndex(index) {
1138
+ const matchedOptionIndex = this.hasSelectedOption() && index < this.visibleOptions().length - 1
1139
+ ? this.visibleOptions()
1140
+ .slice(index + 1)
1141
+ .findIndex((option) => this.isValidSelectedOption(option))
1142
+ : -1;
1143
+ return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;
1144
+ }
1145
+ findPrevSelectedOptionIndex(index) {
1146
+ const matchedOptionIndex = this.hasSelectedOption() && index > 0 ? findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;
1147
+ return matchedOptionIndex > -1 ? matchedOptionIndex : -1;
1148
+ }
1149
+ findFirstSelectedOptionIndex() {
1150
+ return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;
1151
+ }
1152
+ findPrevOptionIndex(index) {
1153
+ const matchedOptionIndex = index > 0 ? findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidOption(option)) : -1;
1154
+ return matchedOptionIndex > -1 ? matchedOptionIndex : index;
1155
+ }
1156
+ findSelectedOptionIndex() {
1157
+ if (this.$filled) {
1158
+ if (this.multiple) {
1159
+ for (let index = this.modelValue().length - 1; index >= 0; index--) {
1160
+ const value = this.modelValue()[index];
1161
+ const matchedOptionIndex = this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option) && this.isEquals(value, this.getOptionValue(option)));
1162
+ if (matchedOptionIndex > -1)
1163
+ return matchedOptionIndex;
1164
+ }
1165
+ }
1166
+ else {
1167
+ return this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option));
1168
+ }
1169
+ }
1170
+ return -1;
1171
+ }
1172
+ findNearestSelectedOptionIndex(index, firstCheckUp = false) {
1173
+ let matchedOptionIndex = -1;
1174
+ if (this.hasSelectedOption()) {
1175
+ if (firstCheckUp) {
1176
+ matchedOptionIndex = this.findPrevSelectedOptionIndex(index);
1177
+ matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;
1178
+ }
1179
+ else {
1180
+ matchedOptionIndex = this.findNextSelectedOptionIndex(index);
1181
+ matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;
1182
+ }
1183
+ }
1184
+ return matchedOptionIndex > -1 ? matchedOptionIndex : index;
1185
+ }
1186
+ equalityKey() {
1187
+ return this.optionValue ? null : this.dataKey;
1188
+ }
1189
+ isValidSelectedOption(option) {
1190
+ return this.isValidOption(option) && this.isSelected(option);
1191
+ }
1192
+ isOptionDisabled(option) {
1193
+ if (isFunction(this.optionDisabled)) {
1194
+ return this.optionDisabled(option);
1195
+ }
1196
+ return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;
1197
+ }
1198
+ isEquals(value1, value2) {
1199
+ return equals(value1, value2, this.equalityKey());
1200
+ }
1201
+ isSelected(option) {
1202
+ const optionValue = this.getOptionValue(option);
1203
+ if (this.multiple)
1204
+ return (this.modelValue() || []).some((value) => this.isEquals(value, optionValue));
1205
+ else
1206
+ return this.isEquals(this.modelValue(), optionValue);
1207
+ }
1208
+ isValidOption(option) {
1209
+ return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));
1210
+ }
1211
+ isEmpty() {
1212
+ return !this._options()?.length || !this.visibleOptions()?.length;
1213
+ }
1214
+ hasFilter() {
1215
+ return this._filterValue() && this._filterValue().trim().length > 0;
1216
+ }
1217
+ resetFilter() {
1218
+ if (this.filterViewChild && this.filterViewChild.nativeElement) {
1219
+ this.filterViewChild.nativeElement.value = '';
1220
+ }
1221
+ this._filterValue.set(null);
1222
+ }
1223
+ drop(event) {
1224
+ if (event) {
1225
+ this.onDrop.emit(event);
1226
+ }
1227
+ }
1228
+ /**
1229
+ * @override
1230
+ *
1231
+ * @see {@link BaseEditableHolder.writeControlValue}
1232
+ * Writes the value to the control.
1233
+ */
1234
+ writeControlValue(value, setModelValue) {
1235
+ this.value = value;
1236
+ setModelValue(this.value);
1237
+ this.cd.markForCheck();
1238
+ }
1239
+ ngOnDestroy() {
1240
+ if (this.translationSubscription) {
1241
+ this.translationSubscription.unsubscribe();
1242
+ }
1243
+ super.ngOnDestroy();
1244
+ }
1245
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: Listbox, deps: [{ token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
1246
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.4", type: Listbox, isStandalone: true, selector: "p-listbox, p-listBox, p-list-box", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, searchMessage: { classPropertyName: "searchMessage", publicName: "searchMessage", isSignal: false, isRequired: false, transformFunction: null }, emptySelectionMessage: { classPropertyName: "emptySelectionMessage", publicName: "emptySelectionMessage", isSignal: false, isRequired: false, transformFunction: null }, selectionMessage: { classPropertyName: "selectionMessage", publicName: "selectionMessage", isSignal: false, isRequired: false, transformFunction: null }, autoOptionFocus: { classPropertyName: "autoOptionFocus", publicName: "autoOptionFocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: false, isRequired: false, transformFunction: null }, selectOnFocus: { classPropertyName: "selectOnFocus", publicName: "selectOnFocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, searchLocale: { classPropertyName: "searchLocale", publicName: "searchLocale", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, focusOnHover: { classPropertyName: "focusOnHover", publicName: "focusOnHover", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, filterMessage: { classPropertyName: "filterMessage", publicName: "filterMessage", isSignal: false, isRequired: false, transformFunction: null }, filterFields: { classPropertyName: "filterFields", publicName: "filterFields", isSignal: false, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: false, isRequired: false, transformFunction: numberAttribute }, virtualScrollOptions: { classPropertyName: "virtualScrollOptions", publicName: "virtualScrollOptions", isSignal: false, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: false, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: false, isRequired: false, transformFunction: numberAttribute }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: false, isRequired: false, transformFunction: null }, listStyle: { classPropertyName: "listStyle", publicName: "listStyle", isSignal: false, isRequired: false, transformFunction: null }, listStyleClass: { classPropertyName: "listStyleClass", publicName: "listStyleClass", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, checkbox: { classPropertyName: "checkbox", publicName: "checkbox", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: false, isRequired: false, transformFunction: null }, filterMatchMode: { classPropertyName: "filterMatchMode", publicName: "filterMatchMode", isSignal: false, isRequired: false, transformFunction: null }, filterLocale: { classPropertyName: "filterLocale", publicName: "filterLocale", isSignal: false, isRequired: false, transformFunction: null }, metaKeySelection: { classPropertyName: "metaKeySelection", publicName: "metaKeySelection", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: false, isRequired: false, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: false, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: false, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: false, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: false, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: false, isRequired: false, transformFunction: null }, ariaFilterLabel: { classPropertyName: "ariaFilterLabel", publicName: "ariaFilterLabel", isSignal: false, isRequired: false, transformFunction: null }, filterPlaceHolder: { classPropertyName: "filterPlaceHolder", publicName: "filterPlaceHolder", isSignal: false, isRequired: false, transformFunction: null }, emptyFilterMessage: { classPropertyName: "emptyFilterMessage", publicName: "emptyFilterMessage", isSignal: false, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: false, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, options: { classPropertyName: "options", publicName: "options", isSignal: false, isRequired: false, transformFunction: null }, filterValue: { classPropertyName: "filterValue", publicName: "filterValue", isSignal: false, isRequired: false, transformFunction: null }, selectAll: { classPropertyName: "selectAll", publicName: "selectAll", isSignal: false, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, highlightOnSelect: { classPropertyName: "highlightOnSelect", publicName: "highlightOnSelect", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, checkmark: { classPropertyName: "checkmark", publicName: "checkmark", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, dragdrop: { classPropertyName: "dragdrop", publicName: "dragdrop", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, fluid: { classPropertyName: "fluid", publicName: "fluid", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChange: "onChange", onClick: "onClick", onDblClick: "onDblClick", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onSelectAllChange: "onSelectAllChange", onLazyLoad: "onLazyLoad", onDrop: "onDrop" }, host: { listeners: { "focusout": "onHostFocusOut($event)" }, properties: { "attr.id": "id", "class": "cn(cx('root'), styleClass)" } }, providers: [
1247
+ LISTBOX_VALUE_ACCESSOR,
1248
+ ListBoxStyle,
1249
+ {
1250
+ provide: CDK_DRAG_CONFIG,
1251
+ useValue: {
1252
+ zIndex: 1200
1253
+ }
1254
+ }
1255
+ ], queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "itemTemplate", first: true, predicate: ["item"] }, { propertyName: "groupTemplate", first: true, predicate: ["group"] }, { propertyName: "headerTemplate", first: true, predicate: ["header"] }, { propertyName: "filterTemplate", first: true, predicate: ["filter"] }, { propertyName: "footerTemplate", first: true, predicate: ["footer"] }, { propertyName: "emptyFilterTemplate", first: true, predicate: ["emptyfilter"] }, { propertyName: "emptyTemplate", first: true, predicate: ["empty"] }, { propertyName: "filterIconTemplate", first: true, predicate: ["filtericon"] }, { propertyName: "checkIconTemplate", first: true, predicate: ["checkicon"] }, { propertyName: "checkmarkTemplate", first: true, predicate: ["checkmark"] }, { propertyName: "loaderTemplate", first: true, predicate: ["loader"] }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "headerCheckboxViewChild", first: true, predicate: ["headerchkbox"], descendants: true }, { propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }, { propertyName: "lastHiddenFocusableElement", first: true, predicate: ["lastHiddenFocusableElement"], descendants: true }, { propertyName: "firstHiddenFocusableElement", first: true, predicate: ["firstHiddenFocusableElement"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "listViewChild", first: true, predicate: ["list"], descendants: true }, { propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
1256
+ <span #firstHiddenFocusableElement role="presentation" class="p-hidden-accessible p-hidden-focusable" [tabindex]="!$disabled() ? tabindex : -1" (focus)="onFirstHiddenFocus($event)" [attr.data-p-hidden-focusable]="true"> </span>
1257
+ <div [class]="cx('header')" *ngIf="headerFacet || headerTemplate || _headerTemplate">
1258
+ <ng-content select="p-header"></ng-content>
1259
+ <ng-container *ngTemplateOutlet="headerTemplate || _headerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }"></ng-container>
1260
+ </div>
1261
+ <div [class]="cx('header')" *ngIf="(checkbox && multiple && showToggleAll) || filter">
1262
+ <p-checkbox
1263
+ #headerchkbox
1264
+ (onChange)="onToggleAll($event)"
1265
+ *ngIf="checkbox && multiple"
1266
+ [class]="cx('optionCheckIcon')"
1267
+ [ngModel]="allSelected()"
1268
+ [disabled]="$disabled()"
1269
+ [tabindex]="-1"
1270
+ [variant]="config.inputStyle() === 'filled' || config.inputVariant() === 'filled' ? 'filled' : 'outlined'"
1271
+ [binary]="true"
1272
+ [attr.aria-label]="toggleAllAriaLabel"
1273
+ >
1274
+ <ng-container *ngIf="checkIconTemplate || _checkIconTemplate">
1275
+ <ng-template #icon>
1276
+ <ng-template *ngTemplateOutlet="checkIconTemplate || _checkIconTemplate; context: { $implicit: allSelected() }"></ng-template>
1277
+ </ng-template>
1278
+ </ng-container>
1279
+ </p-checkbox>
1280
+ <ng-container *ngIf="filterTemplate || _filterTemplate; else builtInFilterElement">
1281
+ <ng-container *ngTemplateOutlet="filterTemplate || _filterTemplate; context: { options: filterOptions }"></ng-container>
1282
+ </ng-container>
1283
+ <ng-template #builtInFilterElement>
1284
+ @if (filter) {
1285
+ <p-iconfield>
1286
+ <input
1287
+ #filterInput
1288
+ pInputText
1289
+ type="text"
1290
+ [class]="cx('pcFilter')"
1291
+ role="searchbox"
1292
+ [value]="_filterValue() || ''"
1293
+ [attr.disabled]="$disabled() ? '' : undefined"
1294
+ [attr.aria-owns]="id + '_list'"
1295
+ [attr.aria-activedescendant]="focusedOptionId"
1296
+ [attr.placeholder]="filterPlaceHolder"
1297
+ [attr.aria-label]="ariaFilterLabel"
1298
+ [attr.tabindex]="!$disabled() && !focused ? tabindex : -1"
1299
+ (input)="onFilterChange($event)"
1300
+ (keydown)="onFilterKeyDown($event)"
1301
+ (blur)="onFilterBlur($event)"
1302
+ />
1303
+ <p-inputicon>
1304
+ <svg data-p-icon="search" *ngIf="!filterIconTemplate && !_filterIconTemplate" [attr.aria-hidden]="true" />
1305
+ <span *ngIf="filterIconTemplate || _filterIconTemplate" [attr.aria-hidden]="true">
1306
+ <ng-template *ngTemplateOutlet="filterIconTemplate || _filterIconTemplate"></ng-template>
1307
+ </span>
1308
+ </p-inputicon>
1309
+ </p-iconfield>
1310
+ }
1311
+ <span role="status" [attr.aria-live]="'polite'" class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
1312
+ {{ filterResultMessageText }}
1313
+ </span>
1314
+ </ng-template>
1315
+ </div>
1316
+ <div #container [class]="cn(cx('listContainer'), listStyleClass)" [ngStyle]="listStyle" [style.max-height]="virtualScroll ? 'auto' : scrollHeight || 'auto'">
1317
+ @if (hasFilter() && isEmpty()) {
1318
+ <div [class]="cx('emptyMessage')" [cdkDropListData]="$any([])" (cdkDropListDropped)="drop($event)" cdkDropList>
1319
+ @if (!emptyFilterTemplate && !_emptyFilterTemplate && !_emptyTemplate && !emptyTemplate) {
1320
+ {{ emptyFilterMessageText }}
1321
+ } @else {
1322
+ <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || _emptyFilterTemplate || _emptyTemplate || emptyTemplate"></ng-container>
1323
+ }
1324
+ </div>
1325
+ } @else if (!hasFilter() && isEmpty()) {
1326
+ <div [class]="cx('emptyMessage')" [cdkDropListData]="$any([])" (cdkDropListDropped)="drop($event)" cdkDropList>
1327
+ @if (!emptyTemplate && !_emptyTemplate) {
1328
+ {{ emptyMessage }}
1329
+ } @else {
1330
+ <ng-container #empty *ngTemplateOutlet="emptyTemplate || _emptyTemplate"></ng-container>
1331
+ }
1332
+ </div>
1333
+ } @else {
1334
+ <p-scroller
1335
+ #scroller
1336
+ *ngIf="virtualScroll"
1337
+ [items]="visibleOptions()"
1338
+ [style]="{ height: scrollHeight }"
1339
+ [itemSize]="virtualScrollItemSize"
1340
+ [autoSize]="true"
1341
+ [lazy]="lazy"
1342
+ [options]="virtualScrollOptions"
1343
+ (onLazyLoad)="onLazyLoad.emit($event)"
1344
+ [tabindex]="scrollerTabIndex"
1345
+ >
1346
+ <ng-template #content let-items let-scrollerOptions="options">
1347
+ <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"></ng-container>
1348
+ </ng-template>
1349
+ @if (loaderTemplate || _loaderTemplate) {
1350
+ <ng-template #loader let-scrollerOptions="options">
1351
+ <ng-container *ngTemplateOutlet="loaderTemplate || _loaderTemplate; context: { options: scrollerOptions }"></ng-container>
1352
+ </ng-template>
1353
+ }
1354
+ </p-scroller>
1355
+ <ng-container *ngIf="!virtualScroll">
1356
+ <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"></ng-container>
1357
+ </ng-container>
1358
+
1359
+ <ng-template #buildInItems let-items let-scrollerOptions="options">
1360
+ <ul
1361
+ [id]="id + '_list'"
1362
+ [class]="cx('list')"
1363
+ role="listbox"
1364
+ [tabindex]="-1"
1365
+ [attr.aria-multiselectable]="true"
1366
+ [ngClass]="scrollerOptions.contentStyleClass"
1367
+ [style]="scrollerOptions.contentStyle"
1368
+ [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
1369
+ [attr.aria-label]="ariaLabel"
1370
+ [attr.aria-disabled]="$disabled()"
1371
+ (focus)="onListFocus($event)"
1372
+ (blur)="onListBlur($event)"
1373
+ (keydown)="onListKeyDown($event)"
1374
+ cdkDropList
1375
+ [cdkDropListData]="items"
1376
+ (cdkDropListDropped)="drop($event)"
1377
+ >
1378
+ <ng-template ngFor let-option [ngForOf]="items" let-i="index">
1379
+ <ng-container *ngIf="isOptionGroup(option)">
1380
+ <li
1381
+ [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
1382
+ [class]="cx('optionGroup')"
1383
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
1384
+ role="option"
1385
+ cdkDrag
1386
+ [cdkDragData]="option"
1387
+ [cdkDragDisabled]="!dragdrop"
1388
+ >
1389
+ <span *ngIf="!groupTemplate && !_groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
1390
+ <ng-container *ngTemplateOutlet="groupTemplate || _groupTemplate; context: { $implicit: option.optionGroup }"></ng-container>
1391
+ </li>
1392
+ </ng-container>
1393
+ <ng-container *ngIf="!isOptionGroup(option)">
1394
+ <li
1395
+ pRipple
1396
+ [class]="cx('option', { option, i, scrollerOptions })"
1397
+ role="option"
1398
+ [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
1399
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
1400
+ [attr.aria-label]="getOptionLabel(option)"
1401
+ [attr.aria-selected]="isSelected(option)"
1402
+ [attr.aria-disabled]="isOptionDisabled(option)"
1403
+ [attr.aria-setsize]="ariaSetSize"
1404
+ [attr.ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
1405
+ [attr.data-pc-section]="'item'"
1406
+ [attr.data-p-selected]="isSelected(option)"
1407
+ (click)="onOptionSelect($event, option, getOptionIndex(i, scrollerOptions))"
1408
+ (dblclick)="onOptionDoubleClick($event, option)"
1409
+ (mousedown)="onOptionMouseDown($event, getOptionIndex(i, scrollerOptions))"
1410
+ (mouseenter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
1411
+ (touchend)="onOptionTouchEnd()"
1412
+ cdkDrag
1413
+ [cdkDragData]="option"
1414
+ [cdkDragDisabled]="!dragdrop"
1415
+ >
1416
+ <p-checkbox
1417
+ *ngIf="checkbox && multiple"
1418
+ [class]="cx('optionCheckIcon')"
1419
+ [ngModel]="isSelected(option)"
1420
+ [readonly]="true"
1421
+ [disabled]="$disabled() || isOptionDisabled(option)"
1422
+ [tabindex]="-1"
1423
+ [variant]="config.inputStyle() === 'filled' || config.inputVariant() === 'filled' ? 'filled' : 'outlined'"
1424
+ [binary]="true"
1425
+ >
1426
+ <ng-container *ngIf="checkIconTemplate || _checkIconTemplate">
1427
+ <ng-template #icon>
1428
+ <ng-template *ngTemplateOutlet="checkIconTemplate || _checkIconTemplate; context: { $implicit: isSelected(option) }"></ng-template>
1429
+ </ng-template>
1430
+ </ng-container>
1431
+ </p-checkbox>
1432
+ <ng-container *ngIf="checkmark">
1433
+ <ng-container *ngIf="!checkmarkTemplate && !_checkmarkTemplate">
1434
+ <svg data-p-icon="blank" *ngIf="!isSelected(option)" [class]="cx('optionBlankIcon')" />
1435
+ <svg data-p-icon="check" *ngIf="isSelected(option)" [class]="cx('optionCheckIcon')" />
1436
+ </ng-container>
1437
+ <ng-container *ngTemplateOutlet="checkmarkTemplate || _checkmarkTemplate; context: { implicit: isSelected(option) }"></ng-container>
1438
+ </ng-container>
1439
+ <span *ngIf="!itemTemplate && !_itemTemplate">{{ getOptionLabel(option) }}</span>
1440
+ <ng-container
1441
+ *ngTemplateOutlet="
1442
+ itemTemplate || _itemTemplate;
1443
+ context: {
1444
+ $implicit: option,
1445
+ index: getOptionIndex(i, scrollerOptions),
1446
+ selected: isSelected(option),
1447
+ disabled: isOptionDisabled(option)
1448
+ }
1449
+ "
1450
+ ></ng-container>
1451
+ </li>
1452
+ </ng-container>
1453
+ </ng-template>
1454
+ </ul>
1455
+ </ng-template>
1456
+ }
1457
+ </div>
1458
+ <div *ngIf="footerFacet || footerTemplate || _footerTemplate">
1459
+ <ng-content select="p-footer"></ng-content>
1460
+ <ng-container *ngTemplateOutlet="footerTemplate || _footerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }"></ng-container>
1461
+ </div>
1462
+ <span *ngIf="isEmpty()" role="status" aria-live="polite" class="p-hidden-accessible">
1463
+ {{ emptyMessage }}
1464
+ </span>
1465
+ <span role="status" aria-live="polite" class="p-hidden-accessible">
1466
+ {{ selectedMessageText }}
1467
+ </span>
1468
+ <span #lastHiddenFocusableElement role="presentation" class="p-hidden-accessible p-hidden-focusable" [tabindex]="!$disabled() ? tabindex : -1" (focus)="onLastHiddenFocus($event)" [attr.data-p-hidden-focusable]="true"> </span>
1469
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: Ripple, selector: "[pRipple]" }, { kind: "component", type: Scroller, selector: "p-scroller, p-virtualscroller, p-virtual-scroller, p-virtualScroller", inputs: ["id", "style", "styleClass", "tabindex", "items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "step", "delay", "resizeDelay", "appendOnly", "inline", "lazy", "disabled", "loaderDisabled", "columns", "showSpacer", "showLoader", "numToleratedItems", "loading", "autoSize", "trackBy", "options"], outputs: ["onLazyLoad", "onScroll", "onScrollIndexChange"] }, { kind: "component", type: InputIcon, selector: "p-inputicon, p-inputIcon", inputs: ["styleClass"] }, { kind: "component", type: SearchIcon, selector: "[data-p-icon=\"search\"]" }, { kind: "component", type: Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "inputStyle", "styleClass", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "autofocus", "trueValue", "falseValue", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: CheckIcon, selector: "[data-p-icon=\"check\"]" }, { kind: "component", type: IconField, selector: "p-iconfield, p-iconField, p-icon-field", inputs: ["iconPosition", "styleClass"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["pSize", "variant", "fluid", "invalid"] }, { kind: "component", type: BlankIcon, selector: "[data-p-icon=\"blank\"]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1470
+ }
1471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: Listbox, decorators: [{
1472
+ type: Component,
1473
+ args: [{
1474
+ selector: 'p-listbox, p-listBox, p-list-box',
1475
+ standalone: true,
1476
+ imports: [CommonModule, Ripple, Scroller, InputIcon, SearchIcon, Checkbox, CheckIcon, IconField, InputText, BlankIcon, FormsModule, SharedModule, DragDropModule],
1477
+ template: `
1478
+ <span #firstHiddenFocusableElement role="presentation" class="p-hidden-accessible p-hidden-focusable" [tabindex]="!$disabled() ? tabindex : -1" (focus)="onFirstHiddenFocus($event)" [attr.data-p-hidden-focusable]="true"> </span>
1479
+ <div [class]="cx('header')" *ngIf="headerFacet || headerTemplate || _headerTemplate">
1480
+ <ng-content select="p-header"></ng-content>
1481
+ <ng-container *ngTemplateOutlet="headerTemplate || _headerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }"></ng-container>
1482
+ </div>
1483
+ <div [class]="cx('header')" *ngIf="(checkbox && multiple && showToggleAll) || filter">
1484
+ <p-checkbox
1485
+ #headerchkbox
1486
+ (onChange)="onToggleAll($event)"
1487
+ *ngIf="checkbox && multiple"
1488
+ [class]="cx('optionCheckIcon')"
1489
+ [ngModel]="allSelected()"
1490
+ [disabled]="$disabled()"
1491
+ [tabindex]="-1"
1492
+ [variant]="config.inputStyle() === 'filled' || config.inputVariant() === 'filled' ? 'filled' : 'outlined'"
1493
+ [binary]="true"
1494
+ [attr.aria-label]="toggleAllAriaLabel"
1495
+ >
1496
+ <ng-container *ngIf="checkIconTemplate || _checkIconTemplate">
1497
+ <ng-template #icon>
1498
+ <ng-template *ngTemplateOutlet="checkIconTemplate || _checkIconTemplate; context: { $implicit: allSelected() }"></ng-template>
1499
+ </ng-template>
1500
+ </ng-container>
1501
+ </p-checkbox>
1502
+ <ng-container *ngIf="filterTemplate || _filterTemplate; else builtInFilterElement">
1503
+ <ng-container *ngTemplateOutlet="filterTemplate || _filterTemplate; context: { options: filterOptions }"></ng-container>
1504
+ </ng-container>
1505
+ <ng-template #builtInFilterElement>
1506
+ @if (filter) {
1507
+ <p-iconfield>
1508
+ <input
1509
+ #filterInput
1510
+ pInputText
1511
+ type="text"
1512
+ [class]="cx('pcFilter')"
1513
+ role="searchbox"
1514
+ [value]="_filterValue() || ''"
1515
+ [attr.disabled]="$disabled() ? '' : undefined"
1516
+ [attr.aria-owns]="id + '_list'"
1517
+ [attr.aria-activedescendant]="focusedOptionId"
1518
+ [attr.placeholder]="filterPlaceHolder"
1519
+ [attr.aria-label]="ariaFilterLabel"
1520
+ [attr.tabindex]="!$disabled() && !focused ? tabindex : -1"
1521
+ (input)="onFilterChange($event)"
1522
+ (keydown)="onFilterKeyDown($event)"
1523
+ (blur)="onFilterBlur($event)"
1524
+ />
1525
+ <p-inputicon>
1526
+ <svg data-p-icon="search" *ngIf="!filterIconTemplate && !_filterIconTemplate" [attr.aria-hidden]="true" />
1527
+ <span *ngIf="filterIconTemplate || _filterIconTemplate" [attr.aria-hidden]="true">
1528
+ <ng-template *ngTemplateOutlet="filterIconTemplate || _filterIconTemplate"></ng-template>
1529
+ </span>
1530
+ </p-inputicon>
1531
+ </p-iconfield>
1532
+ }
1533
+ <span role="status" [attr.aria-live]="'polite'" class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
1534
+ {{ filterResultMessageText }}
1535
+ </span>
1536
+ </ng-template>
1537
+ </div>
1538
+ <div #container [class]="cn(cx('listContainer'), listStyleClass)" [ngStyle]="listStyle" [style.max-height]="virtualScroll ? 'auto' : scrollHeight || 'auto'">
1539
+ @if (hasFilter() && isEmpty()) {
1540
+ <div [class]="cx('emptyMessage')" [cdkDropListData]="$any([])" (cdkDropListDropped)="drop($event)" cdkDropList>
1541
+ @if (!emptyFilterTemplate && !_emptyFilterTemplate && !_emptyTemplate && !emptyTemplate) {
1542
+ {{ emptyFilterMessageText }}
1543
+ } @else {
1544
+ <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || _emptyFilterTemplate || _emptyTemplate || emptyTemplate"></ng-container>
1545
+ }
1546
+ </div>
1547
+ } @else if (!hasFilter() && isEmpty()) {
1548
+ <div [class]="cx('emptyMessage')" [cdkDropListData]="$any([])" (cdkDropListDropped)="drop($event)" cdkDropList>
1549
+ @if (!emptyTemplate && !_emptyTemplate) {
1550
+ {{ emptyMessage }}
1551
+ } @else {
1552
+ <ng-container #empty *ngTemplateOutlet="emptyTemplate || _emptyTemplate"></ng-container>
1553
+ }
1554
+ </div>
1555
+ } @else {
1556
+ <p-scroller
1557
+ #scroller
1558
+ *ngIf="virtualScroll"
1559
+ [items]="visibleOptions()"
1560
+ [style]="{ height: scrollHeight }"
1561
+ [itemSize]="virtualScrollItemSize"
1562
+ [autoSize]="true"
1563
+ [lazy]="lazy"
1564
+ [options]="virtualScrollOptions"
1565
+ (onLazyLoad)="onLazyLoad.emit($event)"
1566
+ [tabindex]="scrollerTabIndex"
1567
+ >
1568
+ <ng-template #content let-items let-scrollerOptions="options">
1569
+ <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"></ng-container>
1570
+ </ng-template>
1571
+ @if (loaderTemplate || _loaderTemplate) {
1572
+ <ng-template #loader let-scrollerOptions="options">
1573
+ <ng-container *ngTemplateOutlet="loaderTemplate || _loaderTemplate; context: { options: scrollerOptions }"></ng-container>
1574
+ </ng-template>
1575
+ }
1576
+ </p-scroller>
1577
+ <ng-container *ngIf="!virtualScroll">
1578
+ <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"></ng-container>
1579
+ </ng-container>
1580
+
1581
+ <ng-template #buildInItems let-items let-scrollerOptions="options">
1582
+ <ul
1583
+ [id]="id + '_list'"
1584
+ [class]="cx('list')"
1585
+ role="listbox"
1586
+ [tabindex]="-1"
1587
+ [attr.aria-multiselectable]="true"
1588
+ [ngClass]="scrollerOptions.contentStyleClass"
1589
+ [style]="scrollerOptions.contentStyle"
1590
+ [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
1591
+ [attr.aria-label]="ariaLabel"
1592
+ [attr.aria-disabled]="$disabled()"
1593
+ (focus)="onListFocus($event)"
1594
+ (blur)="onListBlur($event)"
1595
+ (keydown)="onListKeyDown($event)"
1596
+ cdkDropList
1597
+ [cdkDropListData]="items"
1598
+ (cdkDropListDropped)="drop($event)"
1599
+ >
1600
+ <ng-template ngFor let-option [ngForOf]="items" let-i="index">
1601
+ <ng-container *ngIf="isOptionGroup(option)">
1602
+ <li
1603
+ [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
1604
+ [class]="cx('optionGroup')"
1605
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
1606
+ role="option"
1607
+ cdkDrag
1608
+ [cdkDragData]="option"
1609
+ [cdkDragDisabled]="!dragdrop"
1610
+ >
1611
+ <span *ngIf="!groupTemplate && !_groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
1612
+ <ng-container *ngTemplateOutlet="groupTemplate || _groupTemplate; context: { $implicit: option.optionGroup }"></ng-container>
1613
+ </li>
1614
+ </ng-container>
1615
+ <ng-container *ngIf="!isOptionGroup(option)">
1616
+ <li
1617
+ pRipple
1618
+ [class]="cx('option', { option, i, scrollerOptions })"
1619
+ role="option"
1620
+ [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
1621
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
1622
+ [attr.aria-label]="getOptionLabel(option)"
1623
+ [attr.aria-selected]="isSelected(option)"
1624
+ [attr.aria-disabled]="isOptionDisabled(option)"
1625
+ [attr.aria-setsize]="ariaSetSize"
1626
+ [attr.ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
1627
+ [attr.data-pc-section]="'item'"
1628
+ [attr.data-p-selected]="isSelected(option)"
1629
+ (click)="onOptionSelect($event, option, getOptionIndex(i, scrollerOptions))"
1630
+ (dblclick)="onOptionDoubleClick($event, option)"
1631
+ (mousedown)="onOptionMouseDown($event, getOptionIndex(i, scrollerOptions))"
1632
+ (mouseenter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
1633
+ (touchend)="onOptionTouchEnd()"
1634
+ cdkDrag
1635
+ [cdkDragData]="option"
1636
+ [cdkDragDisabled]="!dragdrop"
1637
+ >
1638
+ <p-checkbox
1639
+ *ngIf="checkbox && multiple"
1640
+ [class]="cx('optionCheckIcon')"
1641
+ [ngModel]="isSelected(option)"
1642
+ [readonly]="true"
1643
+ [disabled]="$disabled() || isOptionDisabled(option)"
1644
+ [tabindex]="-1"
1645
+ [variant]="config.inputStyle() === 'filled' || config.inputVariant() === 'filled' ? 'filled' : 'outlined'"
1646
+ [binary]="true"
1647
+ >
1648
+ <ng-container *ngIf="checkIconTemplate || _checkIconTemplate">
1649
+ <ng-template #icon>
1650
+ <ng-template *ngTemplateOutlet="checkIconTemplate || _checkIconTemplate; context: { $implicit: isSelected(option) }"></ng-template>
1651
+ </ng-template>
1652
+ </ng-container>
1653
+ </p-checkbox>
1654
+ <ng-container *ngIf="checkmark">
1655
+ <ng-container *ngIf="!checkmarkTemplate && !_checkmarkTemplate">
1656
+ <svg data-p-icon="blank" *ngIf="!isSelected(option)" [class]="cx('optionBlankIcon')" />
1657
+ <svg data-p-icon="check" *ngIf="isSelected(option)" [class]="cx('optionCheckIcon')" />
1658
+ </ng-container>
1659
+ <ng-container *ngTemplateOutlet="checkmarkTemplate || _checkmarkTemplate; context: { implicit: isSelected(option) }"></ng-container>
1660
+ </ng-container>
1661
+ <span *ngIf="!itemTemplate && !_itemTemplate">{{ getOptionLabel(option) }}</span>
1662
+ <ng-container
1663
+ *ngTemplateOutlet="
1664
+ itemTemplate || _itemTemplate;
1665
+ context: {
1666
+ $implicit: option,
1667
+ index: getOptionIndex(i, scrollerOptions),
1668
+ selected: isSelected(option),
1669
+ disabled: isOptionDisabled(option)
1670
+ }
1671
+ "
1672
+ ></ng-container>
1673
+ </li>
1674
+ </ng-container>
1675
+ </ng-template>
1676
+ </ul>
1677
+ </ng-template>
1678
+ }
1679
+ </div>
1680
+ <div *ngIf="footerFacet || footerTemplate || _footerTemplate">
1681
+ <ng-content select="p-footer"></ng-content>
1682
+ <ng-container *ngTemplateOutlet="footerTemplate || _footerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }"></ng-container>
1683
+ </div>
1684
+ <span *ngIf="isEmpty()" role="status" aria-live="polite" class="p-hidden-accessible">
1685
+ {{ emptyMessage }}
1686
+ </span>
1687
+ <span role="status" aria-live="polite" class="p-hidden-accessible">
1688
+ {{ selectedMessageText }}
1689
+ </span>
1690
+ <span #lastHiddenFocusableElement role="presentation" class="p-hidden-accessible p-hidden-focusable" [tabindex]="!$disabled() ? tabindex : -1" (focus)="onLastHiddenFocus($event)" [attr.data-p-hidden-focusable]="true"> </span>
1691
+ `,
1692
+ providers: [
1693
+ LISTBOX_VALUE_ACCESSOR,
1694
+ ListBoxStyle,
1695
+ {
1696
+ provide: CDK_DRAG_CONFIG,
1697
+ useValue: {
1698
+ zIndex: 1200
1699
+ }
1700
+ }
1701
+ ],
1702
+ changeDetection: ChangeDetectionStrategy.OnPush,
1703
+ encapsulation: ViewEncapsulation.None,
1704
+ host: {
1705
+ '[attr.id]': 'id',
1706
+ '[class]': "cn(cx('root'), styleClass)"
1707
+ }
1708
+ }]
1709
+ }], ctorParameters: () => [{ type: i1.FilterService }], propDecorators: { id: [{
1710
+ type: Input
1711
+ }], searchMessage: [{
1712
+ type: Input
1713
+ }], emptySelectionMessage: [{
1714
+ type: Input
1715
+ }], selectionMessage: [{
1716
+ type: Input
1717
+ }], autoOptionFocus: [{
1718
+ type: Input,
1719
+ args: [{ transform: booleanAttribute }]
1720
+ }], ariaLabel: [{
1721
+ type: Input
1722
+ }], selectOnFocus: [{
1723
+ type: Input,
1724
+ args: [{ transform: booleanAttribute }]
1725
+ }], searchLocale: [{
1726
+ type: Input,
1727
+ args: [{ transform: booleanAttribute }]
1728
+ }], focusOnHover: [{
1729
+ type: Input,
1730
+ args: [{ transform: booleanAttribute }]
1731
+ }], filterMessage: [{
1732
+ type: Input
1733
+ }], filterFields: [{
1734
+ type: Input
1735
+ }], lazy: [{
1736
+ type: Input,
1737
+ args: [{ transform: booleanAttribute }]
1738
+ }], virtualScroll: [{
1739
+ type: Input,
1740
+ args: [{ transform: booleanAttribute }]
1741
+ }], virtualScrollItemSize: [{
1742
+ type: Input,
1743
+ args: [{ transform: numberAttribute }]
1744
+ }], virtualScrollOptions: [{
1745
+ type: Input
1746
+ }], scrollHeight: [{
1747
+ type: Input
1748
+ }], tabindex: [{
1749
+ type: Input,
1750
+ args: [{ transform: numberAttribute }]
1751
+ }], multiple: [{
1752
+ type: Input,
1753
+ args: [{ transform: booleanAttribute }]
1754
+ }], styleClass: [{
1755
+ type: Input
1756
+ }], listStyle: [{
1757
+ type: Input
1758
+ }], listStyleClass: [{
1759
+ type: Input
1760
+ }], readonly: [{
1761
+ type: Input,
1762
+ args: [{ transform: booleanAttribute }]
1763
+ }], checkbox: [{
1764
+ type: Input,
1765
+ args: [{ transform: booleanAttribute }]
1766
+ }], filter: [{
1767
+ type: Input,
1768
+ args: [{ transform: booleanAttribute }]
1769
+ }], filterBy: [{
1770
+ type: Input
1771
+ }], filterMatchMode: [{
1772
+ type: Input
1773
+ }], filterLocale: [{
1774
+ type: Input
1775
+ }], metaKeySelection: [{
1776
+ type: Input,
1777
+ args: [{ transform: booleanAttribute }]
1778
+ }], dataKey: [{
1779
+ type: Input
1780
+ }], showToggleAll: [{
1781
+ type: Input,
1782
+ args: [{ transform: booleanAttribute }]
1783
+ }], optionLabel: [{
1784
+ type: Input
1785
+ }], optionValue: [{
1786
+ type: Input
1787
+ }], optionGroupChildren: [{
1788
+ type: Input
1789
+ }], optionGroupLabel: [{
1790
+ type: Input
1791
+ }], optionDisabled: [{
1792
+ type: Input
1793
+ }], ariaFilterLabel: [{
1794
+ type: Input
1795
+ }], filterPlaceHolder: [{
1796
+ type: Input
1797
+ }], emptyFilterMessage: [{
1798
+ type: Input
1799
+ }], emptyMessage: [{
1800
+ type: Input
1801
+ }], group: [{
1802
+ type: Input,
1803
+ args: [{ transform: booleanAttribute }]
1804
+ }], options: [{
1805
+ type: Input
1806
+ }], filterValue: [{
1807
+ type: Input
1808
+ }], selectAll: [{
1809
+ type: Input
1810
+ }], striped: [{
1811
+ type: Input,
1812
+ args: [{ transform: booleanAttribute }]
1813
+ }], highlightOnSelect: [{
1814
+ type: Input,
1815
+ args: [{ transform: booleanAttribute }]
1816
+ }], checkmark: [{
1817
+ type: Input,
1818
+ args: [{ transform: booleanAttribute }]
1819
+ }], dragdrop: [{
1820
+ type: Input,
1821
+ args: [{ transform: booleanAttribute }]
1822
+ }], onChange: [{
1823
+ type: Output
1824
+ }], onClick: [{
1825
+ type: Output
1826
+ }], onDblClick: [{
1827
+ type: Output
1828
+ }], onFilter: [{
1829
+ type: Output
1830
+ }], onFocus: [{
1831
+ type: Output
1832
+ }], onBlur: [{
1833
+ type: Output
1834
+ }], onSelectAllChange: [{
1835
+ type: Output
1836
+ }], onLazyLoad: [{
1837
+ type: Output
1838
+ }], onDrop: [{
1839
+ type: Output
1840
+ }], headerCheckboxViewChild: [{
1841
+ type: ViewChild,
1842
+ args: ['headerchkbox']
1843
+ }], filterViewChild: [{
1844
+ type: ViewChild,
1845
+ args: ['filter']
1846
+ }], lastHiddenFocusableElement: [{
1847
+ type: ViewChild,
1848
+ args: ['lastHiddenFocusableElement']
1849
+ }], firstHiddenFocusableElement: [{
1850
+ type: ViewChild,
1851
+ args: ['firstHiddenFocusableElement']
1852
+ }], scroller: [{
1853
+ type: ViewChild,
1854
+ args: ['scroller']
1855
+ }], listViewChild: [{
1856
+ type: ViewChild,
1857
+ args: ['list']
1858
+ }], containerViewChild: [{
1859
+ type: ViewChild,
1860
+ args: ['container']
1861
+ }], headerFacet: [{
1862
+ type: ContentChild,
1863
+ args: [Header]
1864
+ }], footerFacet: [{
1865
+ type: ContentChild,
1866
+ args: [Footer]
1867
+ }], itemTemplate: [{
1868
+ type: ContentChild,
1869
+ args: ['item', { descendants: false }]
1870
+ }], groupTemplate: [{
1871
+ type: ContentChild,
1872
+ args: ['group', { descendants: false }]
1873
+ }], headerTemplate: [{
1874
+ type: ContentChild,
1875
+ args: ['header', { descendants: false }]
1876
+ }], filterTemplate: [{
1877
+ type: ContentChild,
1878
+ args: ['filter', { descendants: false }]
1879
+ }], footerTemplate: [{
1880
+ type: ContentChild,
1881
+ args: ['footer', { descendants: false }]
1882
+ }], emptyFilterTemplate: [{
1883
+ type: ContentChild,
1884
+ args: ['emptyfilter', { descendants: false }]
1885
+ }], emptyTemplate: [{
1886
+ type: ContentChild,
1887
+ args: ['empty', { descendants: false }]
1888
+ }], filterIconTemplate: [{
1889
+ type: ContentChild,
1890
+ args: ['filtericon', { descendants: false }]
1891
+ }], checkIconTemplate: [{
1892
+ type: ContentChild,
1893
+ args: ['checkicon', { descendants: false }]
1894
+ }], checkmarkTemplate: [{
1895
+ type: ContentChild,
1896
+ args: ['checkmark', { descendants: false }]
1897
+ }], loaderTemplate: [{
1898
+ type: ContentChild,
1899
+ args: ['loader', { descendants: false }]
1900
+ }], templates: [{
1901
+ type: ContentChildren,
1902
+ args: [PrimeTemplate]
1903
+ }], onHostFocusOut: [{
1904
+ type: HostListener,
1905
+ args: ['focusout', ['$event']]
1906
+ }] } });
1907
+ class ListboxModule {
1908
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: ListboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1909
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.4", ngImport: i0, type: ListboxModule, imports: [Listbox, SharedModule], exports: [Listbox, SharedModule] });
1910
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: ListboxModule, imports: [Listbox, SharedModule, SharedModule] });
1911
+ }
1912
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.4", ngImport: i0, type: ListboxModule, decorators: [{
1913
+ type: NgModule,
1914
+ args: [{
1915
+ imports: [Listbox, SharedModule],
1916
+ exports: [Listbox, SharedModule]
1917
+ }]
1918
+ }] });
1919
+
1920
+ /**
1921
+ * Generated bundle index. Do not edit.
1922
+ */
1923
+
1924
+ export { LISTBOX_VALUE_ACCESSOR, ListBoxStyle, Listbox, ListboxClasses, ListboxModule };
1925
+ //# sourceMappingURL=primeng-listbox.mjs.map