@splunk/react-ui 4.13.0 → 4.15.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 (144) hide show
  1. package/.dockerignore +2 -0
  2. package/Accordion.js +41 -16
  3. package/Anchor.js +9 -9
  4. package/Animation.js +6 -6
  5. package/AnimationToggle.js +2 -2
  6. package/Box.js +9 -9
  7. package/Button.js +47 -46
  8. package/ButtonGroup.js +9 -9
  9. package/ButtonSimple.js +14 -14
  10. package/CHANGELOG.md +46 -1
  11. package/Calendar.js +460 -147
  12. package/Card.js +85 -83
  13. package/CardLayout.js +9 -9
  14. package/Chip.js +23 -23
  15. package/Clickable.js +39 -15
  16. package/CloseButton.js +23 -23
  17. package/Code.js +484 -436
  18. package/CollapsiblePanel.js +64 -35
  19. package/Color.js +298 -188
  20. package/ColumnLayout.js +18 -17
  21. package/ComboBox.js +81 -32
  22. package/Concertina.js +89 -28
  23. package/ControlGroup.js +85 -27
  24. package/Date.js +134 -58
  25. package/DefinitionList.js +14 -8
  26. package/Divider.d.ts +2 -0
  27. package/Divider.js +194 -0
  28. package/Dockerfile.enterprise.storybook +7 -0
  29. package/Dockerfile.prisma.storybook +7 -0
  30. package/Dockerfile.visual +10 -0
  31. package/Dropdown.js +79 -19
  32. package/EventListener.js +17 -17
  33. package/File.js +96 -43
  34. package/FormRows.js +40 -39
  35. package/Heading.js +83 -55
  36. package/Image.js +67 -42
  37. package/JSONTree.js +106 -21
  38. package/Layer.js +130 -28
  39. package/Link.js +17 -17
  40. package/List.js +3 -3
  41. package/Markdown.js +71 -65
  42. package/Menu.js +155 -121
  43. package/Message.js +135 -135
  44. package/MessageBar.js +136 -136
  45. package/Modal.js +99 -48
  46. package/ModalLayer.js +15 -15
  47. package/Monogram.js +18 -17
  48. package/Multiselect.js +2788 -2310
  49. package/Number.js +76 -37
  50. package/Paginator.js +99 -86
  51. package/Paragraph.js +10 -10
  52. package/Popover.js +343 -48
  53. package/Progress.js +23 -22
  54. package/RadioBar.js +32 -14
  55. package/RadioList.js +17 -11
  56. package/Resize.js +34 -21
  57. package/ResultsMenu.js +44 -31
  58. package/ScreenReaderContent.js +9 -9
  59. package/Scroll.js +52 -27
  60. package/ScrollContainerContext.js +157 -6
  61. package/Search.js +71 -34
  62. package/Select.js +347 -69
  63. package/SidePanel.js +37 -24
  64. package/Slider.js +50 -20
  65. package/SlidingPanels.js +56 -18
  66. package/SplitButton.js +27 -26
  67. package/StaticContent.js +9 -9
  68. package/StepBar.js +22 -22
  69. package/Switch.js +18 -13
  70. package/TabBar.js +28 -28
  71. package/TabLayout.js +43 -18
  72. package/Table.js +549 -158
  73. package/Text.js +93 -50
  74. package/TextArea.d.ts +2 -0
  75. package/TextArea.js +134 -56
  76. package/Tooltip.js +246 -63
  77. package/TransitionOpen.js +63 -26
  78. package/Typography.d.ts +2 -0
  79. package/Typography.js +17 -16
  80. package/WaitSpinner.js +15 -81
  81. package/docker-compose.yml +42 -0
  82. package/package.json +20 -20
  83. package/test-runner-jest.config.js +23 -5
  84. package/types/src/Accordion/AccordionContext.d.ts +1 -0
  85. package/types/src/Button/docs/examples/Selected.d.ts +2 -2
  86. package/types/src/ButtonGroup/ButtonGroupContext.d.ts +1 -0
  87. package/types/src/Calendar/Calendar.d.ts +17 -2
  88. package/types/src/Calendar/DateTable.d.ts +7 -3
  89. package/types/src/Calendar/Day.d.ts +14 -5
  90. package/types/src/CardLayout/CardLayoutContext.d.ts +1 -0
  91. package/types/src/CollapsiblePanel/CollapsiblePanel.d.ts +7 -3
  92. package/types/src/Concertina/ConcertinaContext.d.ts +1 -0
  93. package/types/src/ControlGroup/ControlGroup.d.ts +15 -8
  94. package/types/src/ControlGroup/docs/examples/HelpWithErrorText.d.ts +2 -0
  95. package/types/src/ControlGroup/docs/examples/Required.d.ts +2 -0
  96. package/types/src/Date/Date.d.ts +17 -8
  97. package/types/src/Date/docs/examples/CustomDate.d.ts +2 -2
  98. package/types/src/Date/docs/examples/Disabled.d.ts +2 -2
  99. package/types/src/Date/docs/examples/prisma/WithoutCalendar.d.ts +2 -0
  100. package/types/src/Divider/Divider.d.ts +20 -0
  101. package/types/src/Divider/docs/examples/AriaHidden.d.ts +2 -0
  102. package/types/src/Divider/docs/examples/Basic.d.ts +2 -0
  103. package/types/src/Divider/docs/examples/CustomStyle.d.ts +2 -0
  104. package/types/src/Divider/docs/examples/Vertical.d.ts +2 -0
  105. package/types/src/Divider/index.d.ts +1 -0
  106. package/types/src/File/File.d.ts +4 -2
  107. package/types/src/File/FileContext.d.ts +1 -0
  108. package/types/src/FormRows/FormRowsContext.d.ts +1 -0
  109. package/types/src/Markdown/renderers/MarkdownLink.d.ts +1 -1
  110. package/types/src/Menu/MenuContext.d.ts +1 -0
  111. package/types/src/Modal/Modal.d.ts +7 -3
  112. package/types/src/Modal/ModalContext.d.ts +2 -0
  113. package/types/src/Multiselect/Compact.d.ts +10 -1
  114. package/types/src/Multiselect/Multiselect.d.ts +12 -1
  115. package/types/src/Multiselect/Normal.d.ts +2 -0
  116. package/types/src/Number/Number.d.ts +5 -1
  117. package/types/src/Popover/Popover.d.ts +25 -5
  118. package/types/src/Popover/PopoverContext.d.ts +1 -0
  119. package/types/src/RadioBar/RadioBar.d.ts +5 -3
  120. package/types/src/RadioBar/RadioBarContext.d.ts +1 -0
  121. package/types/src/RadioList/RadioList.d.ts +5 -1
  122. package/types/src/RadioList/RadioListContext.d.ts +1 -0
  123. package/types/src/Select/SelectBase.d.ts +2 -0
  124. package/types/src/Slider/Slider.d.ts +5 -3
  125. package/types/src/SplitButton/docs/examples/Disabled.d.ts +1 -1
  126. package/types/src/SplitButton/docs/examples/prisma/Disabled.d.ts +1 -1
  127. package/types/src/StepBar/StepBarContext.d.ts +1 -0
  128. package/types/src/Switch/Switch.d.ts +2 -0
  129. package/types/src/TabBar/TabBarContext.d.ts +1 -0
  130. package/types/src/Table/Head.d.ts +2 -0
  131. package/types/src/Table/TableContext.d.ts +1 -0
  132. package/types/src/Table/docs/examples/FilterColumnValues.d.ts +14 -0
  133. package/types/src/Text/Text.d.ts +5 -3
  134. package/types/src/TextArea/TextArea.d.ts +5 -3
  135. package/types/src/Tooltip/Tooltip.d.ts +26 -9
  136. package/types/src/TransitionOpen/TransitionOpen.d.ts +7 -3
  137. package/types/src/WaitSpinner/WaitSpinner.d.ts +1 -1
  138. package/types/src/useForceUpdate/useForceUpdate.d.ts +1 -0
  139. package/types/src/useKeyPress/index.d.ts +37 -0
  140. package/useForceUpdate.js +9 -9
  141. package/{useIsSsr.js → useKeyPress.js} +56 -49
  142. package/usePrevious.js +9 -9
  143. package/types/src/useIsSsr/index.d.ts +0 -2
  144. package/types/src/useIsSsr/useIsSsr.d.ts +0 -8
package/ControlGroup.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 = 139);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 191);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
@@ -101,14 +101,21 @@ module.exports = require("prop-types");
101
101
 
102
102
  /***/ }),
103
103
 
104
- /***/ 10:
104
+ /***/ 13:
105
105
  /***/ (function(module, exports) {
106
106
 
107
107
  module.exports = require("@splunk/ui-utils/id");
108
108
 
109
109
  /***/ }),
110
110
 
111
- /***/ 139:
111
+ /***/ 16:
112
+ /***/ (function(module, exports) {
113
+
114
+ module.exports = require("@splunk/react-ui/ScreenReaderContent");
115
+
116
+ /***/ }),
117
+
118
+ /***/ 191:
112
119
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
113
120
 
114
121
  "use strict";
@@ -127,25 +134,30 @@ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_)
127
134
  var external_prop_types_ = __webpack_require__(1);
128
135
  var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_);
129
136
 
130
- // EXTERNAL MODULE: external "lodash"
131
- var external_lodash_ = __webpack_require__(4);
137
+ // EXTERNAL MODULE: external "lodash/find"
138
+ var find_ = __webpack_require__(57);
139
+ var find_default = /*#__PURE__*/__webpack_require__.n(find_);
140
+
141
+ // EXTERNAL MODULE: external "lodash/isFinite"
142
+ var isFinite_ = __webpack_require__(21);
143
+ var isFinite_default = /*#__PURE__*/__webpack_require__.n(isFinite_);
132
144
 
133
145
  // EXTERNAL MODULE: external "@splunk/themes"
134
146
  var themes_ = __webpack_require__(0);
135
147
 
136
148
  // EXTERNAL MODULE: external "@splunk/ui-utils/id"
137
- var id_ = __webpack_require__(10);
149
+ var id_ = __webpack_require__(13);
138
150
 
139
151
  // EXTERNAL MODULE: external "@splunk/react-ui/Box"
140
152
  var Box_ = __webpack_require__(8);
141
153
  var Box_default = /*#__PURE__*/__webpack_require__.n(Box_);
142
154
 
143
155
  // EXTERNAL MODULE: external "@splunk/react-ui/ScreenReaderContent"
144
- var ScreenReaderContent_ = __webpack_require__(14);
156
+ var ScreenReaderContent_ = __webpack_require__(16);
145
157
  var ScreenReaderContent_default = /*#__PURE__*/__webpack_require__.n(ScreenReaderContent_);
146
158
 
147
159
  // EXTERNAL MODULE: external "@splunk/react-ui/Tooltip"
148
- var Tooltip_ = __webpack_require__(50);
160
+ var Tooltip_ = __webpack_require__(67);
149
161
  var Tooltip_default = /*#__PURE__*/__webpack_require__.n(Tooltip_);
150
162
 
151
163
  // EXTERNAL MODULE: external "styled-components"
@@ -219,10 +231,27 @@ var StyledLabel = external_styled_components_default.a.label.withConfig({
219
231
  var StyledHelp = external_styled_components_default.a.div.withConfig({
220
232
  displayName: "ControlGroupStyles__StyledHelp",
221
233
  componentId: "wjnyif-5"
222
- })(["", ";font-size:", ";color:", ";margin-top:", ";[aria-invalid] > &{color:inherit;}"], themes_["mixins"].reset('block'), themes_["variables"].fontSizeSmall, themes_["variables"].contentColorMuted, Object(themes_["pick"])({
234
+ })(["", ";font-size:", ";color:", ";margin-top:", ";", ""], themes_["mixins"].reset('block'), themes_["variables"].fontSizeSmall, themes_["variables"].contentColorMuted, Object(themes_["pick"])({
223
235
  enterprise: '2px',
224
236
  prisma: '4px'
225
- }));
237
+ }), function (_ref3) {
238
+ var $error = _ref3.$error;
239
+ return $error && Object(external_styled_components_["css"])(["color:inherit;"]);
240
+ });
241
+ var StyledErrorText = external_styled_components_default.a.div.withConfig({
242
+ displayName: "ControlGroupStyles__StyledErrorText",
243
+ componentId: "wjnyif-6"
244
+ })(["", ";font-size:", ";[aria-invalid] > &{color:inherit;}", ""], themes_["mixins"].reset('block'), themes_["variables"].fontSizeSmall, function (_ref4) {
245
+ var $help = _ref4.$help;
246
+ return !$help && Object(external_styled_components_["css"])(["margin-top:", ";"], Object(themes_["pick"])({
247
+ enterprise: '2px',
248
+ prisma: '4px'
249
+ }));
250
+ });
251
+ var StyledAsterisk = external_styled_components_default.a.span.withConfig({
252
+ displayName: "ControlGroupStyles__StyledAsterisk",
253
+ componentId: "wjnyif-7"
254
+ })(["color:inherit;margin-right:2px;"]);
226
255
 
227
256
  // CONCATENATED MODULE: ./src/ControlGroup/ControlGroupContext.tsx
228
257
 
@@ -291,19 +320,21 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
291
320
 
292
321
 
293
322
 
323
+
294
324
  // props ControlGroup may access and/or override on children
295
325
 
296
326
  var propTypes = {
297
327
  children: external_prop_types_default.a.node,
298
328
  controlsLayout: external_prop_types_default.a.oneOf(['fill', 'fillJoin', 'none', 'stack']),
299
329
  elementRef: external_prop_types_default.a.oneOfType([external_prop_types_default.a.func, external_prop_types_default.a.object]),
300
- error: external_prop_types_default.a.bool,
330
+ error: external_prop_types_default.a.oneOfType([external_prop_types_default.a.bool, external_prop_types_default.a.string]),
301
331
  help: external_prop_types_default.a.node,
302
332
  hideLabel: external_prop_types_default.a.bool,
303
333
  label: external_prop_types_default.a.string.isRequired,
304
334
  labelFor: external_prop_types_default.a.string,
305
335
  labelPosition: external_prop_types_default.a.oneOf(['left', 'top']),
306
336
  labelWidth: external_prop_types_default.a.oneOfType([external_prop_types_default.a.number, external_prop_types_default.a.string]),
337
+ required: external_prop_types_default.a.bool,
307
338
  size: external_prop_types_default.a.oneOf(['small', 'medium']),
308
339
 
309
340
  /** @private */
@@ -317,6 +348,7 @@ var defaultProps = {
317
348
  hideLabel: false,
318
349
  labelPosition: 'left',
319
350
  labelWidth: 120,
351
+ required: false,
320
352
  size: 'medium'
321
353
  };
322
354
  // Style cloned onto child elements when fill behavior set.
@@ -359,6 +391,8 @@ var ControlGroup_ControlGroup = /*#__PURE__*/function (_Component) {
359
391
 
360
392
  _this = _super.call(this, props);
361
393
 
394
+ _defineProperty(_assertThisInitialized(_this), "errorId", void 0);
395
+
362
396
  _defineProperty(_assertThisInitialized(_this), "helpId", void 0);
363
397
 
364
398
  _defineProperty(_assertThisInitialized(_this), "labelId", void 0);
@@ -407,7 +441,7 @@ var ControlGroup_ControlGroup = /*#__PURE__*/function (_Component) {
407
441
  var _components = _slicedToArray(components, 1),
408
442
  firstChild = _components[0];
409
443
 
410
- var firstText = Object(external_lodash_["find"])(components, function (comp) {
444
+ var firstText = find_default()(components, function (comp) {
411
445
  return comp.type && comp.type.componentType === 'Text';
412
446
  });
413
447
 
@@ -429,11 +463,15 @@ var ControlGroup_ControlGroup = /*#__PURE__*/function (_Component) {
429
463
  return undefined;
430
464
  });
431
465
 
432
- _this.labelId = Object(id_["createDOMID"])('label');
466
+ _this.errorId = Object(id_["createDOMID"])('error');
433
467
  _this.helpId = Object(id_["createDOMID"])('help');
468
+ _this.labelId = Object(id_["createDOMID"])('label');
434
469
  _this.contextValue = _this.createContextValue();
435
470
  _this.childIds = {};
436
471
  _this.stackLayoutChildStyle = {};
472
+
473
+ if (false) {}
474
+
437
475
  return _this;
438
476
  }
439
477
 
@@ -482,11 +520,12 @@ var ControlGroup_ControlGroup = /*#__PURE__*/function (_Component) {
482
520
  labelFor = _this$props.labelFor,
483
521
  labelPosition = _this$props.labelPosition,
484
522
  labelWidth = _this$props.labelWidth,
523
+ required = _this$props.required,
485
524
  size = _this$props.size,
486
525
  splunkTheme = _this$props.splunkTheme,
487
526
  tooltip = _this$props.tooltip,
488
527
  tooltipDefaultPlacement = _this$props.tooltipDefaultPlacement,
489
- otherProps = _objectWithoutProperties(_this$props, ["children", "controlsLayout", "error", "help", "hideLabel", "label", "labelFor", "labelPosition", "labelWidth", "size", "splunkTheme", "tooltip", "tooltipDefaultPlacement"]);
528
+ otherProps = _objectWithoutProperties(_this$props, ["children", "controlsLayout", "error", "help", "hideLabel", "label", "labelFor", "labelPosition", "labelWidth", "required", "size", "splunkTheme", "tooltip", "tooltipDefaultPlacement"]);
490
529
 
491
530
  var isPrisma = splunkTheme.isPrisma,
492
531
  isCompact = splunkTheme.isCompact;
@@ -530,8 +569,16 @@ var ControlGroup_ControlGroup = /*#__PURE__*/function (_Component) {
530
569
 
531
570
  cloneProps.labelledBy = _this2.labelId;
532
571
 
533
- if (_this2.props.help) {
572
+ if (_this2.props.help && typeof _this2.props.error === 'boolean') {
534
573
  cloneProps.describedBy = _this2.helpId;
574
+ } else if (_this2.props.help && typeof _this2.props.error === 'string') {
575
+ cloneProps.describedBy = "".concat(_this2.helpId, " ").concat(_this2.errorId);
576
+ } else if (!_this2.props.help && typeof _this2.props.error === 'string') {
577
+ cloneProps.describedBy = _this2.errorId;
578
+ }
579
+
580
+ if (_this2.props.required) {
581
+ cloneProps.required = true;
535
582
  } // TODO: SUI-3402 refactor so that parent component doesn't have to know what it's child components are
536
583
 
537
584
 
@@ -572,7 +619,7 @@ var ControlGroup_ControlGroup = /*#__PURE__*/function (_Component) {
572
619
  var labelWidthStyle = labelPosition === 'left' ? {
573
620
  width: labelWidth
574
621
  } : undefined;
575
- var labelWidthString = Object(external_lodash_["isFinite"])(labelWidth) ? "".concat(labelWidth, "px") : labelWidth;
622
+ var labelWidthString = isFinite_default()(labelWidth) ? "".concat(labelWidth, "px") : labelWidth;
576
623
  var labelMargin = isPrisma ? '16px' : '20px';
577
624
  var contentMarginStyle = labelPosition === 'left' ? {
578
625
  marginLeft: "calc(".concat(labelWidthString, " + ").concat(labelMargin, ")")
@@ -588,14 +635,19 @@ var ControlGroup_ControlGroup = /*#__PURE__*/function (_Component) {
588
635
  id: this.labelId,
589
636
  htmlFor: labelFor || defaultLinkedId,
590
637
  $tooltip: !!tooltip
591
- }, label, !isPrisma && !hideLabel && tooltip && /*#__PURE__*/external_react_default.a.createElement("span", null, "\xA0"), !hideLabel && tooltip && /*#__PURE__*/external_react_default.a.createElement(ScreenReaderContent_default.a, null, tooltip)), !hideLabel && tooltip && /*#__PURE__*/external_react_default.a.createElement(Tooltip_default.a, {
638
+ }, required && /*#__PURE__*/external_react_default.a.createElement(StyledAsterisk, {
639
+ "aria-hidden": "true"
640
+ }, "*"), label, !isPrisma && !hideLabel && tooltip && /*#__PURE__*/external_react_default.a.createElement("span", null, "\xA0"), !hideLabel && tooltip && /*#__PURE__*/external_react_default.a.createElement(ScreenReaderContent_default.a, null, tooltip)), !hideLabel && tooltip && /*#__PURE__*/external_react_default.a.createElement(Tooltip_default.a, {
641
+ closeWhen: "notOnClick",
592
642
  content: tooltip,
593
643
  defaultPlacement: tooltipDefaultPlacement,
594
644
  "aria-hidden": "true"
595
645
  }));
646
+ var isError = typeof error === 'string' || error === true;
647
+ var isErrorBoolean = typeof error === 'boolean';
596
648
  return /*#__PURE__*/external_react_default.a.createElement(StyledBox, _extends({
597
649
  "data-test": "control-group",
598
- $error: error
650
+ $error: isError
599
651
  }, writableOtherProps), /*#__PURE__*/external_react_default.a.createElement(ControlGroup_ControlGroupContext.Provider, {
600
652
  value: this.getContextValue()
601
653
  }, hideLabel ? /*#__PURE__*/external_react_default.a.createElement(ScreenReaderContent_default.a, null, styledLabel) : styledLabel, /*#__PURE__*/external_react_default.a.createElement(StyledControlsComponent, {
@@ -605,8 +657,14 @@ var ControlGroup_ControlGroup = /*#__PURE__*/function (_Component) {
605
657
  }, childrenFormatted), help && /*#__PURE__*/external_react_default.a.createElement(StyledHelp, {
606
658
  "data-test": "help",
607
659
  id: this.helpId,
608
- style: contentMarginStyle
609
- }, help)));
660
+ style: contentMarginStyle,
661
+ $error: isError && isErrorBoolean
662
+ }, help), isError && !isErrorBoolean && /*#__PURE__*/external_react_default.a.createElement(StyledErrorText, {
663
+ "data-test": "error",
664
+ id: this.errorId,
665
+ style: contentMarginStyle,
666
+ $help: !!help
667
+ }, error)));
610
668
  }
611
669
  }]);
612
670
 
@@ -627,17 +685,17 @@ ControlGroupWithTheme.propTypes = ControlGroup_ControlGroup.propTypes;
627
685
 
628
686
  /***/ }),
629
687
 
630
- /***/ 14:
688
+ /***/ 2:
631
689
  /***/ (function(module, exports) {
632
690
 
633
- module.exports = require("@splunk/react-ui/ScreenReaderContent");
691
+ module.exports = require("react");
634
692
 
635
693
  /***/ }),
636
694
 
637
- /***/ 2:
695
+ /***/ 21:
638
696
  /***/ (function(module, exports) {
639
697
 
640
- module.exports = require("react");
698
+ module.exports = require("lodash/isFinite");
641
699
 
642
700
  /***/ }),
643
701
 
@@ -648,14 +706,14 @@ module.exports = require("styled-components");
648
706
 
649
707
  /***/ }),
650
708
 
651
- /***/ 4:
709
+ /***/ 57:
652
710
  /***/ (function(module, exports) {
653
711
 
654
- module.exports = require("lodash");
712
+ module.exports = require("lodash/find");
655
713
 
656
714
  /***/ }),
657
715
 
658
- /***/ 50:
716
+ /***/ 67:
659
717
  /***/ (function(module, exports) {
660
718
 
661
719
  module.exports = require("@splunk/react-ui/Tooltip");