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
@@ -181,10 +181,13 @@ var classes = {
181
181
  item: function item(_ref7) {
182
182
  var selected = _ref7.selected,
183
183
  disabled = _ref7.disabled,
184
- label = _ref7.label;
184
+ label = _ref7.label,
185
+ index = _ref7.index,
186
+ focusedOptionIndex = _ref7.focusedOptionIndex;
185
187
  return classNames('p-dropdown-item', {
186
188
  'p-highlight': selected,
187
189
  'p-disabled': disabled,
190
+ 'p-focus': index === focusedOptionIndex,
188
191
  'p-dropdown-item-empty': !label || label.length === 0
189
192
  });
190
193
  },
@@ -237,6 +240,8 @@ var DropdownBase = ComponentBase.extend({
237
240
  inputId: null,
238
241
  inputRef: null,
239
242
  itemTemplate: null,
243
+ loading: false,
244
+ loadingIcon: null,
240
245
  maxLength: null,
241
246
  name: null,
242
247
  onBlur: null,
@@ -249,6 +254,8 @@ var DropdownBase = ComponentBase.extend({
249
254
  onShow: null,
250
255
  optionDisabled: null,
251
256
  optionGroupChildren: 'items',
257
+ selectOnFocus: false,
258
+ autoOptionFocus: false,
252
259
  optionGroupLabel: null,
253
260
  optionGroupTemplate: null,
254
261
  optionLabel: null,
@@ -287,7 +294,9 @@ var DropdownItem = /*#__PURE__*/React.memo(function (props) {
287
294
  selected = props.selected,
288
295
  disabled = props.disabled,
289
296
  option = props.option,
290
- label = props.label;
297
+ label = props.label,
298
+ index = props.index,
299
+ focusedOptionIndex = props.focusedOptionIndex;
291
300
  var getPTOptions = function getPTOptions(key) {
292
301
  return ptm(key, {
293
302
  context: {
@@ -296,7 +305,7 @@ var DropdownItem = /*#__PURE__*/React.memo(function (props) {
296
305
  }
297
306
  });
298
307
  };
299
- var _onClick = function onClick(event) {
308
+ var _onClick = function onClick(event, i) {
300
309
  if (props.onClick) {
301
310
  props.onClick({
302
311
  originalEvent: event,
@@ -311,7 +320,9 @@ var DropdownItem = /*#__PURE__*/React.memo(function (props) {
311
320
  className: classNames(option.className, cx('item', {
312
321
  selected: selected,
313
322
  disabled: disabled,
314
- label: label
323
+ label: label,
324
+ index: index,
325
+ focusedOptionIndex: focusedOptionIndex
315
326
  })),
316
327
  style: props.style,
317
328
  onClick: function onClick(e) {
@@ -320,6 +331,7 @@ var DropdownItem = /*#__PURE__*/React.memo(function (props) {
320
331
  'aria-label': label,
321
332
  'aria-selected': selected,
322
333
  'data-p-highlight': selected,
334
+ 'data-p-focused': focusedOptionIndex === index,
323
335
  'data-p-disabled': disabled
324
336
  }, getPTOptions('item'));
325
337
  return /*#__PURE__*/React.createElement("li", itemProps, content, /*#__PURE__*/React.createElement(Ripple, null));
@@ -391,6 +403,8 @@ var DropdownPanel = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(funct
391
403
  var disabled = props.isOptionDisabled(option);
392
404
  return /*#__PURE__*/React.createElement(DropdownItem, {
393
405
  key: optionKey,
406
+ index: j,
407
+ focusedOptionIndex: props.focusedOptionIndex,
394
408
  label: optionLabel,
395
409
  option: option,
396
410
  style: style,
@@ -438,6 +452,8 @@ var DropdownPanel = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(funct
438
452
  return /*#__PURE__*/React.createElement(DropdownItem, {
439
453
  key: optionKey,
440
454
  label: optionLabel,
455
+ index: index,
456
+ focusedOptionIndex: props.focusedOptionIndex,
441
457
  option: option,
442
458
  style: style,
443
459
  template: props.itemTemplate,
@@ -630,20 +646,30 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
630
646
  setFilterState = _React$useState2[1];
631
647
  var _React$useState3 = React.useState(false),
632
648
  _React$useState4 = _slicedToArray(_React$useState3, 2),
633
- focusedState = _React$useState4[0],
634
- setFocusedState = _React$useState4[1];
649
+ clicked = _React$useState4[0],
650
+ setClicked = _React$useState4[1];
635
651
  var _React$useState5 = React.useState(false),
636
652
  _React$useState6 = _slicedToArray(_React$useState5, 2),
637
- overlayVisibleState = _React$useState6[0],
638
- setOverlayVisibleState = _React$useState6[1];
653
+ focusedState = _React$useState6[0],
654
+ setFocusedState = _React$useState6[1];
655
+ var _React$useState7 = React.useState(null),
656
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
657
+ focusedOptionIndex = _React$useState8[0],
658
+ setFocusedOptionIndex = _React$useState8[1];
659
+ var _React$useState9 = React.useState(false),
660
+ _React$useState10 = _slicedToArray(_React$useState9, 2),
661
+ overlayVisibleState = _React$useState10[0],
662
+ setOverlayVisibleState = _React$useState10[1];
639
663
  var elementRef = React.useRef(null);
640
664
  var overlayRef = React.useRef(null);
665
+ var firstHiddenFocusableElementOnOverlay = React.useRef(null);
666
+ var lastHiddenFocusableElementOnOverlay = React.useRef(null);
641
667
  var inputRef = React.useRef(props.inputRef);
642
668
  var focusInputRef = React.useRef(props.focusInputRef);
643
669
  var virtualScrollerRef = React.useRef(null);
644
670
  var searchTimeout = React.useRef(null);
645
671
  var searchValue = React.useRef(null);
646
- var currentSearchChar = React.useRef(null);
672
+ React.useRef(null);
647
673
  var isLazy = props.virtualScrollerOptions && props.virtualScrollerOptions.lazy;
648
674
  var hasFilter = ObjectUtils.isNotEmpty(filterState);
649
675
  var appendTo = props.appendTo || context && context.appendTo || PrimeReact.appendTo;
@@ -707,6 +733,14 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
707
733
  return props.options;
708
734
  }
709
735
  };
736
+ var onFirstHiddenFocus = function onFirstHiddenFocus(event) {
737
+ var focusableEl = event.relatedTarget === focusInputRef.current ? DomHandler.getFirstFocusableElement(overlayRef.current, ':not([data-p-hidden-focusable="true"])') : focusInputRef.current;
738
+ DomHandler.focus(focusableEl);
739
+ };
740
+ var onLastHiddenFocus = function onLastHiddenFocus(event) {
741
+ var focusableEl = event.relatedTarget === focusInputRef.current ? DomHandler.getLastFocusableElement(overlayRef.current, ':not([data-p-hidden-focusable="true"])') : focusInputRef.current;
742
+ DomHandler.focus(focusableEl);
743
+ };
710
744
  var isClearClicked = function isClearClicked(event) {
711
745
  return DomHandler.isAttributeEquals(event.target, 'data-pc-section', 'clearicon') || DomHandler.isAttributeEquals(event.target.parentElement || event.target, 'data-pc-section', 'filterclearicon');
712
746
  };
@@ -726,6 +760,7 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
726
760
  DomHandler.focus(focusInputRef.current);
727
761
  overlayVisibleState ? hide() : show();
728
762
  }
763
+ setClicked(true);
729
764
  };
730
765
  var onInputFocus = function onInputFocus(event) {
731
766
  if (props.showOnFocus && !overlayVisibleState) {
@@ -757,6 +792,15 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
757
792
  }, 200);
758
793
  }
759
794
  };
795
+ var onOptionSelect = function onOptionSelect(event, option) {
796
+ var isHide = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
797
+ var value = getOptionValue(option);
798
+ selectItem({
799
+ originalEvent: event,
800
+ option: value
801
+ });
802
+ isHide && hide();
803
+ };
760
804
  var onPanelClick = function onPanelClick(event) {
761
805
  OverlayService.emit('overlay-click', {
762
806
  originalEvent: event,
@@ -764,196 +808,285 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
764
808
  });
765
809
  };
766
810
  var onInputKeyDown = function onInputKeyDown(event) {
767
- switch (event.which) {
768
- //down
769
- case 40:
770
- onDownKey(event);
811
+ if (props.disabled || DomHandler.isAndroid()) {
812
+ event.preventDefault();
813
+ return;
814
+ }
815
+ var metaKey = event.metaKey || event.ctrlKey;
816
+ switch (event.code) {
817
+ case 'ArrowDown':
818
+ onArrowDownKey(event);
771
819
  break;
772
-
773
- //up
774
- case 38:
775
- onUpKey(event);
820
+ case 'ArrowUp':
821
+ onArrowUpKey(event);
776
822
  break;
777
-
778
- //space and enter
779
- case 32:
780
- case 13:
781
- overlayVisibleState ? hide() : show();
782
- event.preventDefault();
823
+ case 'ArrowLeft':
824
+ case 'ArrowRight':
825
+ onArrowLeftKey(event, props.editable);
783
826
  break;
784
-
785
- //escape and tab
786
- case 27:
787
- case 9:
788
- hide();
827
+ case 'Home':
828
+ onHomeKey(event);
829
+ break;
830
+ case 'End':
831
+ onEndKey(event);
832
+ break;
833
+ case 'PageDown':
834
+ onPageDownKey(event);
835
+ break;
836
+ case 'PageUp':
837
+ onPageUpKey(event);
838
+ break;
839
+ case 'Space':
840
+ onSpaceKey(event, props.editable);
841
+ break;
842
+ case 'NumpadEnter':
843
+ case 'Enter':
844
+ onEnterKey(event);
845
+ break;
846
+ case 'Escape':
847
+ onEscapeKey(event);
848
+ break;
849
+ case 'Tab':
850
+ onTabKey(event);
851
+ break;
852
+ case 'Backspace':
853
+ onBackspaceKey(event, props.editable);
854
+ break;
855
+ case 'ShiftLeft':
856
+ case 'ShiftRight':
857
+ //NOOP
789
858
  break;
790
859
  default:
791
- search(event);
860
+ if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {
861
+ !overlayVisibleState && show();
862
+ !props.editable && searchOptions(event, event.key);
863
+ }
792
864
  break;
793
865
  }
866
+ setClicked(false);
794
867
  };
795
868
  var onFilterInputKeyDown = function onFilterInputKeyDown(event) {
796
- switch (event.which) {
797
- //down
798
- case 40:
799
- onDownKey(event);
869
+ switch (event.code) {
870
+ case 'ArrowDown':
871
+ onArrowDownKey(event);
800
872
  break;
801
-
802
- //up
803
- case 38:
804
- onUpKey(event);
873
+ case 'ArrowUp':
874
+ onArrowUpKey(event);
805
875
  break;
806
-
807
- //enter and escape
808
- case 13:
809
- case 27:
810
- hide();
876
+ case 'ArrowLeft':
877
+ case 'ArrowRight':
878
+ onArrowLeftKey(event, true);
879
+ break;
880
+ case 'Escape':
881
+ case 'Enter':
882
+ onEnterKey(event);
811
883
  event.preventDefault();
812
884
  break;
813
885
  }
814
886
  };
815
- var onUpKey = function onUpKey(event) {
816
- if (visibleOptions) {
817
- var prevOption = findPrevOption(getSelectedOptionIndex());
818
- if (prevOption) {
819
- selectItem({
820
- originalEvent: event,
821
- option: prevOption
822
- });
823
- }
824
- }
825
- event.preventDefault();
887
+ var hasFocusableElements = function hasFocusableElements() {
888
+ return DomHandler.getFocusableElements(overlayRef.current, ':not([data-p-hidden-focusable="true"])').length > 0;
889
+ };
890
+ var isOptionMatched = function isOptionMatched(option) {
891
+ var _getOptionLabel;
892
+ return isValidOption(option) && ((_getOptionLabel = getOptionLabel(option)) === null || _getOptionLabel === void 0 ? void 0 : _getOptionLabel.toLocaleLowerCase(props.filterLocale).startsWith(searchValue.current.toLocaleLowerCase(props.filterLocale)));
893
+ };
894
+ var isValidOption = function isValidOption(option) {
895
+ return ObjectUtils.isNotEmpty(option) && !(isOptionDisabled(option) || isOptionGroup(option));
896
+ };
897
+ var hasSelectedOption = function hasSelectedOption() {
898
+ return ObjectUtils.isNotEmpty(props.value);
899
+ };
900
+ var isValidSelectedOption = function isValidSelectedOption(option) {
901
+ return isValidOption(option) && isSelected(option);
902
+ };
903
+ var findSelectedOptionIndex = function findSelectedOptionIndex() {
904
+ return hasSelectedOption ? visibleOptions.findIndex(function (option) {
905
+ return isValidSelectedOption(option);
906
+ }) : -1;
907
+ };
908
+ var findFirstFocusedOptionIndex = function findFirstFocusedOptionIndex() {
909
+ var selectedIndex = findSelectedOptionIndex();
910
+ return selectedIndex < 0 ? findFirstOptionIndex() : selectedIndex;
826
911
  };
827
- var onDownKey = function onDownKey(event) {
828
- if (visibleOptions) {
829
- if (!overlayVisibleState && event.altKey) {
830
- show();
912
+ var searchOptions = function searchOptions(event, _char) {
913
+ searchValue.current = (searchValue.current || '') + _char;
914
+ var optionIndex = -1;
915
+ var matched = false;
916
+ if (ObjectUtils.isNotEmpty(searchValue.current)) {
917
+ if (focusedOptionIndex !== -1) {
918
+ optionIndex = visibleOptions.slice(focusedOptionIndex).findIndex(function (option) {
919
+ return isOptionMatched(option);
920
+ });
921
+ optionIndex = optionIndex === -1 ? visibleOptions.slice(0, focusedOptionIndex).findIndex(function (option) {
922
+ return isOptionMatched(option);
923
+ }) : optionIndex + focusedOptionIndex;
831
924
  } else {
832
- var nextOption = findNextOption(getSelectedOptionIndex());
833
- if (nextOption) {
834
- selectItem({
835
- originalEvent: event,
836
- option: nextOption
837
- });
838
- }
925
+ optionIndex = visibleOptions.findIndex(function (option) {
926
+ return isOptionMatched(option);
927
+ });
928
+ }
929
+ if (optionIndex !== -1) {
930
+ matched = true;
931
+ }
932
+ if (optionIndex === -1 && focusedOptionIndex === -1) {
933
+ optionIndex = findFirstFocusedOptionIndex();
934
+ }
935
+ if (optionIndex !== -1) {
936
+ changeFocusedOptionIndex(event, optionIndex);
839
937
  }
840
938
  }
841
- event.preventDefault();
842
- };
843
- var findNextOption = function findNextOption(index) {
844
- if (props.optionGroupLabel) {
845
- var groupIndex = index === -1 ? 0 : index.group;
846
- var optionIndex = index === -1 ? -1 : index.option;
847
- var option = findNextOptionInList(getOptionGroupChildren(visibleOptions[groupIndex]), optionIndex);
848
- if (option) return option;else if (groupIndex + 1 !== visibleOptions.length) return findNextOption({
849
- group: groupIndex + 1,
850
- option: -1
851
- });else return null;
939
+ if (searchTimeout.current) {
940
+ clearTimeout(searchTimeout.current);
852
941
  }
853
- return findNextOptionInList(visibleOptions, index);
942
+ searchTimeout.current = setTimeout(function () {
943
+ searchValue.current = '';
944
+ searchTimeout.current = null;
945
+ }, 500);
946
+ return matched;
947
+ };
948
+ var findLastFocusedOptionIndex = function findLastFocusedOptionIndex() {
949
+ var selectedIndex = findSelectedOptionIndex();
950
+ return selectedIndex < 0 ? findLastOptionIndex() : selectedIndex;
951
+ };
952
+ var findFirstOptionIndex = function findFirstOptionIndex() {
953
+ return visibleOptions.findIndex(function (option) {
954
+ return isValidOption(option);
955
+ });
854
956
  };
855
- var findNextOptionInList = function findNextOptionInList(list, index) {
856
- var i = index + 1;
857
- if (i === list.length) {
858
- return null;
859
- }
860
- var option = list[i];
861
- return isOptionDisabled(option) ? findNextOptionInList(i) : option;
957
+ var findLastOptionIndex = function findLastOptionIndex() {
958
+ return ObjectUtils.findLastIndex(visibleOptions, function (option) {
959
+ return isValidOption(option);
960
+ });
862
961
  };
863
- var findPrevOption = function findPrevOption(index) {
864
- if (index === -1) {
865
- return null;
866
- }
867
- if (props.optionGroupLabel) {
868
- var groupIndex = index.group;
869
- var optionIndex = index.option;
870
- var option = findPrevOptionInList(getOptionGroupChildren(visibleOptions[groupIndex]), optionIndex);
871
- if (option) return option;else if (groupIndex > 0) return findPrevOption({
872
- group: groupIndex - 1,
873
- option: getOptionGroupChildren(visibleOptions[groupIndex - 1]).length
874
- });else return null;
962
+ var findNextOptionIndex = function findNextOptionIndex(index) {
963
+ var matchedOptionIndex = index < visibleOptions.length - 1 ? visibleOptions.slice(index + 1).findIndex(function (option) {
964
+ return isValidOption(option);
965
+ }) : -1;
966
+ return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
967
+ };
968
+ var findPrevOptionIndex = function findPrevOptionIndex(index) {
969
+ var matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(visibleOptions.slice(0, index), function (option) {
970
+ return isValidOption(option);
971
+ }) : -1;
972
+ return matchedOptionIndex > -1 ? matchedOptionIndex : index;
973
+ };
974
+ var changeFocusedOptionIndex = function changeFocusedOptionIndex(event, index) {
975
+ if (focusedOptionIndex !== index) {
976
+ setFocusedOptionIndex(index);
977
+ if (props.selectOnFocus) {
978
+ onOptionSelect(event, visibleOptions[index], false);
979
+ }
875
980
  }
876
- return findPrevOptionInList(visibleOptions, index);
877
981
  };
878
- var findPrevOptionInList = function findPrevOptionInList(list, index) {
879
- var i = index - 1;
880
- if (i < 0) {
881
- return null;
982
+ var onArrowDownKey = function onArrowDownKey(event) {
983
+ if (!overlayVisibleState) {
984
+ show();
985
+ props.editable && changeFocusedOptionIndex(event, findSelectedOptionIndex());
986
+ } else {
987
+ var optionIndex = focusedOptionIndex !== -1 ? findNextOptionIndex(focusedOptionIndex) : clicked ? findFirstOptionIndex() : findFirstFocusedOptionIndex();
988
+ changeFocusedOptionIndex(event, optionIndex);
882
989
  }
883
- var option = list[i];
884
- return isOptionDisabled(option) ? findPrevOption(i) : option;
990
+ event.preventDefault();
885
991
  };
886
- var search = function search(event) {
887
- if (searchTimeout.current) {
888
- clearTimeout(searchTimeout.current);
889
- }
890
- var _char = event.key;
891
- if (_char === 'Shift' || _char === 'Control' || _char === 'Alt') {
892
- return;
893
- }
894
- if (currentSearchChar.current === _char) searchValue.current = _char;else searchValue.current = searchValue.current ? searchValue.current + _char : _char;
895
- currentSearchChar.current = _char;
896
- if (searchValue.current) {
897
- var searchIndex = getSelectedOptionIndex();
898
- var newOption = props.optionGroupLabel ? searchOptionInGroup(searchIndex) : searchOption(searchIndex + 1);
899
- if (newOption) {
900
- selectItem({
901
- originalEvent: event,
902
- option: newOption
903
- });
992
+ var onArrowUpKey = function onArrowUpKey(event) {
993
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
994
+ if (event.altKey && !pressedInInputText) {
995
+ if (focusedOptionIndex !== -1) {
996
+ onOptionSelect(event, visibleOptions[focusedOptionIndex]);
904
997
  }
998
+ state.overlayVisible && hide();
999
+ event.preventDefault();
1000
+ } else {
1001
+ var optionIndex = focusedOptionIndex !== -1 ? findPrevOptionIndex(focusedOptionIndex) : clicked ? findLastOptionIndex() : findLastFocusedOptionIndex();
1002
+ changeFocusedOptionIndex(event, optionIndex);
1003
+ !overlayVisibleState && show();
1004
+ event.preventDefault();
905
1005
  }
906
- searchTimeout.current = setTimeout(function () {
907
- searchValue.current = null;
908
- }, 250);
909
1006
  };
910
- var searchOption = function searchOption(index) {
911
- if (searchValue.current) {
912
- return searchOptionInRange(index, visibleOptions.length) || searchOptionInRange(0, index);
1007
+ var onArrowLeftKey = function onArrowLeftKey(event) {
1008
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1009
+ pressedInInputText && setFocusedOptionIndex(-1);
1010
+ };
1011
+ var onHomeKey = function onHomeKey(event) {
1012
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1013
+ if (pressedInInputText) {
1014
+ event.currentTarget.setSelectionRange(0, 0);
1015
+ setFocusedOptionIndex(-1);
1016
+ } else {
1017
+ changeFocusedOptionIndex(event, findFirstOptionIndex());
1018
+ !overlayVisibleState && show();
913
1019
  }
914
- return null;
1020
+ event.preventDefault();
915
1021
  };
916
- var searchOptionInRange = function searchOptionInRange(start, end) {
917
- for (var i = start; i < end; i++) {
918
- var opt = visibleOptions[i];
919
- if (matchesSearchValue(opt)) {
920
- return opt;
921
- }
1022
+ var onEndKey = function onEndKey(event) {
1023
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1024
+ if (pressedInInputText) {
1025
+ var target = event.currentTarget;
1026
+ var len = target.value.length;
1027
+ target.setSelectionRange(len, len);
1028
+ setFocusedOptionIndex(-1);
1029
+ } else {
1030
+ changeFocusedOptionIndex(event, findLastOptionIndex());
1031
+ !overlayVisibleState && show();
922
1032
  }
923
- return null;
1033
+ event.preventDefault();
924
1034
  };
925
- var searchOptionInGroup = function searchOptionInGroup(index) {
926
- var searchIndex = index === -1 ? {
927
- group: 0,
928
- option: -1
929
- } : index;
930
- for (var i = searchIndex.group; i < visibleOptions.length; i++) {
931
- var groupOptions = getOptionGroupChildren(visibleOptions[i]);
932
- for (var j = searchIndex.group === i ? searchIndex.option + 1 : 0; j < groupOptions.length; j++) {
933
- if (matchesSearchValue(groupOptions[j])) {
934
- return groupOptions[j];
935
- }
1035
+ var onPageUpKey = function onPageUpKey(event) {
1036
+ event.preventDefault();
1037
+ };
1038
+ var onPageDownKey = function onPageDownKey(event) {
1039
+ event.preventDefault();
1040
+ };
1041
+ var onSpaceKey = function onSpaceKey(event) {
1042
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1043
+ !pressedInInputText && onEnterKey(event);
1044
+ };
1045
+ var onEnterKey = function onEnterKey(event) {
1046
+ if (!overlayVisibleState) {
1047
+ setFocusedOptionIndex(-1);
1048
+ onArrowDownKey(event);
1049
+ } else {
1050
+ if (focusedOptionIndex !== -1) {
1051
+ onOptionSelect(event, visibleOptions[focusedOptionIndex]);
936
1052
  }
1053
+ hide();
937
1054
  }
938
- for (var _i = 0; _i <= searchIndex.group; _i++) {
939
- var _groupOptions = getOptionGroupChildren(visibleOptions[_i]);
940
- for (var _j = 0; _j < (searchIndex.group === _i ? searchIndex.option : _groupOptions.length); _j++) {
941
- if (matchesSearchValue(_groupOptions[_j])) {
942
- return _groupOptions[_j];
1055
+ event.preventDefault();
1056
+ };
1057
+ var onEscapeKey = function onEscapeKey(event) {
1058
+ overlayVisibleState && hide();
1059
+ event.preventDefault();
1060
+ };
1061
+ var onTabKey = function onTabKey(event) {
1062
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1063
+ if (!pressedInInputText) {
1064
+ if (overlayVisibleState && hasFocusableElements()) {
1065
+ DomHandler.focus($refs.firstHiddenFocusableElementOnOverlay);
1066
+ event.preventDefault();
1067
+ } else {
1068
+ if (focusedOptionIndex !== -1) {
1069
+ onOptionSelect(event, visibleOptions[focusedOptionIndex]);
943
1070
  }
1071
+ overlayVisibleState && hide();
944
1072
  }
945
1073
  }
946
- return null;
947
1074
  };
948
- var matchesSearchValue = function matchesSearchValue(option) {
949
- var label = getOptionLabel(option);
950
- if (!label) {
951
- return false;
1075
+ var onBackspaceKey = function onBackspaceKey(event) {
1076
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1077
+ if (pressedInInputText) {
1078
+ !overlayVisibleState && show();
952
1079
  }
953
- label = label.toLocaleLowerCase(props.filterLocale);
954
- return label.startsWith(searchValue.current.toLocaleLowerCase(props.filterLocale));
955
1080
  };
956
1081
  var onEditableInputChange = function onEditableInputChange(event) {
1082
+ !overlayVisibleState && show();
1083
+ var searchIndex = null;
1084
+ if (event.target.value) {
1085
+ searchIndex = visibleOptions.findIndex(function (item) {
1086
+ return item.name.toLocaleLowerCase().startsWith(event.target.value.toLocaleLowerCase());
1087
+ });
1088
+ }
1089
+ setFocusedOptionIndex(searchIndex);
957
1090
  if (props.onChange) {
958
1091
  props.onChange({
959
1092
  originalEvent: event.originalEvent,
@@ -1083,10 +1216,17 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1083
1216
  return ObjectUtils.equals(props.value, getOptionValue(option), equalityKey());
1084
1217
  };
1085
1218
  var show = function show() {
1219
+ setFocusedOptionIndex(focusedOptionIndex !== -1 ? focusedOptionIndex : props.autoOptionFocus ? findFirstFocusedOptionIndex() : props.editable ? -1 : findSelectedOptionIndex());
1086
1220
  setOverlayVisibleState(true);
1087
1221
  };
1088
1222
  var hide = function hide() {
1089
1223
  setOverlayVisibleState(false);
1224
+ setClicked(false);
1225
+ };
1226
+ var onFocus = function onFocus() {
1227
+ if (props.editable) {
1228
+ DomHandler.focus(inputRef.current);
1229
+ }
1090
1230
  };
1091
1231
  var onOverlayEnter = function onOverlayEnter(callback) {
1092
1232
  ZIndexUtils.set('overlay', overlayRef.current, context && context.autoZIndex || PrimeReact.autoZIndex, context && context.zIndex['overlay'] || PrimeReact.zIndex['overlay']);
@@ -1139,6 +1279,9 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1139
1279
  var getOptionRenderKey = function getOptionRenderKey(option) {
1140
1280
  return props.dataKey ? ObjectUtils.resolveFieldData(option, props.dataKey) : getOptionLabel(option);
1141
1281
  };
1282
+ var isOptionGroup = function isOptionGroup(option) {
1283
+ return props.optionGroupLabel && option.optionGroup && option.group;
1284
+ };
1142
1285
  var isOptionDisabled = function isOptionDisabled(option) {
1143
1286
  if (props.optionDisabled) {
1144
1287
  return ObjectUtils.isFunction(props.optionDisabled) ? props.optionDisabled(option) : ObjectUtils.resolveFieldData(option, props.optionDisabled);
@@ -1287,8 +1430,9 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1287
1430
  maxLength: props.maxLength,
1288
1431
  onInput: onEditableInputChange,
1289
1432
  onFocus: onEditableInputFocus,
1433
+ onKeyDown: onInputKeyDown,
1290
1434
  onBlur: onInputBlur,
1291
- tabIndex: props.tabIndex || 0,
1435
+ tabIndex: !props.disabled ? props.tabIndex : -1,
1292
1436
  'aria-haspopup': 'listbox'
1293
1437
  }, ariaProps), ptm('input'));
1294
1438
  return /*#__PURE__*/React.createElement("input", inputProps);
@@ -1380,10 +1524,31 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1380
1524
  },
1381
1525
  onMouseDown: props.onMouseDown,
1382
1526
  onContextMenu: props.onContextMenu,
1527
+ onFocus: onFocus,
1383
1528
  'data-p-disabled': props.disabled,
1384
1529
  'data-p-focus': focusedState
1385
1530
  }, otherProps, ptm('root'));
1386
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", rootProps, keyboardHelper, hiddenSelect, labelElement, clearIcon, dropdownIcon, /*#__PURE__*/React.createElement(DropdownPanel, _extends({
1531
+ var firstHiddenFocusableElementProps = mergeProps({
1532
+ ref: firstHiddenFocusableElementOnOverlay,
1533
+ role: 'presentation',
1534
+ 'aria-hidden': 'true',
1535
+ className: 'p-hidden-accessible p-hidden-focusable',
1536
+ tabIndex: '0',
1537
+ onFocus: onFirstHiddenFocus,
1538
+ 'data-p-hidden-accessible': true,
1539
+ 'data-p-hidden-focusable': true
1540
+ }, ptm('hiddenFirstFocusableEl'));
1541
+ var lastHiddenFocusableElementProps = mergeProps({
1542
+ ref: lastHiddenFocusableElementOnOverlay,
1543
+ role: 'presentation',
1544
+ 'aria-hidden': 'true',
1545
+ className: 'p-hidden-accessible p-hidden-focusable',
1546
+ tabIndex: '0',
1547
+ onFocus: onLastHiddenFocus,
1548
+ 'data-p-hidden-accessible': true,
1549
+ 'data-p-hidden-focusable': true
1550
+ }, ptm('hiddenLastFocusableEl'));
1551
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", rootProps, keyboardHelper, hiddenSelect, labelElement, clearIcon, dropdownIcon, /*#__PURE__*/React.createElement("span", firstHiddenFocusableElementProps), /*#__PURE__*/React.createElement(DropdownPanel, _extends({
1387
1552
  hostName: "Dropdown",
1388
1553
  ref: overlayRef,
1389
1554
  visibleOptions: visibleOptions,
@@ -1392,6 +1557,8 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1392
1557
  appendTo: appendTo,
1393
1558
  onClick: onPanelClick,
1394
1559
  onOptionClick: onOptionClick,
1560
+ focusedOptionIndex: focusedOptionIndex,
1561
+ setFocusedOptionIndex: setFocusedOptionIndex,
1395
1562
  filterValue: filterState,
1396
1563
  hasFilter: hasFilter,
1397
1564
  onFilterClearIconClick: onFilterClearIconClick,
@@ -1414,7 +1581,7 @@ var Dropdown = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1414
1581
  ptm: ptm,
1415
1582
  cx: cx,
1416
1583
  sx: sx
1417
- }))), hasTooltip && /*#__PURE__*/React.createElement(Tooltip, _extends({
1584
+ })), /*#__PURE__*/React.createElement("span", lastHiddenFocusableElementProps)), hasTooltip && /*#__PURE__*/React.createElement(Tooltip, _extends({
1418
1585
  target: elementRef,
1419
1586
  content: props.tooltip
1420
1587
  }, props.tooltipOptions, {