@splunk/react-ui 4.4.0 → 4.5.1

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 (132) hide show
  1. package/Accordion.js +37 -21
  2. package/Anchor.js +2 -2
  3. package/AnimationToggle.js +2 -2
  4. package/Box.js +2 -2
  5. package/Button.js +36 -12
  6. package/ButtonGroup.js +27 -6
  7. package/ButtonSimple.js +6 -6
  8. package/CHANGELOG.md +54 -1
  9. package/Calendar.js +14 -14
  10. package/Card.js +49 -23
  11. package/CardLayout.js +31 -10
  12. package/Chip.js +77 -53
  13. package/Clickable.js +2 -2
  14. package/CloseButton.js +6 -6
  15. package/Code.js +4 -4
  16. package/CollapsiblePanel.js +6 -6
  17. package/Color.js +103 -56
  18. package/ColumnLayout.js +4 -4
  19. package/ComboBox.js +22 -17
  20. package/Concertina.js +73 -68
  21. package/ControlGroup.js +72 -24
  22. package/Date.js +9 -9
  23. package/DefinitionList.js +6 -6
  24. package/Dropdown.js +12 -12
  25. package/EventListener.js +168 -0
  26. package/FetchOptions.js +8 -8
  27. package/File.js +93 -82
  28. package/FormRows.js +66 -58
  29. package/Image.js +14 -14
  30. package/JSONTree.js +5 -5
  31. package/Layer.js +32 -20
  32. package/Link.js +6 -6
  33. package/List.js +2 -2
  34. package/Markdown.js +250 -88
  35. package/Menu.js +70 -64
  36. package/Message.js +18 -18
  37. package/Modal.js +68 -14
  38. package/ModalLayer.js +4 -4
  39. package/Monogram.js +12 -11
  40. package/Multiselect.js +122 -78
  41. package/Number.js +19 -16
  42. package/Paginator.js +10 -10
  43. package/Paragraph.js +2 -2
  44. package/Popover.js +52 -38
  45. package/Progress.js +6 -6
  46. package/RadioBar.js +56 -69
  47. package/RadioList.js +2 -2
  48. package/Resize.js +19 -15
  49. package/ResultsMenu.js +8 -8
  50. package/ScreenReaderContent.js +2 -2
  51. package/Scroll.js +16 -14
  52. package/ScrollContainerContext.js +5 -5
  53. package/Search.d.ts +2 -0
  54. package/Search.js +797 -0
  55. package/Select.js +83 -43
  56. package/SidePanel.js +6 -6
  57. package/Slider.js +29 -25
  58. package/SlidingPanels.js +4 -4
  59. package/StaticContent.js +2 -2
  60. package/StepBar.js +56 -52
  61. package/Switch.js +8 -8
  62. package/TabBar.js +126 -85
  63. package/TabLayout.js +4 -5
  64. package/Table.js +188 -138
  65. package/Text.js +69 -63
  66. package/Tooltip.js +11 -11
  67. package/TransitionOpen.js +9 -9
  68. package/WaitSpinner.js +3 -4
  69. package/package.json +4 -5
  70. package/types/src/Accordion/AccordionContext.d.ts +10 -0
  71. package/types/src/Accordion/Panel.d.ts +0 -9
  72. package/types/src/Button/Button.d.ts +4 -2
  73. package/types/src/ButtonGroup/ButtonGroupContext.d.ts +7 -0
  74. package/types/src/ButtonSimple/ButtonSimple.d.ts +5 -5
  75. package/types/src/Card/Card.d.ts +2 -0
  76. package/types/src/CardLayout/CardLayoutContext.d.ts +8 -0
  77. package/types/src/Color/Color.d.ts +2 -2
  78. package/types/src/ComboBox/ComboBox.d.ts +4 -3
  79. package/types/src/Concertina/ConcertinaContext.d.ts +8 -0
  80. package/types/src/Concertina/Panel.d.ts +2 -4
  81. package/types/src/ControlGroup/ControlGroup.d.ts +6 -1
  82. package/types/src/Date/Date.d.ts +3 -3
  83. package/types/src/EventListener/EventListener.d.ts +18 -0
  84. package/types/src/EventListener/index.d.ts +2 -0
  85. package/types/src/File/File.d.ts +6 -4
  86. package/types/src/File/FileContext.d.ts +3 -0
  87. package/types/src/File/Item.d.ts +5 -8
  88. package/types/src/FormRows/FormRows.d.ts +2 -2
  89. package/types/src/FormRows/FormRowsContext.d.ts +10 -0
  90. package/types/src/FormRows/Row.d.ts +5 -16
  91. package/types/src/Markdown/Markdown.d.ts +2 -0
  92. package/types/src/Markdown/renderers/MarkdownBlockquote.d.ts +14 -0
  93. package/types/src/Markdown/renderers/MarkdownCode.d.ts +15 -0
  94. package/types/src/Markdown/renderers/MarkdownCodeBlock.d.ts +16 -0
  95. package/types/src/Markdown/renderers/MarkdownHeading.d.ts +15 -0
  96. package/types/src/Markdown/renderers/MarkdownImage.d.ts +18 -0
  97. package/types/src/Markdown/renderers/MarkdownItem.d.ts +14 -0
  98. package/types/src/Markdown/renderers/MarkdownLink.d.ts +18 -0
  99. package/types/src/Markdown/renderers/MarkdownList.d.ts +26 -0
  100. package/types/src/Markdown/renderers/MarkdownParagraph.d.ts +14 -0
  101. package/types/src/Markdown/renderers/index.d.ts +10 -0
  102. package/types/src/Modal/Modal.d.ts +15 -3
  103. package/types/src/Monogram/Monogram.d.ts +5 -1
  104. package/types/src/Multiselect/Compact.d.ts +12 -4
  105. package/types/src/Multiselect/Multiselect.d.ts +14 -4
  106. package/types/src/Multiselect/Normal.d.ts +7 -2
  107. package/types/src/Number/Number.d.ts +11 -7
  108. package/types/src/Popover/Popover.d.ts +2 -2
  109. package/types/src/RadioBar/Option.d.ts +4 -14
  110. package/types/src/RadioBar/RadioBar.d.ts +2 -2
  111. package/types/src/RadioBar/RadioBarContext.d.ts +9 -0
  112. package/types/src/Scroll/Inner.d.ts +1 -1
  113. package/types/src/ScrollContainerContext/ScrollContainerContext.d.ts +4 -4
  114. package/types/src/Search/Option.d.ts +60 -0
  115. package/types/src/Search/Search.d.ts +97 -0
  116. package/types/src/Search/index.d.ts +2 -0
  117. package/types/src/Select/Select.d.ts +6 -2
  118. package/types/src/Select/SelectBase.d.ts +12 -5
  119. package/types/src/Slider/Slider.d.ts +2 -2
  120. package/types/src/StepBar/Step.d.ts +1 -13
  121. package/types/src/StepBar/StepBarContext.d.ts +8 -0
  122. package/types/src/TabBar/Tab.d.ts +5 -13
  123. package/types/src/TabBar/TabBarContext.d.ts +14 -0
  124. package/types/src/Table/Body.d.ts +1 -1
  125. package/types/src/Table/Head.d.ts +1 -1
  126. package/types/src/Table/Row.d.ts +10 -3
  127. package/types/src/Table/Table.d.ts +3 -2
  128. package/types/src/Text/Text.d.ts +11 -7
  129. package/types/src/icons/Sort.d.ts +3 -0
  130. package/types/src/usePrevious/index.d.ts +2 -0
  131. package/types/src/usePrevious/usePrevious.d.ts +12 -0
  132. package/usePrevious.js +137 -0
package/Monogram.js CHANGED
@@ -82,7 +82,7 @@ module.exports =
82
82
  /******/
83
83
  /******/
84
84
  /******/ // Load entry module and return exports
85
- /******/ return __webpack_require__(__webpack_require__.s = 141);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 156);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
@@ -101,14 +101,14 @@ module.exports = require("prop-types");
101
101
 
102
102
  /***/ }),
103
103
 
104
- /***/ 11:
104
+ /***/ 12:
105
105
  /***/ (function(module, exports) {
106
106
 
107
107
  module.exports = require("@splunk/react-ui/Clickable");
108
108
 
109
109
  /***/ }),
110
110
 
111
- /***/ 141:
111
+ /***/ 156:
112
112
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
113
113
 
114
114
  "use strict";
@@ -127,16 +127,15 @@ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_)
127
127
  var external_prop_types_ = __webpack_require__(1);
128
128
  var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_);
129
129
 
130
- // EXTERNAL MODULE: external "lodash/omit"
131
- var omit_ = __webpack_require__(32);
132
- var omit_default = /*#__PURE__*/__webpack_require__.n(omit_);
130
+ // EXTERNAL MODULE: external "lodash"
131
+ var external_lodash_ = __webpack_require__(4);
133
132
 
134
133
  // EXTERNAL MODULE: external "styled-components"
135
134
  var external_styled_components_ = __webpack_require__(3);
136
135
  var external_styled_components_default = /*#__PURE__*/__webpack_require__.n(external_styled_components_);
137
136
 
138
137
  // EXTERNAL MODULE: external "@splunk/react-ui/Clickable"
139
- var Clickable_ = __webpack_require__(11);
138
+ var Clickable_ = __webpack_require__(12);
140
139
  var Clickable_default = /*#__PURE__*/__webpack_require__.n(Clickable_);
141
140
 
142
141
  // EXTERNAL MODULE: external "@splunk/themes"
@@ -300,7 +299,7 @@ function MonogramInteractive(props) {
300
299
  return /*#__PURE__*/external_react_default.a.createElement(StyledClickable, _extends({
301
300
  elementRef: elementRef,
302
301
  onClick: handleClick
303
- }, sharedProps, omit_default()(otherProps, Object.keys(propTypes))), children);
302
+ }, sharedProps, Object(external_lodash_["omit"])(otherProps, Object.keys(propTypes))), children);
304
303
  }
305
304
 
306
305
  function MonogramNonInteractive(props) {
@@ -315,11 +314,13 @@ function MonogramNonInteractive(props) {
315
314
 
316
315
  return /*#__PURE__*/external_react_default.a.createElement(Styled, _extends({
317
316
  ref: elementRef
318
- }, sharedProps, omit_default()(otherProps, Object.keys(propTypes))), children);
317
+ }, sharedProps, Object(external_lodash_["omit"])(otherProps, Object.keys(propTypes))), children);
319
318
  }
320
319
 
321
320
  function Monogram(props) {
322
321
  // @docs-props-type MonogramPropsBase
322
+ if (false) {}
323
+
323
324
  var children = /*#__PURE__*/external_react_default.a.createElement(Initials, {
324
325
  "data-test": "initials"
325
326
  }, props.initials);
@@ -350,10 +351,10 @@ module.exports = require("styled-components");
350
351
 
351
352
  /***/ }),
352
353
 
353
- /***/ 32:
354
+ /***/ 4:
354
355
  /***/ (function(module, exports) {
355
356
 
356
- module.exports = require("lodash/omit");
357
+ module.exports = require("lodash");
357
358
 
358
359
  /***/ })
359
360
 
package/Multiselect.js CHANGED
@@ -82,7 +82,7 @@ module.exports =
82
82
  /******/
83
83
  /******/
84
84
  /******/ // Load entry module and return exports
85
- /******/ return __webpack_require__(__webpack_require__.s = 118);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 122);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
@@ -108,7 +108,34 @@ module.exports = require("@splunk/ui-utils/id");
108
108
 
109
109
  /***/ }),
110
110
 
111
- /***/ 118:
111
+ /***/ 11:
112
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
113
+
114
+ "use strict";
115
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return updateReactRef; });
116
+ /**
117
+ * Updates a React ref. Callback refs and object refs (from `createRef` and `useRef`) are supported.
118
+ *
119
+ * @param ref - The React callback or object ref. Can be `null` or `undefined`.
120
+ * @param current - The new value of the ref.
121
+ */
122
+ function updateReactRef(ref, current) {
123
+ if (ref) {
124
+ if (typeof ref === 'function') {
125
+ ref(current);
126
+ } else {
127
+ // the public signature of this util uses React.Ref<T> to mirror the way React types refs.
128
+ // the intention here is to signal "we will take care of setting 'current', not you".
129
+ ref.current = current; // eslint-disable-line no-param-reassign
130
+ }
131
+ }
132
+ }
133
+
134
+
135
+
136
+ /***/ }),
137
+
138
+ /***/ 122:
112
139
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
113
140
 
114
141
  "use strict";
@@ -285,7 +312,7 @@ _defineProperty(Option_Option, "defaultProps", defaultProps);
285
312
 
286
313
  /* harmony default export */ var Multiselect_Option = (Option_Option);
287
314
  // EXTERNAL MODULE: ./src/Select/SelectBase.tsx + 1 modules
288
- var SelectBase = __webpack_require__(42);
315
+ var SelectBase = __webpack_require__(41);
289
316
 
290
317
  // CONCATENATED MODULE: ./src/Multiselect/Compact.tsx
291
318
  function Compact_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { Compact_typeof = function _typeof(obj) { return typeof obj; }; } else { Compact_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return Compact_typeof(obj); }
@@ -352,6 +379,8 @@ var Compact_propTypes = {
352
379
  onOpen: external_prop_types_default.a.func,
353
380
  onScrollBottom: external_prop_types_default.a.func,
354
381
  placeholder: external_prop_types_default.a.string,
382
+ repositionMode: external_prop_types_default.a.oneOf(['none', 'flip']),
383
+ showSelectedValuesFirst: external_prop_types_default.a.oneOf(['nextOpen', 'immediately', 'never']),
355
384
  tabConfirmsNewValue: external_prop_types_default.a.bool,
356
385
  values: external_prop_types_default.a.array
357
386
  };
@@ -365,6 +394,7 @@ var Compact_defaultProps = {
365
394
  menuStyle: {},
366
395
  noOptionsMessage: Object(i18n_["_"])('No matches'),
367
396
  placeholder: Object(i18n_["_"])('Select...'),
397
+ showSelectedValuesFirst: 'nextOpen',
368
398
  tabConfirmsNewValue: false
369
399
  }; // TS: not typed controlled/uncontrolled, handled by Multiselect wrapper component
370
400
 
@@ -432,7 +462,7 @@ Compact_defineProperty(Compact_Compact, "Heading", Menu_["Heading"]);
432
462
 
433
463
  /* harmony default export */ var Multiselect_Compact = (Compact_Compact);
434
464
  // EXTERNAL MODULE: external "@splunk/ui-utils/filter"
435
- var filter_ = __webpack_require__(23);
465
+ var filter_ = __webpack_require__(24);
436
466
 
437
467
  // EXTERNAL MODULE: external "@splunk/ui-utils/id"
438
468
  var id_ = __webpack_require__(10);
@@ -441,19 +471,19 @@ var id_ = __webpack_require__(10);
441
471
  var keyboard_ = __webpack_require__(9);
442
472
 
443
473
  // EXTERNAL MODULE: external "@splunk/react-ui/Chip"
444
- var Chip_ = __webpack_require__(89);
474
+ var Chip_ = __webpack_require__(92);
445
475
  var Chip_default = /*#__PURE__*/__webpack_require__.n(Chip_);
446
476
 
447
477
  // EXTERNAL MODULE: external "@splunk/react-ui/ResultsMenu"
448
- var ResultsMenu_ = __webpack_require__(39);
478
+ var ResultsMenu_ = __webpack_require__(32);
449
479
  var ResultsMenu_default = /*#__PURE__*/__webpack_require__.n(ResultsMenu_);
450
480
 
451
481
  // EXTERNAL MODULE: external "@splunk/react-ui/Popover"
452
- var Popover_ = __webpack_require__(17);
482
+ var Popover_ = __webpack_require__(16);
453
483
  var Popover_default = /*#__PURE__*/__webpack_require__.n(Popover_);
454
484
 
455
485
  // EXTERNAL MODULE: external "@splunk/react-ui/ScreenReaderContent"
456
- var ScreenReaderContent_ = __webpack_require__(14);
486
+ var ScreenReaderContent_ = __webpack_require__(15);
457
487
  var ScreenReaderContent_default = /*#__PURE__*/__webpack_require__.n(ScreenReaderContent_);
458
488
 
459
489
  // EXTERNAL MODULE: external "styled-components"
@@ -543,7 +573,7 @@ var StyledOverlay = external_styled_components_default.a.div.withConfig({
543
573
  });
544
574
 
545
575
  // EXTERNAL MODULE: ./src/utils/updateReactRef.ts
546
- var updateReactRef = __webpack_require__(12);
576
+ var updateReactRef = __webpack_require__(11);
547
577
 
548
578
  // CONCATENATED MODULE: ./src/Multiselect/Normal.tsx
549
579
  function Normal_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { Normal_typeof = function _typeof(obj) { return typeof obj; }; } else { Normal_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return Normal_typeof(obj); }
@@ -634,6 +664,7 @@ var Normal_propTypes = {
634
664
  onOpen: external_prop_types_default.a.func,
635
665
  onScrollBottom: external_prop_types_default.a.func,
636
666
  placeholder: external_prop_types_default.a.string,
667
+ repositionMode: external_prop_types_default.a.oneOf(['none', 'flip']),
637
668
  tabConfirmsNewValue: external_prop_types_default.a.bool,
638
669
  useClickawayOverlay: external_prop_types_default.a.bool,
639
670
  values: external_prop_types_default.a.array
@@ -679,6 +710,8 @@ var Normal_Normal = /*#__PURE__*/function (_Component) {
679
710
 
680
711
  Normal_defineProperty(Normal_assertThisInitialized(_this), "popoverId", void 0);
681
712
 
713
+ Normal_defineProperty(Normal_assertThisInitialized(_this), "previousActiveIndex", null);
714
+
682
715
  Normal_defineProperty(Normal_assertThisInitialized(_this), "handleClick", function () {
683
716
  var _this$input;
684
717
 
@@ -869,6 +902,7 @@ var Normal_Normal = /*#__PURE__*/function (_Component) {
869
902
  }, function () {
870
903
  var _this$props$onClose, _this$props6;
871
904
 
905
+ _this.previousActiveIndex = null;
872
906
  (_this$props$onClose = (_this$props6 = _this.props).onClose) === null || _this$props$onClose === void 0 ? void 0 : _this$props$onClose.call(_this$props6);
873
907
  });
874
908
  }
@@ -906,7 +940,9 @@ var Normal_Normal = /*#__PURE__*/function (_Component) {
906
940
  });
907
941
 
908
942
  Normal_defineProperty(Normal_assertThisInitialized(_this), "handleActiveOptionMount", function (c) {
909
- c === null || c === void 0 ? void 0 : c.scrollIntoViewIfNeeded();
943
+ if (_this.previousActiveIndex !== _this.state.activeIndex) {
944
+ c === null || c === void 0 ? void 0 : c.scrollIntoViewIfNeeded();
945
+ }
910
946
  });
911
947
 
912
948
  Normal_defineProperty(Normal_assertThisInitialized(_this), "renderMenu", function (_ref4) {
@@ -950,11 +986,13 @@ var Normal_Normal = /*#__PURE__*/function (_Component) {
950
986
 
951
987
  Normal_createClass(Normal, [{
952
988
  key: "componentDidUpdate",
953
- value: function componentDidUpdate(prevProps) {
989
+ value: function componentDidUpdate(prevProps, prevState) {
954
990
  if (false) {}
955
991
 
956
992
  if (false) {}
957
993
 
994
+ this.previousActiveIndex = prevState.activeIndex;
995
+
958
996
  if (this.isControlled() && prevProps.values !== this.props.values) {
959
997
  // eslint-disable-next-line react/no-did-update-set-state
960
998
  this.setState({
@@ -1067,8 +1105,9 @@ var Normal_Normal = /*#__PURE__*/function (_Component) {
1067
1105
  inputId = _this$props10.inputId,
1068
1106
  labelledBy = _this$props10.labelledBy,
1069
1107
  placeholder = _this$props10.placeholder,
1108
+ repositionMode = _this$props10.repositionMode,
1070
1109
  useClickawayOverlay = _this$props10.useClickawayOverlay,
1071
- otherProps = Normal_objectWithoutProperties(_this$props10, ["allowNewValues", "children", "controlledFilter", "defaultPlacement", "describedBy", "disabled", "error", "inline", "inputId", "labelledBy", "placeholder", "useClickawayOverlay"]);
1110
+ otherProps = Normal_objectWithoutProperties(_this$props10, ["allowNewValues", "children", "controlledFilter", "defaultPlacement", "describedBy", "disabled", "error", "inline", "inputId", "labelledBy", "placeholder", "repositionMode", "useClickawayOverlay"]);
1072
1111
 
1073
1112
  var ariaProps = _objectSpread(_objectSpread({}, Object(external_lodash_["pickBy"])(otherProps, function (val, key) {
1074
1113
  return key === 'role' || key.indexOf('aria-') === 0;
@@ -1235,7 +1274,7 @@ var Normal_Normal = /*#__PURE__*/function (_Component) {
1235
1274
  onRequestClose: this.handleRequestClose,
1236
1275
  canCoverAnchor: false,
1237
1276
  defaultPlacement: defaultPlacement,
1238
- repositionMode: "flip",
1277
+ repositionMode: repositionMode,
1239
1278
  id: this.popoverId
1240
1279
  }, this.renderMenu)), useClickawayOverlay && this.state.open ? /*#__PURE__*/external_react_default.a.createElement(StyledOverlay, {
1241
1280
  key: "overlay",
@@ -1322,6 +1361,8 @@ var Multiselect_propTypes = {
1322
1361
  onOpen: external_prop_types_default.a.func,
1323
1362
  onScrollBottom: external_prop_types_default.a.func,
1324
1363
  placeholder: external_prop_types_default.a.string,
1364
+ repositionMode: external_prop_types_default.a.oneOf(['none', 'flip']),
1365
+ showSelectedValuesFirst: external_prop_types_default.a.oneOf(['nextOpen', 'immediately', 'never']),
1325
1366
  tabConfirmsNewValue: external_prop_types_default.a.bool,
1326
1367
  useClickawayOverlay: external_prop_types_default.a.bool,
1327
1368
  values: external_prop_types_default.a.array
@@ -1337,6 +1378,7 @@ var Multiselect_defaultProps = {
1337
1378
  menuStyle: {},
1338
1379
  noOptionsMessage: Object(i18n_["_"])('No matches'),
1339
1380
  placeholder: Object(i18n_["_"])('Select...'),
1381
+ repositionMode: 'flip',
1340
1382
  tabConfirmsNewValue: false,
1341
1383
  useClickawayOverlay: false
1342
1384
  };
@@ -1366,6 +1408,8 @@ var Multiselect_Multiselect = /*#__PURE__*/function (_Component) {
1366
1408
  }, Object(external_lodash_["omit"])(this.props, 'compact')));
1367
1409
  }
1368
1410
 
1411
+ if (false) {}
1412
+
1369
1413
  return /*#__PURE__*/external_react_default.a.createElement(Multiselect_Normal, Multiselect_extends({
1370
1414
  "data-test": "multiselect"
1371
1415
  }, Object(external_lodash_["omit"])(this.props, 'compact')));
@@ -1391,33 +1435,6 @@ Multiselect_defineProperty(Multiselect_Multiselect, "Divider", Menu_["Divider"])
1391
1435
 
1392
1436
 
1393
1437
 
1394
- /***/ }),
1395
-
1396
- /***/ 12:
1397
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
1398
-
1399
- "use strict";
1400
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return updateReactRef; });
1401
- /**
1402
- * Updates a React ref. Callback refs and object refs (from `createRef` and `useRef`) are supported.
1403
- *
1404
- * @param ref - The React callback or object ref. Can be `null` or `undefined`.
1405
- * @param current - The new value of the ref.
1406
- */
1407
- function updateReactRef(ref, current) {
1408
- if (ref) {
1409
- if (typeof ref === 'function') {
1410
- ref(current);
1411
- } else {
1412
- // the public signature of this util uses React.Ref<T> to mirror the way React types refs.
1413
- // the intention here is to signal "we will take care of setting 'current', not you".
1414
- ref.current = current; // eslint-disable-line no-param-reassign
1415
- }
1416
- }
1417
- }
1418
-
1419
-
1420
-
1421
1438
  /***/ }),
1422
1439
 
1423
1440
  /***/ 13:
@@ -1427,7 +1444,7 @@ module.exports = require("@splunk/react-ui/Menu");
1427
1444
 
1428
1445
  /***/ }),
1429
1446
 
1430
- /***/ 14:
1447
+ /***/ 15:
1431
1448
  /***/ (function(module, exports) {
1432
1449
 
1433
1450
  module.exports = require("@splunk/react-ui/ScreenReaderContent");
@@ -1437,14 +1454,14 @@ module.exports = require("@splunk/react-ui/ScreenReaderContent");
1437
1454
  /***/ 16:
1438
1455
  /***/ (function(module, exports) {
1439
1456
 
1440
- module.exports = require("@splunk/react-ui/Button");
1457
+ module.exports = require("@splunk/react-ui/Popover");
1441
1458
 
1442
1459
  /***/ }),
1443
1460
 
1444
1461
  /***/ 17:
1445
1462
  /***/ (function(module, exports) {
1446
1463
 
1447
- module.exports = require("@splunk/react-ui/Popover");
1464
+ module.exports = require("@splunk/react-ui/Button");
1448
1465
 
1449
1466
  /***/ }),
1450
1467
 
@@ -1462,17 +1479,17 @@ module.exports = require("react");
1462
1479
 
1463
1480
  /***/ }),
1464
1481
 
1465
- /***/ 23:
1482
+ /***/ 21:
1466
1483
  /***/ (function(module, exports) {
1467
1484
 
1468
- module.exports = require("@splunk/ui-utils/filter");
1485
+ module.exports = require("@splunk/react-ui/Text");
1469
1486
 
1470
1487
  /***/ }),
1471
1488
 
1472
- /***/ 26:
1489
+ /***/ 24:
1473
1490
  /***/ (function(module, exports) {
1474
1491
 
1475
- module.exports = require("@splunk/react-ui/Text");
1492
+ module.exports = require("@splunk/ui-utils/filter");
1476
1493
 
1477
1494
  /***/ }),
1478
1495
 
@@ -1666,6 +1683,13 @@ module.exports = require("styled-components");
1666
1683
 
1667
1684
  /***/ }),
1668
1685
 
1686
+ /***/ 32:
1687
+ /***/ (function(module, exports) {
1688
+
1689
+ module.exports = require("@splunk/react-ui/ResultsMenu");
1690
+
1691
+ /***/ }),
1692
+
1669
1693
  /***/ 36:
1670
1694
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1671
1695
 
@@ -1711,13 +1735,6 @@ module.exports = require("@splunk/react-icons/Caret");
1711
1735
 
1712
1736
  /***/ }),
1713
1737
 
1714
- /***/ 39:
1715
- /***/ (function(module, exports) {
1716
-
1717
- module.exports = require("@splunk/react-ui/ResultsMenu");
1718
-
1719
- /***/ }),
1720
-
1721
1738
  /***/ 4:
1722
1739
  /***/ (function(module, exports) {
1723
1740
 
@@ -1725,7 +1742,7 @@ module.exports = require("lodash");
1725
1742
 
1726
1743
  /***/ }),
1727
1744
 
1728
- /***/ 42:
1745
+ /***/ 41:
1729
1746
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1730
1747
 
1731
1748
  "use strict";
@@ -1749,7 +1766,7 @@ var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_pr
1749
1766
  var external_lodash_ = __webpack_require__(4);
1750
1767
 
1751
1768
  // EXTERNAL MODULE: external "@splunk/ui-utils/filter"
1752
- var filter_ = __webpack_require__(23);
1769
+ var filter_ = __webpack_require__(24);
1753
1770
 
1754
1771
  // EXTERNAL MODULE: external "@splunk/ui-utils/id"
1755
1772
  var id_ = __webpack_require__(10);
@@ -1772,11 +1789,11 @@ var Link_default = /*#__PURE__*/__webpack_require__.n(Link_);
1772
1789
  var Menu_ = __webpack_require__(13);
1773
1790
 
1774
1791
  // EXTERNAL MODULE: external "@splunk/react-ui/ResultsMenu"
1775
- var ResultsMenu_ = __webpack_require__(39);
1792
+ var ResultsMenu_ = __webpack_require__(32);
1776
1793
  var ResultsMenu_default = /*#__PURE__*/__webpack_require__.n(ResultsMenu_);
1777
1794
 
1778
1795
  // EXTERNAL MODULE: external "@splunk/react-ui/Text"
1779
- var Text_ = __webpack_require__(26);
1796
+ var Text_ = __webpack_require__(21);
1780
1797
  var Text_default = /*#__PURE__*/__webpack_require__.n(Text_);
1781
1798
 
1782
1799
  // EXTERNAL MODULE: ./src/icons/CaretDown.tsx
@@ -1790,7 +1807,7 @@ var external_styled_components_ = __webpack_require__(3);
1790
1807
  var external_styled_components_default = /*#__PURE__*/__webpack_require__.n(external_styled_components_);
1791
1808
 
1792
1809
  // EXTERNAL MODULE: external "@splunk/react-ui/Button"
1793
- var Button_ = __webpack_require__(16);
1810
+ var Button_ = __webpack_require__(17);
1794
1811
  var Button_default = /*#__PURE__*/__webpack_require__.n(Button_);
1795
1812
 
1796
1813
  // EXTERNAL MODULE: external "@splunk/themes"
@@ -1956,6 +1973,8 @@ var propTypes = {
1956
1973
  placeholder: external_prop_types_default.a.string,
1957
1974
  prefixLabel: external_prop_types_default.a.string,
1958
1975
  prepend: external_prop_types_default.a.bool,
1976
+ repositionMode: external_prop_types_default.a.oneOf(['none', 'flip']),
1977
+ showSelectedValuesFirst: external_prop_types_default.a.oneOf(['nextOpen', 'immediately', 'never']),
1959
1978
  suffixLabel: external_prop_types_default.a.string,
1960
1979
  tabConfirmsNewValue: external_prop_types_default.a.bool,
1961
1980
  values: external_prop_types_default.a.array
@@ -1975,6 +1994,7 @@ var defaultProps = {
1975
1994
  noOptionsMessage: Object(i18n_["_"])('No matches'),
1976
1995
  placeholder: Object(i18n_["_"])('Select...'),
1977
1996
  prepend: false,
1997
+ repositionMode: 'flip',
1978
1998
  tabConfirmsNewValue: false
1979
1999
  };
1980
2000
 
@@ -2020,6 +2040,8 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2020
2040
 
2021
2041
  _defineProperty(_assertThisInitialized(_this), "menuId", void 0);
2022
2042
 
2043
+ _defineProperty(_assertThisInitialized(_this), "previousActiveIndex", null);
2044
+
2023
2045
  _defineProperty(_assertThisInitialized(_this), "selectedOptionCount", void 0);
2024
2046
 
2025
2047
  _defineProperty(_assertThisInitialized(_this), "handleSelectAll", function (e) {
@@ -2170,15 +2192,18 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2170
2192
  });
2171
2193
 
2172
2194
  _defineProperty(_assertThisInitialized(_this), "handleRequestOpen", function (e) {
2173
- var _this$getCurrentValue3, _this$props$onFilterC2, _this$props7;
2195
+ var newState = {
2196
+ open: true,
2197
+ topValues: _this.getTopValues()
2198
+ }; // SUI-3234: preserve existing behavior difference between <Select> and <Multiselect.Compact>
2199
+
2200
+ if (_this.props.multiple) {
2201
+ newState.filterKeyword = '';
2202
+ }
2174
2203
 
2175
- var multiple = _this.props.multiple;
2204
+ var oldFilterKeyword = _this.state.filterKeyword;
2176
2205
 
2177
- _this.setState({
2178
- open: true,
2179
- // in non-multiple mode, don't move values to the top of the list
2180
- topValues: multiple ? (_this$getCurrentValue3 = _this.getCurrentValues()) !== null && _this$getCurrentValue3 !== void 0 ? _this$getCurrentValue3 : [] : []
2181
- }, function () {
2206
+ _this.setState(newState, function () {
2182
2207
  var _this$props$onOpen, _this$props6;
2183
2208
 
2184
2209
  (_this$props$onOpen = (_this$props6 = _this.props).onOpen) === null || _this$props$onOpen === void 0 ? void 0 : _this$props$onOpen.call(_this$props6);
@@ -2192,10 +2217,14 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2192
2217
  activeIndex: (_this$firstSelectedOp = _this.firstSelectedOptionIndex) !== null && _this$firstSelectedOp !== void 0 ? _this$firstSelectedOp : 0
2193
2218
  });
2194
2219
  }
2195
- });
2196
2220
 
2197
- (_this$props$onFilterC2 = (_this$props7 = _this.props).onFilterChange) === null || _this$props$onFilterC2 === void 0 ? void 0 : _this$props$onFilterC2.call(_this$props7, e, {
2198
- keyword: ''
2221
+ if (oldFilterKeyword !== _this.state.filterKeyword) {
2222
+ var _this$props$onFilterC2, _this$props7;
2223
+
2224
+ (_this$props$onFilterC2 = (_this$props7 = _this.props).onFilterChange) === null || _this$props$onFilterC2 === void 0 ? void 0 : _this$props$onFilterC2.call(_this$props7, e, {
2225
+ keyword: _this.state.filterKeyword
2226
+ });
2227
+ }
2199
2228
  });
2200
2229
  });
2201
2230
 
@@ -2206,6 +2235,7 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2206
2235
  }, function () {
2207
2236
  var _this$props$onClose, _this$props8;
2208
2237
 
2238
+ _this.previousActiveIndex = null;
2209
2239
  (_this$props$onClose = (_this$props8 = _this.props).onClose) === null || _this$props$onClose === void 0 ? void 0 : _this$props$onClose.call(_this$props8);
2210
2240
  });
2211
2241
  });
@@ -2219,7 +2249,9 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2219
2249
  });
2220
2250
 
2221
2251
  _defineProperty(_assertThisInitialized(_this), "handleActiveOptionMount", function (c) {
2222
- c === null || c === void 0 ? void 0 : c.scrollIntoViewIfNeeded();
2252
+ if (_this.previousActiveIndex !== _this.state.activeIndex) {
2253
+ c === null || c === void 0 ? void 0 : c.scrollIntoViewIfNeeded();
2254
+ }
2223
2255
  });
2224
2256
 
2225
2257
  _defineProperty(_assertThisInitialized(_this), "handleSelectedItemMount", function (c) {
@@ -2230,11 +2262,12 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2230
2262
  var _this$state = _this.state,
2231
2263
  filterKeyword = _this$state.filterKeyword,
2232
2264
  textHasFocus = _this$state.textHasFocus,
2233
- topValues = _this$state.topValues;
2265
+ topValuesState = _this$state.topValues;
2234
2266
  var _this$props10 = _this.props,
2235
2267
  allowNewValues = _this$props10.allowNewValues,
2236
2268
  filter = _this$props10.filter,
2237
- multiple = _this$props10.multiple;
2269
+ multiple = _this$props10.multiple,
2270
+ showSelectedValuesFirst = _this$props10.showSelectedValuesFirst;
2238
2271
 
2239
2272
  var currentValues = _this.getCurrentValues();
2240
2273
 
@@ -2247,6 +2280,7 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2247
2280
  var hasDivider = false; // used to avoid overwriting the selected item ref in multiple mode
2248
2281
 
2249
2282
  var foundSelected;
2283
+ var topValues = showSelectedValuesFirst === 'immediately' ? _this.getTopValues() : topValuesState;
2250
2284
  var children = external_react_["Children"].toArray(_this.props.children).reduce(function (acc, item, i) {
2251
2285
  // ignore Headings and Dividers
2252
2286
  if (!isOption(item)) {
@@ -2453,12 +2487,13 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2453
2487
 
2454
2488
  _createClass(SelectBase, [{
2455
2489
  key: "componentDidUpdate",
2456
- value: function componentDidUpdate(prevProps) {
2490
+ value: function componentDidUpdate(prevProps, prevState) {
2457
2491
  if (false) {}
2458
2492
 
2459
2493
  if (false) {}
2460
2494
 
2461
2495
  SelectBase.validateAppearance(this.props);
2496
+ this.previousActiveIndex = prevState.activeIndex;
2462
2497
  }
2463
2498
  }, {
2464
2499
  key: "getCurrentValues",
@@ -2466,6 +2501,14 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2466
2501
  var values = this.isControlled() ? this.props.values : this.state.values;
2467
2502
  return this.props.multiple || values == null ? values : values.slice(0, 1);
2468
2503
  }
2504
+ }, {
2505
+ key: "getTopValues",
2506
+ value: function getTopValues() {
2507
+ var _this$getCurrentValue3;
2508
+
2509
+ // in non-multiple mode, don't move values to the top of the list
2510
+ return this.props.multiple && this.props.showSelectedValuesFirst !== 'never' ? (_this$getCurrentValue3 = this.getCurrentValues()) !== null && _this$getCurrentValue3 !== void 0 ? _this$getCurrentValue3 : [] : [];
2511
+ }
2469
2512
  }, {
2470
2513
  key: "isControlled",
2471
2514
  value: function isControlled() {
@@ -2612,6 +2655,7 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2612
2655
  multiple = _this$props14.multiple,
2613
2656
  placeholder = _this$props14.placeholder,
2614
2657
  prefixLabel = _this$props14.prefixLabel,
2658
+ repositionMode = _this$props14.repositionMode,
2615
2659
  suffixLabel = _this$props14.suffixLabel;
2616
2660
  var icon;
2617
2661
  var label;
@@ -2751,7 +2795,7 @@ var SelectBase_SelectBase = /*#__PURE__*/function (_Component) {
2751
2795
  onRequestOpen: this.handleRequestOpen,
2752
2796
  onRequestClose: this.handleRequestClose,
2753
2797
  open: this.state.open,
2754
- repositionMode: "flip",
2798
+ repositionMode: repositionMode,
2755
2799
  defaultPlacement: filterEnabled ? defaultPlacement : undefined,
2756
2800
  canCoverAnchor: window.innerHeight < 500,
2757
2801
  ref: function ref(c) {
@@ -2940,17 +2984,17 @@ module.exports = require("@splunk/react-ui/Box");
2940
2984
 
2941
2985
  /***/ }),
2942
2986
 
2943
- /***/ 89:
2987
+ /***/ 9:
2944
2988
  /***/ (function(module, exports) {
2945
2989
 
2946
- module.exports = require("@splunk/react-ui/Chip");
2990
+ module.exports = require("@splunk/ui-utils/keyboard");
2947
2991
 
2948
2992
  /***/ }),
2949
2993
 
2950
- /***/ 9:
2994
+ /***/ 92:
2951
2995
  /***/ (function(module, exports) {
2952
2996
 
2953
- module.exports = require("@splunk/ui-utils/keyboard");
2997
+ module.exports = require("@splunk/react-ui/Chip");
2954
2998
 
2955
2999
  /***/ })
2956
3000