primeng 20.1.2 → 20.2.0

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 (320) hide show
  1. package/accordion/index.d.ts +2 -2
  2. package/animateonscroll/index.d.ts +2 -2
  3. package/api/index.d.ts +4 -3
  4. package/autocomplete/index.d.ts +59 -13
  5. package/avatargroup/index.d.ts +2 -2
  6. package/badge/index.d.ts +5 -5
  7. package/base/index.d.ts +6 -6
  8. package/basecomponent/index.d.ts +1 -1
  9. package/baseeditableholder/index.d.ts +4 -4
  10. package/baseinput/index.d.ts +12 -12
  11. package/breadcrumb/index.d.ts +1 -2
  12. package/button/index.d.ts +10 -10
  13. package/card/index.d.ts +1 -1
  14. package/carousel/index.d.ts +6 -6
  15. package/cascadeselect/index.d.ts +9 -9
  16. package/checkbox/index.d.ts +3 -3
  17. package/chip/index.d.ts +14 -4
  18. package/classnames/index.d.ts +38 -0
  19. package/config/index.d.ts +2 -2
  20. package/confirmdialog/index.d.ts +3 -3
  21. package/contextmenu/index.d.ts +4 -4
  22. package/dataview/index.d.ts +1 -1
  23. package/datepicker/index.d.ts +1 -1
  24. package/dialog/index.d.ts +4 -3
  25. package/divider/index.d.ts +2 -2
  26. package/dock/index.d.ts +2 -2
  27. package/dom/index.d.ts +4 -4
  28. package/dynamicdialog/index.d.ts +14 -14
  29. package/fesm2022/primeng-accordion.mjs +33 -21
  30. package/fesm2022/primeng-accordion.mjs.map +1 -1
  31. package/fesm2022/primeng-animateonscroll.mjs +8 -8
  32. package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
  33. package/fesm2022/primeng-api.mjs +31 -31
  34. package/fesm2022/primeng-autocomplete.mjs +180 -50
  35. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  36. package/fesm2022/primeng-autofocus.mjs +7 -7
  37. package/fesm2022/primeng-avatar.mjs +10 -10
  38. package/fesm2022/primeng-avatargroup.mjs +10 -10
  39. package/fesm2022/primeng-badge.mjs +15 -15
  40. package/fesm2022/primeng-badge.mjs.map +1 -1
  41. package/fesm2022/primeng-base.mjs +3 -3
  42. package/fesm2022/primeng-base.mjs.map +1 -1
  43. package/fesm2022/primeng-basecomponent.mjs +6 -6
  44. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  45. package/fesm2022/primeng-baseeditableholder.mjs +3 -3
  46. package/fesm2022/primeng-baseinput.mjs +3 -3
  47. package/fesm2022/primeng-baseinput.mjs.map +1 -1
  48. package/fesm2022/primeng-basemodelholder.mjs +3 -3
  49. package/fesm2022/primeng-blockui.mjs +10 -10
  50. package/fesm2022/primeng-breadcrumb.mjs +21 -21
  51. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  52. package/fesm2022/primeng-button.mjs +24 -23
  53. package/fesm2022/primeng-button.mjs.map +1 -1
  54. package/fesm2022/primeng-buttongroup.mjs +10 -10
  55. package/fesm2022/primeng-card.mjs +10 -10
  56. package/fesm2022/primeng-carousel.mjs +23 -23
  57. package/fesm2022/primeng-carousel.mjs.map +1 -1
  58. package/fesm2022/primeng-cascadeselect.mjs +31 -25
  59. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  60. package/fesm2022/primeng-chart.mjs +10 -10
  61. package/fesm2022/primeng-checkbox.mjs +15 -14
  62. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  63. package/fesm2022/primeng-chip.mjs +48 -17
  64. package/fesm2022/primeng-chip.mjs.map +1 -1
  65. package/fesm2022/primeng-classnames.mjs +73 -0
  66. package/fesm2022/primeng-classnames.mjs.map +1 -0
  67. package/fesm2022/primeng-colorpicker.mjs +11 -11
  68. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  69. package/fesm2022/primeng-config.mjs +8 -7
  70. package/fesm2022/primeng-config.mjs.map +1 -1
  71. package/fesm2022/primeng-confirmdialog.mjs +16 -10
  72. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  73. package/fesm2022/primeng-confirmpopup.mjs +24 -22
  74. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  75. package/fesm2022/primeng-contextmenu.mjs +24 -22
  76. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  77. package/fesm2022/primeng-dataview.mjs +11 -11
  78. package/fesm2022/primeng-dataview.mjs.map +1 -1
  79. package/fesm2022/primeng-datepicker.mjs +23 -23
  80. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  81. package/fesm2022/primeng-dialog.mjs +34 -15
  82. package/fesm2022/primeng-dialog.mjs.map +1 -1
  83. package/fesm2022/primeng-divider.mjs +10 -10
  84. package/fesm2022/primeng-dock.mjs +27 -25
  85. package/fesm2022/primeng-dock.mjs.map +1 -1
  86. package/fesm2022/primeng-dom.mjs +13 -10
  87. package/fesm2022/primeng-dom.mjs.map +1 -1
  88. package/fesm2022/primeng-dragdrop.mjs +10 -10
  89. package/fesm2022/primeng-drawer.mjs +28 -19
  90. package/fesm2022/primeng-drawer.mjs.map +1 -1
  91. package/fesm2022/primeng-dynamicdialog.mjs +48 -39
  92. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  93. package/fesm2022/primeng-editor.mjs +11 -11
  94. package/fesm2022/primeng-editor.mjs.map +1 -1
  95. package/fesm2022/primeng-fieldset.mjs +12 -11
  96. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  97. package/fesm2022/primeng-fileupload.mjs +15 -15
  98. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  99. package/fesm2022/primeng-floatlabel.mjs +10 -10
  100. package/fesm2022/primeng-fluid.mjs +10 -12
  101. package/fesm2022/primeng-fluid.mjs.map +1 -1
  102. package/fesm2022/primeng-focustrap.mjs +7 -7
  103. package/fesm2022/primeng-focustrap.mjs.map +1 -1
  104. package/fesm2022/primeng-galleria.mjs +42 -38
  105. package/fesm2022/primeng-galleria.mjs.map +1 -1
  106. package/fesm2022/primeng-iconfield.mjs +10 -10
  107. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -3
  108. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -3
  109. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -3
  110. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -3
  111. package/fesm2022/primeng-icons-angledown.mjs +3 -3
  112. package/fesm2022/primeng-icons-angleleft.mjs +3 -3
  113. package/fesm2022/primeng-icons-angleright.mjs +3 -3
  114. package/fesm2022/primeng-icons-angleup.mjs +3 -3
  115. package/fesm2022/primeng-icons-arrowdown.mjs +3 -3
  116. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -3
  117. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -3
  118. package/fesm2022/primeng-icons-arrowleft.mjs +3 -3
  119. package/fesm2022/primeng-icons-arrowright.mjs +3 -3
  120. package/fesm2022/primeng-icons-arrowup.mjs +3 -3
  121. package/fesm2022/primeng-icons-ban.mjs +3 -3
  122. package/fesm2022/primeng-icons-bars.mjs +3 -3
  123. package/fesm2022/primeng-icons-baseicon.mjs +6 -6
  124. package/fesm2022/primeng-icons-blank.mjs +3 -3
  125. package/fesm2022/primeng-icons-calendar.mjs +3 -3
  126. package/fesm2022/primeng-icons-caretleft.mjs +3 -3
  127. package/fesm2022/primeng-icons-caretright.mjs +3 -3
  128. package/fesm2022/primeng-icons-check.mjs +3 -3
  129. package/fesm2022/primeng-icons-chevrondown.mjs +3 -3
  130. package/fesm2022/primeng-icons-chevronleft.mjs +3 -3
  131. package/fesm2022/primeng-icons-chevronright.mjs +3 -3
  132. package/fesm2022/primeng-icons-chevronup.mjs +3 -3
  133. package/fesm2022/primeng-icons-exclamationtriangle.mjs +3 -3
  134. package/fesm2022/primeng-icons-eye.mjs +3 -3
  135. package/fesm2022/primeng-icons-eyeslash.mjs +3 -3
  136. package/fesm2022/primeng-icons-filter.mjs +3 -3
  137. package/fesm2022/primeng-icons-filterfill.mjs +3 -3
  138. package/fesm2022/primeng-icons-filterslash.mjs +3 -3
  139. package/fesm2022/primeng-icons-home.mjs +3 -3
  140. package/fesm2022/primeng-icons-infocircle.mjs +3 -3
  141. package/fesm2022/primeng-icons-minus.mjs +3 -3
  142. package/fesm2022/primeng-icons-pencil.mjs +3 -3
  143. package/fesm2022/primeng-icons-plus.mjs +3 -3
  144. package/fesm2022/primeng-icons-refresh.mjs +3 -3
  145. package/fesm2022/primeng-icons-search.mjs +3 -3
  146. package/fesm2022/primeng-icons-searchminus.mjs +3 -3
  147. package/fesm2022/primeng-icons-searchplus.mjs +3 -3
  148. package/fesm2022/primeng-icons-sortalt.mjs +3 -3
  149. package/fesm2022/primeng-icons-sortamountdown.mjs +3 -3
  150. package/fesm2022/primeng-icons-sortamountupalt.mjs +3 -3
  151. package/fesm2022/primeng-icons-spinner.mjs +3 -3
  152. package/fesm2022/primeng-icons-star.mjs +3 -3
  153. package/fesm2022/primeng-icons-starfill.mjs +3 -3
  154. package/fesm2022/primeng-icons-thlarge.mjs +3 -3
  155. package/fesm2022/primeng-icons-times.mjs +3 -3
  156. package/fesm2022/primeng-icons-timescircle.mjs +3 -3
  157. package/fesm2022/primeng-icons-trash.mjs +3 -3
  158. package/fesm2022/primeng-icons-undo.mjs +3 -3
  159. package/fesm2022/primeng-icons-upload.mjs +3 -3
  160. package/fesm2022/primeng-icons-windowmaximize.mjs +3 -3
  161. package/fesm2022/primeng-icons-windowminimize.mjs +3 -3
  162. package/fesm2022/primeng-iftalabel.mjs +10 -10
  163. package/fesm2022/primeng-image.mjs +19 -16
  164. package/fesm2022/primeng-image.mjs.map +1 -1
  165. package/fesm2022/primeng-imagecompare.mjs +10 -10
  166. package/fesm2022/primeng-inplace.mjs +16 -16
  167. package/fesm2022/primeng-inputgroup.mjs +10 -10
  168. package/fesm2022/primeng-inputgroupaddon.mjs +10 -10
  169. package/fesm2022/primeng-inputicon.mjs +10 -10
  170. package/fesm2022/primeng-inputmask.mjs +22 -13
  171. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  172. package/fesm2022/primeng-inputnumber.mjs +52 -31
  173. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  174. package/fesm2022/primeng-inputotp.mjs +11 -11
  175. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  176. package/fesm2022/primeng-inputtext.mjs +10 -10
  177. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  178. package/fesm2022/primeng-keyfilter.mjs +19 -10
  179. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  180. package/fesm2022/primeng-knob.mjs +10 -10
  181. package/fesm2022/primeng-listbox.mjs +124 -43
  182. package/fesm2022/primeng-listbox.mjs.map +1 -1
  183. package/fesm2022/primeng-megamenu.mjs +22 -20
  184. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  185. package/fesm2022/primeng-menu.mjs +35 -44
  186. package/fesm2022/primeng-menu.mjs.map +1 -1
  187. package/fesm2022/primeng-menubar.mjs +28 -27
  188. package/fesm2022/primeng-menubar.mjs.map +1 -1
  189. package/fesm2022/primeng-message.mjs +33 -30
  190. package/fesm2022/primeng-message.mjs.map +1 -1
  191. package/fesm2022/primeng-metergroup.mjs +27 -18
  192. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  193. package/fesm2022/primeng-multiselect.mjs +58 -48
  194. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  195. package/fesm2022/primeng-orderlist.mjs +149 -43
  196. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  197. package/fesm2022/primeng-organizationchart.mjs +13 -13
  198. package/fesm2022/primeng-overlay.mjs +15 -11
  199. package/fesm2022/primeng-overlay.mjs.map +1 -1
  200. package/fesm2022/primeng-overlaybadge.mjs +10 -10
  201. package/fesm2022/primeng-paginator.mjs +11 -11
  202. package/fesm2022/primeng-paginator.mjs.map +1 -1
  203. package/fesm2022/primeng-panel.mjs +11 -11
  204. package/fesm2022/primeng-panel.mjs.map +1 -1
  205. package/fesm2022/primeng-panelmenu.mjs +27 -26
  206. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  207. package/fesm2022/primeng-password.mjs +25 -21
  208. package/fesm2022/primeng-password.mjs.map +1 -1
  209. package/fesm2022/primeng-picklist.mjs +129 -48
  210. package/fesm2022/primeng-picklist.mjs.map +1 -1
  211. package/fesm2022/primeng-popover.mjs +11 -11
  212. package/fesm2022/primeng-popover.mjs.map +1 -1
  213. package/fesm2022/primeng-progressbar.mjs +10 -10
  214. package/fesm2022/primeng-progressspinner.mjs +10 -10
  215. package/fesm2022/primeng-radiobutton.mjs +15 -15
  216. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  217. package/fesm2022/primeng-rating.mjs +11 -11
  218. package/fesm2022/primeng-rating.mjs.map +1 -1
  219. package/fesm2022/primeng-ripple.mjs +10 -10
  220. package/fesm2022/primeng-scroller.mjs +10 -10
  221. package/fesm2022/primeng-scrollpanel.mjs +19 -19
  222. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  223. package/fesm2022/primeng-scrolltop.mjs +10 -10
  224. package/fesm2022/primeng-select.mjs +56 -38
  225. package/fesm2022/primeng-select.mjs.map +1 -1
  226. package/fesm2022/primeng-selectbutton.mjs +12 -12
  227. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  228. package/fesm2022/primeng-skeleton.mjs +10 -10
  229. package/fesm2022/primeng-slider.mjs +14 -14
  230. package/fesm2022/primeng-slider.mjs.map +1 -1
  231. package/fesm2022/primeng-speeddial.mjs +32 -24
  232. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  233. package/fesm2022/primeng-splitbutton.mjs +15 -15
  234. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  235. package/fesm2022/primeng-splitter.mjs +21 -21
  236. package/fesm2022/primeng-splitter.mjs.map +1 -1
  237. package/fesm2022/primeng-stepper.mjs +43 -43
  238. package/fesm2022/primeng-stepper.mjs.map +1 -1
  239. package/fesm2022/primeng-steps.mjs +15 -15
  240. package/fesm2022/primeng-steps.mjs.map +1 -1
  241. package/fesm2022/primeng-styleclass.mjs +8 -8
  242. package/fesm2022/primeng-styleclass.mjs.map +1 -1
  243. package/fesm2022/primeng-table.mjs +178 -158
  244. package/fesm2022/primeng-table.mjs.map +1 -1
  245. package/fesm2022/primeng-tabs.mjs +99 -55
  246. package/fesm2022/primeng-tabs.mjs.map +1 -1
  247. package/fesm2022/primeng-tag.mjs +10 -10
  248. package/fesm2022/primeng-tag.mjs.map +1 -1
  249. package/fesm2022/primeng-terminal.mjs +13 -13
  250. package/fesm2022/primeng-textarea.mjs +11 -11
  251. package/fesm2022/primeng-textarea.mjs.map +1 -1
  252. package/fesm2022/primeng-tieredmenu.mjs +26 -25
  253. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  254. package/fesm2022/primeng-timeline.mjs +10 -10
  255. package/fesm2022/primeng-toast.mjs +14 -13
  256. package/fesm2022/primeng-toast.mjs.map +1 -1
  257. package/fesm2022/primeng-togglebutton.mjs +20 -13
  258. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  259. package/fesm2022/primeng-toggleswitch.mjs +10 -10
  260. package/fesm2022/primeng-toolbar.mjs +10 -10
  261. package/fesm2022/primeng-tooltip.mjs +16 -15
  262. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  263. package/fesm2022/primeng-tree.mjs +170 -221
  264. package/fesm2022/primeng-tree.mjs.map +1 -1
  265. package/fesm2022/primeng-treeselect.mjs +17 -17
  266. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  267. package/fesm2022/primeng-treetable.mjs +84 -77
  268. package/fesm2022/primeng-treetable.mjs.map +1 -1
  269. package/fesm2022/primeng-usestyle.mjs +20 -18
  270. package/fesm2022/primeng-usestyle.mjs.map +1 -1
  271. package/fesm2022/primeng-utils.mjs.map +1 -1
  272. package/fieldset/index.d.ts +3 -2
  273. package/fileupload/index.d.ts +6 -6
  274. package/fluid/index.d.ts +0 -2
  275. package/galleria/index.d.ts +10 -10
  276. package/icons/baseicon/index.d.ts +1 -1
  277. package/image/index.d.ts +7 -7
  278. package/inputnumber/index.d.ts +7 -7
  279. package/inputotp/index.d.ts +3 -3
  280. package/inputtext/index.d.ts +6 -6
  281. package/keyfilter/index.d.ts +2 -2
  282. package/listbox/index.d.ts +31 -19
  283. package/megamenu/index.d.ts +1 -1
  284. package/menu/index.d.ts +1 -2
  285. package/message/index.d.ts +3 -2
  286. package/metergroup/index.d.ts +6 -6
  287. package/multiselect/index.d.ts +18 -17
  288. package/orderlist/index.d.ts +13 -7
  289. package/organizationchart/index.d.ts +2 -2
  290. package/overlay/index.d.ts +5 -5
  291. package/package.json +198 -194
  292. package/paginator/index.d.ts +1 -1
  293. package/panel/index.d.ts +2 -2
  294. package/panelmenu/index.d.ts +8 -8
  295. package/password/index.d.ts +6 -6
  296. package/picklist/index.d.ts +17 -12
  297. package/radiobutton/index.d.ts +3 -3
  298. package/rating/index.d.ts +1 -1
  299. package/scroller/index.d.ts +3 -3
  300. package/select/index.d.ts +11 -11
  301. package/selectbutton/index.d.ts +3 -3
  302. package/slider/index.d.ts +2 -2
  303. package/speeddial/index.d.ts +9 -9
  304. package/splitter/index.d.ts +3 -3
  305. package/stepper/index.d.ts +4 -4
  306. package/steps/index.d.ts +3 -3
  307. package/table/index.d.ts +39 -31
  308. package/tabs/index.d.ts +23 -8
  309. package/tag/index.d.ts +1 -1
  310. package/textarea/index.d.ts +6 -6
  311. package/tieredmenu/index.d.ts +1 -1
  312. package/toast/index.d.ts +5 -5
  313. package/togglebutton/index.d.ts +4 -3
  314. package/toggleswitch/index.d.ts +1 -1
  315. package/tooltip/index.d.ts +11 -11
  316. package/tree/index.d.ts +31 -46
  317. package/treeselect/index.d.ts +6 -6
  318. package/treetable/index.d.ts +10 -10
  319. package/usestyle/index.d.ts +2 -2
  320. package/utils/index.d.ts +2 -2
@@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Injectable, forwardRef, input, EventEmitter, inject, signal, computed, booleanAttribute, numberAttribute, ContentChildren, HostListener, ContentChild, ViewChild, Output, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
5
5
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
- import { resolveFieldData, isNotEmpty, uuid, findLastIndex, equals, focus, isEmpty, findSingle } from '@primeuix/utils';
6
+ import { equals, isNotEmpty, uuid, findLastIndex, resolveFieldData, focus, isEmpty, findSingle } from '@primeuix/utils';
7
7
  import * as i1 from 'primeng/api';
8
8
  import { TranslationKeys, SharedModule, PrimeTemplate } from 'primeng/api';
9
9
  import { AutoFocus } from 'primeng/autofocus';
@@ -104,10 +104,10 @@ class AutoCompleteStyle extends BaseStyle {
104
104
  theme = theme;
105
105
  classes = classes;
106
106
  inlineStyles = inlineStyles;
107
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AutoCompleteStyle, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
108
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AutoCompleteStyle });
107
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AutoCompleteStyle, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
108
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AutoCompleteStyle });
109
109
  }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AutoCompleteStyle, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AutoCompleteStyle, decorators: [{
111
111
  type: Injectable
112
112
  }] });
113
113
  /**
@@ -362,6 +362,11 @@ class AutoComplete extends BaseInput {
362
362
  * @group Props
363
363
  */
364
364
  multiple;
365
+ /**
366
+ * When enabled, the input value is added to the selected items on tab key press when multiple is true and typeahead is false.
367
+ * @group Props
368
+ */
369
+ addOnTab = false;
365
370
  /**
366
371
  * Index of the element in tabbing order.
367
372
  * @group Props
@@ -487,6 +492,17 @@ class AutoComplete extends BaseInput {
487
492
  * @group Props
488
493
  */
489
494
  typeahead = true;
495
+ /**
496
+ * Whether to add an item on blur event if the input has value and typeahead is false with multiple mode.
497
+ * @defaultValue false
498
+ * @group Props
499
+ */
500
+ addOnBlur = false;
501
+ /**
502
+ * Separator char to add item when typeahead is false and multiple mode is enabled.
503
+ * @group Props
504
+ */
505
+ separator;
490
506
  /**
491
507
  * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
492
508
  * @defaultValue 'self'
@@ -511,6 +527,12 @@ class AutoComplete extends BaseInput {
511
527
  * @group Emits
512
528
  */
513
529
  onUnselect = new EventEmitter();
530
+ /**
531
+ * Callback to invoke when an item is added via addOnBlur or separator features.
532
+ * @param {AutoCompleteAddEvent} event - Custom add event.
533
+ * @group Emits
534
+ */
535
+ onAdd = new EventEmitter();
514
536
  /**
515
537
  * Callback to invoke when the component receives focus.
516
538
  * @param {Event} event - Browser event.
@@ -535,6 +557,12 @@ class AutoComplete extends BaseInput {
535
557
  * @group Emits
536
558
  */
537
559
  onClear = new EventEmitter();
560
+ /**
561
+ * Callback to invoke on input key down.
562
+ * @param {KeyboardEvent} event - Keyboard event.
563
+ * @group Emits
564
+ */
565
+ onInputKeydown = new EventEmitter();
538
566
  /**
539
567
  * Callback to invoke on input key up.
540
568
  * @param {KeyboardEvent} event - Keyboard event.
@@ -659,7 +687,7 @@ class AutoComplete extends BaseInput {
659
687
  }, ...(ngDevMode ? [{ debugName: "visibleOptions" }] : []));
660
688
  inputValue = computed(() => {
661
689
  const modelValue = this.modelValue();
662
- const selectedOption = this.optionValueSelected ? (this.suggestions || []).find((item) => resolveFieldData(item, this.optionValue) === modelValue) : modelValue;
690
+ const selectedOption = this.optionValueSelected ? (this.suggestions || []).find((option) => equals(option, modelValue, this.equalityKey())) : modelValue;
663
691
  if (isNotEmpty(modelValue)) {
664
692
  if (typeof modelValue === 'object' || this.optionValueSelected) {
665
693
  const label = this.getOptionLabel(selectedOption);
@@ -842,28 +870,28 @@ class AutoComplete extends BaseInput {
842
870
  }
843
871
  isSelected(option) {
844
872
  if (this.multiple) {
845
- return this.unique ? this.modelValue()?.find((model) => equals(model, this.getOptionValue(option), this.equalityKey())) : false;
873
+ return this.unique ? this.modelValue()?.some((model) => equals(model, option, this.equalityKey())) : false;
846
874
  }
847
- return equals(this.modelValue(), this.getOptionValue(option), this.equalityKey());
875
+ return equals(this.modelValue(), option, this.equalityKey());
848
876
  }
849
877
  isOptionMatched(option, value) {
850
878
  return this.isValidOption(option) && this.getOptionLabel(option).toLocaleLowerCase(this.searchLocale) === value.toLocaleLowerCase(this.searchLocale);
851
879
  }
852
880
  isInputClicked(event) {
853
- return event.target === this.inputEL.nativeElement;
881
+ return event.target === this.inputEL?.nativeElement;
854
882
  }
855
883
  isDropdownClicked(event) {
856
884
  return this.dropdownButton?.nativeElement ? event.target === this.dropdownButton.nativeElement || this.dropdownButton.nativeElement.contains(event.target) : false;
857
885
  }
858
886
  equalityKey() {
859
- return this.dataKey; // TODO: The 'optionValue' properties can be added.
887
+ return this.optionValue ? undefined : this.dataKey;
860
888
  }
861
889
  onContainerClick(event) {
862
890
  if (this.$disabled() || this.loading || this.isInputClicked(event) || this.isDropdownClicked(event)) {
863
891
  return;
864
892
  }
865
893
  if (!this.overlayViewChild || !this.overlayViewChild.overlayViewChild?.nativeElement.contains(event.target)) {
866
- focus(this.inputEL.nativeElement);
894
+ focus(this.inputEL?.nativeElement);
867
895
  }
868
896
  }
869
897
  handleDropdownClick(event) {
@@ -872,8 +900,8 @@ class AutoComplete extends BaseInput {
872
900
  this.hide(true);
873
901
  }
874
902
  else {
875
- focus(this.inputEL.nativeElement);
876
- query = this.inputEL.nativeElement.value;
903
+ focus(this.inputEL?.nativeElement);
904
+ query = this.inputEL?.nativeElement?.value;
877
905
  if (this.dropdownMode === 'blank')
878
906
  this.search(event, '', 'dropdown');
879
907
  else if (this.dropdownMode === 'current')
@@ -917,14 +945,14 @@ class AutoComplete extends BaseInput {
917
945
  if (this.forceSelection) {
918
946
  let valid = false;
919
947
  if (this.visibleOptions()) {
920
- const matchedValue = this.visibleOptions().find((option) => this.isOptionMatched(option, this.inputEL.nativeElement.value || ''));
948
+ const matchedValue = this.visibleOptions().find((option) => this.isOptionMatched(option, this.inputEL?.nativeElement?.value || ''));
921
949
  if (matchedValue !== undefined) {
922
950
  valid = true;
923
951
  !this.isSelected(matchedValue) && this.onOptionSelect(event, matchedValue);
924
952
  }
925
953
  }
926
954
  if (!valid) {
927
- this.inputEL.nativeElement.value = '';
955
+ this.inputEL?.nativeElement && (this.inputEL.nativeElement.value = '');
928
956
  !this.multiple && this.updateModel(null);
929
957
  }
930
958
  }
@@ -978,11 +1006,53 @@ class AutoComplete extends BaseInput {
978
1006
  this.dirty = false;
979
1007
  this.focused = false;
980
1008
  this.focusedOptionIndex.set(-1);
1009
+ if (this.addOnBlur && this.multiple && !this.typeahead) {
1010
+ const inputValue = (this.multiInputEl?.nativeElement?.value || event.target.value || '').trim();
1011
+ if (inputValue && !this.isSelected(inputValue)) {
1012
+ this.updateModel([...(this.modelValue() || []), inputValue]);
1013
+ this.onAdd.emit({ originalEvent: event, value: inputValue });
1014
+ if (this.multiInputEl?.nativeElement) {
1015
+ this.multiInputEl.nativeElement.value = '';
1016
+ }
1017
+ else {
1018
+ event.target.value = '';
1019
+ }
1020
+ }
1021
+ }
981
1022
  this.onModelTouched();
982
1023
  this.onBlur.emit(event);
983
1024
  }
984
1025
  onInputPaste(event) {
985
- this.onKeyDown(event);
1026
+ if (this.separator && this.multiple && !this.typeahead) {
1027
+ const pastedData = (event.clipboardData || window['clipboardData'])?.getData('Text');
1028
+ if (pastedData) {
1029
+ const values = pastedData.split(this.separator);
1030
+ const newValues = [...(this.modelValue() || [])];
1031
+ values.forEach((value) => {
1032
+ const trimmedValue = value.trim();
1033
+ if (trimmedValue && !this.isSelected(trimmedValue)) {
1034
+ newValues.push(trimmedValue);
1035
+ }
1036
+ });
1037
+ if (newValues.length > (this.modelValue() || []).length) {
1038
+ const addedValues = newValues.slice((this.modelValue() || []).length);
1039
+ this.updateModel(newValues);
1040
+ addedValues.forEach((addedValue) => {
1041
+ this.onAdd.emit({ originalEvent: event, value: addedValue });
1042
+ });
1043
+ if (this.multiInputEl?.nativeElement) {
1044
+ this.multiInputEl.nativeElement.value = '';
1045
+ }
1046
+ else {
1047
+ event.target.value = '';
1048
+ }
1049
+ event.preventDefault();
1050
+ }
1051
+ }
1052
+ }
1053
+ else {
1054
+ this.onKeyDown(event);
1055
+ }
986
1056
  }
987
1057
  onInputKeyUp(event) {
988
1058
  this.onKeyUp.emit(event);
@@ -992,6 +1062,8 @@ class AutoComplete extends BaseInput {
992
1062
  event.preventDefault();
993
1063
  return;
994
1064
  }
1065
+ // Emit keydown event for external handling
1066
+ this.onInputKeydown.emit(event);
995
1067
  switch (event.code) {
996
1068
  case 'ArrowDown':
997
1069
  this.onArrowDownKey(event);
@@ -1035,9 +1107,28 @@ class AutoComplete extends BaseInput {
1035
1107
  //NOOP
1036
1108
  break;
1037
1109
  default:
1110
+ this.handleSeparatorKey(event);
1038
1111
  break;
1039
1112
  }
1040
1113
  }
1114
+ handleSeparatorKey(event) {
1115
+ if (this.separator && this.multiple && !this.typeahead) {
1116
+ if (this.separator === event.key || (typeof this.separator === 'string' && event.key === this.separator) || (this.separator instanceof RegExp && event.key.match(this.separator))) {
1117
+ const inputValue = (this.multiInputEl?.nativeElement?.value || event.target.value || '').trim();
1118
+ if (inputValue && !this.isSelected(inputValue)) {
1119
+ this.updateModel([...(this.modelValue() || []), inputValue]);
1120
+ this.onAdd.emit({ originalEvent: event, value: inputValue });
1121
+ if (this.multiInputEl?.nativeElement) {
1122
+ this.multiInputEl.nativeElement.value = '';
1123
+ }
1124
+ else {
1125
+ event.target.value = '';
1126
+ }
1127
+ event.preventDefault();
1128
+ }
1129
+ }
1130
+ }
1131
+ }
1041
1132
  onArrowDownKey(event) {
1042
1133
  if (!this.overlayVisible) {
1043
1134
  return;
@@ -1070,7 +1161,7 @@ class AutoComplete extends BaseInput {
1070
1161
  this.focusedOptionIndex.set(-1);
1071
1162
  if (this.multiple) {
1072
1163
  if (isEmpty(target.value) && this.hasSelectedOption()) {
1073
- focus(this.multiContainerEL.nativeElement);
1164
+ focus(this.multiContainerEL?.nativeElement);
1074
1165
  this.focusedMultipleOptionIndex.set(this.modelValue().length);
1075
1166
  }
1076
1167
  else {
@@ -1105,11 +1196,12 @@ class AutoComplete extends BaseInput {
1105
1196
  event.preventDefault();
1106
1197
  }
1107
1198
  onEnterKey(event) {
1108
- if (!this.typeahead) {
1199
+ if (!this.typeahead && !this.forceSelection) {
1109
1200
  if (this.multiple) {
1110
- if (!this.isSelected(event.target.value)) {
1111
- this.updateModel([...(this.modelValue() || []), event.target.value]);
1112
- this.inputEL.nativeElement.value = '';
1201
+ const inputValue = event.target.value?.trim();
1202
+ if (inputValue && !this.isSelected(inputValue)) {
1203
+ this.updateModel([...(this.modelValue() || []), inputValue]);
1204
+ this.inputEL?.nativeElement && (this.inputEL.nativeElement.value = '');
1113
1205
  }
1114
1206
  }
1115
1207
  }
@@ -1129,14 +1221,40 @@ class AutoComplete extends BaseInput {
1129
1221
  event.preventDefault();
1130
1222
  }
1131
1223
  onTabKey(event) {
1224
+ // If there's a focused option in the dropdown, select it
1132
1225
  if (this.focusedOptionIndex() !== -1) {
1133
1226
  this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);
1227
+ return;
1228
+ }
1229
+ // Handle tab key behavior for multiple mode without typeahead
1230
+ if (this.multiple && !this.typeahead) {
1231
+ const inputValue = (this.multiInputEl?.nativeElement?.value || this.inputEL?.nativeElement?.value || '').trim();
1232
+ if (this.addOnTab) {
1233
+ if (inputValue && !this.isSelected(inputValue)) {
1234
+ // Add the value and keep focus
1235
+ this.updateModel([...(this.modelValue() || []), inputValue]);
1236
+ this.onAdd.emit({ originalEvent: event, value: inputValue });
1237
+ if (this.multiInputEl?.nativeElement) {
1238
+ this.multiInputEl.nativeElement.value = '';
1239
+ }
1240
+ else if (this.inputEL?.nativeElement) {
1241
+ this.inputEL.nativeElement.value = '';
1242
+ }
1243
+ this.updateInputValue();
1244
+ event.preventDefault(); // Keep focus on the component
1245
+ this.overlayVisible && this.hide();
1246
+ return;
1247
+ }
1248
+ // If no value or already selected, allow normal tab behavior (blur)
1249
+ }
1250
+ // If addOnTab is false or no value to add, allow normal tab behavior
1251
+ // which will trigger blur and potentially addOnBlur
1134
1252
  }
1135
1253
  this.overlayVisible && this.hide();
1136
1254
  }
1137
1255
  onBackspaceKey(event) {
1138
1256
  if (this.multiple) {
1139
- if (isNotEmpty(this.modelValue()) && !this.inputEL.nativeElement.value) {
1257
+ if (isNotEmpty(this.modelValue()) && !this.inputEL?.nativeElement?.value) {
1140
1258
  const removedValue = this.modelValue()[this.modelValue().length - 1];
1141
1259
  const newValue = this.modelValue().slice(0, -1);
1142
1260
  this.updateModel(newValue);
@@ -1144,9 +1262,6 @@ class AutoComplete extends BaseInput {
1144
1262
  }
1145
1263
  event.stopPropagation(); // To prevent onBackspaceKeyOnMultiple method
1146
1264
  }
1147
- if (!this.multiple && this.showClear && this.findSelectedOptionIndex() != -1) {
1148
- this.clear();
1149
- }
1150
1265
  }
1151
1266
  onArrowLeftKeyOnMultiple(event) {
1152
1267
  const optionIndex = this.focusedMultipleOptionIndex() < 1 ? 0 : this.focusedMultipleOptionIndex() - 1;
@@ -1158,7 +1273,7 @@ class AutoComplete extends BaseInput {
1158
1273
  this.focusedMultipleOptionIndex.set(optionIndex);
1159
1274
  if (optionIndex > this.modelValue().length - 1) {
1160
1275
  this.focusedMultipleOptionIndex.set(-1);
1161
- focus(this.inputEL.nativeElement);
1276
+ focus(this.inputEL?.nativeElement);
1162
1277
  }
1163
1278
  }
1164
1279
  onBackspaceKeyOnMultiple(event) {
@@ -1167,15 +1282,14 @@ class AutoComplete extends BaseInput {
1167
1282
  }
1168
1283
  }
1169
1284
  onOptionSelect(event, option, isHide = true) {
1170
- const value = this.getOptionValue(option);
1171
1285
  if (this.multiple) {
1172
- this.inputEL.nativeElement.value = '';
1286
+ this.inputEL?.nativeElement && (this.inputEL.nativeElement.value = '');
1173
1287
  if (!this.isSelected(option)) {
1174
- this.updateModel([...(this.modelValue() || []), value]);
1288
+ this.updateModel([...(this.modelValue() || []), option]);
1175
1289
  }
1176
1290
  }
1177
1291
  else {
1178
- this.updateModel(value);
1292
+ this.updateModel(option);
1179
1293
  }
1180
1294
  this.onSelect.emit({ originalEvent: event, value: option });
1181
1295
  isHide && this.hide(true);
@@ -1203,11 +1317,12 @@ class AutoComplete extends BaseInput {
1203
1317
  const value = this.modelValue().filter((_, i) => i !== index);
1204
1318
  this.updateModel(value);
1205
1319
  this.onUnselect.emit({ originalEvent: event, value: removedOption });
1206
- focus(this.inputEL.nativeElement);
1320
+ focus(this.inputEL?.nativeElement);
1207
1321
  }
1208
- updateModel(value) {
1322
+ updateModel(options) {
1323
+ const value = this.multiple ? options.map((option) => this.getOptionValue(option)) : this.getOptionValue(options);
1209
1324
  this.value = value;
1210
- this.writeModelValue(value);
1325
+ this.writeModelValue(options);
1211
1326
  this.onModelChange(value);
1212
1327
  this.updateInputValue();
1213
1328
  this.cd.markForCheck();
@@ -1257,9 +1372,9 @@ class AutoComplete extends BaseInput {
1257
1372
  this.overlayVisible = true;
1258
1373
  const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;
1259
1374
  this.focusedOptionIndex.set(focusedOptionIndex);
1260
- isFocus && focus(this.inputEL.nativeElement);
1375
+ isFocus && focus(this.inputEL?.nativeElement);
1261
1376
  if (isFocus) {
1262
- focus(this.inputEL.nativeElement);
1377
+ focus(this.inputEL?.nativeElement);
1263
1378
  }
1264
1379
  this.onShow.emit();
1265
1380
  this.cd.markForCheck();
@@ -1269,7 +1384,7 @@ class AutoComplete extends BaseInput {
1269
1384
  this.dirty = isFocus;
1270
1385
  this.overlayVisible = false;
1271
1386
  this.focusedOptionIndex.set(-1);
1272
- isFocus && focus(this.inputEL.nativeElement);
1387
+ isFocus && focus(this.inputEL?.nativeElement);
1273
1388
  this.onHide.emit();
1274
1389
  this.cd.markForCheck();
1275
1390
  };
@@ -1279,7 +1394,7 @@ class AutoComplete extends BaseInput {
1279
1394
  }
1280
1395
  clear() {
1281
1396
  this.updateModel(null);
1282
- this.inputEL.nativeElement.value = '';
1397
+ this.inputEL?.nativeElement && (this.inputEL.nativeElement.value = '');
1283
1398
  this.onClear.emit();
1284
1399
  }
1285
1400
  hasSelectedOption() {
@@ -1313,7 +1428,7 @@ class AutoComplete extends BaseInput {
1313
1428
  this.itemsWrapper = findSingle(this.overlayViewChild.overlayViewChild?.nativeElement, this.virtualScroll ? '.p-scroller' : '.p-autocomplete-panel');
1314
1429
  if (this.virtualScroll) {
1315
1430
  this.scroller?.setContentEl(this.itemsViewChild?.nativeElement);
1316
- this.scroller.viewInit();
1431
+ this.scroller?.viewInit();
1317
1432
  }
1318
1433
  if (this.visibleOptions() && this.visibleOptions().length) {
1319
1434
  if (this.virtualScroll) {
@@ -1338,8 +1453,9 @@ class AutoComplete extends BaseInput {
1338
1453
  * Writes the value to the control.
1339
1454
  */
1340
1455
  writeControlValue(value, setModelValue) {
1456
+ const options = this.multiple ? this.visibleOptions().filter((option) => value?.some((val) => equals(val, option, this.equalityKey()))) : this.visibleOptions().find((option) => equals(value, option, this.equalityKey()));
1341
1457
  this.value = value;
1342
- setModelValue(value);
1458
+ setModelValue(isEmpty(options) ? value : options);
1343
1459
  this.updateInputValue();
1344
1460
  this.cd.markForCheck();
1345
1461
  }
@@ -1350,8 +1466,8 @@ class AutoComplete extends BaseInput {
1350
1466
  }
1351
1467
  super.ngOnDestroy();
1352
1468
  }
1353
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AutoComplete, deps: [{ token: i1.OverlayService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1354
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.0", type: AutoComplete, isStandalone: true, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: { minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: false, isRequired: false, transformFunction: numberAttribute }, minQueryLength: { classPropertyName: "minQueryLength", publicName: "minQueryLength", isSignal: false, isRequired: false, transformFunction: numberAttribute }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: false, isRequired: false, transformFunction: numberAttribute }, panelStyle: { classPropertyName: "panelStyle", publicName: "panelStyle", isSignal: false, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: false, isRequired: false, transformFunction: null }, panelStyleClass: { classPropertyName: "panelStyleClass", publicName: "panelStyleClass", isSignal: false, isRequired: false, transformFunction: null }, inputStyle: { classPropertyName: "inputStyle", publicName: "inputStyle", isSignal: false, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: false, isRequired: false, transformFunction: null }, inputStyleClass: { classPropertyName: "inputStyleClass", publicName: "inputStyleClass", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", 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 }, autoHighlight: { classPropertyName: "autoHighlight", publicName: "autoHighlight", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, forceSelection: { classPropertyName: "forceSelection", publicName: "forceSelection", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, type: { classPropertyName: "type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, autoZIndex: { classPropertyName: "autoZIndex", publicName: "autoZIndex", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, baseZIndex: { classPropertyName: "baseZIndex", publicName: "baseZIndex", isSignal: false, isRequired: false, transformFunction: numberAttribute }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: false, isRequired: false, transformFunction: null }, dropdownAriaLabel: { classPropertyName: "dropdownAriaLabel", publicName: "dropdownAriaLabel", isSignal: false, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: false, isRequired: false, transformFunction: null }, dropdownIcon: { classPropertyName: "dropdownIcon", publicName: "dropdownIcon", isSignal: false, isRequired: false, transformFunction: null }, unique: { classPropertyName: "unique", publicName: "unique", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, group: { classPropertyName: "group", publicName: "group", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, completeOnFocus: { classPropertyName: "completeOnFocus", publicName: "completeOnFocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, dropdown: { classPropertyName: "dropdown", publicName: "dropdown", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, showEmptyMessage: { classPropertyName: "showEmptyMessage", publicName: "showEmptyMessage", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, dropdownMode: { classPropertyName: "dropdownMode", publicName: "dropdownMode", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: false, isRequired: false, transformFunction: numberAttribute }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: false, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: false, isRequired: false, transformFunction: null }, showTransitionOptions: { classPropertyName: "showTransitionOptions", publicName: "showTransitionOptions", isSignal: false, isRequired: false, transformFunction: null }, hideTransitionOptions: { classPropertyName: "hideTransitionOptions", publicName: "hideTransitionOptions", isSignal: false, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", 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 }, overlayOptions: { classPropertyName: "overlayOptions", publicName: "overlayOptions", isSignal: false, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: false, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: false, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: false, isRequired: false, transformFunction: null }, 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 }, selectOnFocus: { classPropertyName: "selectOnFocus", publicName: "selectOnFocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, searchLocale: { classPropertyName: "searchLocale", publicName: "searchLocale", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: false, isRequired: false, transformFunction: null }, focusOnHover: { classPropertyName: "focusOnHover", publicName: "focusOnHover", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, typeahead: { classPropertyName: "typeahead", publicName: "typeahead", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onUnselect: "onUnselect", onFocus: "onFocus", onBlur: "onBlur", onDropdownClick: "onDropdownClick", onClear: "onClear", onKeyUp: "onKeyUp", onShow: "onShow", onHide: "onHide", onLazyLoad: "onLazyLoad" }, host: { listeners: { "click": "onHostClick($event)" }, properties: { "class": "cn(cx('root'), styleClass)", "style": "sx('root')" } }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR, AutoCompleteStyle], queries: [{ propertyName: "itemTemplate", first: true, predicate: ["item"], descendants: true }, { propertyName: "emptyTemplate", first: true, predicate: ["empty"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "footerTemplate", first: true, predicate: ["footer"], descendants: true }, { propertyName: "selectedItemTemplate", first: true, predicate: ["selecteditem"], descendants: true }, { propertyName: "groupTemplate", first: true, predicate: ["group"], descendants: true }, { propertyName: "loaderTemplate", first: true, predicate: ["loader"], descendants: true }, { propertyName: "removeIconTemplate", first: true, predicate: ["removeicon"], descendants: true }, { propertyName: "loadingIconTemplate", first: true, predicate: ["loadingicon"], descendants: true }, { propertyName: "clearIconTemplate", first: true, predicate: ["clearicon"], descendants: true }, { propertyName: "dropdownIconTemplate", first: true, predicate: ["dropdownicon"], descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "inputEL", first: true, predicate: ["focusInput"], descendants: true }, { propertyName: "multiInputEl", first: true, predicate: ["multiIn"], descendants: true }, { propertyName: "multiContainerEL", first: true, predicate: ["multiContainer"], descendants: true }, { propertyName: "dropdownButton", first: true, predicate: ["ddBtn"], descendants: true }, { propertyName: "itemsViewChild", first: true, predicate: ["items"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "overlayViewChild", first: true, predicate: ["overlay"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
1469
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AutoComplete, deps: [{ token: i1.OverlayService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1470
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.2", type: AutoComplete, isStandalone: true, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: { minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: false, isRequired: false, transformFunction: numberAttribute }, minQueryLength: { classPropertyName: "minQueryLength", publicName: "minQueryLength", isSignal: false, isRequired: false, transformFunction: numberAttribute }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: false, isRequired: false, transformFunction: numberAttribute }, panelStyle: { classPropertyName: "panelStyle", publicName: "panelStyle", isSignal: false, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: false, isRequired: false, transformFunction: null }, panelStyleClass: { classPropertyName: "panelStyleClass", publicName: "panelStyleClass", isSignal: false, isRequired: false, transformFunction: null }, inputStyle: { classPropertyName: "inputStyle", publicName: "inputStyle", isSignal: false, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: false, isRequired: false, transformFunction: null }, inputStyleClass: { classPropertyName: "inputStyleClass", publicName: "inputStyleClass", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", 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 }, autoHighlight: { classPropertyName: "autoHighlight", publicName: "autoHighlight", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, forceSelection: { classPropertyName: "forceSelection", publicName: "forceSelection", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, type: { classPropertyName: "type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, autoZIndex: { classPropertyName: "autoZIndex", publicName: "autoZIndex", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, baseZIndex: { classPropertyName: "baseZIndex", publicName: "baseZIndex", isSignal: false, isRequired: false, transformFunction: numberAttribute }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: false, isRequired: false, transformFunction: null }, dropdownAriaLabel: { classPropertyName: "dropdownAriaLabel", publicName: "dropdownAriaLabel", isSignal: false, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: false, isRequired: false, transformFunction: null }, dropdownIcon: { classPropertyName: "dropdownIcon", publicName: "dropdownIcon", isSignal: false, isRequired: false, transformFunction: null }, unique: { classPropertyName: "unique", publicName: "unique", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, group: { classPropertyName: "group", publicName: "group", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, completeOnFocus: { classPropertyName: "completeOnFocus", publicName: "completeOnFocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, dropdown: { classPropertyName: "dropdown", publicName: "dropdown", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, showEmptyMessage: { classPropertyName: "showEmptyMessage", publicName: "showEmptyMessage", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, dropdownMode: { classPropertyName: "dropdownMode", publicName: "dropdownMode", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, addOnTab: { classPropertyName: "addOnTab", publicName: "addOnTab", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: false, isRequired: false, transformFunction: numberAttribute }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: false, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: false, isRequired: false, transformFunction: null }, showTransitionOptions: { classPropertyName: "showTransitionOptions", publicName: "showTransitionOptions", isSignal: false, isRequired: false, transformFunction: null }, hideTransitionOptions: { classPropertyName: "hideTransitionOptions", publicName: "hideTransitionOptions", isSignal: false, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", 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 }, overlayOptions: { classPropertyName: "overlayOptions", publicName: "overlayOptions", isSignal: false, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: false, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: false, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: false, isRequired: false, transformFunction: null }, 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 }, selectOnFocus: { classPropertyName: "selectOnFocus", publicName: "selectOnFocus", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, searchLocale: { classPropertyName: "searchLocale", publicName: "searchLocale", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: false, isRequired: false, transformFunction: null }, focusOnHover: { classPropertyName: "focusOnHover", publicName: "focusOnHover", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, typeahead: { classPropertyName: "typeahead", publicName: "typeahead", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, addOnBlur: { classPropertyName: "addOnBlur", publicName: "addOnBlur", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, separator: { classPropertyName: "separator", publicName: "separator", isSignal: false, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onUnselect: "onUnselect", onAdd: "onAdd", onFocus: "onFocus", onBlur: "onBlur", onDropdownClick: "onDropdownClick", onClear: "onClear", onInputKeydown: "onInputKeydown", onKeyUp: "onKeyUp", onShow: "onShow", onHide: "onHide", onLazyLoad: "onLazyLoad" }, host: { listeners: { "click": "onHostClick($event)" }, properties: { "class": "cn(cx('root'), styleClass)", "style": "sx('root')" } }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR, AutoCompleteStyle], queries: [{ propertyName: "itemTemplate", first: true, predicate: ["item"], descendants: true }, { propertyName: "emptyTemplate", first: true, predicate: ["empty"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "footerTemplate", first: true, predicate: ["footer"], descendants: true }, { propertyName: "selectedItemTemplate", first: true, predicate: ["selecteditem"], descendants: true }, { propertyName: "groupTemplate", first: true, predicate: ["group"], descendants: true }, { propertyName: "loaderTemplate", first: true, predicate: ["loader"], descendants: true }, { propertyName: "removeIconTemplate", first: true, predicate: ["removeicon"], descendants: true }, { propertyName: "loadingIconTemplate", first: true, predicate: ["loadingicon"], descendants: true }, { propertyName: "clearIconTemplate", first: true, predicate: ["clearicon"], descendants: true }, { propertyName: "dropdownIconTemplate", first: true, predicate: ["dropdownicon"], descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "inputEL", first: true, predicate: ["focusInput"], descendants: true }, { propertyName: "multiInputEl", first: true, predicate: ["multiIn"], descendants: true }, { propertyName: "multiContainerEL", first: true, predicate: ["multiContainer"], descendants: true }, { propertyName: "dropdownButton", first: true, predicate: ["ddBtn"], descendants: true }, { propertyName: "itemsViewChild", first: true, predicate: ["items"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "overlayViewChild", first: true, predicate: ["overlay"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
1355
1471
  <input
1356
1472
  *ngIf="!multiple"
1357
1473
  #focusInput
@@ -1425,10 +1541,10 @@ class AutoComplete extends BaseInput {
1425
1541
  [attr.aria-posinset]="i + 1"
1426
1542
  [attr.aria-selected]="true"
1427
1543
  >
1428
- <p-chip [class]="cx('pcChip')" [label]="!selectedItemTemplate && !_selectedItemTemplate && getOptionLabel(option)" [removable]="true" (onRemove)="!readonly ? removeOption($event, i) : ''">
1544
+ <p-chip [class]="cx('pcChip')" [label]="!selectedItemTemplate && !_selectedItemTemplate && getOptionLabel(option)" [disabled]="$disabled()" [removable]="true" (onRemove)="!readonly ? removeOption($event, i) : ''">
1429
1545
  <ng-container *ngTemplateOutlet="selectedItemTemplate || _selectedItemTemplate; context: { $implicit: option }"></ng-container>
1430
1546
  <ng-template #removeicon>
1431
- <span *ngIf="!removeIconTemplate && !_removeIconTemplate" [class]="cx('chipIcon')" (click)="!readonly ? removeOption($event, i) : ''">
1547
+ <span *ngIf="!removeIconTemplate && !_removeIconTemplate" [class]="cx('chipIcon')" (click)="!readonly && !$disabled() ? removeOption($event, i) : ''">
1432
1548
  <svg data-p-icon="times-circle" [class]="cx('chipIcon')" [attr.aria-hidden]="true" />
1433
1549
  </span>
1434
1550
  <span *ngIf="removeIconTemplate || _removeIconTemplate" [attr.aria-hidden]="true">
@@ -1440,6 +1556,7 @@ class AutoComplete extends BaseInput {
1440
1556
  <li [class]="cx('inputChip')" role="option">
1441
1557
  <input
1442
1558
  #focusInput
1559
+ #multiIn
1443
1560
  [pAutoFocus]="autofocus"
1444
1561
  [class]="cx('pcInputText')"
1445
1562
  [ngStyle]="inputStyle"
@@ -1583,9 +1700,9 @@ class AutoComplete extends BaseInput {
1583
1700
  </span>
1584
1701
  </ng-template>
1585
1702
  </p-overlay>
1586
- `, 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: "component", type: Overlay, selector: "p-overlay", inputs: ["visible", "mode", "style", "styleClass", "contentStyle", "contentStyleClass", "target", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "listener", "responsive", "options", "appendTo", "hostAttrSelector"], outputs: ["visibleChange", "onBeforeShow", "onShow", "onBeforeHide", "onHide", "onAnimationStart", "onAnimationDone"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["pSize", "variant", "fluid", "invalid"] }, { 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: "directive", type: AutoFocus, selector: "[pAutoFocus]", inputs: ["pAutoFocus"] }, { kind: "component", type: TimesCircleIcon, selector: "[data-p-icon=\"times-circle\"]" }, { kind: "component", type: SpinnerIcon, selector: "[data-p-icon=\"spinner\"]" }, { kind: "component", type: ChevronDownIcon, selector: "[data-p-icon=\"chevron-down\"]" }, { kind: "component", type: Chip, selector: "p-chip", inputs: ["label", "icon", "image", "alt", "styleClass", "removable", "removeIcon", "chipProps"], outputs: ["onRemove", "onImageError"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: TimesIcon, selector: "[data-p-icon=\"times\"]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1703
+ `, 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: "component", type: Overlay, selector: "p-overlay", inputs: ["visible", "mode", "style", "styleClass", "contentStyle", "contentStyleClass", "target", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "listener", "responsive", "options", "appendTo", "hostAttrSelector"], outputs: ["visibleChange", "onBeforeShow", "onShow", "onBeforeHide", "onHide", "onAnimationStart", "onAnimationDone"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["pSize", "variant", "fluid", "invalid"] }, { 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: "directive", type: AutoFocus, selector: "[pAutoFocus]", inputs: ["pAutoFocus"] }, { kind: "component", type: TimesCircleIcon, selector: "[data-p-icon=\"times-circle\"]" }, { kind: "component", type: SpinnerIcon, selector: "[data-p-icon=\"spinner\"]" }, { kind: "component", type: ChevronDownIcon, selector: "[data-p-icon=\"chevron-down\"]" }, { kind: "component", type: Chip, selector: "p-chip", inputs: ["label", "icon", "image", "alt", "styleClass", "disabled", "removable", "removeIcon", "chipProps"], outputs: ["onRemove", "onImageError"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: TimesIcon, selector: "[data-p-icon=\"times\"]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1587
1704
  }
1588
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AutoComplete, decorators: [{
1705
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AutoComplete, decorators: [{
1589
1706
  type: Component,
1590
1707
  args: [{
1591
1708
  selector: 'p-autoComplete, p-autocomplete, p-auto-complete',
@@ -1665,10 +1782,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
1665
1782
  [attr.aria-posinset]="i + 1"
1666
1783
  [attr.aria-selected]="true"
1667
1784
  >
1668
- <p-chip [class]="cx('pcChip')" [label]="!selectedItemTemplate && !_selectedItemTemplate && getOptionLabel(option)" [removable]="true" (onRemove)="!readonly ? removeOption($event, i) : ''">
1785
+ <p-chip [class]="cx('pcChip')" [label]="!selectedItemTemplate && !_selectedItemTemplate && getOptionLabel(option)" [disabled]="$disabled()" [removable]="true" (onRemove)="!readonly ? removeOption($event, i) : ''">
1669
1786
  <ng-container *ngTemplateOutlet="selectedItemTemplate || _selectedItemTemplate; context: { $implicit: option }"></ng-container>
1670
1787
  <ng-template #removeicon>
1671
- <span *ngIf="!removeIconTemplate && !_removeIconTemplate" [class]="cx('chipIcon')" (click)="!readonly ? removeOption($event, i) : ''">
1788
+ <span *ngIf="!removeIconTemplate && !_removeIconTemplate" [class]="cx('chipIcon')" (click)="!readonly && !$disabled() ? removeOption($event, i) : ''">
1672
1789
  <svg data-p-icon="times-circle" [class]="cx('chipIcon')" [attr.aria-hidden]="true" />
1673
1790
  </span>
1674
1791
  <span *ngIf="removeIconTemplate || _removeIconTemplate" [attr.aria-hidden]="true">
@@ -1680,6 +1797,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
1680
1797
  <li [class]="cx('inputChip')" role="option">
1681
1798
  <input
1682
1799
  #focusInput
1800
+ #multiIn
1683
1801
  [pAutoFocus]="autofocus"
1684
1802
  [class]="cx('pcInputText')"
1685
1803
  [ngStyle]="inputStyle"
@@ -1916,6 +2034,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
1916
2034
  }], multiple: [{
1917
2035
  type: Input,
1918
2036
  args: [{ transform: booleanAttribute }]
2037
+ }], addOnTab: [{
2038
+ type: Input,
2039
+ args: [{ transform: booleanAttribute }]
1919
2040
  }], tabindex: [{
1920
2041
  type: Input,
1921
2042
  args: [{ transform: numberAttribute }]
@@ -1969,12 +2090,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
1969
2090
  }], typeahead: [{
1970
2091
  type: Input,
1971
2092
  args: [{ transform: booleanAttribute }]
2093
+ }], addOnBlur: [{
2094
+ type: Input,
2095
+ args: [{ transform: booleanAttribute }]
2096
+ }], separator: [{
2097
+ type: Input
1972
2098
  }], completeMethod: [{
1973
2099
  type: Output
1974
2100
  }], onSelect: [{
1975
2101
  type: Output
1976
2102
  }], onUnselect: [{
1977
2103
  type: Output
2104
+ }], onAdd: [{
2105
+ type: Output
1978
2106
  }], onFocus: [{
1979
2107
  type: Output
1980
2108
  }], onBlur: [{
@@ -1983,6 +2111,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
1983
2111
  type: Output
1984
2112
  }], onClear: [{
1985
2113
  type: Output
2114
+ }], onInputKeydown: [{
2115
+ type: Output
1986
2116
  }], onKeyUp: [{
1987
2117
  type: Output
1988
2118
  }], onShow: [{
@@ -2053,11 +2183,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
2053
2183
  args: [PrimeTemplate]
2054
2184
  }] } });
2055
2185
  class AutoCompleteModule {
2056
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2057
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: AutoCompleteModule, imports: [AutoComplete], exports: [AutoComplete, SharedModule] });
2058
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AutoCompleteModule, imports: [AutoComplete, SharedModule] });
2186
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2187
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.2", ngImport: i0, type: AutoCompleteModule, imports: [AutoComplete], exports: [AutoComplete, SharedModule] });
2188
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AutoCompleteModule, imports: [AutoComplete, SharedModule] });
2059
2189
  }
2060
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AutoCompleteModule, decorators: [{
2190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AutoCompleteModule, decorators: [{
2061
2191
  type: NgModule,
2062
2192
  args: [{
2063
2193
  imports: [AutoComplete],