@splunk/react-ui 4.17.1 → 4.18.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 (76) hide show
  1. package/Accordion.js +2 -2
  2. package/AnimationToggle.js +5 -5
  3. package/Button.js +2 -2
  4. package/ButtonSimple.js +2 -2
  5. package/CHANGELOG.md +18 -2
  6. package/Calendar.js +2 -2
  7. package/Code.js +4 -4
  8. package/Color.js +202 -175
  9. package/ColumnLayout.js +6 -6
  10. package/Concertina.js +6 -6
  11. package/DefinitionList.js +2 -2
  12. package/Dropdown.js +4 -4
  13. package/DualListbox.js +9 -6
  14. package/File.js +7 -7
  15. package/FormRows.js +4 -4
  16. package/Heading.js +8 -4
  17. package/JSONTree.js +30 -28
  18. package/Layer.js +10 -10
  19. package/Link.js +2 -2
  20. package/List.js +7 -4
  21. package/MIGRATION.mdx +295 -0
  22. package/Markdown.js +12 -7
  23. package/Menu.js +15 -15
  24. package/Message.js +19 -19
  25. package/MessageBar.js +17 -17
  26. package/Modal.js +7 -7
  27. package/Multiselect.js +11 -11
  28. package/Number.js +3 -2
  29. package/Paginator.js +2 -2
  30. package/Popover.js +15 -11
  31. package/RadioBar.js +2 -2
  32. package/RadioList.js +2 -2
  33. package/Resize.js +2 -2
  34. package/Scroll.js +2 -2
  35. package/Select.js +6 -6
  36. package/SidePanel.js +2 -2
  37. package/Slider.js +5 -5
  38. package/StepBar.js +2 -2
  39. package/Switch.js +2 -2
  40. package/TabBar.js +66 -49
  41. package/Table.js +10 -10
  42. package/Text.js +5 -5
  43. package/TextArea.js +4 -4
  44. package/Typography.js +2 -2
  45. package/package.json +6 -11
  46. package/stubs-dependencies.d.ts +0 -9
  47. package/types/src/Button/Button.d.ts +5 -3
  48. package/types/src/Clickable/Clickable.d.ts +2 -1
  49. package/types/src/CollapsiblePanel/CollapsiblePanel.d.ts +1 -0
  50. package/types/src/Color/Color.d.ts +6 -6
  51. package/types/src/Color/Palette.d.ts +46 -0
  52. package/types/src/Concertina/Panel.d.ts +1 -0
  53. package/types/src/FormRows/Row.d.ts +1 -0
  54. package/types/src/Heading/Heading.d.ts +7 -2
  55. package/types/src/JSONTree/JSONTree.d.ts +2 -1
  56. package/types/src/Layer/Layer.d.ts +2 -0
  57. package/types/src/List/List.d.ts +9 -1
  58. package/types/src/List/docs/examples/CustomizedList.d.ts +2 -0
  59. package/types/src/List/docs/examples/OrderedList.d.ts +2 -0
  60. package/types/src/List/docs/examples/UnorderedList.d.ts +2 -0
  61. package/types/src/Markdown/Markdown.d.ts +1 -0
  62. package/types/src/Markdown/renderers/MarkdownList.d.ts +2 -0
  63. package/types/src/Number/Number.d.ts +9 -4
  64. package/types/src/Popover/Popover.d.ts +2 -0
  65. package/types/src/TabBar/Tab.d.ts +2 -0
  66. package/types/src/Table/Head.d.ts +1 -0
  67. package/types/src/Table/HeadCell.d.ts +1 -0
  68. package/types/src/Table/HeadDropdownCell.d.ts +1 -0
  69. package/types/src/Table/Table.d.ts +3 -1
  70. package/types/src/Text/Text.d.ts +3 -1
  71. package/types/src/TextArea/TextArea.d.ts +2 -0
  72. package/MIGRATION.md +0 -49
  73. package/types/src/List/docs/examples/Decimal.d.ts +0 -2
  74. package/types/src/List/docs/examples/Disc.d.ts +0 -2
  75. package/types/src/List/docs/examples/LowerAlpha.d.ts +0 -2
  76. package/types/src/List/docs/examples/UpperAlpha.d.ts +0 -2
package/DualListbox.js CHANGED
@@ -255,7 +255,7 @@ var findNextValue = function findNextValue(index, originalValues, removedValues)
255
255
 
256
256
 
257
257
  // EXTERNAL MODULE: ./src/utils/scrollIntoViewIfNeeded.ts
258
- var scrollIntoViewIfNeeded = __webpack_require__(89);
258
+ var scrollIntoViewIfNeeded = __webpack_require__(88);
259
259
 
260
260
  // EXTERNAL MODULE: ./src/utils/fuzzyMatch.ts
261
261
  var fuzzyMatch = __webpack_require__(56);
@@ -1455,10 +1455,13 @@ function DualListbox(_ref) {
1455
1455
  break;
1456
1456
 
1457
1457
  case 'space':
1458
- handleSingleSelection(event, {
1459
- name: name,
1460
- value: activeValue
1461
- });
1458
+ if (activeValue != null) {
1459
+ handleSingleSelection(event, {
1460
+ name: name,
1461
+ value: activeValue
1462
+ });
1463
+ }
1464
+
1462
1465
  break;
1463
1466
 
1464
1467
  case 'enter':
@@ -1748,7 +1751,7 @@ module.exports = require("@splunk/ui-utils/id");
1748
1751
 
1749
1752
  /***/ }),
1750
1753
 
1751
- /***/ 89:
1754
+ /***/ 88:
1752
1755
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1753
1756
 
1754
1757
  "use strict";
package/File.js CHANGED
@@ -122,7 +122,7 @@ module.exports = require("@splunk/react-ui/Progress");
122
122
 
123
123
  /***/ }),
124
124
 
125
- /***/ 15:
125
+ /***/ 16:
126
126
  /***/ (function(module, exports) {
127
127
 
128
128
  module.exports = require("@splunk/react-ui/EventListener");
@@ -165,7 +165,7 @@ var isString_ = __webpack_require__(23);
165
165
  var isString_default = /*#__PURE__*/__webpack_require__.n(isString_);
166
166
 
167
167
  // EXTERNAL MODULE: external "@splunk/react-ui/EventListener"
168
- var EventListener_ = __webpack_require__(15);
168
+ var EventListener_ = __webpack_require__(16);
169
169
  var EventListener_default = /*#__PURE__*/__webpack_require__.n(EventListener_);
170
170
 
171
171
  // EXTERNAL MODULE: external "@splunk/themes"
@@ -278,7 +278,7 @@ var Clickable_ = __webpack_require__(12);
278
278
  var Clickable_default = /*#__PURE__*/__webpack_require__.n(Clickable_);
279
279
 
280
280
  // EXTERNAL MODULE: external "@splunk/themes/mixins"
281
- var mixins_ = __webpack_require__(79);
281
+ var mixins_ = __webpack_require__(80);
282
282
 
283
283
  // CONCATENATED MODULE: ./src/File/ItemStyles.ts
284
284
 
@@ -1169,17 +1169,17 @@ module.exports = require("lodash/debounce");
1169
1169
 
1170
1170
  /***/ }),
1171
1171
 
1172
- /***/ 79:
1172
+ /***/ 8:
1173
1173
  /***/ (function(module, exports) {
1174
1174
 
1175
- module.exports = require("@splunk/themes/mixins");
1175
+ module.exports = require("@splunk/ui-utils/id");
1176
1176
 
1177
1177
  /***/ }),
1178
1178
 
1179
- /***/ 8:
1179
+ /***/ 80:
1180
1180
  /***/ (function(module, exports) {
1181
1181
 
1182
- module.exports = require("@splunk/ui-utils/id");
1182
+ module.exports = require("@splunk/themes/mixins");
1183
1183
 
1184
1184
  /***/ })
1185
1185
 
package/FormRows.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 = 179);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 180);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
@@ -136,7 +136,7 @@ module.exports = require("@splunk/react-ui/Button");
136
136
 
137
137
  /***/ }),
138
138
 
139
- /***/ 179:
139
+ /***/ 180:
140
140
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141
141
 
142
142
  "use strict";
@@ -210,7 +210,7 @@ var omit_ = __webpack_require__(5);
210
210
  var omit_default = /*#__PURE__*/__webpack_require__.n(omit_);
211
211
 
212
212
  // EXTERNAL MODULE: external "@splunk/react-ui/CloseButton"
213
- var CloseButton_ = __webpack_require__(90);
213
+ var CloseButton_ = __webpack_require__(89);
214
214
  var CloseButton_default = /*#__PURE__*/__webpack_require__.n(CloseButton_);
215
215
 
216
216
  // EXTERNAL MODULE: external "@splunk/react-ui/ScreenReaderContent"
@@ -764,7 +764,7 @@ module.exports = require("@splunk/ui-utils/keyboard");
764
764
 
765
765
  /***/ }),
766
766
 
767
- /***/ 90:
767
+ /***/ 89:
768
768
  /***/ (function(module, exports) {
769
769
 
770
770
  module.exports = require("@splunk/react-ui/CloseButton");
package/Heading.js CHANGED
@@ -137,13 +137,13 @@ var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_pr
137
137
  var external_styled_components_ = __webpack_require__(3);
138
138
  var external_styled_components_default = /*#__PURE__*/__webpack_require__.n(external_styled_components_);
139
139
 
140
- // EXTERNAL MODULE: external "@splunk/themes"
141
- var themes_ = __webpack_require__(0);
142
-
143
140
  // EXTERNAL MODULE: external "@splunk/react-ui/Typography"
144
141
  var Typography_ = __webpack_require__(134);
145
142
  var Typography_default = /*#__PURE__*/__webpack_require__.n(Typography_);
146
143
 
144
+ // EXTERNAL MODULE: external "@splunk/themes"
145
+ var themes_ = __webpack_require__(0);
146
+
147
147
  // CONCATENATED MODULE: ./src/Heading/HeadingStyles.ts
148
148
 
149
149
 
@@ -203,7 +203,8 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
203
203
  var propTypes = {
204
204
  children: external_prop_types_default.a.node,
205
205
  elementRef: external_prop_types_default.a.oneOfType([external_prop_types_default.a.func, external_prop_types_default.a.object]),
206
- level: external_prop_types_default.a.oneOf([1, 2, 3, 4, 's', 'ss', 5, 6])
206
+ level: external_prop_types_default.a.oneOf([1, 2, 3, 4, 's', 'ss', 5, 6]),
207
+ variant: external_prop_types_default.a.oneOf(['title1', 'title2', 'title3', 'title4', 'title5', 'title6', 'title7'])
207
208
  };
208
209
  // h1-h6 use the same intrinsic element type
209
210
  var levelToElement = {
@@ -239,6 +240,9 @@ function Heading(_ref) {
239
240
 
240
241
  var element = levelToElement[level];
241
242
  var finalVariant = variant || elementToVariant[element];
243
+
244
+ if (false) {}
245
+
242
246
  return /*#__PURE__*/external_react_default.a.createElement(StyledTypography, _extends({
243
247
  forwardedAs: element,
244
248
  $isSection: isSection(level),
package/JSONTree.js CHANGED
@@ -153,7 +153,7 @@ var isArray_ = __webpack_require__(73);
153
153
  var isArray_default = /*#__PURE__*/__webpack_require__.n(isArray_);
154
154
 
155
155
  // EXTERNAL MODULE: external "lodash/isEmpty"
156
- var isEmpty_ = __webpack_require__(88);
156
+ var isEmpty_ = __webpack_require__(87);
157
157
  var isEmpty_default = /*#__PURE__*/__webpack_require__.n(isEmpty_);
158
158
 
159
159
  // EXTERNAL MODULE: external "lodash/isNumber"
@@ -169,7 +169,7 @@ var keys_ = __webpack_require__(9);
169
169
  var keys_default = /*#__PURE__*/__webpack_require__.n(keys_);
170
170
 
171
171
  // EXTERNAL MODULE: external "lodash/repeat"
172
- var repeat_ = __webpack_require__(78);
172
+ var repeat_ = __webpack_require__(79);
173
173
  var repeat_default = /*#__PURE__*/__webpack_require__.n(repeat_);
174
174
 
175
175
  // EXTERNAL MODULE: external "styled-components"
@@ -443,34 +443,36 @@ var TreeNode_JSONTreeNode = /*#__PURE__*/function (_Component) {
443
443
  expandChildren = _this$props3.expandChildren,
444
444
  overflow = _this$props3.overflow,
445
445
  path = _this$props3.path;
446
- var isPrimitive = !isObject_default()(value); // isObject is true for arrays
447
-
448
- var representation = value; // determine if value should be represented as a simple string
446
+ var representation = null; // determine if value should be represented as a simple string
449
447
  // or as a child node
450
448
 
451
- if (!isPrimitive) {
452
- if (isEmpty_default()(value)) {
453
- representation = isArray_default()(value) ? '[]' : '{}';
449
+ if (!isObject_default()(value)) {
450
+ // isObject is true for arrays
451
+ if (typeof value === 'string') {
452
+ representation = "\"".concat(value, "\"");
453
+ } else if (typeof value === 'boolean') {
454
+ representation = value.toString();
455
+ } else if (value === null) {
456
+ representation = 'null';
454
457
  } else {
455
- representation = /*#__PURE__*/external_react_default.a.createElement(JSONTreeNode, {
456
- obj: value,
457
- path: key !== undefined ? [].concat(_toConsumableArray(path), [key]) : _toConsumableArray(path) // Prevent undefined from being added to path for single value edge-case
458
- ,
459
- defaultOpen: expandChildren === true,
460
- expandChildren: expandChildren,
461
- onClickKey: onClickKey,
462
- onClickValue: onClickValue,
463
- indent: indent,
464
- indentLevel: indentLevel + 1,
465
- overflow: overflow
466
- });
458
+ representation = value;
467
459
  }
468
- } else if (typeof value === 'string') {
469
- representation = "\"".concat(value, "\"");
470
- } else if (typeof value === 'boolean') {
471
- representation = value.toString();
472
- } else if (value === null) {
473
- representation = 'null';
460
+ } else if (isEmpty_default()(value)) {
461
+ // isObject is true for arrays
462
+ representation = isArray_default()(value) ? '[]' : '{}';
463
+ } else {
464
+ representation = /*#__PURE__*/external_react_default.a.createElement(JSONTreeNode, {
465
+ obj: value,
466
+ path: key !== undefined ? [].concat(_toConsumableArray(path), [key]) : _toConsumableArray(path) // Prevent undefined from being added to path for single value edge-case
467
+ ,
468
+ defaultOpen: expandChildren === true,
469
+ expandChildren: expandChildren,
470
+ onClickKey: onClickKey,
471
+ onClickValue: onClickValue,
472
+ indent: indent,
473
+ indentLevel: indentLevel + 1,
474
+ overflow: overflow
475
+ });
474
476
  } // for string or number representations, apply styles and optional interactivity
475
477
 
476
478
 
@@ -685,14 +687,14 @@ module.exports = require("lodash/isNumber");
685
687
 
686
688
  /***/ }),
687
689
 
688
- /***/ 78:
690
+ /***/ 79:
689
691
  /***/ (function(module, exports) {
690
692
 
691
693
  module.exports = require("lodash/repeat");
692
694
 
693
695
  /***/ }),
694
696
 
695
- /***/ 88:
697
+ /***/ 87:
696
698
  /***/ (function(module, exports) {
697
699
 
698
700
  module.exports = require("lodash/isEmpty");
package/Layer.js CHANGED
@@ -111,14 +111,14 @@ module.exports = require("lodash/pull");
111
111
  /***/ 15:
112
112
  /***/ (function(module, exports) {
113
113
 
114
- module.exports = require("@splunk/react-ui/EventListener");
114
+ module.exports = require("lodash/includes");
115
115
 
116
116
  /***/ }),
117
117
 
118
118
  /***/ 16:
119
119
  /***/ (function(module, exports) {
120
120
 
121
- module.exports = require("lodash/includes");
121
+ module.exports = require("@splunk/react-ui/EventListener");
122
122
 
123
123
  /***/ }),
124
124
 
@@ -174,18 +174,18 @@ var external_react_ = __webpack_require__(2);
174
174
  var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
175
175
 
176
176
  // EXTERNAL MODULE: external "react-dom"
177
- var external_react_dom_ = __webpack_require__(91);
177
+ var external_react_dom_ = __webpack_require__(90);
178
178
 
179
179
  // EXTERNAL MODULE: external "prop-types"
180
180
  var external_prop_types_ = __webpack_require__(1);
181
181
  var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_);
182
182
 
183
183
  // EXTERNAL MODULE: external "lodash/includes"
184
- var includes_ = __webpack_require__(16);
184
+ var includes_ = __webpack_require__(15);
185
185
  var includes_default = /*#__PURE__*/__webpack_require__.n(includes_);
186
186
 
187
187
  // EXTERNAL MODULE: external "lodash/last"
188
- var last_ = __webpack_require__(92);
188
+ var last_ = __webpack_require__(91);
189
189
  var last_default = /*#__PURE__*/__webpack_require__.n(last_);
190
190
 
191
191
  // EXTERNAL MODULE: external "lodash/pull"
@@ -196,11 +196,11 @@ var pull_default = /*#__PURE__*/__webpack_require__.n(pull_);
196
196
  var keyboard_ = __webpack_require__(7);
197
197
 
198
198
  // EXTERNAL MODULE: external "@splunk/react-ui/EventListener"
199
- var EventListener_ = __webpack_require__(15);
199
+ var EventListener_ = __webpack_require__(16);
200
200
  var EventListener_default = /*#__PURE__*/__webpack_require__.n(EventListener_);
201
201
 
202
202
  // EXTERNAL MODULE: ./src/Layer/LayerStack.tsx
203
- var LayerStack = __webpack_require__(93);
203
+ var LayerStack = __webpack_require__(92);
204
204
 
205
205
  // EXTERNAL MODULE: external "styled-components"
206
206
  var external_styled_components_ = __webpack_require__(3);
@@ -513,21 +513,21 @@ module.exports = require("@splunk/ui-utils/keyboard");
513
513
 
514
514
  /***/ }),
515
515
 
516
- /***/ 91:
516
+ /***/ 90:
517
517
  /***/ (function(module, exports) {
518
518
 
519
519
  module.exports = require("react-dom");
520
520
 
521
521
  /***/ }),
522
522
 
523
- /***/ 92:
523
+ /***/ 91:
524
524
  /***/ (function(module, exports) {
525
525
 
526
526
  module.exports = require("lodash/last");
527
527
 
528
528
  /***/ }),
529
529
 
530
- /***/ 93:
530
+ /***/ 92:
531
531
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
532
532
 
533
533
  "use strict";
package/Link.js CHANGED
@@ -141,7 +141,7 @@ var external_styled_components_ = __webpack_require__(3);
141
141
  var external_styled_components_default = /*#__PURE__*/__webpack_require__.n(external_styled_components_);
142
142
 
143
143
  // EXTERNAL MODULE: external "@splunk/react-icons/ArrowSquareTopRight"
144
- var ArrowSquareTopRight_ = __webpack_require__(94);
144
+ var ArrowSquareTopRight_ = __webpack_require__(93);
145
145
  var ArrowSquareTopRight_default = /*#__PURE__*/__webpack_require__.n(ArrowSquareTopRight_);
146
146
 
147
147
  // EXTERNAL MODULE: external "@splunk/react-icons/enterprise/External"
@@ -355,7 +355,7 @@ module.exports = require("@splunk/react-icons/enterprise/External");
355
355
 
356
356
  /***/ }),
357
357
 
358
- /***/ 94:
358
+ /***/ 93:
359
359
  /***/ (function(module, exports) {
360
360
 
361
361
  module.exports = require("@splunk/react-icons/ArrowSquareTopRight");
package/List.js CHANGED
@@ -195,6 +195,7 @@ function List_objectWithoutPropertiesLoose(source, excluded) { if (source == nul
195
195
  var List_propTypes = {
196
196
  children: external_prop_types_default.a.node,
197
197
  elementRef: external_prop_types_default.a.oneOfType([external_prop_types_default.a.func, external_prop_types_default.a.object]),
198
+ ordered: external_prop_types_default.a.bool,
198
199
  type: external_prop_types_default.a.oneOf(['disc', 'decimal', 'lower-alpha', 'upper-alpha'])
199
200
  };
200
201
 
@@ -203,15 +204,17 @@ function List(_ref) {
203
204
  elementRef = _ref.elementRef,
204
205
  _ref$type = _ref.type,
205
206
  type = _ref$type === void 0 ? 'disc' : _ref$type,
206
- otherProps = List_objectWithoutProperties(_ref, ["children", "elementRef", "type"]);
207
+ ordered = _ref.ordered,
208
+ otherProps = List_objectWithoutProperties(_ref, ["children", "elementRef", "type", "ordered"]);
207
209
 
208
210
  // @docs-props-type ListPropsBase
209
- var isUnordered = type === 'disc';
211
+ if (false) {}
212
+
210
213
  return /*#__PURE__*/external_react_default.a.createElement(StyledOl, List_extends({
211
- as: isUnordered ? 'ul' : undefined,
214
+ as: !ordered && type === 'disc' ? 'ul' : 'ol',
212
215
  "data-test": "list",
213
216
  ref: elementRef,
214
- $type: type
217
+ $type: ordered || type === 'decimal' ? 'decimal' || false || false : type
215
218
  }, otherProps), children);
216
219
  }
217
220
 
package/MIGRATION.mdx ADDED
@@ -0,0 +1,295 @@
1
+ import Link from '@splunk/react-ui/Link';
2
+ import Table from '@splunk/react-ui/Table';
3
+
4
+ # Migration
5
+
6
+ This document lists migration guidance for new features and breaking changes.
7
+
8
+ ## 4.18.0
9
+
10
+ ### Deprecated `level="s"` and `level="ss"` and added new `variant` prop for `Heading`
11
+
12
+ #### Change
13
+ `Heading`'s `level="s"` and `level="ss"` have been deprecated and will be removed in a future major version. A new prop `variant` has been added to `Heading` to add styles from `Typography`'s title variants.
14
+
15
+ #### Context
16
+ The values "s" and "ss" aren't as clear as numerical values at describing which `<hX>` HTML tag they correspond to. Instead, use `Heading` `level`(1 - 6) and `variant`(title1 - title6) props to achieve the desired `Heading` style. This separates the concerns of semantics from styling, which allows for better accessibility and design.
17
+
18
+ #### Migration steps
19
+ It is recommended to update `Heading`'s `level="s"` and `level="ss"` to `level=5` or `level=6` respectively and use the `variant` prop for styling.
20
+ To keep the same style as `Heading`'s `level="s"` and `level="ss"` follow the below code:
21
+
22
+ *Enterprise*
23
+
24
+ `level="s"` styling:
25
+
26
+ ```jsx
27
+ const StyledSHeading = styled(Heading)`
28
+ font-weight: ${variables.fontWeightSemiBold};
29
+ font-size: ${variables.fontSize}
30
+ color: ${pick({
31
+ dark: variables.gray80,
32
+ light: variables.gray45,
33
+ })};
34
+ `;
35
+
36
+ <StyledSHeading level={4} variant="title4"/>
37
+ ```
38
+
39
+ `level="ss"` styling:
40
+
41
+ ```jsx
42
+ const StyledSSHeading = styled(Heading)`
43
+ color: ${pick({
44
+ dark: variables.gray80,
45
+ light: variables.gray45,
46
+ })};
47
+ `;
48
+
49
+ <StyledSHeading level={5} variant="title5"/>
50
+ ```
51
+
52
+ *Prisma*
53
+
54
+ `level="s"` styling:
55
+
56
+ ```jsx
57
+ const StyledSHeading = styled(Heading)`
58
+ font-size: ${variables.fontSize};
59
+ color: ${variables.contentColorDefault};
60
+ `;
61
+
62
+ <StyledSHeading level={4} variant="title4"/>
63
+ ```
64
+
65
+ `level="ss"` styling:
66
+
67
+ ```jsx
68
+ No styling is needed.
69
+ <Heading level="ss"> is equivalent to <StyledSHeading level={5} variant="title5"/>
70
+ ```
71
+
72
+ ## 4.17.0
73
+
74
+ ### `Typography` `weight` prop
75
+
76
+ #### Change
77
+ `Typography` no longer supports numerical values for `weight`.
78
+
79
+ #### Context
80
+ Supporting both numerical and keyword values creates confusion on which is correct to use.
81
+ Themes has new variables in version 4.17.0 that support all of the weight values in the design system.
82
+ This aligns with the existing API for `variant` in this component.
83
+
84
+ #### Migration steps
85
+ Convert any usage of a number to the keyword value using the following table based on <Link to="https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight#common_weight_name_mapping" openInNewContext>MDN</Link>:
86
+
87
+ <Table>
88
+ <Table.Head>
89
+ <Table.HeadCell>Number</Table.HeadCell>
90
+ <Table.HeadCell>Keyword</Table.HeadCell>
91
+ </Table.Head>
92
+ <Table.Body>
93
+ <Table.Row key={300}>
94
+ <Table.Cell>{300}</Table.Cell>
95
+ <Table.Cell>light</Table.Cell>
96
+ </Table.Row>
97
+ <Table.Row key={400}>
98
+ <Table.Cell>{400}</Table.Cell>
99
+ <Table.Cell>normal</Table.Cell>
100
+ </Table.Row>
101
+ <Table.Row key={500}>
102
+ <Table.Cell>{500}</Table.Cell>
103
+ <Table.Cell>semiBold</Table.Cell>
104
+ </Table.Row>
105
+ <Table.Row key={600}>
106
+ <Table.Cell>{600}</Table.Cell>
107
+ <Table.Cell>semiBold</Table.Cell>
108
+ </Table.Row>
109
+ <Table.Row key={700}>
110
+ <Table.Cell>{700}</Table.Cell>
111
+ <Table.Cell>bold</Table.Cell>
112
+ </Table.Row>
113
+ <Table.Row key={800}>
114
+ <Table.Cell>{800}</Table.Cell>
115
+ <Table.Cell>extraBold</Table.Cell>
116
+ </Table.Row>
117
+ <Table.Row key={900}>
118
+ <Table.Cell>{900}</Table.Cell>
119
+ <Table.Cell>heavy</Table.Cell>
120
+ </Table.Row>
121
+ </Table.Body>
122
+ </Table>
123
+
124
+ For example, convert `<Typography as="p" weight={700} />` to `<Typography as="p" weight='bold' />`.
125
+
126
+ ## 4.13.0
127
+
128
+ ### Deprecated `Button` `appearance="pill"`
129
+
130
+ #### Change
131
+ The `Button`'s "pill" appearance is deprecated and will be removed in a future major version.
132
+
133
+ #### Context
134
+ The “pill” appearance is deprecated due to confusion among designers and engineers between the different uses. To minimize confusion, there will be one primary `Button` rounded style.
135
+
136
+ #### Migration steps
137
+ Replace all usage of `Button` `appearance="pill"` with `appearance="default"` or use the `Link` component instead.
138
+
139
+ ### Deprecated `placeholder` prop in `Text`, `TextArea`, and `Number`
140
+
141
+ #### Change
142
+ The `placeholder` prop in `Text`, `TextArea`, and `Number` is deprecated and will be removed from future major versions.
143
+
144
+ #### Context
145
+ The `placeholder` prop presents multiple visual and cognitive issues and should not be used.
146
+
147
+ #### Migration steps
148
+ The `placeholder` prop should be replaced with `ControlGroup`'s `label` or `help`. It is recommended to avoid using a placeholder, but if appropriate the `placeholder` HTML attribute is still supported.
149
+
150
+ ## 4.12.0
151
+
152
+ ### Deprecated `Text`'s `multiline`, `rowsMax`, and `rowsMin` props
153
+
154
+ #### Change
155
+ `Text`'s `multiline`, `rowsMax`, and `rowsMin` props have been deprecated. Instead use the new `TextArea` component for multiline text input.
156
+
157
+ #### Context
158
+ `Text` supported two modes -- single or multiline. Each modes had exclusive props: e.g. `maxRows` was only valid with the `multiline` prop.
159
+ This could be confusing and lead to unexpected or unsupported API combinations. Additionally, code in `Text` would only operate in one mode at a time. Moreover, `Text` with the `multiline` prop does not allow line breaks to be inserted with the “enter” key in some browsers.
160
+
161
+ By separating these modes, we have made it simpler and clearer to decide which component and props to use.
162
+ `Text` should be used for inline text input. `TextArea` should be used for long-form text input.
163
+ This aligns the components with the HTML spec and the Splunk Design System.
164
+
165
+ #### Migration steps
166
+ Replace instances of `Text` that use the `multiline` prop with the new `TextArea` component.
167
+
168
+ ## 4.11.0
169
+
170
+ ### New `separateStackingContexts` prop for `LayerStackGlobalProvider`
171
+
172
+ #### Change
173
+ A new prop, `separateStackingContexts`, has been added to `LayerStackGlobalProvider`. `separateStackingContexts` will default to false for backward compatibility but will later default to true in the next major version.
174
+
175
+ #### Context
176
+ Previously, dropdown menus were stacking on top of and blocking modals and modal-backdrops.
177
+
178
+ Now with `separateStackingContexts`, 'floating' items such as `Popover` and `Modal` will now be stacked in the order they are opened rather than a fixed order.
179
+
180
+ #### Migration steps
181
+ To keep the previous behavior, set `separateStackingContexts={false}`.
182
+
183
+ ## 4.8.0
184
+
185
+ ### Deprecated `RadioBar.Option`'s `icon` prop
186
+
187
+ #### Change
188
+ `RadioBar.Option`'s `icon` prop is deprecated and will be removed in a future major version.
189
+
190
+ #### Context
191
+ The `RadioBar.Option` icon should not be used due to misalignment with `Text`.
192
+
193
+ #### Migration steps
194
+ Replace all usage of `RadioBar.Option`'s `icon` prop with `startAdornment` and/or `endAdornment`.
195
+
196
+ ## 4.7.0
197
+
198
+ ### Deprecated `Message` `appearance="banner"`
199
+
200
+ #### Change
201
+ `Message`’s `appearance="banner"` option is deprecated and will be removed in a future major version.
202
+
203
+ #### Context
204
+ Please use `MessageBar` instead of `Message` with `appearance="banner"`.
205
+
206
+ Use `MessageBar` for:
207
+ - System-level messages (such as expired accounts, server outages, account status, etc).
208
+ - Information, warning, error, or success notifications
209
+
210
+ Use `Message` or another component for:
211
+ - Feedback of actions taken within the page (such as adding, deleting, or saving an item).
212
+
213
+ #### Migration steps
214
+ Replace all usage of `Message`’s `appearance="banner"` option to `MessageBar`.
215
+
216
+ ### Deprecated `Message.Link`
217
+
218
+ #### Change
219
+ `Message.Link` is deprecated and will be removed in a future major version.
220
+
221
+ ### Context
222
+ `MessageBar` now applies the necessary styles to `Link`.
223
+
224
+ #### Migration steps
225
+ Replace all usage of `Message.Link` with the `Link` component as a child of the `MessageBar` component. See entries above or our docs for more information on `MessageBar`.
226
+
227
+ ## 4.5.0
228
+
229
+ ### Deprecated `useSyntheticPlaceholder` prop in `Text` and `Number`
230
+
231
+ #### Change
232
+ The `useSyntheticPlaceholder` prop in `Text` and `Number` is deprecated and will be removed in a future major version.
233
+
234
+ #### Context
235
+ The `useSyntheticPlaceholder` prop is not needed because we no longer support IE11.
236
+
237
+ #### Migration steps
238
+ Remove the `useSyntheticPlaceholder` prop.
239
+
240
+ ### Deprecated `Monogram` `size="xlarge"`
241
+
242
+ #### Change
243
+ `Monogram`'s `size="xlarge"` is deprecated and will be removed in a future major version.
244
+
245
+ #### Context
246
+ The `xlarge` option for `Monogram`'s `size` prop is deprecated to align with Figma.
247
+
248
+ #### Migration steps
249
+ Replace all usage of `xlarge` as the value for `Monogram`'s `size` prop with the values: `small`, `medium`, `large`, or a number.
250
+
251
+ ## 4.0.0
252
+
253
+ ### `Accordion` no longer supports `collapseAll` prop
254
+
255
+ #### Change
256
+ `Accordion` no longer supports `collapseAll` prop and all panels are allowed to collapse by default.
257
+
258
+ #### Context
259
+ The user needs to be able to skip over any section with `tab`, which is not possible when the first one is open. This prop is no longer supported due to accessibility issues when set to `false`.
260
+
261
+ #### Migration steps
262
+ Remove all usage of `Accordion` `collapseAll`.
263
+
264
+ ### `File` now supports `fullscreen` prop instead of `size="large"`.
265
+
266
+ #### Change
267
+ `File`’s `size` prop has been removed. Instead, use the `fullscreen` prop.
268
+
269
+ #### Context
270
+ If `fullscreen` prop is set, there can only be one `File` component on the page as it will take all files dropped on the page.
271
+
272
+ #### Migration steps
273
+ Replace all usage of `size="large"` with `fullscreen` prop. Remove all other usage of `File` `size`.
274
+
275
+ ### `Dropdown` only supports HTMLElement toggle `ref`
276
+
277
+ #### Change
278
+ `Dropdown` no longer supports passing a toggle that returns a React component instance as `ref`.
279
+
280
+ #### Context
281
+ Previously, this was causing a warning in React strict mode.
282
+
283
+ #### Migration steps
284
+ Ensure the toggle `ref` is an `HTMLElement`, `Clickable`, `Button`, or `Link`.
285
+
286
+ ### `Popover` no longer supports `pointerEvents` prop
287
+
288
+ #### Change
289
+ `Popover`’s `pointerEvents` prop has been removed.
290
+
291
+ #### Context
292
+ Previously, `Tooltip` closed as soon as a user stopped hovering over the toggle. To allow the `Tooltip` to remain open when hovering/focusing on the toggle or the content area, the `Popover`’s `pointerEvent` prop has been removed. `Tooltip` now has two props: `possibleOpenReasons` and `possibleCloseReasons`, which provide more control over when the `Tooltip` can be opened and closed.
293
+
294
+ #### Migration steps
295
+ Replace all usage of `Popover`’s `pointerEvents` prop with `possibleOpenReasons` and `possibleCloseReasons`.