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
@@ -208,10 +208,13 @@ var classes = {
208
208
  item: function item(_ref7) {
209
209
  var selected = _ref7.selected,
210
210
  disabled = _ref7.disabled,
211
- label = _ref7.label;
211
+ label = _ref7.label,
212
+ index = _ref7.index,
213
+ focusedOptionIndex = _ref7.focusedOptionIndex;
212
214
  return utils.classNames('p-dropdown-item', {
213
215
  'p-highlight': selected,
214
216
  'p-disabled': disabled,
217
+ 'p-focus': index === focusedOptionIndex,
215
218
  'p-dropdown-item-empty': !label || label.length === 0
216
219
  });
217
220
  },
@@ -264,6 +267,8 @@ var DropdownBase = componentbase.ComponentBase.extend({
264
267
  inputId: null,
265
268
  inputRef: null,
266
269
  itemTemplate: null,
270
+ loading: false,
271
+ loadingIcon: null,
267
272
  maxLength: null,
268
273
  name: null,
269
274
  onBlur: null,
@@ -276,6 +281,8 @@ var DropdownBase = componentbase.ComponentBase.extend({
276
281
  onShow: null,
277
282
  optionDisabled: null,
278
283
  optionGroupChildren: 'items',
284
+ selectOnFocus: false,
285
+ autoOptionFocus: false,
279
286
  optionGroupLabel: null,
280
287
  optionGroupTemplate: null,
281
288
  optionLabel: null,
@@ -314,7 +321,9 @@ var DropdownItem = /*#__PURE__*/React__namespace.memo(function (props) {
314
321
  selected = props.selected,
315
322
  disabled = props.disabled,
316
323
  option = props.option,
317
- label = props.label;
324
+ label = props.label,
325
+ index = props.index,
326
+ focusedOptionIndex = props.focusedOptionIndex;
318
327
  var getPTOptions = function getPTOptions(key) {
319
328
  return ptm(key, {
320
329
  context: {
@@ -323,7 +332,7 @@ var DropdownItem = /*#__PURE__*/React__namespace.memo(function (props) {
323
332
  }
324
333
  });
325
334
  };
326
- var _onClick = function onClick(event) {
335
+ var _onClick = function onClick(event, i) {
327
336
  if (props.onClick) {
328
337
  props.onClick({
329
338
  originalEvent: event,
@@ -338,7 +347,9 @@ var DropdownItem = /*#__PURE__*/React__namespace.memo(function (props) {
338
347
  className: utils.classNames(option.className, cx('item', {
339
348
  selected: selected,
340
349
  disabled: disabled,
341
- label: label
350
+ label: label,
351
+ index: index,
352
+ focusedOptionIndex: focusedOptionIndex
342
353
  })),
343
354
  style: props.style,
344
355
  onClick: function onClick(e) {
@@ -347,6 +358,7 @@ var DropdownItem = /*#__PURE__*/React__namespace.memo(function (props) {
347
358
  'aria-label': label,
348
359
  'aria-selected': selected,
349
360
  'data-p-highlight': selected,
361
+ 'data-p-focused': focusedOptionIndex === index,
350
362
  'data-p-disabled': disabled
351
363
  }, getPTOptions('item'));
352
364
  return /*#__PURE__*/React__namespace.createElement("li", itemProps, content, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null));
@@ -418,6 +430,8 @@ var DropdownPanel = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__name
418
430
  var disabled = props.isOptionDisabled(option);
419
431
  return /*#__PURE__*/React__namespace.createElement(DropdownItem, {
420
432
  key: optionKey,
433
+ index: j,
434
+ focusedOptionIndex: props.focusedOptionIndex,
421
435
  label: optionLabel,
422
436
  option: option,
423
437
  style: style,
@@ -465,6 +479,8 @@ var DropdownPanel = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__name
465
479
  return /*#__PURE__*/React__namespace.createElement(DropdownItem, {
466
480
  key: optionKey,
467
481
  label: optionLabel,
482
+ index: index,
483
+ focusedOptionIndex: props.focusedOptionIndex,
468
484
  option: option,
469
485
  style: style,
470
486
  template: props.itemTemplate,
@@ -657,20 +673,30 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
657
673
  setFilterState = _React$useState2[1];
658
674
  var _React$useState3 = React__namespace.useState(false),
659
675
  _React$useState4 = _slicedToArray(_React$useState3, 2),
660
- focusedState = _React$useState4[0],
661
- setFocusedState = _React$useState4[1];
676
+ clicked = _React$useState4[0],
677
+ setClicked = _React$useState4[1];
662
678
  var _React$useState5 = React__namespace.useState(false),
663
679
  _React$useState6 = _slicedToArray(_React$useState5, 2),
664
- overlayVisibleState = _React$useState6[0],
665
- setOverlayVisibleState = _React$useState6[1];
680
+ focusedState = _React$useState6[0],
681
+ setFocusedState = _React$useState6[1];
682
+ var _React$useState7 = React__namespace.useState(null),
683
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
684
+ focusedOptionIndex = _React$useState8[0],
685
+ setFocusedOptionIndex = _React$useState8[1];
686
+ var _React$useState9 = React__namespace.useState(false),
687
+ _React$useState10 = _slicedToArray(_React$useState9, 2),
688
+ overlayVisibleState = _React$useState10[0],
689
+ setOverlayVisibleState = _React$useState10[1];
666
690
  var elementRef = React__namespace.useRef(null);
667
691
  var overlayRef = React__namespace.useRef(null);
692
+ var firstHiddenFocusableElementOnOverlay = React__namespace.useRef(null);
693
+ var lastHiddenFocusableElementOnOverlay = React__namespace.useRef(null);
668
694
  var inputRef = React__namespace.useRef(props.inputRef);
669
695
  var focusInputRef = React__namespace.useRef(props.focusInputRef);
670
696
  var virtualScrollerRef = React__namespace.useRef(null);
671
697
  var searchTimeout = React__namespace.useRef(null);
672
698
  var searchValue = React__namespace.useRef(null);
673
- var currentSearchChar = React__namespace.useRef(null);
699
+ React__namespace.useRef(null);
674
700
  var isLazy = props.virtualScrollerOptions && props.virtualScrollerOptions.lazy;
675
701
  var hasFilter = utils.ObjectUtils.isNotEmpty(filterState);
676
702
  var appendTo = props.appendTo || context && context.appendTo || PrimeReact__default["default"].appendTo;
@@ -734,6 +760,14 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
734
760
  return props.options;
735
761
  }
736
762
  };
763
+ var onFirstHiddenFocus = function onFirstHiddenFocus(event) {
764
+ var focusableEl = event.relatedTarget === focusInputRef.current ? utils.DomHandler.getFirstFocusableElement(overlayRef.current, ':not([data-p-hidden-focusable="true"])') : focusInputRef.current;
765
+ utils.DomHandler.focus(focusableEl);
766
+ };
767
+ var onLastHiddenFocus = function onLastHiddenFocus(event) {
768
+ var focusableEl = event.relatedTarget === focusInputRef.current ? utils.DomHandler.getLastFocusableElement(overlayRef.current, ':not([data-p-hidden-focusable="true"])') : focusInputRef.current;
769
+ utils.DomHandler.focus(focusableEl);
770
+ };
737
771
  var isClearClicked = function isClearClicked(event) {
738
772
  return utils.DomHandler.isAttributeEquals(event.target, 'data-pc-section', 'clearicon') || utils.DomHandler.isAttributeEquals(event.target.parentElement || event.target, 'data-pc-section', 'filterclearicon');
739
773
  };
@@ -753,6 +787,7 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
753
787
  utils.DomHandler.focus(focusInputRef.current);
754
788
  overlayVisibleState ? hide() : show();
755
789
  }
790
+ setClicked(true);
756
791
  };
757
792
  var onInputFocus = function onInputFocus(event) {
758
793
  if (props.showOnFocus && !overlayVisibleState) {
@@ -784,6 +819,15 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
784
819
  }, 200);
785
820
  }
786
821
  };
822
+ var onOptionSelect = function onOptionSelect(event, option) {
823
+ var isHide = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
824
+ var value = getOptionValue(option);
825
+ selectItem({
826
+ originalEvent: event,
827
+ option: value
828
+ });
829
+ isHide && hide();
830
+ };
787
831
  var onPanelClick = function onPanelClick(event) {
788
832
  overlayservice.OverlayService.emit('overlay-click', {
789
833
  originalEvent: event,
@@ -791,196 +835,285 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
791
835
  });
792
836
  };
793
837
  var onInputKeyDown = function onInputKeyDown(event) {
794
- switch (event.which) {
795
- //down
796
- case 40:
797
- onDownKey(event);
838
+ if (props.disabled || utils.DomHandler.isAndroid()) {
839
+ event.preventDefault();
840
+ return;
841
+ }
842
+ var metaKey = event.metaKey || event.ctrlKey;
843
+ switch (event.code) {
844
+ case 'ArrowDown':
845
+ onArrowDownKey(event);
798
846
  break;
799
-
800
- //up
801
- case 38:
802
- onUpKey(event);
847
+ case 'ArrowUp':
848
+ onArrowUpKey(event);
803
849
  break;
804
-
805
- //space and enter
806
- case 32:
807
- case 13:
808
- overlayVisibleState ? hide() : show();
809
- event.preventDefault();
850
+ case 'ArrowLeft':
851
+ case 'ArrowRight':
852
+ onArrowLeftKey(event, props.editable);
810
853
  break;
811
-
812
- //escape and tab
813
- case 27:
814
- case 9:
815
- hide();
854
+ case 'Home':
855
+ onHomeKey(event);
856
+ break;
857
+ case 'End':
858
+ onEndKey(event);
859
+ break;
860
+ case 'PageDown':
861
+ onPageDownKey(event);
862
+ break;
863
+ case 'PageUp':
864
+ onPageUpKey(event);
865
+ break;
866
+ case 'Space':
867
+ onSpaceKey(event, props.editable);
868
+ break;
869
+ case 'NumpadEnter':
870
+ case 'Enter':
871
+ onEnterKey(event);
872
+ break;
873
+ case 'Escape':
874
+ onEscapeKey(event);
875
+ break;
876
+ case 'Tab':
877
+ onTabKey(event);
878
+ break;
879
+ case 'Backspace':
880
+ onBackspaceKey(event, props.editable);
881
+ break;
882
+ case 'ShiftLeft':
883
+ case 'ShiftRight':
884
+ //NOOP
816
885
  break;
817
886
  default:
818
- search(event);
887
+ if (!metaKey && utils.ObjectUtils.isPrintableCharacter(event.key)) {
888
+ !overlayVisibleState && show();
889
+ !props.editable && searchOptions(event, event.key);
890
+ }
819
891
  break;
820
892
  }
893
+ setClicked(false);
821
894
  };
822
895
  var onFilterInputKeyDown = function onFilterInputKeyDown(event) {
823
- switch (event.which) {
824
- //down
825
- case 40:
826
- onDownKey(event);
896
+ switch (event.code) {
897
+ case 'ArrowDown':
898
+ onArrowDownKey(event);
827
899
  break;
828
-
829
- //up
830
- case 38:
831
- onUpKey(event);
900
+ case 'ArrowUp':
901
+ onArrowUpKey(event);
832
902
  break;
833
-
834
- //enter and escape
835
- case 13:
836
- case 27:
837
- hide();
903
+ case 'ArrowLeft':
904
+ case 'ArrowRight':
905
+ onArrowLeftKey(event, true);
906
+ break;
907
+ case 'Escape':
908
+ case 'Enter':
909
+ onEnterKey(event);
838
910
  event.preventDefault();
839
911
  break;
840
912
  }
841
913
  };
842
- var onUpKey = function onUpKey(event) {
843
- if (visibleOptions) {
844
- var prevOption = findPrevOption(getSelectedOptionIndex());
845
- if (prevOption) {
846
- selectItem({
847
- originalEvent: event,
848
- option: prevOption
849
- });
850
- }
851
- }
852
- event.preventDefault();
914
+ var hasFocusableElements = function hasFocusableElements() {
915
+ return utils.DomHandler.getFocusableElements(overlayRef.current, ':not([data-p-hidden-focusable="true"])').length > 0;
916
+ };
917
+ var isOptionMatched = function isOptionMatched(option) {
918
+ var _getOptionLabel;
919
+ return isValidOption(option) && ((_getOptionLabel = getOptionLabel(option)) === null || _getOptionLabel === void 0 ? void 0 : _getOptionLabel.toLocaleLowerCase(props.filterLocale).startsWith(searchValue.current.toLocaleLowerCase(props.filterLocale)));
920
+ };
921
+ var isValidOption = function isValidOption(option) {
922
+ return utils.ObjectUtils.isNotEmpty(option) && !(isOptionDisabled(option) || isOptionGroup(option));
923
+ };
924
+ var hasSelectedOption = function hasSelectedOption() {
925
+ return utils.ObjectUtils.isNotEmpty(props.value);
926
+ };
927
+ var isValidSelectedOption = function isValidSelectedOption(option) {
928
+ return isValidOption(option) && isSelected(option);
929
+ };
930
+ var findSelectedOptionIndex = function findSelectedOptionIndex() {
931
+ return hasSelectedOption ? visibleOptions.findIndex(function (option) {
932
+ return isValidSelectedOption(option);
933
+ }) : -1;
934
+ };
935
+ var findFirstFocusedOptionIndex = function findFirstFocusedOptionIndex() {
936
+ var selectedIndex = findSelectedOptionIndex();
937
+ return selectedIndex < 0 ? findFirstOptionIndex() : selectedIndex;
853
938
  };
854
- var onDownKey = function onDownKey(event) {
855
- if (visibleOptions) {
856
- if (!overlayVisibleState && event.altKey) {
857
- show();
939
+ var searchOptions = function searchOptions(event, _char) {
940
+ searchValue.current = (searchValue.current || '') + _char;
941
+ var optionIndex = -1;
942
+ var matched = false;
943
+ if (utils.ObjectUtils.isNotEmpty(searchValue.current)) {
944
+ if (focusedOptionIndex !== -1) {
945
+ optionIndex = visibleOptions.slice(focusedOptionIndex).findIndex(function (option) {
946
+ return isOptionMatched(option);
947
+ });
948
+ optionIndex = optionIndex === -1 ? visibleOptions.slice(0, focusedOptionIndex).findIndex(function (option) {
949
+ return isOptionMatched(option);
950
+ }) : optionIndex + focusedOptionIndex;
858
951
  } else {
859
- var nextOption = findNextOption(getSelectedOptionIndex());
860
- if (nextOption) {
861
- selectItem({
862
- originalEvent: event,
863
- option: nextOption
864
- });
865
- }
952
+ optionIndex = visibleOptions.findIndex(function (option) {
953
+ return isOptionMatched(option);
954
+ });
955
+ }
956
+ if (optionIndex !== -1) {
957
+ matched = true;
958
+ }
959
+ if (optionIndex === -1 && focusedOptionIndex === -1) {
960
+ optionIndex = findFirstFocusedOptionIndex();
961
+ }
962
+ if (optionIndex !== -1) {
963
+ changeFocusedOptionIndex(event, optionIndex);
866
964
  }
867
965
  }
868
- event.preventDefault();
869
- };
870
- var findNextOption = function findNextOption(index) {
871
- if (props.optionGroupLabel) {
872
- var groupIndex = index === -1 ? 0 : index.group;
873
- var optionIndex = index === -1 ? -1 : index.option;
874
- var option = findNextOptionInList(getOptionGroupChildren(visibleOptions[groupIndex]), optionIndex);
875
- if (option) return option;else if (groupIndex + 1 !== visibleOptions.length) return findNextOption({
876
- group: groupIndex + 1,
877
- option: -1
878
- });else return null;
966
+ if (searchTimeout.current) {
967
+ clearTimeout(searchTimeout.current);
879
968
  }
880
- return findNextOptionInList(visibleOptions, index);
969
+ searchTimeout.current = setTimeout(function () {
970
+ searchValue.current = '';
971
+ searchTimeout.current = null;
972
+ }, 500);
973
+ return matched;
974
+ };
975
+ var findLastFocusedOptionIndex = function findLastFocusedOptionIndex() {
976
+ var selectedIndex = findSelectedOptionIndex();
977
+ return selectedIndex < 0 ? findLastOptionIndex() : selectedIndex;
978
+ };
979
+ var findFirstOptionIndex = function findFirstOptionIndex() {
980
+ return visibleOptions.findIndex(function (option) {
981
+ return isValidOption(option);
982
+ });
881
983
  };
882
- var findNextOptionInList = function findNextOptionInList(list, index) {
883
- var i = index + 1;
884
- if (i === list.length) {
885
- return null;
886
- }
887
- var option = list[i];
888
- return isOptionDisabled(option) ? findNextOptionInList(i) : option;
984
+ var findLastOptionIndex = function findLastOptionIndex() {
985
+ return utils.ObjectUtils.findLastIndex(visibleOptions, function (option) {
986
+ return isValidOption(option);
987
+ });
889
988
  };
890
- var findPrevOption = function findPrevOption(index) {
891
- if (index === -1) {
892
- return null;
893
- }
894
- if (props.optionGroupLabel) {
895
- var groupIndex = index.group;
896
- var optionIndex = index.option;
897
- var option = findPrevOptionInList(getOptionGroupChildren(visibleOptions[groupIndex]), optionIndex);
898
- if (option) return option;else if (groupIndex > 0) return findPrevOption({
899
- group: groupIndex - 1,
900
- option: getOptionGroupChildren(visibleOptions[groupIndex - 1]).length
901
- });else return null;
989
+ var findNextOptionIndex = function findNextOptionIndex(index) {
990
+ var matchedOptionIndex = index < visibleOptions.length - 1 ? visibleOptions.slice(index + 1).findIndex(function (option) {
991
+ return isValidOption(option);
992
+ }) : -1;
993
+ return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
994
+ };
995
+ var findPrevOptionIndex = function findPrevOptionIndex(index) {
996
+ var matchedOptionIndex = index > 0 ? utils.ObjectUtils.findLastIndex(visibleOptions.slice(0, index), function (option) {
997
+ return isValidOption(option);
998
+ }) : -1;
999
+ return matchedOptionIndex > -1 ? matchedOptionIndex : index;
1000
+ };
1001
+ var changeFocusedOptionIndex = function changeFocusedOptionIndex(event, index) {
1002
+ if (focusedOptionIndex !== index) {
1003
+ setFocusedOptionIndex(index);
1004
+ if (props.selectOnFocus) {
1005
+ onOptionSelect(event, visibleOptions[index], false);
1006
+ }
902
1007
  }
903
- return findPrevOptionInList(visibleOptions, index);
904
1008
  };
905
- var findPrevOptionInList = function findPrevOptionInList(list, index) {
906
- var i = index - 1;
907
- if (i < 0) {
908
- return null;
1009
+ var onArrowDownKey = function onArrowDownKey(event) {
1010
+ if (!overlayVisibleState) {
1011
+ show();
1012
+ props.editable && changeFocusedOptionIndex(event, findSelectedOptionIndex());
1013
+ } else {
1014
+ var optionIndex = focusedOptionIndex !== -1 ? findNextOptionIndex(focusedOptionIndex) : clicked ? findFirstOptionIndex() : findFirstFocusedOptionIndex();
1015
+ changeFocusedOptionIndex(event, optionIndex);
909
1016
  }
910
- var option = list[i];
911
- return isOptionDisabled(option) ? findPrevOption(i) : option;
1017
+ event.preventDefault();
912
1018
  };
913
- var search = function search(event) {
914
- if (searchTimeout.current) {
915
- clearTimeout(searchTimeout.current);
916
- }
917
- var _char = event.key;
918
- if (_char === 'Shift' || _char === 'Control' || _char === 'Alt') {
919
- return;
920
- }
921
- if (currentSearchChar.current === _char) searchValue.current = _char;else searchValue.current = searchValue.current ? searchValue.current + _char : _char;
922
- currentSearchChar.current = _char;
923
- if (searchValue.current) {
924
- var searchIndex = getSelectedOptionIndex();
925
- var newOption = props.optionGroupLabel ? searchOptionInGroup(searchIndex) : searchOption(searchIndex + 1);
926
- if (newOption) {
927
- selectItem({
928
- originalEvent: event,
929
- option: newOption
930
- });
1019
+ var onArrowUpKey = function onArrowUpKey(event) {
1020
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1021
+ if (event.altKey && !pressedInInputText) {
1022
+ if (focusedOptionIndex !== -1) {
1023
+ onOptionSelect(event, visibleOptions[focusedOptionIndex]);
931
1024
  }
1025
+ state.overlayVisible && hide();
1026
+ event.preventDefault();
1027
+ } else {
1028
+ var optionIndex = focusedOptionIndex !== -1 ? findPrevOptionIndex(focusedOptionIndex) : clicked ? findLastOptionIndex() : findLastFocusedOptionIndex();
1029
+ changeFocusedOptionIndex(event, optionIndex);
1030
+ !overlayVisibleState && show();
1031
+ event.preventDefault();
932
1032
  }
933
- searchTimeout.current = setTimeout(function () {
934
- searchValue.current = null;
935
- }, 250);
936
1033
  };
937
- var searchOption = function searchOption(index) {
938
- if (searchValue.current) {
939
- return searchOptionInRange(index, visibleOptions.length) || searchOptionInRange(0, index);
1034
+ var onArrowLeftKey = function onArrowLeftKey(event) {
1035
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1036
+ pressedInInputText && setFocusedOptionIndex(-1);
1037
+ };
1038
+ var onHomeKey = function onHomeKey(event) {
1039
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1040
+ if (pressedInInputText) {
1041
+ event.currentTarget.setSelectionRange(0, 0);
1042
+ setFocusedOptionIndex(-1);
1043
+ } else {
1044
+ changeFocusedOptionIndex(event, findFirstOptionIndex());
1045
+ !overlayVisibleState && show();
940
1046
  }
941
- return null;
1047
+ event.preventDefault();
942
1048
  };
943
- var searchOptionInRange = function searchOptionInRange(start, end) {
944
- for (var i = start; i < end; i++) {
945
- var opt = visibleOptions[i];
946
- if (matchesSearchValue(opt)) {
947
- return opt;
948
- }
1049
+ var onEndKey = function onEndKey(event) {
1050
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1051
+ if (pressedInInputText) {
1052
+ var target = event.currentTarget;
1053
+ var len = target.value.length;
1054
+ target.setSelectionRange(len, len);
1055
+ setFocusedOptionIndex(-1);
1056
+ } else {
1057
+ changeFocusedOptionIndex(event, findLastOptionIndex());
1058
+ !overlayVisibleState && show();
949
1059
  }
950
- return null;
1060
+ event.preventDefault();
951
1061
  };
952
- var searchOptionInGroup = function searchOptionInGroup(index) {
953
- var searchIndex = index === -1 ? {
954
- group: 0,
955
- option: -1
956
- } : index;
957
- for (var i = searchIndex.group; i < visibleOptions.length; i++) {
958
- var groupOptions = getOptionGroupChildren(visibleOptions[i]);
959
- for (var j = searchIndex.group === i ? searchIndex.option + 1 : 0; j < groupOptions.length; j++) {
960
- if (matchesSearchValue(groupOptions[j])) {
961
- return groupOptions[j];
962
- }
1062
+ var onPageUpKey = function onPageUpKey(event) {
1063
+ event.preventDefault();
1064
+ };
1065
+ var onPageDownKey = function onPageDownKey(event) {
1066
+ event.preventDefault();
1067
+ };
1068
+ var onSpaceKey = function onSpaceKey(event) {
1069
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1070
+ !pressedInInputText && onEnterKey(event);
1071
+ };
1072
+ var onEnterKey = function onEnterKey(event) {
1073
+ if (!overlayVisibleState) {
1074
+ setFocusedOptionIndex(-1);
1075
+ onArrowDownKey(event);
1076
+ } else {
1077
+ if (focusedOptionIndex !== -1) {
1078
+ onOptionSelect(event, visibleOptions[focusedOptionIndex]);
963
1079
  }
1080
+ hide();
964
1081
  }
965
- for (var _i = 0; _i <= searchIndex.group; _i++) {
966
- var _groupOptions = getOptionGroupChildren(visibleOptions[_i]);
967
- for (var _j = 0; _j < (searchIndex.group === _i ? searchIndex.option : _groupOptions.length); _j++) {
968
- if (matchesSearchValue(_groupOptions[_j])) {
969
- return _groupOptions[_j];
1082
+ event.preventDefault();
1083
+ };
1084
+ var onEscapeKey = function onEscapeKey(event) {
1085
+ overlayVisibleState && hide();
1086
+ event.preventDefault();
1087
+ };
1088
+ var onTabKey = function onTabKey(event) {
1089
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1090
+ if (!pressedInInputText) {
1091
+ if (overlayVisibleState && hasFocusableElements()) {
1092
+ utils.DomHandler.focus($refs.firstHiddenFocusableElementOnOverlay);
1093
+ event.preventDefault();
1094
+ } else {
1095
+ if (focusedOptionIndex !== -1) {
1096
+ onOptionSelect(event, visibleOptions[focusedOptionIndex]);
970
1097
  }
1098
+ overlayVisibleState && hide();
971
1099
  }
972
1100
  }
973
- return null;
974
1101
  };
975
- var matchesSearchValue = function matchesSearchValue(option) {
976
- var label = getOptionLabel(option);
977
- if (!label) {
978
- return false;
1102
+ var onBackspaceKey = function onBackspaceKey(event) {
1103
+ var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1104
+ if (pressedInInputText) {
1105
+ !overlayVisibleState && show();
979
1106
  }
980
- label = label.toLocaleLowerCase(props.filterLocale);
981
- return label.startsWith(searchValue.current.toLocaleLowerCase(props.filterLocale));
982
1107
  };
983
1108
  var onEditableInputChange = function onEditableInputChange(event) {
1109
+ !overlayVisibleState && show();
1110
+ var searchIndex = null;
1111
+ if (event.target.value) {
1112
+ searchIndex = visibleOptions.findIndex(function (item) {
1113
+ return item.name.toLocaleLowerCase().startsWith(event.target.value.toLocaleLowerCase());
1114
+ });
1115
+ }
1116
+ setFocusedOptionIndex(searchIndex);
984
1117
  if (props.onChange) {
985
1118
  props.onChange({
986
1119
  originalEvent: event.originalEvent,
@@ -1110,10 +1243,17 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
1110
1243
  return utils.ObjectUtils.equals(props.value, getOptionValue(option), equalityKey());
1111
1244
  };
1112
1245
  var show = function show() {
1246
+ setFocusedOptionIndex(focusedOptionIndex !== -1 ? focusedOptionIndex : props.autoOptionFocus ? findFirstFocusedOptionIndex() : props.editable ? -1 : findSelectedOptionIndex());
1113
1247
  setOverlayVisibleState(true);
1114
1248
  };
1115
1249
  var hide = function hide() {
1116
1250
  setOverlayVisibleState(false);
1251
+ setClicked(false);
1252
+ };
1253
+ var onFocus = function onFocus() {
1254
+ if (props.editable) {
1255
+ utils.DomHandler.focus(inputRef.current);
1256
+ }
1117
1257
  };
1118
1258
  var onOverlayEnter = function onOverlayEnter(callback) {
1119
1259
  utils.ZIndexUtils.set('overlay', overlayRef.current, context && context.autoZIndex || PrimeReact__default["default"].autoZIndex, context && context.zIndex['overlay'] || PrimeReact__default["default"].zIndex['overlay']);
@@ -1166,6 +1306,9 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
1166
1306
  var getOptionRenderKey = function getOptionRenderKey(option) {
1167
1307
  return props.dataKey ? utils.ObjectUtils.resolveFieldData(option, props.dataKey) : getOptionLabel(option);
1168
1308
  };
1309
+ var isOptionGroup = function isOptionGroup(option) {
1310
+ return props.optionGroupLabel && option.optionGroup && option.group;
1311
+ };
1169
1312
  var isOptionDisabled = function isOptionDisabled(option) {
1170
1313
  if (props.optionDisabled) {
1171
1314
  return utils.ObjectUtils.isFunction(props.optionDisabled) ? props.optionDisabled(option) : utils.ObjectUtils.resolveFieldData(option, props.optionDisabled);
@@ -1314,8 +1457,9 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
1314
1457
  maxLength: props.maxLength,
1315
1458
  onInput: onEditableInputChange,
1316
1459
  onFocus: onEditableInputFocus,
1460
+ onKeyDown: onInputKeyDown,
1317
1461
  onBlur: onInputBlur,
1318
- tabIndex: props.tabIndex || 0,
1462
+ tabIndex: !props.disabled ? props.tabIndex : -1,
1319
1463
  'aria-haspopup': 'listbox'
1320
1464
  }, ariaProps), ptm('input'));
1321
1465
  return /*#__PURE__*/React__namespace.createElement("input", inputProps);
@@ -1407,10 +1551,31 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
1407
1551
  },
1408
1552
  onMouseDown: props.onMouseDown,
1409
1553
  onContextMenu: props.onContextMenu,
1554
+ onFocus: onFocus,
1410
1555
  'data-p-disabled': props.disabled,
1411
1556
  'data-p-focus': focusedState
1412
1557
  }, otherProps, ptm('root'));
1413
- return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("div", rootProps, keyboardHelper, hiddenSelect, labelElement, clearIcon, dropdownIcon, /*#__PURE__*/React__namespace.createElement(DropdownPanel, _extends({
1558
+ var firstHiddenFocusableElementProps = mergeProps({
1559
+ ref: firstHiddenFocusableElementOnOverlay,
1560
+ role: 'presentation',
1561
+ 'aria-hidden': 'true',
1562
+ className: 'p-hidden-accessible p-hidden-focusable',
1563
+ tabIndex: '0',
1564
+ onFocus: onFirstHiddenFocus,
1565
+ 'data-p-hidden-accessible': true,
1566
+ 'data-p-hidden-focusable': true
1567
+ }, ptm('hiddenFirstFocusableEl'));
1568
+ var lastHiddenFocusableElementProps = mergeProps({
1569
+ ref: lastHiddenFocusableElementOnOverlay,
1570
+ role: 'presentation',
1571
+ 'aria-hidden': 'true',
1572
+ className: 'p-hidden-accessible p-hidden-focusable',
1573
+ tabIndex: '0',
1574
+ onFocus: onLastHiddenFocus,
1575
+ 'data-p-hidden-accessible': true,
1576
+ 'data-p-hidden-focusable': true
1577
+ }, ptm('hiddenLastFocusableEl'));
1578
+ return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("div", rootProps, keyboardHelper, hiddenSelect, labelElement, clearIcon, dropdownIcon, /*#__PURE__*/React__namespace.createElement("span", firstHiddenFocusableElementProps), /*#__PURE__*/React__namespace.createElement(DropdownPanel, _extends({
1414
1579
  hostName: "Dropdown",
1415
1580
  ref: overlayRef,
1416
1581
  visibleOptions: visibleOptions,
@@ -1419,6 +1584,8 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
1419
1584
  appendTo: appendTo,
1420
1585
  onClick: onPanelClick,
1421
1586
  onOptionClick: onOptionClick,
1587
+ focusedOptionIndex: focusedOptionIndex,
1588
+ setFocusedOptionIndex: setFocusedOptionIndex,
1422
1589
  filterValue: filterState,
1423
1590
  hasFilter: hasFilter,
1424
1591
  onFilterClearIconClick: onFilterClearIconClick,
@@ -1441,7 +1608,7 @@ var Dropdown = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
1441
1608
  ptm: ptm,
1442
1609
  cx: cx,
1443
1610
  sx: sx
1444
- }))), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
1611
+ })), /*#__PURE__*/React__namespace.createElement("span", lastHiddenFocusableElementProps)), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
1445
1612
  target: elementRef,
1446
1613
  content: props.tooltip
1447
1614
  }, props.tooltipOptions, {