@splunk/react-ui 4.14.0 → 4.16.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 (137) 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 +54 -51
  8. package/ButtonGroup.js +9 -9
  9. package/ButtonSimple.js +68 -64
  10. package/CHANGELOG.md +46 -0
  11. package/Calendar.js +124 -106
  12. package/Card.js +68 -68
  13. package/CardLayout.js +9 -9
  14. package/Chip.js +22 -22
  15. package/Clickable.js +38 -14
  16. package/CloseButton.js +23 -23
  17. package/Code.js +484 -436
  18. package/CollapsiblePanel.js +59 -34
  19. package/Color.js +297 -187
  20. package/ColumnLayout.js +18 -17
  21. package/ComboBox.js +81 -32
  22. package/Concertina.js +88 -27
  23. package/ControlGroup.js +81 -24
  24. package/Date.js +54 -36
  25. package/DefinitionList.js +14 -8
  26. package/Divider.d.ts +2 -0
  27. package/Divider.js +9 -9
  28. package/Dockerfile.enterprise.storybook +7 -0
  29. package/Dockerfile.prisma.storybook +7 -0
  30. package/Dockerfile.visual +10 -0
  31. package/Dropdown.js +78 -18
  32. package/EventListener.js +17 -17
  33. package/File.js +108 -46
  34. package/FormRows.js +38 -37
  35. package/Heading.js +83 -55
  36. package/Image.js +63 -38
  37. package/JSONTree.js +106 -21
  38. package/Layer.js +59 -34
  39. package/Link.js +17 -17
  40. package/List.js +3 -3
  41. package/MIGRATION.md +21 -0
  42. package/Markdown.js +71 -65
  43. package/Menu.js +155 -121
  44. package/Message.js +129 -129
  45. package/MessageBar.js +136 -136
  46. package/Modal.js +57 -32
  47. package/ModalLayer.js +15 -15
  48. package/Monogram.js +18 -17
  49. package/Multiselect.js +2807 -2310
  50. package/Number.js +74 -37
  51. package/Paginator.js +96 -83
  52. package/Paragraph.js +10 -10
  53. package/Popover.js +191 -54
  54. package/Progress.js +23 -22
  55. package/RadioBar.js +32 -14
  56. package/RadioList.js +17 -11
  57. package/Resize.js +33 -20
  58. package/ResultsMenu.js +36 -23
  59. package/ScreenReaderContent.js +9 -9
  60. package/Scroll.js +51 -26
  61. package/ScrollContainerContext.js +48 -48
  62. package/Search.js +68 -31
  63. package/Select.js +501 -204
  64. package/SidePanel.js +37 -24
  65. package/Slider.js +54 -24
  66. package/SlidingPanels.js +52 -14
  67. package/SplitButton.js +23 -22
  68. package/StaticContent.js +9 -9
  69. package/StepBar.js +22 -22
  70. package/Switch.js +18 -13
  71. package/TabBar.js +22 -22
  72. package/TabLayout.js +46 -18
  73. package/Table.js +424 -166
  74. package/Text.js +91 -49
  75. package/TextArea.d.ts +2 -0
  76. package/TextArea.js +127 -49
  77. package/Tooltip.js +236 -59
  78. package/TransitionOpen.js +39 -26
  79. package/Typography.d.ts +2 -0
  80. package/Typography.js +18 -17
  81. package/WaitSpinner.js +15 -15
  82. package/docker-compose.yml +42 -0
  83. package/package.json +13 -12
  84. package/test-runner-jest.config.js +11 -6
  85. package/types/src/Accordion/AccordionContext.d.ts +1 -0
  86. package/types/src/Button/Button.d.ts +5 -2
  87. package/types/src/Button/docs/examples/Basic.d.ts +2 -2
  88. package/types/src/Button/docs/examples/Selected.d.ts +2 -2
  89. package/types/src/ButtonGroup/ButtonGroupContext.d.ts +1 -0
  90. package/types/src/ButtonSimple/ButtonSimple.d.ts +10 -11
  91. package/types/src/Calendar/Calendar.d.ts +2 -0
  92. package/types/src/CardLayout/CardLayoutContext.d.ts +1 -0
  93. package/types/src/Concertina/ConcertinaContext.d.ts +1 -0
  94. package/types/src/ControlGroup/ControlGroup.d.ts +15 -8
  95. package/types/src/ControlGroup/docs/examples/HelpWithErrorText.d.ts +2 -0
  96. package/types/src/ControlGroup/docs/examples/Required.d.ts +2 -0
  97. package/types/src/File/File.d.ts +4 -2
  98. package/types/src/File/FileContext.d.ts +1 -0
  99. package/types/src/FormRows/FormRowsContext.d.ts +1 -0
  100. package/types/src/Markdown/renderers/MarkdownLink.d.ts +1 -1
  101. package/types/src/Menu/MenuContext.d.ts +1 -0
  102. package/types/src/Modal/ModalContext.d.ts +1 -0
  103. package/types/src/Multiselect/Compact.d.ts +14 -1
  104. package/types/src/Multiselect/Multiselect.d.ts +15 -1
  105. package/types/src/Multiselect/Normal.d.ts +2 -0
  106. package/types/src/Popover/Popover.d.ts +25 -5
  107. package/types/src/Popover/PopoverContext.d.ts +1 -0
  108. package/types/src/RadioBar/RadioBar.d.ts +5 -3
  109. package/types/src/RadioBar/RadioBarContext.d.ts +1 -0
  110. package/types/src/RadioList/RadioList.d.ts +5 -1
  111. package/types/src/RadioList/RadioListContext.d.ts +1 -0
  112. package/types/src/Select/Select.d.ts +3 -1
  113. package/types/src/Select/SelectBase.d.ts +14 -0
  114. package/types/src/Slider/Slider.d.ts +5 -3
  115. package/types/src/StepBar/StepBarContext.d.ts +1 -0
  116. package/types/src/Switch/Switch.d.ts +2 -0
  117. package/types/src/TabBar/TabBarContext.d.ts +1 -0
  118. package/types/src/TabLayout/Panel.d.ts +3 -0
  119. package/types/src/TabLayout/TabLayout.d.ts +2 -0
  120. package/types/src/Table/Body.d.ts +2 -0
  121. package/types/src/Table/Head.d.ts +2 -0
  122. package/types/src/Table/Row.d.ts +11 -3
  123. package/types/src/Table/Table.d.ts +5 -3
  124. package/types/src/Table/TableContext.d.ts +1 -0
  125. package/types/src/Text/Text.d.ts +5 -3
  126. package/types/src/TextArea/TextArea.d.ts +5 -3
  127. package/types/src/Tooltip/Tooltip.d.ts +16 -4
  128. package/types/src/Typography/Typography.d.ts +1 -1
  129. package/types/src/useForceUpdate/useForceUpdate.d.ts +1 -0
  130. package/useForceUpdate.js +9 -9
  131. package/useKeyPress.js +2 -2
  132. package/usePrevious.js +9 -9
  133. package/.storybook-visual/config/snapshotResolver.js +0 -29
  134. package/.storybook-visual/main.js +0 -22
  135. package/.storybook-visual/preview.jsx +0 -31
  136. package/.storybook-visual/scripts/test.sh +0 -108
  137. package/.storybook-visual/test-runner.js +0 -108
package/ButtonSimple.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 = 135);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 184);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
@@ -101,14 +101,21 @@ module.exports = require("prop-types");
101
101
 
102
102
  /***/ }),
103
103
 
104
- /***/ 12:
104
+ /***/ 14:
105
105
  /***/ (function(module, exports) {
106
106
 
107
107
  module.exports = require("@splunk/react-ui/Clickable");
108
108
 
109
109
  /***/ }),
110
110
 
111
- /***/ 135:
111
+ /***/ 16:
112
+ /***/ (function(module, exports) {
113
+
114
+ module.exports = require("@splunk/react-ui/ScreenReaderContent");
115
+
116
+ /***/ }),
117
+
118
+ /***/ 184:
112
119
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
113
120
 
114
121
  "use strict";
@@ -127,13 +134,13 @@ var external_prop_types_ = __webpack_require__(1);
127
134
  var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_);
128
135
 
129
136
  // EXTERNAL MODULE: external "@splunk/ui-utils/i18n"
130
- var i18n_ = __webpack_require__(5);
137
+ var i18n_ = __webpack_require__(4);
131
138
 
132
139
  // EXTERNAL MODULE: external "@splunk/themes"
133
140
  var themes_ = __webpack_require__(0);
134
141
 
135
142
  // EXTERNAL MODULE: external "@splunk/react-ui/ScreenReaderContent"
136
- var ScreenReaderContent_ = __webpack_require__(14);
143
+ var ScreenReaderContent_ = __webpack_require__(16);
137
144
  var ScreenReaderContent_default = /*#__PURE__*/__webpack_require__.n(ScreenReaderContent_);
138
145
 
139
146
  // EXTERNAL MODULE: external "styled-components"
@@ -141,7 +148,7 @@ var external_styled_components_ = __webpack_require__(3);
141
148
  var external_styled_components_default = /*#__PURE__*/__webpack_require__.n(external_styled_components_);
142
149
 
143
150
  // EXTERNAL MODULE: external "@splunk/react-ui/Clickable"
144
- var Clickable_ = __webpack_require__(12);
151
+ var Clickable_ = __webpack_require__(14);
145
152
  var Clickable_default = /*#__PURE__*/__webpack_require__.n(Clickable_);
146
153
 
147
154
  // CONCATENATED MODULE: ./src/ButtonSimple/prismaStyles.ts
@@ -300,15 +307,15 @@ var enterprisePrimary = Object(external_styled_components_["css"])(["", ";font-w
300
307
  var $selected = _ref9.$selected;
301
308
  return $selected && Object(external_styled_components_["css"])(["box-shadow:", ";background-color:", ";"], primarySelectedShadow, themes_["variables"].brandColorD20);
302
309
  });
303
- var enterpriseError = Object(external_styled_components_["css"])(["", ";font-weight:", ";", " &:not([disabled]){background-color:", ";color:", ";box-shadow:", ";transition:background-image 0.2s,border 0.2s,box-shadow 0.2s,text-decoration 0.2s;", " ", " &:hover{background-color:", ";}&:active{background-color:", ";transition:none;}&:focus{box-shadow:", ",", ";&:active{background-color:", ";transition:none;}}}&[disabled]{color:", ";background-color:", ";cursor:not-allowed;", "}"], enterpriseStyles_common, themes_["variables"].fontWeightSemiBold, enterpriseStyles_appendPrepend, themes_["variables"].errorColor, themes_["variables"].white, primaryShadow, function (_ref10) {
310
+ var enterpriseError = Object(external_styled_components_["css"])(["", ";font-weight:", ";", " &:not([disabled]){background-color:", ";color:", ";box-shadow:", ";transition:background-image 0.2s,border 0.2s,box-shadow 0.2s,text-decoration 0.2s;", " ", " &:hover{background-color:", ";}&:active{background-color:", ";transition:none;}&:focus{box-shadow:", ",", ";&:active{background-color:", ";transition:none;}}}&[disabled]{color:", ";background-color:", ";cursor:not-allowed;", "}"], enterpriseStyles_common, themes_["variables"].fontWeightSemiBold, enterpriseStyles_appendPrepend, themes_["variables"].errorColorD10, themes_["variables"].white, primaryShadow, function (_ref10) {
304
311
  var $selected = _ref10.$selected;
305
- return $selected && Object(external_styled_components_["css"])(["box-shadow:", ";background-color:", ";"], primarySelectedShadow, themes_["variables"].errorColorD20);
312
+ return $selected && Object(external_styled_components_["css"])(["box-shadow:", ";background-color:", ";"], primarySelectedShadow, themes_["variables"].errorColorD30);
306
313
  }, function (_ref11) {
307
314
  var $prepend = _ref11.$prepend;
308
- return $prepend && Object(external_styled_components_["css"])(["border-left:1px solid ", ";"], themes_["variables"].errorColorD20);
309
- }, themes_["variables"].errorColorD20, themes_["variables"].errorColorD30, primaryShadow, themes_["variables"].focusShadow, themes_["variables"].errorColorD30, themes_["variables"].errorColorL30, themes_["variables"].errorColorL10, function (_ref12) {
315
+ return $prepend && Object(external_styled_components_["css"])(["border-left:1px solid ", ";"], themes_["variables"].errorColorD30);
316
+ }, themes_["variables"].errorColorD30, themes_["variables"].errorColorD40, primaryShadow, themes_["variables"].focusShadow, themes_["variables"].errorColorD40, themes_["variables"].errorColorL10, themes_["variables"].errorColorD10, function (_ref12) {
310
317
  var $selected = _ref12.$selected;
311
- return $selected && Object(external_styled_components_["css"])(["box-shadow:", ";background-color:", ";"], primarySelectedShadow, themes_["variables"].errorColorD20);
318
+ return $selected && Object(external_styled_components_["css"])(["box-shadow:", ";background-color:", ";"], primarySelectedShadow, themes_["variables"].errorColorD40);
312
319
  });
313
320
  var enterprisePill = Object(external_styled_components_["css"])(["", ";color:", ";border:1px solid transparent;&:not([disabled]){transition:background-color 0.2s,border 0.2s,box-shadow 0.2s,text-decoration 0.2s;", " &:hover{color:", ";background-color:", ";border-color:", ";}", " &:focus{color:", ";box-shadow:", ";}&:active,&[aria-expanded='true']{background-color:", ";transition:none;}}&[disabled]{color:", ";cursor:not-allowed;", "}"], enterpriseStyles_common, Object(themes_["pick"])({
314
321
  light: themes_["variables"].gray45,
@@ -350,6 +357,7 @@ var StyledClickable = external_styled_components_default()(Clickable_default.a).
350
357
  enterpriseSecondary: enterpriseDefault,
351
358
  enterprisePrimary: enterprisePrimary,
352
359
  enterpriseError: enterpriseError,
360
+ enterpriseDestructive: enterpriseError,
353
361
  enterprisePill: enterprisePill,
354
362
  prismaDefault: prismaTransparent,
355
363
  prismaDestructive: prismaFilled,
@@ -403,23 +411,50 @@ var propTypes = {
403
411
  children: external_prop_types_default.a.node,
404
412
  disabled: external_prop_types_default.a.bool,
405
413
  elementRef: external_prop_types_default.a.oneOfType([external_prop_types_default.a.func, external_prop_types_default.a.object]),
414
+ error: external_prop_types_default.a.bool,
406
415
  inline: external_prop_types_default.a.bool,
407
416
  openInNewContext: external_prop_types_default.a.bool,
408
417
  prepend: external_prop_types_default.a.bool,
409
418
  selected: external_prop_types_default.a.bool,
410
419
  splunkTheme: external_prop_types_default.a.object,
411
- status: external_prop_types_default.a.oneOf(['normal', 'error']),
412
420
  to: external_prop_types_default.a.string
413
421
  };
414
422
  var defaultProps = {
415
423
  appearance: 'default',
416
424
  append: false,
417
425
  disabled: false,
426
+ error: false,
418
427
  inline: true,
419
428
  openInNewContext: false,
420
429
  prepend: false,
421
- selected: false,
422
- status: 'normal'
430
+ selected: false
431
+ };
432
+
433
+ var mapVariant = function mapVariant(appearance, family) {
434
+ var enterprise = {
435
+ "default": 'enterpriseDefault',
436
+ destructive: 'enterpriseError',
437
+ primary: 'enterprisePrimary',
438
+ secondary: 'enterpriseSecondary',
439
+ pill: 'enterprisePill',
440
+ toggle: 'enterpriseDefault',
441
+ flat: 'enterpriseDefault'
442
+ };
443
+ var prisma = {
444
+ "default": 'prismaDefault',
445
+ destructive: 'prismaDestructive',
446
+ primary: 'prismaPrimary',
447
+ secondary: 'prismaSecondary',
448
+ pill: 'prismaSecondary',
449
+ toggle: 'prismaToggle',
450
+ flat: 'prismaFlat'
451
+ };
452
+
453
+ if (family === 'enterprise') {
454
+ return enterprise[appearance];
455
+ }
456
+
457
+ return prisma[appearance];
423
458
  };
424
459
 
425
460
  var ButtonSimple_ButtonSimple = /*#__PURE__*/function (_Component) {
@@ -459,57 +494,33 @@ var ButtonSimple_ButtonSimple = /*#__PURE__*/function (_Component) {
459
494
  (_this$component = this.component) === null || _this$component === void 0 ? void 0 : _this$component.focus();
460
495
  }
461
496
  }, {
462
- key: "mapVariant",
463
- value: function mapVariant() {
497
+ key: "render",
498
+ value: function render() {
464
499
  var _this$props = this.props,
465
- splunkTheme = _this$props.splunkTheme,
466
500
  appearance = _this$props.appearance,
467
- status = _this$props.status;
468
- var enterprise = {
469
- "default": 'enterpriseDefault',
470
- destructive: 'enterpriseDefault',
471
- primary: 'enterprisePrimary',
472
- secondary: 'enterpriseSecondary',
473
- pill: 'enterprisePill',
474
- toggle: 'enterpriseDefault',
475
- flat: 'enterpriseDefault'
476
- };
477
- var prisma = {
478
- "default": 'prismaDefault',
479
- destructive: 'prismaDestructive',
480
- primary: 'prismaPrimary',
481
- secondary: 'prismaSecondary',
482
- pill: 'prismaSecondary',
483
- toggle: 'prismaToggle',
484
- flat: 'prismaFlat'
485
- };
486
-
487
- if (splunkTheme.family === 'enterprise') {
488
- return status === 'error' ? 'enterpriseError' : enterprise[appearance];
489
- }
501
+ append = _this$props.append,
502
+ children = _this$props.children,
503
+ error = _this$props.error,
504
+ prepend = _this$props.prepend,
505
+ selected = _this$props.selected,
506
+ splunkTheme = _this$props.splunkTheme,
507
+ otherProps = _objectWithoutProperties(_this$props, ["appearance", "append", "children", "error", "prepend", "selected", "splunkTheme"]);
490
508
 
491
- return prisma[appearance];
492
- }
493
- }, {
494
- key: "render",
495
- value: function render() {
496
- var _this$props2 = this.props,
497
- append = _this$props2.append,
498
- children = _this$props2.children,
499
- prepend = _this$props2.prepend,
500
- selected = _this$props2.selected,
501
- status = _this$props2.status,
502
- otherProps = _objectWithoutProperties(_this$props2, ["append", "children", "prepend", "selected", "status"]);
509
+ var variant = appearance;
510
+
511
+ if (splunkTheme.isEnterprise) {
512
+ variant = error ? 'destructive' : appearance;
513
+ }
503
514
 
504
515
  return /*#__PURE__*/external_react_default.a.createElement(StyledClickable, _extends({
505
- "aria-invalid": status === 'error' || undefined,
516
+ "aria-invalid": error,
506
517
  "data-test": "button-simple",
507
518
  ref: this.handleMount,
508
- $variant: this.mapVariant(),
509
- $error: status === 'error',
519
+ $variant: mapVariant(variant, splunkTheme.family),
510
520
  $append: append,
511
521
  $prepend: prepend,
512
- $selected: selected
522
+ $selected: selected,
523
+ $error: error
513
524
  }, otherProps), children, selected && /*#__PURE__*/external_react_default.a.createElement(ScreenReaderContent_default.a, null, Object(i18n_["_"])('Selected')));
514
525
  }
515
526
  }]);
@@ -528,13 +539,6 @@ ButtonSimpleWithTheme.propTypes = ButtonSimple_ButtonSimple.propTypes;
528
539
 
529
540
 
530
541
 
531
- /***/ }),
532
-
533
- /***/ 14:
534
- /***/ (function(module, exports) {
535
-
536
- module.exports = require("@splunk/react-ui/ScreenReaderContent");
537
-
538
542
  /***/ }),
539
543
 
540
544
  /***/ 2:
@@ -551,7 +555,7 @@ module.exports = require("styled-components");
551
555
 
552
556
  /***/ }),
553
557
 
554
- /***/ 5:
558
+ /***/ 4:
555
559
  /***/ (function(module, exports) {
556
560
 
557
561
  module.exports = require("@splunk/ui-utils/i18n");
package/CHANGELOG.md CHANGED
@@ -1,5 +1,48 @@
1
1
  Change Log
2
2
  ============
3
+ 4.16.0 - January 10, 2023
4
+ ----------
5
+ New Features:
6
+ * Added `data-test` selectors to `File` (SUI-5205).
7
+ * Added `primaryColumnIndex` prop to `Table` and `rowScreenReaderText` prop to `Table.Row` to improve screen reader usability of selectable rows (SUI-5044).
8
+ * `Button` supports `appearance="destructive"` in Enterprise themes (SUI-5082).
9
+ * `TabLayout` supports `count` prop (SUI-5080).
10
+ * `Typography`'s `color` prop now supports `inherit` option.
11
+
12
+ Bug Fixes:
13
+ * `Select`, `Button`, `RadioBar`, `ButtonGroup` error state background color has been updated in enterprise themes to improve contrast (SUI-5082).
14
+
15
+ Deprecations:
16
+ * `Button`'s `error` prop has been deprecated and will be removed in a future major version. Use `appearance="destructive"` instead (SUI-5082).
17
+
18
+
19
+ 4.15.0 - December 6, 2022
20
+ ----------
21
+ New Features:
22
+ * Added a `required` prop to `ControlGroup` to support inputs being required (SUI-5108).
23
+ * Added support for a `filter` prop to `Multiselect` in `compact` mode (SUI-5201).
24
+ * This property supports `true`, `false`, and `"controlled"` as values, similar to `Select`.
25
+ * If this is set, the `controlledFilter` prop is ignored because `filter="controlled"` has identical functionality.
26
+
27
+ Bug Fixes:
28
+ * Added missing type definition files for `TextArea` and `Divider` (SUI-5154).
29
+ * Fixes missing `data-test="fixed-head"` test hook in `Table` (SUI-5157).
30
+ * Added SSR support for `Select`
31
+ * Optimizes bundle sizes of consumers by reducing footprint of "lodash" (SUI-5090).
32
+ * Added a missing icon for `openInNewContext` in `Menu.Item` (SUI-5165).
33
+ * `Menu.Heading` no longer has an extra padding in Prisma themes (SUI-4114).
34
+ * `Color` will render a console warning when an invalid Hex value is supplied (SUI-5081).
35
+ * Pins `react-spring` to v9.2.4 (SUI-5170).
36
+ * Upgrades `moment` to v2.29.4 and `minimist` to v1.2.6 (SUI-5176).
37
+ * `Popover` and all elements derived from it no longer accept mouse input during their disappear animation (SUI-3543).
38
+ * `Tooltip` is no longer interactible during its disappear animation (SUI-5116).
39
+ * The default `closeDelay` has been increased from `0` to `300`.
40
+ * The disappear animation duration has been correspondingly reduced.
41
+ * This allows for a grace period when the user can leave and return to the `Tooltip`.
42
+ * This is similar to the old disappear behavior, but without the issue where a mostly-invisible tooltip accepts mouse interaction.
43
+ * `onRequestOpen` and `onRequestClose` callbacks will no longer trigger when the mouse moves between the `Tooltip` `anchor` and `Popover`.
44
+ * `Date` now shows the correct cursor type along the outer edge of the input when disabled.
45
+
3
46
  4.14.0 - November 1, 2022
4
47
  ----------
5
48
  New Features:
@@ -7,6 +50,9 @@ New Features:
7
50
  * Added `inputOnly` prop to `Date` (SUI-3809).
8
51
  * Added a `renderChildrenWhenCollapsed` prop to `CollapsiblePanel` and `TransitionOpen` which defaults to `false` (SUI-4321).
9
52
  * Added a `divider` prop to `Modal` to show dividers between header, body and footer. The value defaults to `both` (SUI-3443).
53
+ * `ControlGroup`'s `error` prop now takes `boolean` or `string` (SUI-5086).
54
+ * `error` with `string` will display error text below the control.
55
+ * `help` and `error` text can be displayed at the same time.
10
56
 
11
57
  Bug Fixes:
12
58
  * `Date`'s dropdown menu is now keyboard accessible (SUI-3809).