@splunk/react-ui 5.7.1 → 5.9.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 (152) hide show
  1. package/Accordion.js +6 -6
  2. package/Anchor.js +2 -1
  3. package/Box.js +83 -34
  4. package/CHANGELOG.md +51 -0
  5. package/Calendar.js +134 -134
  6. package/Clickable.js +131 -94
  7. package/CollapsiblePanel.js +175 -137
  8. package/ComboBox.js +32 -27
  9. package/ControlGroup.js +92 -91
  10. package/DefinitionList.js +9 -9
  11. package/Drawer.d.ts +2 -0
  12. package/Drawer.js +679 -0
  13. package/Dropdown.js +27 -18
  14. package/DualListbox.js +1 -1
  15. package/File.js +35 -35
  16. package/JSONTree.js +73 -72
  17. package/Link.js +2 -2
  18. package/MIGRATION.md +10 -0
  19. package/Menu.js +403 -261
  20. package/Modal.js +263 -252
  21. package/Monogram.js +2 -2
  22. package/Multiselect.js +551 -385
  23. package/Number.js +2 -1
  24. package/Paginator.js +14 -12
  25. package/Popover.js +4 -1
  26. package/README.md +11 -0
  27. package/RadioBar.js +1 -1
  28. package/Search.js +111 -95
  29. package/Select.js +42 -40
  30. package/SelectBase.js +819 -715
  31. package/SidePanel.js +346 -167
  32. package/SlidingPanels.js +11 -11
  33. package/StepBar.js +7 -7
  34. package/Switch.js +5 -5
  35. package/Table.js +116 -119
  36. package/Text.js +48 -48
  37. package/TextArea.js +7 -7
  38. package/TransitionOpen.js +188 -169
  39. package/docs-llm/Accordion.md +267 -0
  40. package/docs-llm/Anchor Menu.md +115 -0
  41. package/docs-llm/Anchor.md +54 -0
  42. package/docs-llm/AnimationToggle.md +254 -0
  43. package/docs-llm/Avatar.md +292 -0
  44. package/docs-llm/Badge.md +212 -0
  45. package/docs-llm/Breadcrumbs.md +306 -0
  46. package/docs-llm/Button Group.md +53 -0
  47. package/docs-llm/Button.md +361 -0
  48. package/docs-llm/Card Layout.md +286 -0
  49. package/docs-llm/Card.md +619 -0
  50. package/docs-llm/Checkbox.md +218 -0
  51. package/docs-llm/Chip.md +291 -0
  52. package/docs-llm/Clickable.md +160 -0
  53. package/docs-llm/Code.md +292 -0
  54. package/docs-llm/Collapsible Panel.md +744 -0
  55. package/docs-llm/Color.md +253 -0
  56. package/docs-llm/Column Layout.md +391 -0
  57. package/docs-llm/Combo Box.md +540 -0
  58. package/docs-llm/Control Group.md +594 -0
  59. package/docs-llm/Date.md +270 -0
  60. package/docs-llm/Definition List.md +278 -0
  61. package/docs-llm/Divider.md +216 -0
  62. package/docs-llm/Drawer.md +414 -0
  63. package/docs-llm/Dropdown.md +472 -0
  64. package/docs-llm/Dual Listbox.md +325 -0
  65. package/docs-llm/File.md +653 -0
  66. package/docs-llm/Form Rows.md +374 -0
  67. package/docs-llm/Heading.md +179 -0
  68. package/docs-llm/Image.md +109 -0
  69. package/docs-llm/JSON Tree.md +260 -0
  70. package/docs-llm/Layer.md +74 -0
  71. package/docs-llm/Layout.md +50 -0
  72. package/docs-llm/Link.md +318 -0
  73. package/docs-llm/List.md +189 -0
  74. package/docs-llm/Markdown.md +179 -0
  75. package/docs-llm/Menu.md +735 -0
  76. package/docs-llm/Message Bar.md +236 -0
  77. package/docs-llm/Message.md +248 -0
  78. package/docs-llm/Modal.md +443 -0
  79. package/docs-llm/Monogram.md +159 -0
  80. package/docs-llm/Multiselect.md +939 -0
  81. package/docs-llm/Notifications.md +46 -0
  82. package/docs-llm/Number.md +298 -0
  83. package/docs-llm/Paginator.md +395 -0
  84. package/docs-llm/Paragraph.md +148 -0
  85. package/docs-llm/Phone Number.md +254 -0
  86. package/docs-llm/Popover.md +166 -0
  87. package/docs-llm/Progress.md +141 -0
  88. package/docs-llm/Radio Bar.md +303 -0
  89. package/docs-llm/Radio List.md +350 -0
  90. package/docs-llm/Resize.md +362 -0
  91. package/docs-llm/Screen Reader Content.md +73 -0
  92. package/docs-llm/Scroll Container Context.md +155 -0
  93. package/docs-llm/Scroll.md +152 -0
  94. package/docs-llm/Search.md +381 -0
  95. package/docs-llm/Select.md +985 -0
  96. package/docs-llm/Side Panel.md +777 -0
  97. package/docs-llm/Slider.md +339 -0
  98. package/docs-llm/Sliding Panels.md +340 -0
  99. package/docs-llm/Split Button.md +295 -0
  100. package/docs-llm/Static Content.md +90 -0
  101. package/docs-llm/Step Bar.md +292 -0
  102. package/docs-llm/Switch.md +268 -0
  103. package/docs-llm/Tab Bar.md +439 -0
  104. package/docs-llm/Tab Layout.md +398 -0
  105. package/docs-llm/Table.md +2642 -0
  106. package/docs-llm/Text Area.md +253 -0
  107. package/docs-llm/Text.md +339 -0
  108. package/docs-llm/Tooltip.md +325 -0
  109. package/docs-llm/Transition Open.md +406 -0
  110. package/docs-llm/Tree.md +591 -0
  111. package/docs-llm/Typography.md +125 -0
  112. package/docs-llm/Wait Spinner.md +121 -0
  113. package/docs-llm/llms.txt +101 -0
  114. package/package.json +6 -5
  115. package/types/src/Box/Box.d.ts +2 -10
  116. package/types/src/Drawer/Body.d.ts +17 -0
  117. package/types/src/Drawer/Drawer.d.ts +114 -0
  118. package/types/src/Drawer/DrawerContext.d.ts +11 -0
  119. package/types/src/Drawer/Footer.d.ts +25 -0
  120. package/types/src/Drawer/Header.d.ts +41 -0
  121. package/types/src/Drawer/docs/examples/Basic.d.ts +6 -0
  122. package/types/src/Drawer/docs/examples/ContainerPosition.d.ts +7 -0
  123. package/types/src/Drawer/docs/examples/InitialFocus.d.ts +9 -0
  124. package/types/src/Drawer/docs/examples/InlinePosition.d.ts +7 -0
  125. package/types/src/Drawer/docs/examples/PagePosition.d.ts +7 -0
  126. package/types/src/Drawer/index.d.ts +2 -0
  127. package/types/src/JSONTree/JSONTree.d.ts +12 -5
  128. package/types/src/JSONTree/renderTreeItems.d.ts +2 -1
  129. package/types/src/Menu/Item.d.ts +2 -1
  130. package/types/src/Menu/docs/examples/SelectableCheckbox.d.ts +7 -0
  131. package/types/src/Modal/Modal.d.ts +1 -2
  132. package/types/src/Multiselect/Compact.d.ts +8 -3
  133. package/types/src/Multiselect/Multiselect.d.ts +8 -3
  134. package/types/src/Multiselect/Normal.d.ts +8 -3
  135. package/types/src/Multiselect/Option.d.ts +6 -3
  136. package/types/src/Multiselect/docs/examples/Disabled.d.ts +1 -0
  137. package/types/src/Select/Option.d.ts +6 -3
  138. package/types/src/Select/Select.d.ts +8 -5
  139. package/types/src/Select/docs/examples/Dimmed.d.ts +7 -0
  140. package/types/src/SelectBase/OptionBase.d.ts +6 -3
  141. package/types/src/SelectBase/SelectBase.d.ts +8 -3
  142. package/types/src/SidePanel/SidePanel.d.ts +43 -2
  143. package/types/src/SidePanel/docs/examples/DockLayout.d.ts +17 -0
  144. package/types/src/SidePanel/docs/examples/InitialFocus.d.ts +9 -0
  145. package/types/src/TransitionOpen/TransitionOpen.d.ts +29 -4
  146. package/types/src/useKeyPress/index.d.ts +9 -2
  147. package/types/src/useOnClickOutside/index.d.ts +2 -0
  148. package/types/src/useOnClickOutside/useOnClickOutside.d.ts +4 -0
  149. package/useKeyPress.js +23 -18
  150. package/useOnClickOutside.d.ts +2 -0
  151. package/useOnClickOutside.js +79 -0
  152. package/types/src/RadioList/docs/examples/Row.d.ts +0 -6
package/Number.js CHANGED
@@ -607,7 +607,8 @@
607
607
  onClick: he
608
608
  }, Se), t().createElement(T, null)), t().createElement(q, {
609
609
  $disabled: l,
610
- $error: s
610
+ $error: s,
611
+ decorative: true
611
612
  }), t().createElement(E, G({
612
613
  "aria-label": (0, f._)("Decrement"),
613
614
  "data-test": "decrement",
package/Paginator.js CHANGED
@@ -500,8 +500,8 @@
500
500
  }), [ d ]);
501
501
  // Can't show more links than total number of pages.
502
502
  var h = Math.min(g, v);
503
- var P = Math.ceil(h / 2);
504
- var O = Math.ceil(v - h / 2);
503
+ var P = h;
504
+ var O = v - h + 1;
505
505
  var C = [];
506
506
  if (v <= 1) {
507
507
  return null;
@@ -512,20 +512,22 @@
512
512
  * firstPageNearbyCurrent and lastPageNearbyCurrent refer to the page number of the first and last of these buttons.
513
513
  */ var w;
514
514
  var k;
515
- if (u <= P + 1) {
516
- // + 1 to avoid ellipsis between 1 and 2
515
+ if (u < P) {
517
516
  w = 1;
518
- k = w + Math.min(v, h) - 1;
519
- } else if (u > P && u < O) {
520
- k = Math.ceil(u + (h - 2) / 2);
521
- w = k - h + 2;
517
+ k = h;
518
+ } else if (u >= P && u <= O) {
519
+ w = u - Math.floor((h - 2) / 2);
520
+ k = u + 1 === v ? v : u + Math.ceil((h - 2) / 2);
522
521
  } else {
523
- // include page #1 to avoid ellipsis between 1 and 2
524
- w = v - h === 1 ? 1 : v - h + 1;
522
+ w = O;
525
523
  k = v;
526
524
  }
527
525
  // bump up the last page to avoid ellipsis
528
526
  k = t && k + 1 === v ? v : k;
527
+ // check to avoid ellipsis between 1 and 2
528
+ if (w === 2) {
529
+ w = 1;
530
+ }
529
531
  var E = u - 1;
530
532
  C.push( r().createElement(S, ne({}, l === null || l === void 0 ? void 0 : l({
531
533
  page: E
@@ -537,7 +539,7 @@
537
539
  onClick: y,
538
540
  page: E
539
541
  }), r().createElement(i(), null), (0, p._)("Prev")));
540
- if (u > P && v > h && w !== 1) {
542
+ if (u >= P && v > h && w !== 1) {
541
543
  var _ = 1;
542
544
  C.push( r().createElement(S, ne({}, l === null || l === void 0 ? void 0 : l({
543
545
  page: _
@@ -567,7 +569,7 @@
567
569
  page: x
568
570
  }), String(x)));
569
571
  }
570
- if (u <= O && v > h && k !== v) {
572
+ if (v > h && k !== v) {
571
573
  C.push( r().createElement(ee, {
572
574
  "data-test": "page",
573
575
  key: "nextEllipsis"
package/Popover.js CHANGED
@@ -422,6 +422,8 @@
422
422
  w = f - r.left;
423
423
  }
424
424
  }
425
+ // SUI-8136: Set container width as min-width if it fits within viewport, otherwise allow it to shrink to fit
426
+ var R = (S === "above" || S === "below") && i.offsetWidth <= w ? i.offsetWidth : 0;
425
427
  return {
426
428
  placement: S,
427
429
  maxHeight: P,
@@ -429,7 +431,8 @@
429
431
  outerContainerStyle: {
430
432
  top: b,
431
433
  left: g,
432
- bottom: y
434
+ bottom: y,
435
+ minWidth: R
433
436
  }
434
437
  };
435
438
  }
package/README.md CHANGED
@@ -128,3 +128,14 @@ Further reading:
128
128
  * [styled-components and SC_ATTR](https://styled-components.com/docs/advanced#avoiding-conflicts-with-thirdparty-styles-and-scripts)
129
129
  * [styled-components "several instances" warning](https://styled-components.com/docs/faqs#why-am-i-getting-a-warning-about-several-instances-of-module-on-the-page)
130
130
  * [Duplicate React](https://reactjs.org/warnings/invalid-hook-call-warning.html#duplicate-react)
131
+
132
+
133
+ ## LLM Documentation
134
+
135
+ This package includes AI-optimized documentation in the `docs-llm/` directory for use with AI assistants and tools like MCP servers. These markdown files provide comprehensive component documentation suitable for LLM consumption.
136
+
137
+ - **Location:** `node_modules/@splunk/react-ui/docs-llm/`
138
+ - **Contents:** Component documentation, usage examples, API reference, accessibility guidelines
139
+ - **Format:** Markdown files optimized for AI/LLM processing
140
+
141
+ The LLM documentation mirrors the standard documentation but is formatted specifically for machine consumption, enabling AI assistants to provide accurate guidance on component usage, props, and best practices.
package/RadioBar.js CHANGED
@@ -492,7 +492,7 @@
492
492
  flex: true,
493
493
  $disabled: W,
494
494
  $error: b,
495
- elementRef: s,
495
+ ref: s,
496
496
  "data-test": "radio-bar",
497
497
  "data-test-value": A,
498
498
  "data-test-disabled": W ? "disabled" : undefined,
package/Search.js CHANGED
@@ -63,7 +63,7 @@
63
63
  e.d(n, {
64
64
  Divider: () => /* reexport */ p.Divider,
65
65
  Heading: () => /* reexport */ p.Heading,
66
- Option: () => /* reexport */ D,
66
+ Option: () => /* reexport */ x,
67
67
  default: () => /* reexport */ ie
68
68
  });
69
69
  // CONCATENATED MODULE: external "react"
@@ -101,9 +101,9 @@
101
101
  // CONCATENATED MODULE: external "@splunk/ui-utils/i18n"
102
102
  const C = require("@splunk/ui-utils/i18n");
103
103
  // CONCATENATED MODULE: external "@splunk/ui-utils/id"
104
- const j = require("@splunk/ui-utils/id");
104
+ const k = require("@splunk/ui-utils/id");
105
105
  // CONCATENATED MODULE: external "@splunk/ui-utils/keyboard"
106
- const k = require("@splunk/ui-utils/keyboard");
106
+ const j = require("@splunk/ui-utils/keyboard");
107
107
  // CONCATENATED MODULE: external "@splunk/ui-utils/scroll"
108
108
  const P = require("@splunk/ui-utils/scroll");
109
109
  // CONCATENATED MODULE: ./src/utils/updateReactRef.ts
@@ -113,7 +113,7 @@
113
113
  * @param ref - The React callback or object ref. Can be `null` or `undefined`.
114
114
  * @param current - The new value of the ref.
115
115
  */
116
- function I(e, n) {
116
+ function R(e, n) {
117
117
  if (e) {
118
118
  if (typeof e === "function") {
119
119
  e(n);
@@ -126,8 +126,8 @@
126
126
  }
127
127
  }
128
128
  // CONCATENATED MODULE: ./src/Search/Option.tsx
129
- function R() {
130
- return R = Object.assign ? Object.assign.bind() : function(e) {
129
+ function I() {
130
+ return I = Object.assign ? Object.assign.bind() : function(e) {
131
131
  for (var n = 1; n < arguments.length; n++) {
132
132
  var r = arguments[n];
133
133
  for (var t in r) {
@@ -135,7 +135,7 @@
135
135
  }
136
136
  }
137
137
  return e;
138
- }, R.apply(null, arguments);
138
+ }, I.apply(null, arguments);
139
139
  }
140
140
  function M(e, n) {
141
141
  if (null == e) return {};
@@ -181,7 +181,7 @@
181
181
  };
182
182
  /**
183
183
  * An option within a `Search`.
184
- */ function x(e) {
184
+ */ function D(e) {
185
185
  var n = e.active, o = e.description, a = e.descriptionPosition, i = a === void 0 ? "bottom" : a, l = e.disabled, u = e.elementRef, c = e.endAdornment, s = e.label, d = e.matchRanges, f = e.onClick, v = e.openInNewContext, b = e.startAdornment, m = e.to, y = e.truncate, g = e.value, h = M(e, [ "active", "description", "descriptionPosition", "disabled", "elementRef", "endAdornment", "label", "matchRanges", "onClick", "openInNewContext", "startAdornment", "to", "truncate", "value" ]);
186
186
  // @docs-props-type OptionPropsBase
187
187
  var O = (0, r.useCallback)((function(e) {
@@ -193,11 +193,11 @@
193
193
  }
194
194
  }), [ l, f, m, g ]);
195
195
  var S = (0, r.useCallback)((function(e) {
196
- I(u, e);
196
+ R(u, e);
197
197
  }), [ u ]);
198
198
  var w = s === undefined ? g : s;
199
199
 
200
- return t().createElement(p.Item, R({
200
+ return t().createElement(p.Item, I({
201
201
  active: n,
202
202
  "data-test": "search-option",
203
203
  "data-test-value": g,
@@ -216,9 +216,9 @@
216
216
  role: "option"
217
217
  }), w);
218
218
  }
219
- x.propTypes = q;
220
- x.as = "Item";
221
- /* harmony default export */ const D = x;
219
+ D.propTypes = q;
220
+ D.as = "Item";
221
+ /* harmony default export */ const x = D;
222
222
  // CONCATENATED MODULE: external "styled-components"
223
223
  const E = require("styled-components");
224
224
  var B = e.n(E);
@@ -413,7 +413,7 @@
413
413
  }));
414
414
  var oe = (0, C._)("Search");
415
415
  function ae(e) {
416
- var n = e.animateLoading, o = n === void 0 ? false : n, a = e.append, i = e.children, l = e.defaultPlacement, u = e.defaultValue, s = e.describedBy, f = e.disabled, v = f === void 0 ? false : f, p = e.elementRef, b = e.error, y = b === void 0 ? false : b, h = e.footerMessage, S = e.inline, R = S === void 0 ? false : S, M = e.inputRef, A = e.isLoadingOptions, q = A === void 0 ? false : A, x = e.labelledBy, D = e.loadingMessage, E = e.menuStyle, B = E === void 0 ? {} : E, T = e.name, H = e.noOptionsMessage, L = e.onChange, N = e.onClose, K = e.onFocus, W = e.onKeyDown, U = e.onOpen, $ = e.placeholder, X = $ === void 0 ? (0,
416
+ var n = e.animateLoading, o = n === void 0 ? false : n, a = e.append, i = e.children, l = e.defaultPlacement, u = e.defaultValue, s = e.describedBy, f = e.disabled, v = f === void 0 ? false : f, p = e.elementRef, b = e.error, y = b === void 0 ? false : b, h = e.footerMessage, S = e.inline, I = S === void 0 ? false : S, M = e.inputRef, A = e.isLoadingOptions, q = A === void 0 ? false : A, D = e.labelledBy, x = e.loadingMessage, E = e.menuStyle, B = E === void 0 ? {} : E, T = e.name, H = e.noOptionsMessage, L = e.onChange, N = e.onClose, K = e.onFocus, W = e.onKeyDown, U = e.onOpen, $ = e.placeholder, X = $ === void 0 ? (0,
417
417
  C._)("Search...") : $, Y = e.prepend, G = e.value, J = Z(e, [ "animateLoading", "append", "children", "defaultPlacement", "defaultValue", "describedBy", "disabled", "elementRef", "error", "footerMessage", "inline", "inputRef", "isLoadingOptions", "labelledBy", "loadingMessage", "menuStyle", "name", "noOptionsMessage", "onChange", "onClose", "onFocus", "onKeyDown", "onOpen", "placeholder", "prepend", "value" ]);
418
418
  // @docs-props-type SearchPropsBase
419
419
  var Q = !!i || q;
@@ -424,33 +424,34 @@
424
424
  var be = (0, r.useState)(u || ""), me = z(be, 2), ye = me[0], ge = me[1];
425
425
  var he = (0, r.useState)((function() {
426
426
  return {
427
- popoverId: (0, j.createDOMID)("popover"),
428
- menuId: (0, j.createDOMID)("menu"),
429
- activeItemId: (0, j.createDOMID)("active-item")
427
+ popoverId: (0, k.createDOMID)("popover"),
428
+ menuId: (0, k.createDOMID)("menu"),
429
+ activeItemId: (0, k.createDOMID)("active-item")
430
430
  };
431
- })), Oe = z(he, 1), Se = Oe[0], we = Se.popoverId, Ce = Se.menuId, je = Se.activeItemId;
431
+ })), Oe = z(he, 1), Se = Oe[0], we = Se.popoverId, Ce = Se.menuId, ke = Se.activeItemId;
432
432
  // previous state
433
- var ke = w()(ae);
433
+ var je = w()(ae);
434
434
  // refs
435
435
  var Pe = (0, r.useRef)(null);
436
- var Ie = (0, r.useRef)(null);
437
- var Re = (0, r.useRef)(G !== undefined && G !== null);
436
+ var Re = (0, r.useRef)(null);
437
+ var Ie = (0, r.useRef)(G !== undefined && G !== null);
438
438
  var Me = (0, r.useRef)([]);
439
- var Ae = (0, r.useRef)(ke);
440
- var qe = (0, r.useRef)(undefined);
439
+ var Ae = (0, r.useRef)(je);
440
+ var qe = (0, r.useRef)(0);
441
+ var De = (0, r.useRef)(undefined);
441
442
  var xe = function e(n) {
442
- I(Pe, n);
443
- I(p, n);
443
+ R(Pe, n);
444
+ R(p, n);
444
445
  };
445
- var De = function e(n) {
446
- I(Ie, n);
447
- I(M, n);
448
- };
449
- var Ee = function e() {
450
- return Re.current ? G : ye;
446
+ var Ee = function e(n) {
447
+ R(Re, n);
448
+ R(M, n);
451
449
  };
452
450
  var Be = function e() {
453
- var n = Ee();
451
+ return Ie.current ? G : ye;
452
+ };
453
+ var Te = function e() {
454
+ var n = Be();
454
455
  var t = r.Children.toArray(i).filter(r.isValidElement);
455
456
  var o = !ve && t.find((function(e) {
456
457
  return e.props.label !== undefined && e.props.value === n;
@@ -460,27 +461,27 @@
460
461
  }
461
462
  return n;
462
463
  };
463
- var Te = function e() {
464
+ var He = function e() {
464
465
  se(true);
465
466
  ie(-1);
466
467
  U === null || U === void 0 ? void 0 : U();
467
468
  };
468
- var He = function e() {
469
+ var Le = function e() {
469
470
  se(false);
470
471
  Ae.current = null;
471
472
  N === null || N === void 0 ? void 0 : N();
472
473
  };
473
- var Le = function e() {
474
+ var _e = function e() {
474
475
  var n;
475
- (n = Ie.current) === null || n === void 0 ? void 0 : n.focus();
476
+ (n = Re.current) === null || n === void 0 ? void 0 : n.focus();
476
477
  };
477
- var _e = function e(n, r) {
478
- Te();
478
+ var Ne = function e(n, r) {
479
+ He();
479
480
  K === null || K === void 0 ? void 0 : K(n, r);
480
481
  };
481
- var Ne = function e(n, r) {
482
+ var Ve = function e(n, r) {
482
483
  var t = r.value;
483
- if (!Re.current) {
484
+ if (!Ie.current) {
484
485
  ge(t);
485
486
  }
486
487
  ie(-1);
@@ -490,102 +491,117 @@
490
491
  name: T
491
492
  });
492
493
  };
493
- var Ve = function e(n, r) {
494
- Ne(n, F({}, r));
494
+ var Ke = function e(n, r) {
495
+ Ve(n, F({}, r));
496
+ _e();
495
497
  Le();
496
- He();
497
498
  };
498
- var Ke = function e(n) {
499
- var r = Me.current.length;
499
+ var Fe = function e(n) {
500
+ var r = qe.current;
500
501
  var t = n.key;
501
502
  if (ce) {
502
503
  switch (t) {
503
504
  case "Enter":
504
505
  {
505
506
  var o;
507
+ n.preventDefault();
506
508
  // triggering onClick so that links can be activated with the keyboard
507
509
  // since the menu items themselves never receive focus
508
510
  // this will implicitly call handleSelectOption()
509
- (o = document.getElementById(je)) === null || o === void 0 ? void 0 : o.click();
511
+ (o = document.getElementById(ke)) === null || o === void 0 ? void 0 : o.click();
510
512
  break;
511
513
  }
512
514
 
513
515
  case "Tab":
514
- He();
516
+ Le();
515
517
  break;
516
518
 
517
519
  case "ArrowDown":
518
- ie(Math.min(ae + 1, r - 1));
520
+ if (r <= 0) {
521
+ break;
522
+ }
523
+ ie((function(e) {
524
+ return Math.min(e + 1, r - 1);
525
+ }));
519
526
  break;
520
527
 
521
528
  case "ArrowUp":
522
- ie(Math.max(ae - 1, 0));
529
+ if (r <= 0) {
530
+ break;
531
+ }
532
+ ie((function(e) {
533
+ return Math.max(e - 1, 0);
534
+ }));
523
535
  break;
524
536
 
525
537
  default:
526
538
  // do nothing
527
539
  }
528
- } else if ((0, k.addsCharacter)(n.nativeEvent) !== false ||
540
+ } else if ((0, j.addsCharacter)(n.nativeEvent) !== false ||
529
541
  // Safari 9.0 returns undefined
530
542
  t === "Enter" || t === "Backspace" || t === "ArrowDown" || t === "ArrowUp") {
531
- Te();
543
+ He();
532
544
  }
533
545
  W === null || W === void 0 ? void 0 : W(n);
534
546
  };
535
- var Fe = function e() {
547
+ var We = function e() {
536
548
  if (!ce && !v) {
537
- Te();
549
+ He();
538
550
  }
539
551
  };
540
- var We = function e(n) {
552
+ var Ue = function e(n) {
541
553
  var r = n.event, t = n.reason;
542
554
  var o = t === "offScreen" || t === "escapeKey" || t === "clickAway" && Pe.current && !re(Pe.current, r);
543
555
  if (o) {
544
- He();
556
+ Le();
545
557
  }
546
558
  };
547
- var Ue = function e(n) {
559
+ var $e = function e(n) {
548
560
  if (Ae.current !== ae) {
549
561
  if (n) {
550
562
  (0, P.scrollIntoViewIfNeeded)(n);
551
563
  }
552
564
  }
553
565
  };
554
- var $e = function e(n) {
566
+ var ze = function e(n) {
555
567
  var a = n.anchorWidth, l = n.maxHeight;
556
568
  var u = r.Children.toArray(i).filter(r.isValidElement);
557
569
  // Highlight Active
558
- qe.current = undefined;
570
+ De.current = undefined;
571
+ qe.current = 0;
559
572
  // Only update the menu options if they are valid and the dropdown is open.
560
573
  // This is necessary to handle the outro animation of the dropdown.
561
574
  if (Q && ce) {
562
- Me.current = u.map((function(e, n) {
575
+ Me.current = u.map((function(e) {
563
576
  if (e.type.as !== "Item") {
564
577
  // ignore non-Option items such as Headings and Dividers
565
578
  return e;
566
579
  }
567
- var t = function n(r, t) {
580
+ var n = function n(r, t) {
568
581
  var o, a;
569
582
  var i = (o = (a = e.props).onClick) === null || o === void 0 ? void 0 : o.call(a, r, t);
570
583
  if (i !== false) {
571
- Ve(r, t);
584
+ Ke(r, t);
572
585
  }
573
586
  };
574
- if (n === ae) {
575
- if (!e.props.disabled) {
576
- qe.current = e.props.value;
577
- }
587
+ if (e.props.disabled) {
588
+ return e;
589
+ }
590
+ var t = qe.current === ae;
591
+ qe.current += 1;
592
+ if (t) {
593
+ De.current = e.props.value;
578
594
 
579
595
  return (0, r.cloneElement)(e, {
580
- elementRef: Ue,
581
- id: je,
582
- onClick: t,
596
+ elementRef: $e,
597
+ id: ke,
598
+ onClick: n,
583
599
  active: true
584
600
  });
585
601
  }
586
602
 
587
603
  return (0, r.cloneElement)(e, {
588
- onClick: t
604
+ onClick: n
589
605
  });
590
606
  }));
591
607
  }
@@ -603,20 +619,20 @@
603
619
  noOptionsMessage: H,
604
620
  footerMessage: h,
605
621
  animateLoading: o,
606
- loadingMessage: D,
622
+ loadingMessage: x,
607
623
  menuId: Ce
608
624
  }), Me.current);
609
625
  };
610
- var ze = Ee();
611
626
  var Xe = Be();
612
- var Ye = ce && !!Pe.current && Q;
613
- var Ge = Q ? "combobox" : "searchbox";
614
- var Je = {
615
- "aria-activedescendant": Ye && ae > -1 ? je : undefined,
627
+ var Ye = Te();
628
+ var Ge = ce && !!Pe.current && Q;
629
+ var Je = Q ? "combobox" : "searchbox";
630
+ var Qe = {
631
+ "aria-activedescendant": Ge && ae > -1 ? ke : undefined,
616
632
  "aria-expanded": Q ? ce && !!Pe.current : undefined,
617
- "aria-controls": Ye ? Ce : undefined
633
+ "aria-controls": Ge ? Ce : undefined
618
634
  };
619
- var Qe = t().createElement(_, {
635
+ var Ze = t().createElement(_, {
620
636
  $disabled: v,
621
637
  "aria-label": oe,
622
638
  "data-test": "search-icon"
@@ -631,28 +647,28 @@
631
647
  autoCorrect: "off",
632
648
  canClear: true,
633
649
  "data-test-popover-id": we,
634
- "data-test-label": Xe,
635
- "data-test-value": ze,
636
- "data-test-open": Ye,
650
+ "data-test-label": Ye,
651
+ "data-test-value": Xe,
652
+ "data-test-open": Ge,
637
653
  describedBy: s,
638
654
  disabled: v,
639
655
  elementRef: xe,
640
656
  error: y,
641
- inline: R,
642
- inputRef: De,
643
- labelledBy: x,
657
+ inline: I,
658
+ inputRef: Ee,
659
+ labelledBy: D,
644
660
  name: T,
645
- onFocus: _e,
646
- onClick: Fe,
647
- onChange: Ne,
648
- onKeyDown: Ke,
661
+ onFocus: Ne,
662
+ onClick: We,
663
+ onChange: Ve,
664
+ onKeyDown: Fe,
649
665
  placeholder: X,
650
666
  prepend: Y,
651
667
  spellCheck: false,
652
- startAdornment: Qe,
653
- value: Xe,
654
- role: Ge
655
- }, Je), t().createElement(m(), {
668
+ startAdornment: Ze,
669
+ value: Ye,
670
+ role: Je
671
+ }, Qe), t().createElement(m(), {
656
672
  anchor: function() {
657
673
  return Pe.current;
658
674
  }(),
@@ -660,13 +676,13 @@
660
676
  canCoverAnchor: false,
661
677
  defaultPlacement: l,
662
678
  id: we,
663
- onRequestClose: We,
664
- open: Ye,
679
+ onRequestClose: Ue,
680
+ open: Ge,
665
681
  repositionMode: "flip"
666
- }, $e));
682
+ }, ze));
667
683
  }
668
684
  ae.propTypes = ne;
669
- ae.Option = D;
685
+ ae.Option = x;
670
686
  ae.Divider = p.Divider;
671
687
  ae.Heading = p.Heading;
672
688
  /* harmony default export */ const ie = ae;