@splunk/react-ui 5.2.0 → 5.3.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 (77) hide show
  1. package/Avatar.js +57 -52
  2. package/Box.js +2 -1
  3. package/CHANGELOG.md +31 -0
  4. package/Calendar.js +8 -4
  5. package/Checkbox.d.ts +2 -0
  6. package/Checkbox.js +350 -0
  7. package/Code.js +151 -132
  8. package/CollapsiblePanel.js +184 -210
  9. package/Color.js +4 -2
  10. package/ControlGroup.js +2 -1
  11. package/Date.js +123 -119
  12. package/DefinitionList.js +100 -77
  13. package/Dropdown.js +2 -2
  14. package/DualListbox.js +409 -353
  15. package/File.js +102 -99
  16. package/JSONTree.js +317 -303
  17. package/Link.js +11 -11
  18. package/MIGRATION.md +27 -0
  19. package/Markdown.js +162 -151
  20. package/Menu.js +44 -42
  21. package/Modal.js +3 -3
  22. package/Multiselect.js +454 -435
  23. package/Paginator.js +2 -1
  24. package/ResultsMenu.js +2 -1
  25. package/Scroll.js +2 -1
  26. package/Search.js +131 -127
  27. package/Select.js +3 -2
  28. package/Switch.js +197 -229
  29. package/Table.js +24 -16
  30. package/Text.js +180 -206
  31. package/TextArea.js +233 -224
  32. package/Tooltip.js +144 -139
  33. package/package.json +9 -10
  34. package/tsconfig.check-docs.json +8 -0
  35. package/types/src/Avatar/docs/examples/Basic.d.ts +1 -1
  36. package/types/src/Checkbox/Checkbox.d.ts +90 -0
  37. package/types/src/Checkbox/docs/examples/Basic.d.ts +7 -0
  38. package/types/src/Checkbox/docs/examples/Disabled.d.ts +6 -0
  39. package/types/src/Checkbox/docs/examples/Error.d.ts +6 -0
  40. package/types/src/Checkbox/docs/examples/Uncontrolled.d.ts +7 -0
  41. package/types/src/Checkbox/index.d.ts +2 -0
  42. package/types/src/Code/Code.d.ts +4 -1
  43. package/types/src/Code/LineHighlights.d.ts +1 -0
  44. package/types/src/Code/LineNumbers.d.ts +2 -1
  45. package/types/src/Code/docs/examples/CustomizeContainer.d.ts +7 -0
  46. package/types/src/ControlGroup/docs/examples/CustomizedLabelTarget.d.ts +3 -3
  47. package/types/src/Date/Date.d.ts +7 -1
  48. package/types/src/DefinitionList/DefinitionList.d.ts +7 -2
  49. package/types/src/DefinitionList/DefinitionListContext.d.ts +1 -1
  50. package/types/src/DefinitionList/docs/examples/StackedLayout.d.ts +6 -0
  51. package/types/src/DualListbox/DualListbox.d.ts +1 -1
  52. package/types/src/DualListbox/Label.d.ts +7 -7
  53. package/types/src/DualListbox/Listbox.d.ts +2 -2
  54. package/types/src/DualListbox/ListboxContext.d.ts +1 -1
  55. package/types/src/File/File.d.ts +7 -1
  56. package/types/src/JSONTree/JSONTreeItem.d.ts +4 -2
  57. package/types/src/JSONTree/renderTreeItems.d.ts +2 -1
  58. package/types/src/Markdown/renderers/MarkdownCodeBlock.d.ts +2 -1
  59. package/types/src/Menu/docs/examples/Dimmed.d.ts +1 -1
  60. package/types/src/Menu/docs/examples/Disabled.d.ts +1 -0
  61. package/types/src/Multiselect/Compact.d.ts +7 -1
  62. package/types/src/Multiselect/Multiselect.d.ts +7 -1
  63. package/types/src/Multiselect/Normal.d.ts +7 -1
  64. package/types/src/Search/Search.d.ts +5 -1
  65. package/types/src/Switch/Switch.d.ts +7 -1
  66. package/types/src/Switch/docs/examples/Basic.d.ts +2 -10
  67. package/types/src/Switch/docs/examples/Disabled.d.ts +2 -9
  68. package/types/src/Table/ExpandButton.d.ts +1 -1
  69. package/types/src/Tooltip/Tooltip.d.ts +14 -1
  70. package/NonInteractiveCheckbox.js +0 -101
  71. package/types/src/CollapsiblePanel/icons/ExpandPanel.d.ts +0 -12
  72. package/types/src/NonInteractiveCheckbox/NonInteractiveCheckbox.d.ts +0 -22
  73. package/types/src/NonInteractiveCheckbox/index.d.ts +0 -1
  74. package/types/src/Switch/docs/examples/Error.d.ts +0 -6
  75. package/types/src/Text/IconOutlinedHide.d.ts +0 -3
  76. package/types/src/Text/IconOutlinedView.d.ts +0 -3
  77. /package/cypress/{tsconfig.cypress.json → tsconfig.check-cypress.json} +0 -0
package/Avatar.js CHANGED
@@ -115,9 +115,7 @@
115
115
  var m = s().text.withConfig({
116
116
  displayName: "AvatarStyles__StyledText",
117
117
  componentId: "sc-1t4nch-3"
118
- })([ "", ";text-transform:capitalize;text-anchor:middle;dominant-baseline:middle;alignment-baseline:middle;fill:", ";transform:translate(50%,54%);" ], u.mixins.typography({
119
- weight: "bold"
120
- }), (function(e) {
118
+ })([ "font-weight:", ";text-transform:capitalize;text-anchor:middle;dominant-baseline:central;fill:", ";" ], u.variables.fontWeightBold, (function(e) {
121
119
  var r = e.$textColor;
122
120
  return r;
123
121
  }));
@@ -184,13 +182,13 @@
184
182
  function k(e) {
185
183
  if (Array.isArray(e)) return e;
186
184
  }
187
- var P = "lightText";
188
- var A = "darkText";
185
+ var A = "lightText";
186
+ var P = "darkText";
189
187
  function E(e) {
190
188
  var r = S(e, 3), t = r[0], n = r[1], o = r[2];
191
189
  var i = (t * 299 + n * 587 + o * 114) / 1e3;
192
190
  // formula from https://www.w3.org/TR/AERT/#color-contrast
193
- return i > 125 ? A : P;
191
+ return i > 125 ? P : A;
194
192
  }
195
193
  /**
196
194
  * Determines if light or dark text should be used over a specific background color by determining the color brightness of a
@@ -244,7 +242,7 @@
244
242
  * TODO: Convert theme variable color variables.neutral200 to rgb dynamically and memoize it (SUI-5731).
245
243
  */
246
244
  // backgroundColor is either not provided or an accepted representation of color
247
- return e ? A : P;
245
+ return e ? P : A;
248
246
  }
249
247
  // CONCATENATED MODULE: ./src/Avatar/Avatar.tsx
250
248
  function I(e) {
@@ -310,26 +308,26 @@
310
308
  }, H.apply(null, arguments);
311
309
  }
312
310
  function M(e, r) {
313
- return L(e) || B(e, r) || D(e, r) || N();
311
+ return V(e) || L(e, r) || B(e, r) || N();
314
312
  }
315
313
  function N() {
316
314
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
317
315
  }
318
- function D(e, r) {
316
+ function B(e, r) {
319
317
  if (e) {
320
- if ("string" == typeof e) return V(e, r);
318
+ if ("string" == typeof e) return D(e, r);
321
319
  var t = {}.toString.call(e).slice(8, -1);
322
- return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? V(e, r) : void 0;
320
+ return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? D(e, r) : void 0;
323
321
  }
324
322
  }
325
- function V(e, r) {
323
+ function D(e, r) {
326
324
  (null == r || r > e.length) && (r = e.length);
327
325
  for (var t = 0, n = Array(r); t < r; t++) {
328
326
  n[t] = e[t];
329
327
  }
330
328
  return n;
331
329
  }
332
- function B(e, r) {
330
+ function L(e, r) {
333
331
  var t = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
334
332
  if (null != t) {
335
333
  var n, o, i, a, l = [], u = !0, c = !1;
@@ -351,12 +349,12 @@
351
349
  return l;
352
350
  }
353
351
  }
354
- function L(e) {
352
+ function V(e) {
355
353
  if (Array.isArray(e)) return e;
356
354
  }
357
- function U(e, r) {
355
+ function G(e, r) {
358
356
  if (null == e) return {};
359
- var t, n, o = G(e, r);
357
+ var t, n, o = U(e, r);
360
358
  if (Object.getOwnPropertySymbols) {
361
359
  var i = Object.getOwnPropertySymbols(e);
362
360
  for (n = 0; n < i.length; n++) {
@@ -365,7 +363,7 @@
365
363
  }
366
364
  return o;
367
365
  }
368
- function G(e, r) {
366
+ function U(e, r) {
369
367
  if (null == e) return {};
370
368
  var t = {};
371
369
  for (var n in e) {
@@ -389,24 +387,23 @@
389
387
  textColor: l().oneOfType([ l().oneOf([ "auto" ]), l().string, l().func ]),
390
388
  value: l().string
391
389
  };
392
- function F(e) {
390
+ function W(e) {
393
391
  return !!e.onClick || !!e.to;
394
392
  }
395
- function J(e) {
396
- var r = e.backgroundColor, t = e.initials, n = e.label, o = e.size, i = U(e, [ "backgroundColor", "initials", "label", "size" ]);
397
- var a = r == null ? u.variables.neutral200 : r;
398
- var l = {
399
- "aria-label": n,
393
+ function F(e) {
394
+ var r = e.backgroundColor, t = e.label, n = e.size, o = G(e, [ "backgroundColor", "label", "size" ]);
395
+ var i = r == null ? u.variables.neutral200 : r;
396
+ var a = {
397
+ "aria-label": t,
400
398
  "data-test": "avatar",
401
- $backgroundColor: a,
402
- $initials: t,
403
- $size: o
399
+ $backgroundColor: i,
400
+ $size: n
404
401
  };
405
- return [ l, i ];
402
+ return [ a, o ];
406
403
  }
407
- function Q(e) {
408
- var r = J(e), o = M(r, 2), a = o[0], l = o[1];
409
- var u = l.children, c = l.elementRef, s = l.value, f = l.onClick, d = l.to, v = U(l, [ "children", "elementRef", "value", "onClick", "to" ]);
404
+ function J(e) {
405
+ var r = F(e), o = M(r, 2), a = o[0], l = o[1];
406
+ var u = l.children, c = l.elementRef, s = l.value, f = l.onClick, d = l.to, v = G(l, [ "children", "elementRef", "value", "onClick", "to" ]);
410
407
  var b = (0, t.useCallback)((function(e) {
411
408
  f === null || f === void 0 ? void 0 : f(e, {
412
409
  value: s
@@ -419,57 +416,65 @@
419
416
  to: d
420
417
  }, a, i()(v, Object.keys(K))), u);
421
418
  }
422
- function W(e) {
423
- var r = J(e), t = M(r, 2), o = t[0], a = t[1];
424
- var l = a.children, u = a.elementRef, c = U(a, [ "children", "elementRef" ]);
419
+ function Q(e) {
420
+ var r = F(e), t = M(r, 2), o = t[0], a = t[1];
421
+ var l = a.children, u = a.elementRef, c = G(a, [ "children", "elementRef" ]);
425
422
 
426
423
  return n().createElement(b, H({
427
424
  ref: u
428
425
  }, o, i()(c, Object.keys(K))), l);
429
426
  }
430
427
  function X(e) {
431
- var r = e.backgroundColor, o = e.textColor, i = o === void 0 ? "auto" : o, a = e.initials, l = e.image, c = e.size, s = c === void 0 ? "medium" : c, f = U(e, [ "backgroundColor", "textColor", "initials", "image", "size" ]);
428
+ var r = e.backgroundColor, o = e.textColor, i = o === void 0 ? "auto" : o, a = e.initials, l = e.image, c = e.size, s = c === void 0 ? "medium" : c, f = G(e, [ "backgroundColor", "textColor", "initials", "image", "size" ]);
432
429
  // @docs-props-type AvatarPropsBase
433
430
  var d = (0, u.useSplunkTheme)(), v = d.isLight;
434
431
  var b = i;
435
432
  if (i === "auto") {
436
433
  var y = T(v, r);
437
- b = y === A ? u.variables.black : u.variables.white;
434
+ b = y === P ? u.variables.black : u.variables.white;
438
435
  }
439
- var g = n().createElement(p, {
436
+ // SVG attributes to improve rendering of text when initials are longer than 2 characters
437
+ var g = a.length > 2 ? {
438
+ textLength: "90%",
439
+ lengthAdjust: "spacingAndGlyphs"
440
+ } : {};
441
+ var h = n().createElement(p, {
440
442
  viewBox: "0 0 32 32"
441
- }, n().createElement(m, {
443
+ }, n().createElement(m, H({
442
444
  "data-test": "initials",
445
+ x: "50%",
446
+ y: "50%",
447
+ dy: "-0.5",
443
448
  $textColor: b
444
- }, a));
445
- var h = l !== null && l !== void 0 ? l : g;
446
- var O = (0, t.useState)("loading"), S = M(O, 2), w = S[0], x = S[1];
449
+ }, g), a));
450
+ var O = l !== null && l !== void 0 ? l : h;
451
+ var S = (0, t.useState)("loading"), w = M(S, 2), x = w[0], j = w[1];
447
452
  if ( (0, t.isValidElement)(l)) {
448
453
  if (l.type === "img") {
449
- var j = l.props, C = j.src, k = j.alt, P = j.onError, E = U(j, [ "src", "alt", "onError" ]);
450
- var I = n().createElement("img", H({
451
- src: C,
452
- alt: k,
454
+ var C = l.props, k = C.src, A = C.alt, E = C.onError, I = G(C, [ "src", "alt", "onError" ]);
455
+ var _ = n().createElement("img", H({
456
+ src: k,
457
+ alt: A,
453
458
  onError: function e() {
454
- x("error");
455
- if (P) {
456
- P();
459
+ j("error");
460
+ if (E) {
461
+ E();
457
462
  }
458
463
  }
459
- }, E));
460
- h = I;
464
+ }, I));
465
+ O = _;
461
466
  }
462
467
  }
463
468
  // fallback to initials if img fails to load
464
- var _ = w !== "error" ? h : g;
465
- var z = R({
469
+ var z = x !== "error" ? O : h;
470
+ var q = R({
466
471
  backgroundColor: r,
467
472
  size: s,
468
473
  initials: a,
469
474
  image: l,
470
475
  textColor: i
471
476
  }, f);
472
- return F(z) ? n().createElement(Q, z, _) : n().createElement(W, z, _);
477
+ return W(q) ? n().createElement(J, q, z) : n().createElement(Q, q, z);
473
478
  }
474
479
  X.propTypes = K;
475
480
  /* harmony default export */ const Y = X;
package/Box.js CHANGED
@@ -123,7 +123,8 @@
123
123
  * Box is a utility component to normalize and abstract common layout styles.
124
124
  */ function y(e) {
125
125
  var n = e.children, t = e.elementRef, l = e.flex, i = l === void 0 ? false : l, o = e.tag, a = o === void 0 ? "div" : o, f = e.inline, u = f === void 0 ? false : f, p = c(e, [ "children", "elementRef", "flex", "tag", "inline" ]);
126
-
126
+ // @docs-props-type BoxPropsBase
127
+
127
128
  return r().createElement(d, s({
128
129
  as: a,
129
130
  ref: t
package/CHANGELOG.md CHANGED
@@ -1,6 +1,36 @@
1
1
  Change Log
2
2
  ============
3
3
 
4
+ 5.3.0 - September 2, 2025
5
+ ----------
6
+ New Features:
7
+ * New `Checkbox` component (SUI-6373).
8
+ * `Multiselect` and `Date` support new `append` and `prepend` props (SUI-8052).
9
+ * `DefinitionList`'s `layout` prop now supports `"stacked"` layout (SUI-7880).
10
+ * `Search` supports new `append` and `prepend` props (SUI-8081).
11
+ * `File` now supports a new `inputId` prop (SUI-8031).
12
+ * `Code` supports new `containerAppearance` prop (SUI-8158).
13
+
14
+ Bug Fixes:
15
+ * `Select` with `filter` now has visual affordance for selected + active options (SUI-8045).
16
+ * `Multiselect` with `compact` now has visual affordance for selected + active options (SUI-8045).
17
+ * `CollapsiblePanel`'s expand panel icon is now unified for all themes (SUI-8043).
18
+ * `Text` password toggle icons now are consistent across all themes (SUI-8127).
19
+ * `Modal.Footer` now correctly aligns `Button`s that render as anchor elements in `layout="auto"` (SUI-8116).
20
+ * `DefinitionList`'s separator character now spans the full width in `layout="auto"` when the separator is a narrower character (SUI-7880).
21
+ * `Dropdown` now closes on click when using server-side rendering (SUI-8123).
22
+ * `TextArea`'s height was incorrect in compact mode. The height been aligned with other data entry components (SUI-8053).
23
+ * `ControlGroup`'s label is correctly applied to `File` (SUI-8031).
24
+ * `JSONTreeItem` now uses unique DOM `id`s by default (SUI-8159).
25
+ * `Link` disabled state style updated to match button (SUI-8101).
26
+ * Fixed `JSONTree`'s keyboard navigation and indent styling (SUI-8131).
27
+ * Fixed `Avatar`'s initials being misaligned in Safari (SUI-8098).
28
+ * Improved `Avatar`'s rendering of initials with 3 or more characters (SUI-8098).
29
+ * `TextArea` adornments are now vertically aligned (SUI-7793).
30
+
31
+ Deprecations:
32
+ * `Switch`'s `appearance="checkbox"` prop value has been deprecated and will be removed in the next major version. See the migration guide for details (SUI-8179).
33
+
4
34
  5.2.0 - August 5, 2025
5
35
  ----------
6
36
  New Features:
@@ -23,6 +53,7 @@ Bug Fixes:
23
53
  * `Layer` no longer throws an error when one of its `children` becomes fullscreen (SUI-8014).
24
54
  * Improved `Table`'s truncation behavior in low string length label scenarios and improved probability of truncation ellipses showing in full (SUI-8025).
25
55
  * `Menu.Item` now enforces through TypeScript types that `selected` and `selectableAppearance` props can only be used when `selectable` is enabled (SUI‑6495).
56
+ * `Tooltip` now supports a `pointTo` prop (SUI-8133).
26
57
 
27
58
  5.1.0 - July 2, 2025
28
59
  ----------
package/Calendar.js CHANGED
@@ -163,7 +163,8 @@
163
163
  };
164
164
  function w(e) {
165
165
  var a = e.active, t = a === void 0 ? false : a, o = e.dayOfWeek, i = e.locale, u = i === void 0 ? "en_US" : i, c = e.onClick, d = e.onKeyDown, s = e.selected, v = s === void 0 ? false : s, f = e.today, y = f === void 0 ? false : f, Y = e.value, p = D(e, [ "active", "dayOfWeek", "locale", "onClick", "onKeyDown", "selected", "today", "value" ]);
166
- var g = (0, r.useCallback)((function(e) {
166
+ // @docs-props-type DayPropsBase
167
+ var g = (0, r.useCallback)((function(e) {
167
168
  e.preventDefault();
168
169
  c === null || c === void 0 ? void 0 : c(e, {
169
170
  value: Y
@@ -239,7 +240,8 @@
239
240
  };
240
241
  function E(e) {
241
242
  var a = e.displayValue, r = e.endDate, t = e.highlightToday, o = e.locale, i = e.onChange, u = e.onKeyDown, c = e.selectedDate, d = e.selectedValue, s = e.startDate, v = e.todayValue;
242
- var f = l()(s).locale(o).startOf("month");
243
+ // @docs-props-type DateGridPropsBase
244
+ var f = l()(s).locale(o).startOf("month");
243
245
  var y = [];
244
246
  while (f.isSameOrBefore(r)) {
245
247
  var Y = f.format("YYYY-MM-DD");
@@ -498,7 +500,8 @@
498
500
  }
499
501
  function J(e) {
500
502
  var a = e.headingId, t = e.locale, o = t === void 0 ? "en_US" : t, i = e.onChange, u = e.value, c = L(e, [ "headingId", "locale", "onChange", "value" ]);
501
- var d = (0, r.useCallback)((function(e, a) {
503
+ // @docs-props-type MonthHeaderPropsBase
504
+ var d = (0, r.useCallback)((function(e, a) {
502
505
  e.stopPropagation();
503
506
  var r = l()(u, "YYYY-MM-DD").add(a, "M").format("YYYY-MM-DD");
504
507
  i === null || i === void 0 ? void 0 : i(e, {
@@ -665,7 +668,8 @@
665
668
  };
666
669
  function ye(e) {
667
670
  var a = e.describedBy, t = e.elementRef, o = e.highlightToday, i = e.labelledBy, c = e.locale, d = c === void 0 ? "en_US" : c, s = e.mockDate, f = e.onChange, y = e.required, Y = e.value, p = Y === void 0 ? l()().format("YYYY-MM-DD") : Y, g = ie(e, [ "describedBy", "elementRef", "highlightToday", "labelledBy", "locale", "mockDate", "onChange", "required", "value" ]);
668
- var b = (0, r.useState)(p), h = ae(b, 2), m = h[0], D = h[1];
671
+ // @docs-props-type CalendarPropsBase
672
+ var b = (0, r.useState)(p), h = ae(b, 2), m = h[0], D = h[1];
669
673
  var M = (0, r.useState)(s || se(d)), O = ae(M, 2), w = O[0], C = O[1];
670
674
  var k = (0, r.useState)(null), S = ae(k, 2), x = S[0], I = S[1];
671
675
  var E = (0, r.useRef)((0, u.createDOMID)("header"));
package/Checkbox.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { default } from './types/src/Checkbox';
2
+ export * from './types/src/Checkbox';