@splunk/react-ui 5.3.0 → 5.4.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 (60) hide show
  1. package/Accordion.js +31 -31
  2. package/Avatar.js +13 -13
  3. package/Breadcrumbs.js +66 -63
  4. package/ButtonSimple.js +52 -52
  5. package/CHANGELOG.md +16 -0
  6. package/CardLayout.js +39 -36
  7. package/Clickable.js +5 -6
  8. package/Code.js +424 -528
  9. package/CollapsiblePanel.js +1 -1
  10. package/Color.js +903 -1025
  11. package/DefinitionList.js +1 -1
  12. package/FormRows.js +13 -11
  13. package/JSONTree.js +682 -1408
  14. package/Link.js +5 -5
  15. package/Markdown.js +9 -5
  16. package/Menu.js +72 -67
  17. package/Multiselect.js +2692 -2780
  18. package/Popover.js +201 -196
  19. package/Resize.js +11 -8
  20. package/ResultsMenu.js +913 -1030
  21. package/ScreenReaderContent.js +86 -130
  22. package/Scroll.js +366 -425
  23. package/Select.js +1741 -1832
  24. package/Slider.js +1 -1
  25. package/SlidingPanels.js +129 -127
  26. package/StepBar.js +123 -97
  27. package/Switch.js +115 -111
  28. package/TabBar.js +10 -10
  29. package/Table.js +1239 -1240
  30. package/TextArea.js +596 -684
  31. package/Tree.js +638 -682
  32. package/package.json +11 -11
  33. package/types/src/Breadcrumbs/Breadcrumbs.d.ts +1 -5
  34. package/types/src/Breadcrumbs/BreadcrumbsContext.d.ts +7 -0
  35. package/types/src/Breadcrumbs/Item.d.ts +1 -1
  36. package/types/src/ButtonSimple/mixin.d.ts +1 -1
  37. package/types/src/JSONTree/JSONTreeItem.d.ts +1 -1
  38. package/types/src/JSONTree/renderTreeItems.d.ts +1 -1
  39. package/types/src/Modal/ModalContext.d.ts +1 -1
  40. package/types/src/Multiselect/Compact.d.ts +2 -2
  41. package/types/src/Multiselect/Normal.d.ts +2 -2
  42. package/types/src/Number/utils.d.ts +1 -1
  43. package/types/src/Popover/getPlacement.d.ts +1 -1
  44. package/types/src/RadioList/Option.d.ts +1 -1
  45. package/types/src/RadioList/RadioListContext.d.ts +1 -1
  46. package/types/src/StepBar/StepBar.d.ts +4 -1
  47. package/types/src/StepBar/StepBarContext.d.ts +1 -0
  48. package/types/src/StepBar/docs/examples/Vertical.d.ts +6 -0
  49. package/types/src/Switch/Switch.d.ts +7 -1
  50. package/types/src/TabBar/Tab.d.ts +3 -1
  51. package/types/src/TabBar/docs/examples/Icons.d.ts +4 -0
  52. package/types/src/TabBar/docs/examples/Tooltips.d.ts +3 -0
  53. package/types/src/TabLayout/Panel.d.ts +2 -0
  54. package/types/src/Table/Head.d.ts +1 -1
  55. package/types/src/Table/Row.d.ts +1 -1
  56. package/types/src/Table/Table.d.ts +1 -0
  57. package/types/src/Tree/TreeContext.d.ts +1 -1
  58. package/useControlled.js +61 -97
  59. package/usePrevious.js +30 -62
  60. package/useResizeObserver.js +95 -127
package/Link.js CHANGED
@@ -83,11 +83,11 @@
83
83
  // CONCATENATED MODULE: external "@splunk/themes"
84
84
  const f = require("@splunk/themes");
85
85
  // CONCATENATED MODULE: ./src/Link/icons/External.tsx
86
- var v = d()(p()).withConfig({
86
+ var b = d()(p()).withConfig({
87
87
  displayName: "External",
88
88
  componentId: "sc-13bdx45-0"
89
89
  })([ "vertical-align:text-bottom;margin-left:", ";" ], f.variables.spacingXSmall);
90
- /* harmony default export */ const b = v;
90
+ /* harmony default export */ const v = b;
91
91
  // CONCATENATED MODULE: external "@splunk/react-ui/Clickable"
92
92
  const g = require("@splunk/react-ui/Clickable");
93
93
  var m = e.n(g);
@@ -149,12 +149,12 @@
149
149
  */ var S = r().forwardRef((function(e,
150
150
  // SUI-7623 - needs to be specified for react-docgen versions less than 7.1.0
151
151
  n) {
152
- var t = e.appearance, o = t === void 0 ? "inline" : t, a = e.children, i = e.disabled, s = i === void 0 ? false : i, c = e.elementRef, d = e.openInNewContext, u = d === void 0 ? false : d, p = e.tag, f = p === void 0 ? "a" : p, v = e.to, g = w(e, [ "appearance", "children", "disabled", "elementRef", "openInNewContext", "tag", "to" ]);
152
+ var t = e.appearance, o = t === void 0 ? "inline" : t, a = e.children, i = e.disabled, s = i === void 0 ? false : i, c = e.elementRef, d = e.openInNewContext, u = d === void 0 ? false : d, p = e.tag, f = p === void 0 ? "a" : p, b = e.to, g = w(e, [ "appearance", "children", "disabled", "elementRef", "openInNewContext", "tag", "to" ]);
153
153
  // @docs-props-type LinkPropsBase
154
154
  var m = typeof u === "string" ? u : k;
155
155
  // Ensure `Link` always renders as an `a` (unless overriden by `tag`) by passing a value to Clickable,
156
156
  // using '' if disabled or the to is not passed.
157
- var O = s && "" || v && v || "";
157
+ var O = f !== "button" ? s && "" || b && b || "" : undefined;
158
158
 
159
159
  return r().createElement(h, y({
160
160
  "data-test": "link",
@@ -166,7 +166,7 @@
166
166
  to: O
167
167
  }, g, {
168
168
  tag: f
169
- }), a, u && r().createElement(r().Fragment, null, r().createElement(b, null), r().createElement(l(), null, m)));
169
+ }), a, u && r().createElement(r().Fragment, null, r().createElement(v, null), r().createElement(l(), null, m)));
170
170
  }));
171
171
  S.propTypes = x;
172
172
  /* harmony default export */ const C = S;
package/Markdown.js CHANGED
@@ -136,6 +136,7 @@
136
136
  return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
137
137
  }, g(e);
138
138
  }
139
+ // eslint-disable-next-line no-relative-imports-of-published -- because MarkdownHeading and MarkdownAnchorHeading come from the same @splunk/react-ui/Markdown top level export so it would be a circular dependency if using the external/alias (ok here because thin/no context)
139
140
  // When this is used in MDX, the node isn't guaranteed to be text,
140
141
  // so this method extracts the actual text from the node.
141
142
  function h(e) {
@@ -799,15 +800,18 @@
799
800
  tbody: Me
800
801
  };
801
802
  }), [ r, g, c, u, s, d, v, y ]);
803
+ var w = (0, n.useMemo)((function() {
804
+ // prettier-ignore
805
+ return {
806
+ pre: (0, f.css)([ ":is(", ")" ], S),
807
+ blockquote: (0, f.css)([ ":is(", ")" ], x)
808
+ };
809
+ }), []);
802
810
 
803
811
  return t().createElement(p(), Ue({
804
812
  "data-test": "markdown",
805
813
  elementRef: i,
806
- elementSelectors: {
807
- /* stylelint-disable */
808
- pre: (0, f.css)([ ":is(", ")" ], S),
809
- blockquote: (0, f.css)([ ":is(", ")" ], x)
810
- /* stylelint-enable */ }
814
+ elementSelectors: w
811
815
  }, O), t().createElement(a(), Ue({
812
816
  remarkPlugins: Qe,
813
817
  components: h
package/Menu.js CHANGED
@@ -436,109 +436,114 @@
436
436
  };
437
437
  var ye = (0, se._)("(Opens new window)");
438
438
  function he(e) {
439
- var t = e.active, a = e.children, o = e.description, l = e.descriptionPosition, s = l === void 0 ? "bottom" : l, c = e.disabled, u = e.endAdornment, d = e.elementRef, v = e.hasSubmenu, p = e.itemKey, f = e.matchRanges, m = e.onClick, b = e.onFocus, g = e.openInNewContext, y = e.role, w = e.selectable, A = e.selectableAppearance, D = A === void 0 ? "checkmark" : A, T = e.selected, q = e.startAdornment, $ = e.to, R = e.truncate, H = me(e, [ "active", "children", "description", "descriptionPosition", "disabled", "endAdornment", "elementRef", "hasSubmenu", "itemKey", "matchRanges", "onClick", "onFocus", "openInNewContext", "role", "selectable", "selectableAppearance", "selected", "startAdornment", "to", "truncate" ]);
439
+ var t;
440
+ var a = e.active, o = e.children, l = e.description, s = e.descriptionPosition, c = s === void 0 ? "bottom" : s, u = e.disabled, d = e.endAdornment, v = e.elementRef, p = e.hasSubmenu, f = e.itemKey, m = e.matchRanges, b = e.onClick, g = e.onFocus, y = e.openInNewContext, w = e.role, A = e.selectable, D = e.selectableAppearance, T = D === void 0 ? "checkmark" : D, q = e.selected, $ = e.startAdornment, R = e.to, H = e.truncate, F = me(e, [ "active", "children", "description", "descriptionPosition", "disabled", "endAdornment", "elementRef", "hasSubmenu", "itemKey", "matchRanges", "onClick", "onFocus", "openInNewContext", "role", "selectable", "selectableAppearance", "selected", "startAdornment", "to", "truncate" ]);
440
441
  // @docs-props-type ItemPropsBase
441
- var F = (0, r.useContext)(N), M = F.preventFocus;
442
+ var M = (0, r.useContext)(N), L = M.preventFocus;
443
+ // Use arguments[0] (raw props) to check if `selectableAppearance` was explicitly passed by the caller.
444
+ // This prevents the default value from incorrectly triggering the dev warning.
445
+ // eslint-disable-next-line prefer-rest-params
446
+ var K = (t = arguments[0]) === null || t === void 0 ? void 0 : t.selectableAppearance;
442
447
  (0, r.useEffect)((function() {
443
448
  if (false) {}
444
- }), [ R, s, f, a, T, w, D ]);
445
- var L = (0, r.useCallback)((function(e) {
446
- b === null || b === void 0 ? void 0 : b(e, {
447
- itemKey: p
449
+ }), [ H, c, m, o, q, A, T, K ]);
450
+ var B = (0, r.useCallback)((function(e) {
451
+ g === null || g === void 0 ? void 0 : g(e, {
452
+ itemKey: f
448
453
  });
449
- }), [ p, b ]);
450
- var K = (0, r.useCallback)((function(e) {
451
- if (M) {
454
+ }), [ f, g ]);
455
+ var W = (0, r.useCallback)((function(e) {
456
+ if (L) {
452
457
  e.preventDefault();
453
458
  }
454
- }), [ M ]);
455
- var B = (0, r.useMemo)((function() {
456
- if (!f || !te()(a)) {
457
- return a;
459
+ }), [ L ]);
460
+ var z = (0, r.useMemo)((function() {
461
+ if (!m || !te()(o)) {
462
+ return o;
458
463
  }
459
464
  var e = [];
460
465
  // before first match. May be empty string.
461
- e.push(a.substring(0, f[0].start));
462
- f.forEach((function(t, r) {
466
+ e.push(o.substring(0, m[0].start));
467
+ m.forEach((function(t, r) {
463
468
  e.push(
464
469
 
465
470
  // eslint-disable-next-line react/no-array-index-key
466
471
  n().createElement(P, {
467
472
  key: r,
468
473
  "data-test": "match"
469
- }, a.substring(t.start, t.end)));
470
- if (r < f.length - 1) {
471
- e.push(a.substring(t.end, f[r + 1].start));
474
+ }, o.substring(t.start, t.end)));
475
+ if (r < m.length - 1) {
476
+ e.push(o.substring(t.end, m[r + 1].start));
472
477
  } else {
473
- e.push(a.substring(t.end, a.length));
478
+ e.push(o.substring(t.end, o.length));
474
479
  }
475
480
  }));
476
481
  return e;
477
- }), [ a, f ]);
478
- var W = T === true || T === "some";
479
- var z = w || W;
480
- var V = y || {
482
+ }), [ o, m ]);
483
+ var V = q === true || q === "some";
484
+ var X = A || V;
485
+ var G = w || {
481
486
  nonselectable: "menuitem",
482
487
  checkmark: "menuitemradio",
483
488
  checkbox: "menuitemcheckbox"
484
- }[z ? D : "nonselectable"];
485
- var X = {
486
- "aria-haspopup": v ? true : undefined
489
+ }[X ? T : "nonselectable"];
490
+ var J = {
491
+ "aria-haspopup": p ? true : undefined
487
492
  };
488
- if (V === "menuitemradio" || V === "menuitemcheckbox") {
489
- X["aria-checked"] = T === "some" ? "mixed" : W;
490
- } else if (V === "option") {
491
- X["aria-selected"] = W;
493
+ if (G === "menuitemradio" || G === "menuitemcheckbox") {
494
+ J["aria-checked"] = q === "some" ? "mixed" : V;
495
+ } else if (G === "option") {
496
+ J["aria-selected"] = V;
492
497
  }
493
- var G = o && s === "right";
494
- var J = o && !G;
495
- var Q = T && D === "checkmark" && n().createElement(O, null, n().createElement(ne(), {
498
+ var Q = l && c === "right";
499
+ var U = l && !Q;
500
+ var Y = q && T === "checkmark" && n().createElement(O, null, n().createElement(ne(), {
496
501
  "data-test": "selected-checkmark",
497
502
  inline: true
498
503
  }));
499
- var U = false;
500
- var Y;
501
- if (g) {
502
- U = true;
503
- Y = typeof g === "string" ? g : ye;
504
+ var Z = false;
505
+ var ee;
506
+ if (y) {
507
+ Z = true;
508
+ ee = typeof y === "string" ? y : ye;
504
509
  }
505
510
 
506
511
  return n().createElement(C, fe({
507
- $active: t,
508
- $isSelectable: z,
509
- $preventFocus: M || false,
510
- $selectableAppearance: D !== null && D !== void 0 ? D : false,
511
- $selected: W,
512
- "data-has-icon": !!q || !!u,
512
+ $active: a,
513
+ $isSelectable: X,
514
+ $preventFocus: L || false,
515
+ $selectableAppearance: T !== null && T !== void 0 ? T : false,
516
+ $selected: V,
517
+ "data-has-icon": !!$ || !!d,
513
518
  "data-test": "item",
514
- "data-test-selected": z ? W : null,
515
- disabled: c,
516
- elementRef: d,
517
- onClick: m,
518
- onFocus: L,
519
- onMouseDown: K,
520
- openInNewContext: U,
521
- role: V,
522
- tabIndex: M ? -1 : undefined,
523
- to: $,
524
- title: R && te()(a) ? a : undefined
525
- }, X, i()(H, "onFocus")), v && n().createElement(j, null, n().createElement(ie(), null)), n().createElement(I, null, w && D === "checkbox" && n().createElement(x, {
526
- checked: T === "some" ? "indeterminate" : T,
527
- disabled: !!c,
519
+ "data-test-selected": X ? V : null,
520
+ disabled: u,
521
+ elementRef: v,
522
+ onClick: b,
523
+ onFocus: B,
524
+ onMouseDown: W,
525
+ openInNewContext: Z,
526
+ role: G,
527
+ tabIndex: L ? -1 : undefined,
528
+ to: R,
529
+ title: H && te()(o) ? o : undefined
530
+ }, J, i()(F, "onFocus")), p && n().createElement(j, null, n().createElement(ie(), null)), n().createElement(I, null, A && T === "checkbox" && n().createElement(x, {
531
+ checked: q === "some" ? "indeterminate" : q,
532
+ disabled: !!u,
528
533
  inert: true
529
- }), q && n().createElement(k, null, q), n().createElement(E, {
530
- $descriptionBottom: !!J,
531
- $truncate: R !== null && R !== void 0 ? R : false
534
+ }), $ && n().createElement(k, null, $), n().createElement(E, {
535
+ $descriptionBottom: !!U,
536
+ $truncate: H !== null && H !== void 0 ? H : false
532
537
  }, n().createElement(_, {
533
- $truncate: R !== null && R !== void 0 ? R : false,
538
+ $truncate: H !== null && H !== void 0 ? H : false,
534
539
  "data-test": "label"
535
- }, B, g && n().createElement(n().Fragment, null, n().createElement(pe, null), n().createElement(le(), null, Y))), J && n().createElement(h, {
540
+ }, z, y && n().createElement(n().Fragment, null, n().createElement(pe, null), n().createElement(le(), null, ee))), U && n().createElement(h, {
536
541
  "data-test": "description"
537
- }, o), G && n().createElement(S, {
542
+ }, l), Q && n().createElement(S, {
538
543
  "data-test": "description"
539
- }, o)), u && n().createElement(k, {
540
- endAdornment: u
541
- }, u), Q));
544
+ }, l)), d && n().createElement(k, {
545
+ endAdornment: d
546
+ }, d), Y));
542
547
  }
543
548
  he.propTypes = ge;
544
549
  he.as = "Item";