primereact 10.3.3 → 10.5.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 (276) hide show
  1. package/accordion/accordion.cjs.js +1 -1
  2. package/accordion/accordion.cjs.min.js +1 -1
  3. package/accordion/accordion.esm.js +1 -1
  4. package/accordion/accordion.esm.min.js +1 -1
  5. package/accordion/accordion.js +1 -1
  6. package/accordion/accordion.min.js +1 -1
  7. package/calendar/calendar.cjs.js +29 -14
  8. package/calendar/calendar.cjs.min.js +1 -1
  9. package/calendar/calendar.esm.js +29 -14
  10. package/calendar/calendar.esm.min.js +1 -1
  11. package/calendar/calendar.js +29 -14
  12. package/calendar/calendar.min.js +1 -1
  13. package/carousel/carousel.cjs.js +1 -0
  14. package/carousel/carousel.cjs.min.js +1 -1
  15. package/carousel/carousel.esm.js +1 -0
  16. package/carousel/carousel.esm.min.js +1 -1
  17. package/carousel/carousel.js +1 -0
  18. package/carousel/carousel.min.js +1 -1
  19. package/checkbox/checkbox.cjs.js +2 -0
  20. package/checkbox/checkbox.cjs.min.js +1 -1
  21. package/checkbox/checkbox.esm.js +2 -0
  22. package/checkbox/checkbox.esm.min.js +1 -1
  23. package/checkbox/checkbox.js +2 -0
  24. package/checkbox/checkbox.min.js +1 -1
  25. package/chips/chips.cjs.js +111 -21
  26. package/chips/chips.cjs.min.js +1 -1
  27. package/chips/chips.esm.js +111 -21
  28. package/chips/chips.esm.min.js +1 -1
  29. package/chips/chips.js +111 -21
  30. package/chips/chips.min.js +1 -1
  31. package/core/core.js +696 -505
  32. package/core/core.min.js +5 -5
  33. package/datatable/datatable.cjs.js +577 -153
  34. package/datatable/datatable.cjs.min.js +1 -1
  35. package/datatable/datatable.esm.js +573 -149
  36. package/datatable/datatable.esm.min.js +1 -1
  37. package/datatable/datatable.js +577 -153
  38. package/datatable/datatable.min.js +1 -1
  39. package/dataview/dataview.d.ts +2 -2
  40. package/divider/divider.cjs.js +2 -2
  41. package/divider/divider.cjs.min.js +1 -1
  42. package/divider/divider.esm.js +2 -2
  43. package/divider/divider.esm.min.js +1 -1
  44. package/divider/divider.js +2 -2
  45. package/divider/divider.min.js +1 -1
  46. package/dropdown/dropdown.cjs.js +327 -160
  47. package/dropdown/dropdown.cjs.min.js +1 -1
  48. package/dropdown/dropdown.d.ts +9 -0
  49. package/dropdown/dropdown.esm.js +327 -160
  50. package/dropdown/dropdown.esm.min.js +1 -1
  51. package/dropdown/dropdown.js +327 -160
  52. package/dropdown/dropdown.min.js +1 -1
  53. package/editor/editor.cjs.js +1 -1
  54. package/editor/editor.cjs.min.js +1 -1
  55. package/editor/editor.esm.js +1 -1
  56. package/editor/editor.esm.min.js +1 -1
  57. package/editor/editor.js +1 -1
  58. package/editor/editor.min.js +1 -1
  59. package/focustrap/focustrap.cjs.js +168 -0
  60. package/focustrap/focustrap.cjs.min.js +1 -0
  61. package/focustrap/focustrap.esm.js +159 -0
  62. package/focustrap/focustrap.esm.min.js +1 -0
  63. package/focustrap/focustrap.js +167 -0
  64. package/focustrap/focustrap.min.js +1 -0
  65. package/focustrap/package.json +7 -0
  66. package/galleria/galleria.cjs.js +26 -24
  67. package/galleria/galleria.cjs.min.js +1 -1
  68. package/galleria/galleria.esm.js +26 -24
  69. package/galleria/galleria.esm.min.js +1 -1
  70. package/galleria/galleria.js +26 -24
  71. package/galleria/galleria.min.js +1 -1
  72. package/hooks/hooks.d.ts +1 -1
  73. package/inputnumber/inputnumber.cjs.js +21 -17
  74. package/inputnumber/inputnumber.cjs.min.js +1 -1
  75. package/inputnumber/inputnumber.esm.js +21 -17
  76. package/inputnumber/inputnumber.esm.min.js +1 -1
  77. package/inputnumber/inputnumber.js +21 -17
  78. package/inputnumber/inputnumber.min.js +1 -1
  79. package/inputswitch/inputswitch.cjs.js +3 -1
  80. package/inputswitch/inputswitch.cjs.min.js +1 -1
  81. package/inputswitch/inputswitch.esm.js +3 -1
  82. package/inputswitch/inputswitch.esm.min.js +1 -1
  83. package/inputswitch/inputswitch.js +3 -1
  84. package/inputswitch/inputswitch.min.js +1 -1
  85. package/knob/knob.cjs.js +62 -0
  86. package/knob/knob.cjs.min.js +1 -1
  87. package/knob/knob.esm.js +62 -0
  88. package/knob/knob.esm.min.js +1 -1
  89. package/knob/knob.js +62 -0
  90. package/knob/knob.min.js +1 -1
  91. package/listbox/listbox.cjs.js +362 -92
  92. package/listbox/listbox.cjs.min.js +1 -1
  93. package/listbox/listbox.esm.js +363 -93
  94. package/listbox/listbox.esm.min.js +1 -1
  95. package/listbox/listbox.js +362 -92
  96. package/listbox/listbox.min.js +1 -1
  97. package/menu/menu.cjs.js +4 -2
  98. package/menu/menu.cjs.min.js +1 -1
  99. package/menu/menu.esm.js +4 -2
  100. package/menu/menu.esm.min.js +1 -1
  101. package/menu/menu.js +5 -4
  102. package/menu/menu.min.js +1 -1
  103. package/menubar/menubar.cjs.js +3 -0
  104. package/menubar/menubar.cjs.min.js +1 -1
  105. package/menubar/menubar.esm.js +3 -0
  106. package/menubar/menubar.esm.min.js +1 -1
  107. package/menubar/menubar.js +3 -0
  108. package/menubar/menubar.min.js +1 -1
  109. package/multiselect/multiselect.cjs.js +377 -107
  110. package/multiselect/multiselect.cjs.min.js +1 -1
  111. package/multiselect/multiselect.esm.js +377 -107
  112. package/multiselect/multiselect.esm.min.js +1 -1
  113. package/multiselect/multiselect.js +377 -107
  114. package/multiselect/multiselect.min.js +1 -1
  115. package/package.json +1 -1
  116. package/paginator/paginator.cjs.js +251 -251
  117. package/paginator/paginator.cjs.min.js +1 -1
  118. package/paginator/paginator.esm.js +258 -258
  119. package/paginator/paginator.esm.min.js +1 -1
  120. package/paginator/paginator.js +251 -251
  121. package/paginator/paginator.min.js +1 -1
  122. package/panelmenu/panelmenu.cjs.js +34 -22
  123. package/panelmenu/panelmenu.cjs.min.js +1 -1
  124. package/panelmenu/panelmenu.esm.js +34 -22
  125. package/panelmenu/panelmenu.esm.min.js +1 -1
  126. package/panelmenu/panelmenu.js +35 -24
  127. package/panelmenu/panelmenu.min.js +1 -1
  128. package/passthrough/tailwind/index.cjs.js +3 -2
  129. package/passthrough/tailwind/index.cjs.min.js +1 -1
  130. package/passthrough/tailwind/index.esm.js +3 -2
  131. package/passthrough/tailwind/index.esm.min.js +1 -1
  132. package/passthrough/tailwind/index.js +3 -2
  133. package/passthrough/tailwind/index.min.js +1 -1
  134. package/password/password.cjs.js +22 -20
  135. package/password/password.cjs.min.js +1 -1
  136. package/password/password.esm.js +22 -20
  137. package/password/password.esm.min.js +1 -1
  138. package/password/password.js +22 -20
  139. package/password/password.min.js +1 -1
  140. package/primereact.all.cjs.js +2199 -951
  141. package/primereact.all.cjs.min.js +1 -1
  142. package/primereact.all.esm.js +2199 -951
  143. package/primereact.all.esm.min.js +1 -1
  144. package/primereact.all.js +2199 -951
  145. package/primereact.all.min.js +1 -1
  146. package/radiobutton/radiobutton.cjs.js +1 -0
  147. package/radiobutton/radiobutton.cjs.min.js +1 -1
  148. package/radiobutton/radiobutton.esm.js +1 -0
  149. package/radiobutton/radiobutton.esm.min.js +1 -1
  150. package/radiobutton/radiobutton.js +1 -0
  151. package/radiobutton/radiobutton.min.js +1 -1
  152. package/rating/rating.cjs.js +103 -4
  153. package/rating/rating.cjs.min.js +1 -1
  154. package/rating/rating.esm.js +103 -4
  155. package/rating/rating.esm.min.js +1 -1
  156. package/rating/rating.js +103 -4
  157. package/rating/rating.min.js +1 -1
  158. package/resources/themes/arya-blue/theme.css +328 -67
  159. package/resources/themes/arya-green/theme.css +328 -67
  160. package/resources/themes/arya-orange/theme.css +328 -67
  161. package/resources/themes/arya-purple/theme.css +26 -6
  162. package/resources/themes/bootstrap4-dark-blue/theme.css +328 -67
  163. package/resources/themes/bootstrap4-dark-purple/theme.css +26 -6
  164. package/resources/themes/bootstrap4-light-blue/theme.css +328 -67
  165. package/resources/themes/bootstrap4-light-purple/theme.css +26 -6
  166. package/resources/themes/fluent-light/theme.css +327 -66
  167. package/resources/themes/lara-dark-amber/theme.css +328 -67
  168. package/resources/themes/lara-dark-blue/theme.css +328 -67
  169. package/resources/themes/lara-dark-cyan/theme.css +328 -67
  170. package/resources/themes/lara-dark-green/theme.css +328 -67
  171. package/resources/themes/lara-dark-indigo/theme.css +328 -67
  172. package/resources/themes/lara-dark-pink/theme.css +328 -67
  173. package/resources/themes/lara-dark-purple/theme.css +26 -6
  174. package/resources/themes/lara-dark-teal/theme.css +328 -67
  175. package/resources/themes/lara-light-amber/theme.css +328 -67
  176. package/resources/themes/lara-light-blue/theme.css +328 -67
  177. package/resources/themes/lara-light-cyan/theme.css +328 -67
  178. package/resources/themes/lara-light-green/theme.css +328 -67
  179. package/resources/themes/lara-light-indigo/theme.css +328 -67
  180. package/resources/themes/lara-light-pink/theme.css +328 -67
  181. package/resources/themes/lara-light-purple/theme.css +26 -6
  182. package/resources/themes/lara-light-teal/theme.css +328 -67
  183. package/resources/themes/luna-amber/theme.css +328 -67
  184. package/resources/themes/luna-blue/theme.css +328 -67
  185. package/resources/themes/luna-green/theme.css +328 -67
  186. package/resources/themes/luna-pink/theme.css +328 -67
  187. package/resources/themes/md-dark-deeppurple/theme.css +158 -138
  188. package/resources/themes/md-dark-indigo/theme.css +454 -193
  189. package/resources/themes/md-light-deeppurple/theme.css +26 -6
  190. package/resources/themes/md-light-indigo/theme.css +328 -67
  191. package/resources/themes/mdc-dark-deeppurple/theme.css +158 -138
  192. package/resources/themes/mdc-dark-indigo/theme.css +454 -193
  193. package/resources/themes/mdc-light-deeppurple/theme.css +26 -6
  194. package/resources/themes/mdc-light-indigo/theme.css +328 -67
  195. package/resources/themes/mira/theme.css +328 -67
  196. package/resources/themes/nano/theme.css +328 -67
  197. package/resources/themes/nova/theme.css +328 -67
  198. package/resources/themes/nova-accent/theme.css +328 -67
  199. package/resources/themes/nova-alt/theme.css +328 -67
  200. package/resources/themes/rhea/theme.css +328 -67
  201. package/resources/themes/saga-blue/theme.css +328 -67
  202. package/resources/themes/saga-green/theme.css +328 -67
  203. package/resources/themes/saga-orange/theme.css +328 -67
  204. package/resources/themes/saga-purple/theme.css +26 -6
  205. package/resources/themes/soho-dark/theme.css +353 -92
  206. package/resources/themes/soho-light/theme.css +328 -67
  207. package/resources/themes/tailwind-light/theme.css +329 -71
  208. package/resources/themes/vela-blue/theme.css +328 -67
  209. package/resources/themes/vela-green/theme.css +328 -67
  210. package/resources/themes/vela-orange/theme.css +328 -67
  211. package/resources/themes/vela-purple/theme.css +26 -6
  212. package/resources/themes/viva-dark/theme.css +328 -67
  213. package/resources/themes/viva-light/theme.css +328 -67
  214. package/selectbutton/selectbutton.cjs.js +96 -50
  215. package/selectbutton/selectbutton.cjs.min.js +1 -1
  216. package/selectbutton/selectbutton.esm.js +96 -50
  217. package/selectbutton/selectbutton.esm.min.js +1 -1
  218. package/selectbutton/selectbutton.js +96 -50
  219. package/selectbutton/selectbutton.min.js +1 -1
  220. package/sidebar/sidebar.cjs.js +18 -16
  221. package/sidebar/sidebar.cjs.min.js +1 -1
  222. package/sidebar/sidebar.esm.js +18 -16
  223. package/sidebar/sidebar.esm.min.js +1 -1
  224. package/sidebar/sidebar.js +18 -16
  225. package/sidebar/sidebar.min.js +1 -1
  226. package/slider/slider.cjs.js +25 -4
  227. package/slider/slider.cjs.min.js +1 -1
  228. package/slider/slider.esm.js +25 -4
  229. package/slider/slider.esm.min.js +1 -1
  230. package/slider/slider.js +25 -4
  231. package/slider/slider.min.js +1 -1
  232. package/splitbutton/splitbutton.cjs.js +4 -3
  233. package/splitbutton/splitbutton.cjs.min.js +1 -1
  234. package/splitbutton/splitbutton.esm.js +4 -3
  235. package/splitbutton/splitbutton.esm.min.js +1 -1
  236. package/splitbutton/splitbutton.js +4 -3
  237. package/splitbutton/splitbutton.min.js +1 -1
  238. package/splitter/splitter.cjs.js +71 -25
  239. package/splitter/splitter.cjs.min.js +1 -1
  240. package/splitter/splitter.d.ts +13 -1
  241. package/splitter/splitter.esm.js +73 -27
  242. package/splitter/splitter.esm.min.js +1 -1
  243. package/splitter/splitter.js +71 -25
  244. package/splitter/splitter.min.js +1 -1
  245. package/tabview/tabview.cjs.js +6 -5
  246. package/tabview/tabview.cjs.min.js +1 -1
  247. package/tabview/tabview.d.ts +39 -34
  248. package/tabview/tabview.esm.js +6 -5
  249. package/tabview/tabview.esm.min.js +1 -1
  250. package/tabview/tabview.js +6 -5
  251. package/tabview/tabview.min.js +1 -1
  252. package/tieredmenu/tieredmenu.cjs.js +4 -3
  253. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  254. package/tieredmenu/tieredmenu.esm.js +4 -3
  255. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  256. package/tieredmenu/tieredmenu.js +4 -3
  257. package/tieredmenu/tieredmenu.min.js +1 -1
  258. package/togglebutton/togglebutton.cjs.js +15 -14
  259. package/togglebutton/togglebutton.cjs.min.js +1 -1
  260. package/togglebutton/togglebutton.esm.js +14 -13
  261. package/togglebutton/togglebutton.esm.min.js +1 -1
  262. package/togglebutton/togglebutton.js +15 -14
  263. package/togglebutton/togglebutton.min.js +1 -1
  264. package/tree/tree.cjs.js +33 -15
  265. package/tree/tree.cjs.min.js +1 -1
  266. package/tree/tree.esm.js +34 -16
  267. package/tree/tree.esm.min.js +1 -1
  268. package/tree/tree.js +33 -15
  269. package/tree/tree.min.js +1 -1
  270. package/tristatecheckbox/tristatecheckbox.cjs.js +3 -2
  271. package/tristatecheckbox/tristatecheckbox.cjs.min.js +1 -1
  272. package/tristatecheckbox/tristatecheckbox.esm.js +3 -2
  273. package/tristatecheckbox/tristatecheckbox.esm.min.js +1 -1
  274. package/tristatecheckbox/tristatecheckbox.js +3 -2
  275. package/tristatecheckbox/tristatecheckbox.min.js +1 -1
  276. package/web-types.json +19 -1
@@ -112,6 +112,10 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
112
112
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
113
113
  }
114
114
 
115
+ function _readOnlyError(name) {
116
+ throw new TypeError("\"" + name + "\" is read-only");
117
+ }
118
+
115
119
  function _arrayWithHoles(arr) {
116
120
  if (Array.isArray(arr)) return arr;
117
121
  }
@@ -213,7 +217,8 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
213
217
  var props = _ref5.itemProps;
214
218
  return utils.classNames('p-multiselect-item', {
215
219
  'p-highlight': props.selected,
216
- 'p-disabled': props.disabled
220
+ 'p-disabled': props.disabled,
221
+ 'p-focus': props.focusedOptionIndex === props.index
217
222
  });
218
223
  },
219
224
  checkboxContainer: 'p-checkbox p-component',
@@ -226,7 +231,7 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
226
231
  },
227
232
  transition: 'p-connected-overlay'
228
233
  };
229
- var styles$1 = "\n@layer primereact {\n .p-multiselect {\n display: inline-flex;\n user-select: none;\n cursor: pointer;\n }\n \n .p-multiselect-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n cursor: pointer;\n }\n \n .p-multiselect-label-container {\n overflow: hidden;\n flex: 1 1 auto;\n cursor: pointer;\n }\n \n .p-multiselect-label {\n display: block;\n white-space: nowrap;\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n \n .p-multiselect-label-empty {\n overflow: hidden;\n visibility: hidden;\n }\n \n .p-multiselect-token {\n cursor: default;\n display: inline-flex;\n align-items: center;\n flex: 0 0 auto;\n }\n \n .p-multiselect-token-icon {\n cursor: pointer;\n }\n \n .p-multiselect .p-multiselect-panel {\n min-width: 100%;\n }\n \n .p-multiselect-inline.p-multiselect-panel {\n border: none;\n position: initial;\n background: none;\n box-shadow: none;\n }\n \n .p-multiselect-inline.p-multiselect-panel .p-multiselect-items {\n padding: 0;\n }\n \n .p-multiselect-flex.p-multiselect-panel .p-multiselect-items {\n display: flex;\n flex-wrap: wrap;\n }\n \n .p-multiselect-items-wrapper {\n overflow: auto;\n }\n \n .p-multiselect-items {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n \n .p-multiselect-item {\n cursor: pointer;\n display: flex;\n align-items: center;\n font-weight: normal;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n }\n \n .p-multiselect-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .p-multiselect-select-all-label {\n margin-left: 0.5rem;\n }\n \n .p-multiselect-filter-container {\n position: relative;\n flex: 1 1 auto;\n }\n \n .p-multiselect-filter-icon {\n position: absolute;\n top: 50%;\n margin-top: -.5rem;\n }\n \n .p-multiselect-filter-container .p-inputtext {\n width: 100%;\n }\n \n .p-multiselect-close {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n position: relative;\n margin-left: auto;\n }\n \n .p-multiselect-clear-icon {\n position: absolute;\n top: 50%;\n margin-top: -.5rem;\n }\n \n .p-fluid .p-multiselect {\n display: flex;\n }\n}\n";
234
+ var styles$1 = "\n@layer primereact {\n .p-multiselect {\n display: inline-flex;\n user-select: none;\n cursor: pointer;\n }\n \n .p-multiselect-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n cursor: pointer;\n }\n \n .p-multiselect-label-container {\n overflow: hidden;\n flex: 1 1 auto;\n cursor: pointer;\n }\n \n .p-multiselect-label {\n display: block;\n white-space: nowrap;\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n \n .p-multiselect-label-empty {\n overflow: hidden;\n visibility: hidden;\n }\n \n .p-multiselect-token {\n cursor: default;\n display: inline-flex;\n align-items: center;\n flex: 0 0 auto;\n }\n \n .p-multiselect-token-icon {\n cursor: pointer;\n }\n \n .p-multiselect .p-multiselect-panel {\n min-width: 100%;\n }\n \n .p-multiselect-inline.p-multiselect-panel {\n border: none;\n position: initial;\n background: none;\n box-shadow: none;\n }\n \n .p-multiselect-inline.p-multiselect-panel .p-multiselect-items {\n padding: 0;\n }\n \n .p-multiselect-flex.p-multiselect-panel .p-multiselect-items {\n display: flex;\n flex-wrap: wrap;\n }\n \n .p-multiselect-items-wrapper {\n overflow: auto;\n }\n \n .p-multiselect-items {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n \n .p-multiselect-item {\n cursor: pointer;\n display: flex;\n align-items: center;\n font-weight: normal;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n outline: none;\n }\n \n .p-multiselect-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .p-multiselect-select-all-label {\n margin-left: 0.5rem;\n }\n \n .p-multiselect-filter-container {\n position: relative;\n flex: 1 1 auto;\n }\n \n .p-multiselect-filter-icon {\n position: absolute;\n top: 50%;\n margin-top: -.5rem;\n }\n \n .p-multiselect-filter-container .p-inputtext {\n width: 100%;\n }\n \n .p-multiselect-close {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n position: relative;\n margin-left: auto;\n }\n \n .p-multiselect-clear-icon {\n position: absolute;\n top: 50%;\n margin-top: -.5rem;\n right: 3rem;\n }\n \n .p-fluid .p-multiselect {\n display: flex;\n }\n}\n";
230
235
  var inlineStyles = {
231
236
  root: function root(_ref7) {
232
237
  var props = _ref7.props;
@@ -260,6 +265,8 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
260
265
  filterBy: null,
261
266
  filterInputAutoFocus: true,
262
267
  filterLocale: undefined,
268
+ selectOnFocus: false,
269
+ autoOptionFocus: false,
263
270
  filterMatchMode: 'contains',
264
271
  filterPlaceholder: null,
265
272
  filterTemplate: null,
@@ -512,6 +519,8 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
512
519
  onClick: function onClick(e) {
513
520
  return _onClick(e);
514
521
  },
522
+ 'data-p-highlight': checked,
523
+ 'data-p-disabled': props.disabled,
515
524
  onContextMenu: props.onContextMenu,
516
525
  onMouseDown: props.onMouseDown
517
526
  }, otherProps, ptm('root'));
@@ -719,7 +728,9 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
719
728
  context: {
720
729
  selected: props.selected,
721
730
  disabled: props.disabled,
722
- focused: focusedState
731
+ focused: focusedState,
732
+ focusedIndex: props.focusedIndex,
733
+ index: props.index
723
734
  }
724
735
  });
725
736
  };
@@ -731,22 +742,11 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
731
742
  };
732
743
  var onClick = function onClick(event) {
733
744
  if (props.onClick) {
734
- props.onClick({
735
- originalEvent: event,
736
- option: props.option
737
- });
745
+ props.onClick(event, props.option);
738
746
  }
739
747
  event.preventDefault();
740
748
  event.stopPropagation();
741
749
  };
742
- var onKeyDown = function onKeyDown(event) {
743
- if (props.onKeyDown) {
744
- props.onKeyDown({
745
- originalEvent: event,
746
- option: props.option
747
- });
748
- }
749
- };
750
750
  var checkboxIconProps = mergeProps({
751
751
  className: cx('checkboxIcon')
752
752
  }, getPTOptions('checkboxIcon'));
@@ -755,7 +755,7 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
755
755
  selected: props.selected
756
756
  }) : null;
757
757
  var content = props.template ? utils.ObjectUtils.getJSXElement(props.template, props.option) : props.label;
758
- var tabIndex = props.disabled ? null : props.tabIndex || 0;
758
+ var tabIndex = props.disabled ? -1 : props.tabIndex;
759
759
  var checkboxContainerProps = mergeProps({
760
760
  className: cx('checkboxContainer')
761
761
  }, getPTOptions('checkboxContainer'));
@@ -771,7 +771,6 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
771
771
  })),
772
772
  style: props.style,
773
773
  onClick: onClick,
774
- onKeyDown: onKeyDown,
775
774
  onFocus: onFocus,
776
775
  onBlur: onBlur,
777
776
  tabIndex: tabIndex,
@@ -873,14 +872,15 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
873
872
  var selected = props.isSelected(option);
874
873
  return /*#__PURE__*/React__namespace.createElement(MultiSelectItem, {
875
874
  hostName: props.hostName,
875
+ index: j,
876
876
  key: optionKey,
877
+ focusedOptionIndex: props.focusedOptionIndex,
877
878
  label: optionLabel,
878
879
  option: option,
879
880
  style: style,
880
881
  template: props.itemTemplate,
881
882
  selected: selected,
882
883
  onClick: props.onOptionSelect,
883
- onKeyDown: props.onOptionKeyDown,
884
884
  tabIndex: tabIndex,
885
885
  disabled: disabled,
886
886
  className: props.itemClassName,
@@ -931,13 +931,14 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
931
931
  return /*#__PURE__*/React__namespace.createElement(MultiSelectItem, {
932
932
  hostName: props.hostName,
933
933
  key: optionKey,
934
+ focusedOptionIndex: props.focusedOptionIndex,
934
935
  label: optionLabel,
935
936
  option: option,
936
937
  style: style,
938
+ index: index,
937
939
  template: props.itemTemplate,
938
940
  selected: selected,
939
941
  onClick: props.onOptionSelect,
940
- onKeyDown: props.onOptionKeyDown,
941
942
  tabIndex: tabIndex,
942
943
  disabled: disabled,
943
944
  className: props.itemClassName,
@@ -1066,19 +1067,35 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1066
1067
  var mergeProps = hooks.useMergeProps();
1067
1068
  var context = React__namespace.useContext(PrimeReact.PrimeReactContext);
1068
1069
  var props = MultiSelectBase.getProps(inProps, context);
1069
- var _React$useState = React__namespace.useState(''),
1070
+ var _React$useState = React__namespace.useState(null),
1070
1071
  _React$useState2 = _slicedToArray(_React$useState, 2),
1071
- filterState = _React$useState2[0],
1072
- setFilterState = _React$useState2[1];
1072
+ focusedOptionIndex = _React$useState2[0],
1073
+ setFocusedOptionIndex = _React$useState2[1];
1073
1074
  var _React$useState3 = React__namespace.useState(false),
1074
1075
  _React$useState4 = _slicedToArray(_React$useState3, 2),
1075
- focusedState = _React$useState4[0],
1076
- setFocusedState = _React$useState4[1];
1077
- var _React$useState5 = React__namespace.useState(props.inline),
1076
+ clicked = _React$useState4[0],
1077
+ setClicked = _React$useState4[1];
1078
+ var _React$useState5 = React__namespace.useState(''),
1078
1079
  _React$useState6 = _slicedToArray(_React$useState5, 2),
1079
- overlayVisibleState = _React$useState6[0],
1080
- setOverlayVisibleState = _React$useState6[1];
1080
+ filterState = _React$useState6[0],
1081
+ setFilterState = _React$useState6[1];
1082
+ var _React$useState7 = React__namespace.useState(-1),
1083
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
1084
+ startRangeIndex = _React$useState8[0],
1085
+ setStartRangeIndex = _React$useState8[1];
1086
+ var _React$useState9 = React__namespace.useState(false),
1087
+ _React$useState10 = _slicedToArray(_React$useState9, 2),
1088
+ focusedState = _React$useState10[0],
1089
+ setFocusedState = _React$useState10[1];
1090
+ var _React$useState11 = React__namespace.useState(props.inline),
1091
+ _React$useState12 = _slicedToArray(_React$useState11, 2),
1092
+ overlayVisibleState = _React$useState12[0],
1093
+ setOverlayVisibleState = _React$useState12[1];
1081
1094
  var elementRef = React__namespace.useRef(null);
1095
+ var searchValue = React__namespace.useRef(null);
1096
+ var searchTimeout = React__namespace.useRef(null);
1097
+ var firstHiddenFocusableElementOnOverlay = React__namespace.useRef(null);
1098
+ var lastHiddenFocusableElementOnOverlay = React__namespace.useRef(null);
1082
1099
  var inputRef = React__namespace.useRef(props.inputRef);
1083
1100
  var labelRef = React__namespace.useRef(null);
1084
1101
  var overlayRef = React__namespace.useRef(null);
@@ -1120,6 +1137,14 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1120
1137
  _useOverlayListener2 = _slicedToArray(_useOverlayListener, 2),
1121
1138
  bindOverlayListener = _useOverlayListener2[0],
1122
1139
  unbindOverlayListener = _useOverlayListener2[1];
1140
+ var onFirstHiddenFocus = function onFirstHiddenFocus(event) {
1141
+ var focusableEl = event.relatedTarget === inputRef.current ? utils.DomHandler.getFirstFocusableElement(overlayRef.current, ':not([data-p-hidden-focusable="true"])') : inputRef.current;
1142
+ utils.DomHandler.focus(focusableEl);
1143
+ };
1144
+ var onLastHiddenFocus = function onLastHiddenFocus(event) {
1145
+ var focusableEl = event.relatedTarget === inputRef.current ? utils.DomHandler.getLastFocusableElement(overlayRef.current, ':not([data-p-hidden-focusable="true"])') : inputRef.current;
1146
+ utils.DomHandler.focus(focusableEl);
1147
+ };
1123
1148
  var onPanelClick = function onPanelClick(event) {
1124
1149
  overlayservice.OverlayService.emit('overlay-click', {
1125
1150
  originalEvent: event,
@@ -1129,63 +1154,60 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1129
1154
  var allowOptionSelect = function allowOptionSelect() {
1130
1155
  return !props.selectionLimit || !props.value || props.value && props.value.length < props.selectionLimit;
1131
1156
  };
1132
- var onOptionSelect = function onOptionSelect(event) {
1133
- var originalEvent = event.originalEvent,
1134
- option = event.option;
1135
- if (props.disabled || isOptionDisabled(option)) {
1136
- return;
1157
+ var findNextSelectedOptionIndex = function findNextSelectedOptionIndex(index) {
1158
+ var matchedOptionIndex = hasSelectedOption && index < visibleOptions.length - 1 ? visibleOptions.slice(index + 1).findIndex(function (option) {
1159
+ return isValidSelectedOption(option);
1160
+ }) : -1;
1161
+ return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;
1162
+ };
1163
+ var findPrevSelectedOptionIndex = function findPrevSelectedOptionIndex(index) {
1164
+ var matchedOptionIndex = hasSelectedOption && index > 0 ? utils.ObjectUtils.findLastIndex(visibleOptions.slice(0, index), function (option) {
1165
+ return isValidSelectedOption(option);
1166
+ }) : -1;
1167
+ return matchedOptionIndex > -1 ? matchedOptionIndex : -1;
1168
+ };
1169
+ var findNearestSelectedOptionIndex = function findNearestSelectedOptionIndex(index) {
1170
+ var firstCheckUp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1171
+ var matchedOptionIndex = -1;
1172
+ if (hasSelectedOption) {
1173
+ if (firstCheckUp) {
1174
+ matchedOptionIndex = findPrevSelectedOptionIndex(index);
1175
+ matchedOptionIndex = matchedOptionIndex === -1 ? findNextSelectedOptionIndex(index) : matchedOptionIndex;
1176
+ } else {
1177
+ matchedOptionIndex = findNextSelectedOptionIndex(index);
1178
+ matchedOptionIndex = matchedOptionIndex === -1 ? findPrevSelectedOptionIndex(index) : matchedOptionIndex;
1179
+ }
1137
1180
  }
1138
- var optionValue = getOptionValue(option);
1139
- var isUsed = isOptionValueUsed(option);
1140
- var selected = isSelected(option);
1141
- var allowSelect = allowOptionSelect();
1142
- if (selected) {
1143
- updateModel(originalEvent, props.value.filter(function (val) {
1144
- return !utils.ObjectUtils.equals(isUsed ? val : getOptionValue(val), optionValue, equalityKey);
1145
- }), option);
1146
- } else if (allowSelect) {
1147
- updateModel(originalEvent, [].concat(_toConsumableArray(props.value || []), [optionValue]), option);
1181
+ return matchedOptionIndex > -1 ? matchedOptionIndex : index;
1182
+ };
1183
+ var onOptionSelectRange = function onOptionSelectRange(event) {
1184
+ var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;
1185
+ var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
1186
+ start === -1 && (start = findNearestSelectedOptionIndex(end, true));
1187
+ end === -1 && (end = findNearestSelectedOptionIndex(start));
1188
+ if (start !== -1 && end !== -1) {
1189
+ var rangeStart = Math.min(start, end);
1190
+ var rangeEnd = Math.max(start, end);
1191
+ var value = visibleOptions.slice(rangeStart, rangeEnd + 1).filter(function (option) {
1192
+ return isValidOption(option);
1193
+ }).map(function (option) {
1194
+ return getOptionValue(option);
1195
+ });
1196
+ updateModel(event, value);
1148
1197
  }
1149
1198
  };
1150
- var onOptionKeyDown = function onOptionKeyDown(event) {
1151
- var originalEvent = event.originalEvent;
1152
- var listItem = originalEvent.currentTarget;
1153
- switch (originalEvent.which) {
1154
- //down
1155
- case 40:
1156
- var nextItem = findNextItem(listItem);
1157
- nextItem && nextItem.focus();
1158
- originalEvent.preventDefault();
1159
- break;
1160
-
1161
- //up
1162
- case 38:
1163
- var prevItem = findPrevItem(listItem);
1164
- prevItem && prevItem.focus();
1165
- originalEvent.preventDefault();
1166
- break;
1167
-
1168
- //enter and space
1169
- case 13:
1170
- case 32:
1171
- onOptionSelect(event);
1172
- originalEvent.preventDefault();
1173
- break;
1174
-
1175
- //escape
1176
- case 27:
1177
- hide();
1178
- utils.DomHandler.focus(inputRef.current);
1179
- break;
1199
+ var onOptionSelect = function onOptionSelect(event, option) {
1200
+ var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
1201
+ if (props.disabled || isOptionDisabled(option)) {
1202
+ return;
1180
1203
  }
1181
- };
1182
- var findNextItem = function findNextItem(item) {
1183
- var nextItem = item.nextElementSibling;
1184
- return nextItem ? utils.DomHandler.getAttribute(nextItem, 'data-p-disabled') === true || utils.DomHandler.getAttribute(nextItem, 'data-pc-section') === 'itemgroup' ? findNextItem(nextItem) : nextItem : null;
1185
- };
1186
- var findPrevItem = function findPrevItem(item) {
1187
- var prevItem = item.previousElementSibling;
1188
- return prevItem ? utils.DomHandler.getAttribute(prevItem, 'data-p-disabled') === true || utils.DomHandler.getAttribute(prevItem, 'data-pc-section') === 'itemgroup' ? findPrevItem(prevItem) : prevItem : null;
1204
+ var selected = isSelected(option);
1205
+ var value = null;
1206
+ if (selected) value = props.value.filter(function (val) {
1207
+ return !utils.ObjectUtils.equals(val, getOptionValue(option), equalityKey);
1208
+ });else value = [].concat(_toConsumableArray(props.value || []), [getOptionValue(option)]);
1209
+ updateModel(event, value);
1210
+ index !== -1 && setFocusedOptionIndex(index);
1189
1211
  };
1190
1212
  var onClick = function onClick(event) {
1191
1213
  if (!props.inline && !props.disabled && !props.loading && !isPanelClicked(event) && utils.DomHandler.getAttribute(event.target, 'data-pc-section') !== 'removetokenicon' && !isClearClicked(event)) {
@@ -1193,42 +1215,170 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1193
1215
  utils.DomHandler.focus(inputRef.current);
1194
1216
  event.preventDefault();
1195
1217
  }
1218
+ setClicked(true);
1219
+ };
1220
+ var onArrowDownKey = function onArrowDownKey(event) {
1221
+ if (!overlayVisibleState) {
1222
+ show();
1223
+ props.editable && changeFocusedOptionIndex(event, findSelectedOptionIndex());
1224
+ } else {
1225
+ var optionIndex = focusedOptionIndex !== -1 ? findNextOptionIndex(focusedOptionIndex) : clicked ? findFirstOptionIndex() : findFirstFocusedOptionIndex();
1226
+ if (event.shiftKey) {
1227
+ onOptionSelectRange(event, startRangeIndex, optionIndex);
1228
+ }
1229
+ changeFocusedOptionIndex(event, optionIndex);
1230
+ }
1231
+ event.preventDefault();
1232
+ };
1233
+ var onArrowUpKey = function onArrowUpKey(event) {
1234
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1235
+ if (event.altKey && !pressedInInputText) {
1236
+ if (focusedOptionIndex !== -1) {
1237
+ onOptionSelect(event, visibleOptions[focusedOptionIndex]);
1238
+ }
1239
+ overlayVisibleState && hide();
1240
+ event.preventDefault();
1241
+ } else {
1242
+ var optionIndex = focusedOptionIndex !== -1 ? findPrevOptionIndex(focusedOptionIndex) : clicked ? findLastOptionIndex() : findLastFocusedOptionIndex();
1243
+ changeFocusedOptionIndex(event, optionIndex);
1244
+ !overlayVisibleState && show();
1245
+ event.preventDefault();
1246
+ }
1247
+ };
1248
+ var onEnterKey = function onEnterKey(event) {
1249
+ if (!overlayVisibleState) {
1250
+ setFocusedOptionIndex(-1);
1251
+ onArrowDownKey(event);
1252
+ } else {
1253
+ if (focusedOptionIndex !== -1) {
1254
+ if (event.shiftKey) onOptionSelectRange(event, focusedOptionIndex);else onOptionSelect(event, visibleOptions[focusedOptionIndex]);
1255
+ }
1256
+ hide();
1257
+ }
1258
+ event.preventDefault();
1259
+ };
1260
+ var onHomeKey = function onHomeKey(event) {
1261
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1262
+ var currentTarget = event.currentTarget;
1263
+ if (pressedInInputText) {
1264
+ var len = currentTarget.value.length;
1265
+ currentTarget.setSelectionRange(0, event.shiftKey ? len : 0);
1266
+ setFocusedOptionIndex(-1);
1267
+ } else {
1268
+ var metaKey = event.metaKey || event.ctrlKey;
1269
+ var optionIndex = findFirstOptionIndex();
1270
+ if (event.shiftKey && metaKey) {
1271
+ onOptionSelectRange(event, optionIndex, startRangeIndex);
1272
+ }
1273
+ changeFocusedOptionIndex(event, optionIndex);
1274
+ !overlayVisibleState && show();
1275
+ }
1276
+ event.preventDefault();
1277
+ };
1278
+ var onEndKey = function onEndKey(event) {
1279
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1280
+ var currentTarget = event.currentTarget;
1281
+ if (pressedInInputText) {
1282
+ var len = currentTarget.value.length;
1283
+ currentTarget.setSelectionRange(event.shiftKey ? 0 : len, len);
1284
+ _readOnlyError("focusedOptionIndex");
1285
+ } else {
1286
+ var metaKey = event.metaKey || event.ctrlKey;
1287
+ var optionIndex = findLastOptionIndex();
1288
+ if (event.shiftKey && metaKey) {
1289
+ onOptionSelectRange(event, startRangeIndex, optionIndex);
1290
+ }
1291
+ changeFocusedOptionIndex(event, optionIndex);
1292
+ !overlayVisibleState && show();
1293
+ }
1294
+ event.preventDefault();
1295
+ };
1296
+ var onPageUpKey = function onPageUpKey(event) {
1297
+ event.preventDefault();
1298
+ };
1299
+ var onPageDownKey = function onPageDownKey(event) {
1300
+ event.preventDefault();
1301
+ };
1302
+ var onTabKey = function onTabKey(event) {
1303
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1304
+ if (!pressedInInputText) {
1305
+ if (overlayVisibleState && hasFocusableElements()) {
1306
+ utils.DomHandler.focus(event.shiftKey ? lastHiddenFocusableElementOnOverlay.current : firstHiddenFocusableElementOnOverlay.current);
1307
+ event.preventDefault();
1308
+ } else {
1309
+ if (focusedOptionIndex !== -1) {
1310
+ onOptionSelect(event, visibleOptions[focusedOptionIndex]);
1311
+ }
1312
+ overlayVisibleState && hide(filter);
1313
+ }
1314
+ }
1315
+ };
1316
+ var onShiftKey = function onShiftKey() {
1317
+ setStartRangeIndex(focusedOptionIndex);
1196
1318
  };
1197
1319
  var onKeyDown = function onKeyDown(event) {
1198
- switch (event.which) {
1199
- //down
1200
- case 40:
1320
+ var metaKey = event.metaKey || event.ctrlKey;
1321
+ switch (event.code) {
1322
+ case 'ArrowUp':
1201
1323
  if (props.inline) break;
1202
- if (!overlayVisibleState && event.altKey) {
1203
- show();
1204
- event.preventDefault();
1205
- }
1324
+ onArrowUpKey(event);
1206
1325
  break;
1207
-
1208
- //space
1209
- case 32:
1326
+ case 'ArrowDown':
1210
1327
  if (props.inline) break;
1211
- overlayVisibleState ? hide() : show();
1328
+ onArrowDownKey(event);
1329
+ break;
1330
+ case 'Space':
1331
+ case 'NumpadEnter':
1332
+ case 'Enter':
1333
+ if (props.inline) break;
1334
+ onEnterKey(event);
1335
+ break;
1336
+ case 'Home':
1337
+ if (props.inline) break;
1338
+ onHomeKey(event);
1212
1339
  event.preventDefault();
1213
1340
  break;
1214
-
1215
- //escape
1216
- case 27:
1341
+ case 'End':
1342
+ if (props.inline) break;
1343
+ onEndKey(event);
1344
+ event.preventDefault();
1345
+ break;
1346
+ case 'PageDown':
1347
+ onPageDownKey(event);
1348
+ break;
1349
+ case 'PageUp':
1350
+ onPageUpKey(event);
1351
+ break;
1352
+ case 'Escape':
1217
1353
  if (props.inline) break;
1218
1354
  hide();
1219
1355
  break;
1220
-
1221
- //tab
1222
- case 9:
1223
- if (overlayVisibleState) {
1224
- var firstFocusableElement = utils.DomHandler.getFirstFocusableElement(overlayRef.current);
1225
- if (firstFocusableElement) {
1226
- firstFocusableElement.focus();
1227
- event.preventDefault();
1228
- }
1356
+ case 'Tab':
1357
+ onTabKey(event);
1358
+ break;
1359
+ case 'ShiftLeft':
1360
+ case 'ShiftRight':
1361
+ onShiftKey();
1362
+ break;
1363
+ default:
1364
+ if (event.code === 'KeyA' && metaKey) {
1365
+ var value = visibleOptions.filter(function (option) {
1366
+ return isValidOption(option);
1367
+ }).map(function (option) {
1368
+ return getOptionValue(option);
1369
+ });
1370
+ updateModel(event, value);
1371
+ event.preventDefault();
1372
+ break;
1373
+ }
1374
+ if (!metaKey && utils.ObjectUtils.isPrintableCharacter(event.key)) {
1375
+ !overlayVisibleState && show();
1376
+ searchOptions(event);
1377
+ event.preventDefault();
1229
1378
  }
1230
1379
  break;
1231
1380
  }
1381
+ setClicked(false);
1232
1382
  };
1233
1383
  var onSelectAll = function onSelectAll(event) {
1234
1384
  if (props.onSelectAll) {
@@ -1314,9 +1464,13 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1314
1464
  };
1315
1465
  var show = function show() {
1316
1466
  setOverlayVisibleState(true);
1467
+ setFocusedOptionIndex(focusedOptionIndex !== -1 ? focusedOptionIndex : props.autoOptionFocus ? findFirstFocusedOptionIndex() : findSelectedOptionIndex());
1468
+ utils.DomHandler.focus(inputRef.current);
1317
1469
  };
1318
1470
  var hide = function hide() {
1471
+ setFocusedOptionIndex(-1);
1319
1472
  setOverlayVisibleState(false);
1473
+ setClicked(false);
1320
1474
  };
1321
1475
  var onOverlayEnter = function onOverlayEnter(callback) {
1322
1476
  utils.ZIndexUtils.set('overlay', overlayRef.current, context && context.autoZIndex || PrimeReact__default["default"].autoZIndex, context && context.zIndex['overlay'] || PrimeReact__default["default"].zIndex['overlay']);
@@ -1510,6 +1664,100 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1510
1664
  var isOptionValueUsed = function isOptionValueUsed(option) {
1511
1665
  return !props.useOptionAsValue && props.optionValue || option && option['value'] !== undefined;
1512
1666
  };
1667
+ var isOptionGroup = function isOptionGroup(option) {
1668
+ return props.optionGroupLabel && option.optionGroup && option.group;
1669
+ };
1670
+ var hasSelectedOption = function hasSelectedOption() {
1671
+ return utils.ObjectUtils.isNotEmpty(props.value);
1672
+ };
1673
+ var hasFocusableElements = function hasFocusableElements() {
1674
+ return utils.DomHandler.getFocusableElements(overlayRef.current, ':not([data-p-hidden-focusable="true"])').length > 0;
1675
+ };
1676
+ var isOptionMatched = function isOptionMatched(option) {
1677
+ var _getOptionLabel;
1678
+ return isValidOption(option) && ((_getOptionLabel = getOptionLabel(option)) === null || _getOptionLabel === void 0 ? void 0 : _getOptionLabel.toLocaleLowerCase(props.filterLocale).startsWith(searchValue.current.toLocaleLowerCase(props.filterLocale)));
1679
+ };
1680
+ var isValidOption = function isValidOption(option) {
1681
+ return utils.ObjectUtils.isNotEmpty(option) && !(isOptionDisabled(option) || isOptionGroup(option));
1682
+ };
1683
+ var isValidSelectedOption = function isValidSelectedOption(option) {
1684
+ return isValidOption(option) && isSelected(option);
1685
+ };
1686
+ var findSelectedOptionIndex = function findSelectedOptionIndex() {
1687
+ return hasSelectedOption ? visibleOptions === null || visibleOptions === void 0 ? void 0 : visibleOptions.findIndex(function (option) {
1688
+ return isValidSelectedOption(option);
1689
+ }) : -1;
1690
+ };
1691
+ var findFirstFocusedOptionIndex = function findFirstFocusedOptionIndex() {
1692
+ var selectedIndex = findSelectedOptionIndex();
1693
+ return selectedIndex < 0 ? findFirstOptionIndex() : selectedIndex;
1694
+ };
1695
+ var findLastFocusedOptionIndex = function findLastFocusedOptionIndex() {
1696
+ var selectedIndex = findSelectedOptionIndex();
1697
+ return selectedIndex < 0 ? findLastOptionIndex() : selectedIndex;
1698
+ };
1699
+ var findFirstOptionIndex = function findFirstOptionIndex() {
1700
+ return visibleOptions.findIndex(function (option) {
1701
+ return isValidOption(option);
1702
+ });
1703
+ };
1704
+ var findLastOptionIndex = function findLastOptionIndex() {
1705
+ return utils.ObjectUtils.findLastIndex(visibleOptions, function (option) {
1706
+ return isValidOption(option);
1707
+ });
1708
+ };
1709
+ var findNextOptionIndex = function findNextOptionIndex(index) {
1710
+ var matchedOptionIndex = index < visibleOptions.length - 1 ? visibleOptions.slice(index + 1).findIndex(function (option) {
1711
+ return isValidOption(option);
1712
+ }) : -1;
1713
+ return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
1714
+ };
1715
+ var findPrevOptionIndex = function findPrevOptionIndex(index) {
1716
+ var matchedOptionIndex = index > 0 ? utils.ObjectUtils.findLastIndex(visibleOptions.slice(0, index), function (option) {
1717
+ return isValidOption(option);
1718
+ }) : -1;
1719
+ return matchedOptionIndex > -1 ? matchedOptionIndex : index;
1720
+ };
1721
+ var searchOptions = function searchOptions(event) {
1722
+ searchValue.current = (searchValue.current || '') + event.key;
1723
+ var optionIndex = -1;
1724
+ if (utils.ObjectUtils.isNotEmpty(searchValue.current)) {
1725
+ if (focusedOptionIndex !== -1) {
1726
+ optionIndex = visibleOptions.slice(focusedOptionIndex).findIndex(function (option) {
1727
+ return isOptionMatched(option);
1728
+ });
1729
+ optionIndex = optionIndex === -1 ? visibleOptions.slice(0, focusedOptionIndex).findIndex(function (option) {
1730
+ return isOptionMatched(option);
1731
+ }) : optionIndex + focusedOptionIndex;
1732
+ } else {
1733
+ optionIndex = visibleOptions.findIndex(function (option) {
1734
+ return isOptionMatched(option);
1735
+ });
1736
+ }
1737
+ if (optionIndex === -1 && focusedOptionIndex === -1) {
1738
+ optionIndex = findFirstFocusedOptionIndex();
1739
+ }
1740
+ if (optionIndex !== -1) {
1741
+ changeFocusedOptionIndex(event, optionIndex);
1742
+ }
1743
+ }
1744
+ if (searchTimeout.current) {
1745
+ clearTimeout(searchTimeout.current);
1746
+ }
1747
+ searchTimeout.current = setTimeout(function () {
1748
+ searchValue.current = '';
1749
+ searchTimeout.current = null;
1750
+ }, 500);
1751
+ };
1752
+ var changeFocusedOptionIndex = function changeFocusedOptionIndex(event, index) {
1753
+ if (focusedOptionIndex !== index) {
1754
+ setFocusedOptionIndex(index);
1755
+ scrollInView();
1756
+ if (props.selectOnFocus) {
1757
+ onOptionSelect(event, visibleOptions[index], false);
1758
+ }
1759
+ }
1760
+ };
1513
1761
  var removeChip = function removeChip(event, item) {
1514
1762
  var value = props.value.filter(function (val) {
1515
1763
  return !utils.ObjectUtils.equals(val, item, equalityKey);
@@ -1650,6 +1898,7 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1650
1898
  setTimeout(function () {
1651
1899
  props.overlayVisible ? show() : hide();
1652
1900
  }, 100);
1901
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1653
1902
  }, [props.overlayVisible]);
1654
1903
  hooks.useUpdateEffect(function () {
1655
1904
  if (overlayVisibleState && filterState && hasFilter) {
@@ -1734,11 +1983,31 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1734
1983
  role: 'listbox',
1735
1984
  'aria-expanded': overlayVisibleState,
1736
1985
  disabled: props.disabled,
1737
- tabIndex: props.tabIndex
1986
+ tabIndex: !props.disabled ? props.tabIndex : -1
1738
1987
  }, ariaProps), ptm('input'));
1988
+ var firstHiddenElementProps = mergeProps({
1989
+ ref: firstHiddenFocusableElementOnOverlay,
1990
+ role: 'presentation',
1991
+ 'aria-hidden': true,
1992
+ className: 'p-hidden-accessible p-hidden-focusable',
1993
+ tabIndex: '0',
1994
+ onFocus: onFirstHiddenFocus,
1995
+ 'data-p-hidden-accessible': true,
1996
+ 'data-p-hidden-focusable': true
1997
+ }, ptm('hiddenFirstFocusableEl'));
1998
+ var lastHiddenElementProps = mergeProps({
1999
+ ref: lastHiddenFocusableElementOnOverlay,
2000
+ role: 'presentation',
2001
+ 'aria-hidden': true,
2002
+ className: 'p-hidden-accessible p-hidden-focusable',
2003
+ tabIndex: '0',
2004
+ onFocus: onLastHiddenFocus,
2005
+ 'data-p-hidden-accessible': true,
2006
+ 'data-p-hidden-focusable': true
2007
+ }, ptm('hiddenLastFocusableEl'));
1739
2008
  return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("div", rootProps, /*#__PURE__*/React__namespace.createElement("div", hiddenInputWrapperProps, /*#__PURE__*/React__namespace.createElement("input", _extends({}, inputProps, {
1740
2009
  readOnly: true
1741
- }))), !props.inline && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, label, clearIcon, triggerIcon), /*#__PURE__*/React__namespace.createElement(MultiSelectPanel, _extends({
2010
+ }))), !props.inline && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, label, clearIcon, triggerIcon), /*#__PURE__*/React__namespace.createElement("span", firstHiddenElementProps), /*#__PURE__*/React__namespace.createElement(MultiSelectPanel, _extends({
1742
2011
  hostName: "MultiSelect",
1743
2012
  ref: overlayRef,
1744
2013
  visibleOptions: visibleOptions
@@ -1746,6 +2015,8 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1746
2015
  onClick: onPanelClick,
1747
2016
  onOverlayHide: hide,
1748
2017
  filterValue: filterState,
2018
+ focusedOptionIndex: focusedOptionIndex,
2019
+ setFocusedOptionIndex: setFocusedOptionIndex,
1749
2020
  hasFilter: hasFilter,
1750
2021
  onFilterInputChange: onFilterInputChange,
1751
2022
  resetFilter: resetFilter,
@@ -1762,7 +2033,6 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1762
2033
  isAllSelected: isAllSelected,
1763
2034
  onOptionSelect: onOptionSelect,
1764
2035
  allowOptionSelect: allowOptionSelect,
1765
- onOptionKeyDown: onOptionKeyDown,
1766
2036
  "in": overlayVisibleState,
1767
2037
  onEnter: onOverlayEnter,
1768
2038
  onEntered: onOverlayEntered,
@@ -1773,7 +2043,7 @@ this.primereact.multiselect = (function (exports, React, PrimeReact, componentba
1773
2043
  sx: sx,
1774
2044
  isUnstyled: isUnstyled,
1775
2045
  metaData: metaData
1776
- }))), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
2046
+ })), /*#__PURE__*/React__namespace.createElement("span", lastHiddenElementProps)), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
1777
2047
  target: elementRef,
1778
2048
  content: props.tooltip
1779
2049
  }, props.tooltipOptions, {