@splunk/react-ui 5.7.0 → 5.8.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 (138) hide show
  1. package/Accordion.js +6 -6
  2. package/Box.js +83 -34
  3. package/CHANGELOG.md +34 -0
  4. package/CollapsiblePanel.js +11 -11
  5. package/ComboBox.js +31 -27
  6. package/ControlGroup.js +92 -91
  7. package/DefinitionList.js +9 -9
  8. package/Drawer.d.ts +2 -0
  9. package/Drawer.js +679 -0
  10. package/DualListbox.js +1 -1
  11. package/JSONTree.js +73 -72
  12. package/Link.js +2 -2
  13. package/MIGRATION.md +10 -0
  14. package/Menu.js +338 -240
  15. package/Modal.js +127 -109
  16. package/Multiselect.js +437 -351
  17. package/Paginator.js +14 -12
  18. package/Popover.js +4 -1
  19. package/README.md +11 -0
  20. package/RadioBar.js +1 -1
  21. package/Search.js +103 -88
  22. package/Select.js +42 -40
  23. package/SelectBase.js +374 -328
  24. package/SidePanel.js +346 -167
  25. package/SlidingPanels.js +11 -11
  26. package/StepBar.js +7 -7
  27. package/Switch.js +5 -5
  28. package/Text.js +24 -24
  29. package/TextArea.js +7 -7
  30. package/TransitionOpen.js +204 -185
  31. package/docs-llm/Accordion.md +267 -0
  32. package/docs-llm/Anchor Menu.md +115 -0
  33. package/docs-llm/Anchor.md +54 -0
  34. package/docs-llm/AnimationToggle.md +254 -0
  35. package/docs-llm/Avatar.md +298 -0
  36. package/docs-llm/Badge.md +212 -0
  37. package/docs-llm/Breadcrumbs.md +306 -0
  38. package/docs-llm/Button Group.md +53 -0
  39. package/docs-llm/Button.md +361 -0
  40. package/docs-llm/Card Layout.md +286 -0
  41. package/docs-llm/Card.md +619 -0
  42. package/docs-llm/Checkbox.md +218 -0
  43. package/docs-llm/Chip.md +291 -0
  44. package/docs-llm/Clickable.md +160 -0
  45. package/docs-llm/Code.md +292 -0
  46. package/docs-llm/Collapsible Panel.md +744 -0
  47. package/docs-llm/Color.md +253 -0
  48. package/docs-llm/Column Layout.md +391 -0
  49. package/docs-llm/Combo Box.md +540 -0
  50. package/docs-llm/Control Group.md +594 -0
  51. package/docs-llm/Date.md +270 -0
  52. package/docs-llm/Definition List.md +278 -0
  53. package/docs-llm/Divider.md +216 -0
  54. package/docs-llm/Drawer.md +414 -0
  55. package/docs-llm/Dropdown.md +472 -0
  56. package/docs-llm/Dual Listbox.md +325 -0
  57. package/docs-llm/File.md +653 -0
  58. package/docs-llm/Form Rows.md +374 -0
  59. package/docs-llm/Heading.md +179 -0
  60. package/docs-llm/Image.md +109 -0
  61. package/docs-llm/JSON Tree.md +260 -0
  62. package/docs-llm/Layer.md +74 -0
  63. package/docs-llm/Layout.md +50 -0
  64. package/docs-llm/Link.md +318 -0
  65. package/docs-llm/List.md +189 -0
  66. package/docs-llm/Markdown.md +179 -0
  67. package/docs-llm/Menu.md +735 -0
  68. package/docs-llm/Message Bar.md +236 -0
  69. package/docs-llm/Message.md +248 -0
  70. package/docs-llm/Modal.md +443 -0
  71. package/docs-llm/Monogram.md +159 -0
  72. package/docs-llm/Multiselect.md +937 -0
  73. package/docs-llm/Number.md +298 -0
  74. package/docs-llm/Paginator.md +395 -0
  75. package/docs-llm/Paragraph.md +148 -0
  76. package/docs-llm/Phone Number.md +254 -0
  77. package/docs-llm/Popover.md +166 -0
  78. package/docs-llm/Progress.md +141 -0
  79. package/docs-llm/Radio Bar.md +303 -0
  80. package/docs-llm/Radio List.md +350 -0
  81. package/docs-llm/Resize.md +362 -0
  82. package/docs-llm/Screen Reader Content.md +73 -0
  83. package/docs-llm/Scroll Container Context.md +155 -0
  84. package/docs-llm/Scroll.md +152 -0
  85. package/docs-llm/Search.md +381 -0
  86. package/docs-llm/Select.md +985 -0
  87. package/docs-llm/Side Panel.md +777 -0
  88. package/docs-llm/Slider.md +339 -0
  89. package/docs-llm/Sliding Panels.md +340 -0
  90. package/docs-llm/Split Button.md +295 -0
  91. package/docs-llm/Static Content.md +90 -0
  92. package/docs-llm/Step Bar.md +292 -0
  93. package/docs-llm/Switch.md +268 -0
  94. package/docs-llm/Tab Bar.md +439 -0
  95. package/docs-llm/Tab Layout.md +398 -0
  96. package/docs-llm/Table.md +2642 -0
  97. package/docs-llm/Text Area.md +253 -0
  98. package/docs-llm/Text.md +339 -0
  99. package/docs-llm/Tooltip.md +325 -0
  100. package/docs-llm/Transition Open.md +406 -0
  101. package/docs-llm/Tree.md +586 -0
  102. package/docs-llm/Typography.md +125 -0
  103. package/docs-llm/Wait Spinner.md +121 -0
  104. package/docs-llm/llms.txt +97 -0
  105. package/package.json +6 -5
  106. package/types/src/Box/Box.d.ts +2 -10
  107. package/types/src/Drawer/Body.d.ts +17 -0
  108. package/types/src/Drawer/Drawer.d.ts +114 -0
  109. package/types/src/Drawer/DrawerContext.d.ts +11 -0
  110. package/types/src/Drawer/Footer.d.ts +25 -0
  111. package/types/src/Drawer/Header.d.ts +41 -0
  112. package/types/src/Drawer/docs/examples/Basic.d.ts +6 -0
  113. package/types/src/Drawer/docs/examples/ContainerPosition.d.ts +7 -0
  114. package/types/src/Drawer/docs/examples/InitialFocus.d.ts +9 -0
  115. package/types/src/Drawer/docs/examples/InlinePosition.d.ts +7 -0
  116. package/types/src/Drawer/docs/examples/PagePosition.d.ts +7 -0
  117. package/types/src/Drawer/index.d.ts +2 -0
  118. package/types/src/JSONTree/JSONTree.d.ts +12 -5
  119. package/types/src/JSONTree/renderTreeItems.d.ts +2 -1
  120. package/types/src/Menu/Item.d.ts +2 -1
  121. package/types/src/Menu/docs/examples/SelectableCheckbox.d.ts +7 -0
  122. package/types/src/Modal/Modal.d.ts +1 -2
  123. package/types/src/Select/Option.d.ts +6 -3
  124. package/types/src/Select/Select.d.ts +8 -5
  125. package/types/src/Select/docs/examples/Dimmed.d.ts +7 -0
  126. package/types/src/SelectBase/OptionBase.d.ts +6 -3
  127. package/types/src/SelectBase/SelectBase.d.ts +8 -3
  128. package/types/src/SidePanel/SidePanel.d.ts +43 -2
  129. package/types/src/SidePanel/docs/examples/DockLayout.d.ts +17 -0
  130. package/types/src/SidePanel/docs/examples/InitialFocus.d.ts +9 -0
  131. package/types/src/TransitionOpen/TransitionOpen.d.ts +29 -4
  132. package/types/src/useKeyPress/index.d.ts +9 -2
  133. package/types/src/useOnClickOutside/index.d.ts +2 -0
  134. package/types/src/useOnClickOutside/useOnClickOutside.d.ts +4 -0
  135. package/useKeyPress.js +23 -18
  136. package/useOnClickOutside.d.ts +2 -0
  137. package/useOnClickOutside.js +79 -0
  138. package/types/src/RadioList/docs/examples/Row.d.ts +0 -6
package/SidePanel.js CHANGED
@@ -9,26 +9,26 @@
9
9
  /******/ (() => {
10
10
  /******/ // getDefaultExport function for compatibility with non-harmony modules
11
11
  /******/ e.n = t => {
12
- /******/ var r = t && t.__esModule ?
12
+ /******/ var n = t && t.__esModule ?
13
13
  /******/ () => t["default"]
14
14
  /******/ : () => t
15
15
  /******/;
16
- e.d(r, {
17
- a: r
16
+ e.d(n, {
17
+ a: n
18
18
  });
19
- /******/ return r;
19
+ /******/ return n;
20
20
  /******/ };
21
21
  /******/ })();
22
22
  /******/
23
23
  /******/ /* webpack/runtime/define property getters */
24
24
  /******/ (() => {
25
25
  /******/ // define getter functions for harmony exports
26
- /******/ e.d = (t, r) => {
27
- /******/ for (var n in r) {
28
- /******/ if (e.o(r, n) && !e.o(t, n)) {
29
- /******/ Object.defineProperty(t, n, {
26
+ /******/ e.d = (t, n) => {
27
+ /******/ for (var r in n) {
28
+ /******/ if (e.o(n, r) && !e.o(t, r)) {
29
+ /******/ Object.defineProperty(t, r, {
30
30
  enumerable: true,
31
- get: r[n]
31
+ get: n[r]
32
32
  });
33
33
  /******/ }
34
34
  /******/ }
@@ -61,220 +61,380 @@
61
61
  e.r(t);
62
62
  // EXPORTS
63
63
  e.d(t, {
64
- default: () => /* reexport */ L
64
+ default: () => /* reexport */ Q
65
65
  });
66
66
  // CONCATENATED MODULE: external "react"
67
- const r = require("react");
68
- var n = e.n(r);
69
- // CONCATENATED MODULE: external "prop-types"
70
- const o = require("prop-types");
67
+ const n = require("react");
68
+ var r = e.n(n);
69
+ // CONCATENATED MODULE: external "lodash/defer"
70
+ const o = require("lodash/defer");
71
71
  var i = e.n(o);
72
+ // CONCATENATED MODULE: external "prop-types"
73
+ const u = require("prop-types");
74
+ var a = e.n(u);
72
75
  // CONCATENATED MODULE: external "@splunk/react-ui/ModalLayer"
73
- const a = require("@splunk/react-ui/ModalLayer");
74
- var l = e.n(a);
76
+ const l = require("@splunk/react-ui/ModalLayer");
77
+ var c = e.n(l);
75
78
  // CONCATENATED MODULE: external "@splunk/react-ui/usePrevious"
76
- const u = require("@splunk/react-ui/usePrevious");
77
- var s = e.n(u);
79
+ const f = require("@splunk/react-ui/usePrevious");
80
+ var s = e.n(f);
78
81
  // CONCATENATED MODULE: external "styled-components"
79
- const c = require("styled-components");
80
- var f = e.n(c);
81
- // CONCATENATED MODULE: external "@splunk/react-ui/TransitionOpen"
82
- const y = require("@splunk/react-ui/TransitionOpen");
82
+ const y = require("styled-components");
83
83
  var d = e.n(y);
84
+ // CONCATENATED MODULE: external "@splunk/react-ui/TransitionOpen"
85
+ const v = require("@splunk/react-ui/TransitionOpen");
86
+ var p = e.n(v);
84
87
  // CONCATENATED MODULE: external "@splunk/themes"
85
- const p = require("@splunk/themes");
88
+ const b = require("@splunk/themes");
86
89
  // CONCATENATED MODULE: ./src/SidePanel/SidePanelStyles.ts
87
- var m = (0, c.css)([ "", " position:fixed;flex-direction:column;box-shadow:", ";background-color:", ";z-index:", ";" ], p.mixins.reset("flex"), p.variables.overlayShadow, p.variables.backgroundColorSidebar, p.variables.zindexModal);
88
- var b = f()(d()).withConfig({
90
+ var m = {
91
+ inline: "auto",
92
+ container: "100%",
93
+ page: "100vw"
94
+ };
95
+ var g = {
96
+ inline: "auto",
97
+ container: "100%",
98
+ page: "100vh"
99
+ };
100
+ var S = {
101
+ inline: "static",
102
+ container: "absolute",
103
+ page: "fixed"
104
+ };
105
+ var h = {
106
+ inline: "auto",
107
+ container: b.variables.zindexLayer,
108
+ page: b.variables.zindexModal
109
+ };
110
+ var O = (0, y.css)([ "", " position:", ";flex-direction:column;", " background-color:", ";z-index:", ";" ], b.mixins.reset("flex"), (function(e) {
111
+ var t = e.$dockLayout;
112
+ return S[t];
113
+ }), (function(e) {
114
+ var t = e.$dockLayout;
115
+ return t !== "inline" && (0, y.css)([ "box-shadow:", ";" ], b.variables.overlayShadow);
116
+ }), b.variables.backgroundColorSidebar, (function(e) {
117
+ var t = e.$dockLayout;
118
+ return h[t];
119
+ }));
120
+ var P = d()(p()).withConfig({
89
121
  displayName: "SidePanelStyles__StyledLeftPanelTransitionOpen",
90
122
  componentId: "mtbcuz-0"
91
- })([ "", ";top:0;left:0;height:100vh;" ], m);
92
- var v = f()(d()).withConfig({
123
+ })([ "", ";top:0;left:0;height:", ";" ], O, (function(e) {
124
+ var t = e.$dockLayout;
125
+ return g[t];
126
+ }));
127
+ var j = d()(p()).withConfig({
93
128
  displayName: "SidePanelStyles__StyledRightPanelTransitionOpen",
94
129
  componentId: "mtbcuz-1"
95
- })([ "", ";right:0;top:0;height:100vh;" ], m);
96
- var h = f()(d()).withConfig({
130
+ })([ "", ";right:0;top:0;height:", ";" ], O, (function(e) {
131
+ var t = e.$dockLayout;
132
+ return g[t];
133
+ }));
134
+ var k = d()(p()).withConfig({
97
135
  displayName: "SidePanelStyles__StyledTopPanelTransitionOpen",
98
136
  componentId: "mtbcuz-2"
99
- })([ "", ";top:0;left:0;width:100vw;" ], m);
100
- var g = f()(d()).withConfig({
137
+ })([ "", ";top:0;left:0;width:", ";" ], O, (function(e) {
138
+ var t = e.$dockLayout;
139
+ return m[t];
140
+ }));
141
+ var w = d()(p()).withConfig({
101
142
  displayName: "SidePanelStyles__StyledBottomPanelTransitionOpen",
102
143
  componentId: "mtbcuz-3"
103
- })([ "", ";left:0;bottom:0;width:100vw;" ], m);
144
+ })([ "", ";left:0;bottom:0;width:", ";" ], O, (function(e) {
145
+ var t = e.$dockLayout;
146
+ return m[t];
147
+ }));
148
+ // CONCATENATED MODULE: external "@splunk/ui-utils/focus"
149
+ const C = require("@splunk/ui-utils/focus");
150
+ // CONCATENATED MODULE: ./src/utils/resolveInitialFocusTarget.ts
151
+ function T(e) {
152
+ "@babel/helpers - typeof";
153
+ return T = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
154
+ return typeof e;
155
+ } : function(e) {
156
+ return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
157
+ }, T(e)
158
+ /**
159
+ * Resolves the initial focus target based on the initialFocus prop value.
160
+ *
161
+ * @param initialFocus - The initialFocus prop value ('first', 'container', HTMLElement, or React.Component with focus method)
162
+ * @param containerEl - The container element to use for 'first' and 'container' options
163
+ * @returns The element or component to focus, or null if none found
164
+ */;
165
+ }
166
+ function L(e, t) {
167
+ if (e === "first" && t) {
168
+ var n;
169
+ return (n = (0, C.getSortedTabbableElements)(t)[0]) !== null && n !== void 0 ? n : null;
170
+ }
171
+ if (e === "container") {
172
+ return t;
173
+ }
174
+ if (T(e) === "object") {
175
+ return e;
176
+ }
177
+ return null;
178
+ }
179
+ // CONCATENATED MODULE: ./src/utils/updateReactRef.ts
180
+ /**
181
+ * Updates a React ref. Callback refs and object refs (from `createRef` and `useRef`) are supported.
182
+ *
183
+ * @param ref - The React callback or object ref. Can be `null` or `undefined`.
184
+ * @param current - The new value of the ref.
185
+ */
186
+ function E(e, t) {
187
+ if (e) {
188
+ if (typeof e === "function") {
189
+ e(t);
190
+ } else {
191
+ // the public signature of this util uses React.Ref<T> to mirror the way React types refs.
192
+ // the intention here is to signal "we will take care of setting 'current', not you".
193
+ e.current = t;
194
+ // eslint-disable-line no-param-reassign
195
+ }
196
+ }
197
+ }
104
198
  // CONCATENATED MODULE: ./src/SidePanel/SidePanel.tsx
105
- function O(e) {
199
+ function A(e) {
106
200
  "@babel/helpers - typeof";
107
- return O = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
201
+ return A = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
108
202
  return typeof e;
109
203
  } : function(e) {
110
204
  return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
111
- }, O(e);
205
+ }, A(e);
112
206
  }
113
- function S() {
114
- return S = Object.assign ? Object.assign.bind() : function(e) {
207
+ function F() {
208
+ return F = Object.assign ? Object.assign.bind() : function(e) {
115
209
  for (var t = 1; t < arguments.length; t++) {
116
- var r = arguments[t];
117
- for (var n in r) {
118
- ({}).hasOwnProperty.call(r, n) && (e[n] = r[n]);
210
+ var n = arguments[t];
211
+ for (var r in n) {
212
+ ({}).hasOwnProperty.call(n, r) && (e[r] = n[r]);
119
213
  }
120
214
  }
121
215
  return e;
122
- }, S.apply(null, arguments);
216
+ }, F.apply(null, arguments);
123
217
  }
124
- function w(e, t) {
125
- var r = Object.keys(e);
218
+ function _(e, t) {
219
+ var n = Object.keys(e);
126
220
  if (Object.getOwnPropertySymbols) {
127
- var n = Object.getOwnPropertySymbols(e);
128
- t && (n = n.filter((function(t) {
221
+ var r = Object.getOwnPropertySymbols(e);
222
+ t && (r = r.filter((function(t) {
129
223
  return Object.getOwnPropertyDescriptor(e, t).enumerable;
130
- }))), r.push.apply(r, n);
224
+ }))), n.push.apply(n, r);
131
225
  }
132
- return r;
226
+ return n;
133
227
  }
134
- function P(e) {
228
+ function M(e) {
135
229
  for (var t = 1; t < arguments.length; t++) {
136
- var r = null != arguments[t] ? arguments[t] : {};
137
- t % 2 ? w(Object(r), !0).forEach((function(t) {
138
- j(e, t, r[t]);
139
- })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : w(Object(r)).forEach((function(t) {
140
- Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t));
230
+ var n = null != arguments[t] ? arguments[t] : {};
231
+ t % 2 ? _(Object(n), !0).forEach((function(t) {
232
+ N(e, t, n[t]);
233
+ })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : _(Object(n)).forEach((function(t) {
234
+ Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
141
235
  }));
142
236
  }
143
237
  return e;
144
238
  }
145
- function j(e, t, r) {
146
- return (t = C(t)) in e ? Object.defineProperty(e, t, {
147
- value: r,
239
+ function N(e, t, n) {
240
+ return (t = R(t)) in e ? Object.defineProperty(e, t, {
241
+ value: n,
148
242
  enumerable: !0,
149
243
  configurable: !0,
150
244
  writable: !0
151
- }) : e[t] = r, e;
245
+ }) : e[t] = n, e;
152
246
  }
153
- function C(e) {
154
- var t = k(e, "string");
155
- return "symbol" == O(t) ? t : t + "";
247
+ function R(e) {
248
+ var t = q(e, "string");
249
+ return "symbol" == A(t) ? t : t + "";
156
250
  }
157
- function k(e, t) {
158
- if ("object" != O(e) || !e) return e;
159
- var r = e[Symbol.toPrimitive];
160
- if (void 0 !== r) {
161
- var n = r.call(e, t || "default");
162
- if ("object" != O(n)) return n;
251
+ function q(e, t) {
252
+ if ("object" != A(e) || !e) return e;
253
+ var n = e[Symbol.toPrimitive];
254
+ if (void 0 !== n) {
255
+ var r = n.call(e, t || "default");
256
+ if ("object" != A(r)) return r;
163
257
  throw new TypeError("@@toPrimitive must return a primitive value.");
164
258
  }
165
259
  return ("string" === t ? String : Number)(e);
166
260
  }
167
- function A(e, t) {
168
- return M(e) || E(e, t) || T(e, t) || N();
261
+ function x(e, t) {
262
+ return B(e) || D(e, t) || $(e, t) || I();
169
263
  }
170
- function N() {
264
+ function I() {
171
265
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
172
266
  }
173
- function T(e, t) {
267
+ function $(e, t) {
174
268
  if (e) {
175
- if ("string" == typeof e) return x(e, t);
176
- var r = {}.toString.call(e).slice(8, -1);
177
- return "Object" === r && e.constructor && (r = e.constructor.name), "Map" === r || "Set" === r ? Array.from(e) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? x(e, t) : void 0;
269
+ if ("string" == typeof e) return z(e, t);
270
+ var n = {}.toString.call(e).slice(8, -1);
271
+ return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? z(e, t) : void 0;
178
272
  }
179
273
  }
180
- function x(e, t) {
274
+ function z(e, t) {
181
275
  (null == t || t > e.length) && (t = e.length);
182
- for (var r = 0, n = Array(t); r < t; r++) {
183
- n[r] = e[r];
276
+ for (var n = 0, r = Array(t); n < t; n++) {
277
+ r[n] = e[n];
184
278
  }
185
- return n;
279
+ return r;
186
280
  }
187
- function E(e, t) {
188
- var r = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
189
- if (null != r) {
190
- var n, o, i, a, l = [], u = !0, s = !1;
281
+ function D(e, t) {
282
+ var n = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
283
+ if (null != n) {
284
+ var r, o, i, u, a = [], l = !0, c = !1;
191
285
  try {
192
- if (i = (r = r.call(e)).next, 0 === t) {
193
- if (Object(r) !== r) return;
194
- u = !1;
195
- } else for (;!(u = (n = i.call(r)).done) && (l.push(n.value), l.length !== t); u = !0) {
286
+ if (i = (n = n.call(e)).next, 0 === t) {
287
+ if (Object(n) !== n) return;
288
+ l = !1;
289
+ } else for (;!(l = (r = i.call(n)).done) && (a.push(r.value), a.length !== t); l = !0) {
196
290
  }
197
291
  } catch (e) {
198
- s = !0, o = e;
292
+ c = !0, o = e;
199
293
  } finally {
200
294
  try {
201
- if (!u && null != r["return"] && (a = r["return"](), Object(a) !== a)) return;
295
+ if (!l && null != n["return"] && (u = n["return"](), Object(u) !== u)) return;
202
296
  } finally {
203
- if (s) throw o;
297
+ if (c) throw o;
204
298
  }
205
299
  }
206
- return l;
300
+ return a;
207
301
  }
208
302
  }
209
- function M(e) {
303
+ function B(e) {
210
304
  if (Array.isArray(e)) return e;
211
305
  }
212
- function _(e, t) {
306
+ function U(e, t) {
213
307
  if (null == e) return {};
214
- var r, n, o = q(e, t);
308
+ var n, r, o = Y(e, t);
215
309
  if (Object.getOwnPropertySymbols) {
216
310
  var i = Object.getOwnPropertySymbols(e);
217
- for (n = 0; n < i.length; n++) {
218
- r = i[n], -1 === t.indexOf(r) && {}.propertyIsEnumerable.call(e, r) && (o[r] = e[r]);
311
+ for (r = 0; r < i.length; r++) {
312
+ n = i[r], -1 === t.indexOf(n) && {}.propertyIsEnumerable.call(e, n) && (o[n] = e[n]);
219
313
  }
220
314
  }
221
315
  return o;
222
316
  }
223
- function q(e, t) {
317
+ function Y(e, t) {
224
318
  if (null == e) return {};
225
- var r = {};
226
- for (var n in e) {
227
- if ({}.hasOwnProperty.call(e, n)) {
228
- if (-1 !== t.indexOf(n)) continue;
229
- r[n] = e[n];
319
+ var n = {};
320
+ for (var r in e) {
321
+ if ({}.hasOwnProperty.call(e, r)) {
322
+ if (-1 !== t.indexOf(r)) continue;
323
+ n[r] = e[r];
230
324
  }
231
325
  }
232
- return r;
326
+ return n;
233
327
  }
234
- /** @public */ var I = {
235
- children: i().node,
236
- dockPosition: i().oneOf([ "top", "bottom", "left", "right" ]),
237
- elementRef: i().oneOfType([ i().func, i().object ]),
238
- innerClassName: i().string,
239
- innerStyle: i().object,
240
- onAnimationEnd: i().func,
241
- onRequestClose: i().func,
242
- open: i().bool,
243
- outerClassName: i().string,
244
- outerStyle: i().object,
245
- useLayerForClickAway: i().bool
328
+ /** @public */ var G = {
329
+ children: a().node,
330
+ dockLayout: a().oneOf([ "page", "container", "inline" ]),
331
+ dockPosition: a().oneOf([ "top", "bottom", "left", "right" ]),
332
+ elementRef: a().oneOfType([ a().func, a().object ]),
333
+ initialFocus: a().oneOfType([ a().object, a().oneOf([ "first", "container" ]) ]),
334
+ innerClassName: a().string,
335
+ innerStyle: a().object,
336
+ onAnimationEnd: a().func,
337
+ onRequestClose: a().func,
338
+ open: a().bool,
339
+ outerClassName: a().string,
340
+ outerStyle: a().object,
341
+ returnFocus: a().oneOfType([ a().func, a().object ]),
342
+ useLayerForClickAway: a().bool
246
343
  };
247
- var R = {
344
+ var H = {
248
345
  left: "slideFromLeft",
249
346
  right: "slideFromRight",
250
347
  top: "slideFromTop",
251
348
  bottom: "slideFromBottom"
252
349
  };
253
- var F = {
254
- left: b,
255
- right: v,
256
- top: h,
257
- bottom: g
350
+ var J = {
351
+ left: P,
352
+ right: j,
353
+ top: k,
354
+ bottom: w
258
355
  };
259
- function z(e) {
260
- var t = e.children, o = e.dockPosition, i = o === void 0 ? "right" : o, a = e.elementRef, u = e.innerClassName, c = e.innerStyle, f = e.onAnimationEnd, y = e.onRequestClose, d = e.open, p = e.outerClassName, m = e.outerStyle, b = e.useLayerForClickAway, v = b === void 0 ? true : b, h = _(e, [ "children", "dockPosition", "elementRef", "innerClassName", "innerStyle", "onAnimationEnd", "onRequestClose", "open", "outerClassName", "outerStyle", "useLayerForClickAway" ]);
356
+ function K(e) {
357
+ var t = e.children, o = e.dockLayout, u = o === void 0 ? "page" : o, a = e.dockPosition, l = a === void 0 ? "right" : a, f = e.elementRef, y = e.initialFocus, d = e.innerClassName, v = e.innerStyle, p = e.onAnimationEnd, b = e.onRequestClose, m = e.open, g = e.outerClassName, S = e.outerStyle, h = e.returnFocus, O = e.useLayerForClickAway, P = O === void 0 ? true : O, j = U(e, [ "children", "dockLayout", "dockPosition", "elementRef", "initialFocus", "innerClassName", "innerStyle", "onAnimationEnd", "onRequestClose", "open", "outerClassName", "outerStyle", "returnFocus", "useLayerForClickAway" ]);
261
358
  // @docs-props-type SidePanelPropsBase
262
- var g = (0, r.useState)(false), O = A(g, 2), w = O[0], j = O[1];
263
- var C = s()(d);
264
- (0, r.useEffect)((function() {
359
+ var k = (0, n.useRef)(null);
360
+ var w = (0, n.useRef)(undefined);
361
+ // Use symbol to distinguish "never applied" from "applied with undefined/null"
362
+ var C = (0, n.useRef)(Symbol("FOCUS_NOT_YET_APPLIED")).current;
363
+ var T = (0, n.useRef)(C);
364
+ var A = (0, n.useState)(false), _ = x(A, 2), N = _[0], R = _[1];
365
+ var q = s()(m);
366
+ (0, n.useEffect)((function() {
265
367
  // prevOpen starts undefined, and we don't want to make the comparison in that situation
266
- if (C != null && d !== C) {
267
- j(true);
368
+ if (q != null && m !== q) {
369
+ R(true);
370
+ }
371
+ }), [ m, q ]);
372
+ // Focus handling strategy: consistent across all dockLayouts
373
+ // - If initialFocus is passed, use it
374
+ // - Else use 'first' (first focusable element)
375
+ // - Else use container (fallback when no focusable elements)
376
+ var I = (0, n.useCallback)((function() {
377
+ // Clear pending focus if initialFocus target changed
378
+ var e = y !== null && y !== void 0 ? y : null;
379
+ if (T.current !== e) {
380
+ clearTimeout(w.current);
381
+ }
382
+ // PANEL OPENING: Apply initial focus if needed
383
+ if (m) {
384
+ w.current = i()((function() {
385
+ var e = y !== null && y !== void 0 ? y : "first";
386
+ // Only apply focus if the target changed from last time
387
+ if (T.current !== (e !== null && e !== void 0 ? e : null)) {
388
+ var t, n;
389
+ var r = L(e, k.current);
390
+ // Fall back to container if target has no focus method
391
+ if (!((t = r) === null || t === void 0 ? void 0 : t.focus)) {
392
+ r = k.current;
393
+ }
394
+ // TODO: bug fix https://splunk.atlassian.net/browse/SUI-8621
395
+ (n = r) === null || n === void 0 ? void 0 : n.focus({
396
+ preventScroll: true
397
+ });
398
+ T.current = e !== null && e !== void 0 ? e : null;
399
+ }
400
+ }));
268
401
  }
269
- }), [ d, C ]);
270
- var k = (0, r.useMemo)((function() {
271
- if (v) {
402
+ }), [ m, y ]);
403
+ var $ = (0, n.useCallback)((function() {
404
+ // PANEL CLOSING: Reset state and handle return focus
405
+ if (!m) {
406
+ // Reset focus tracking state
407
+ T.current = C;
408
+ clearTimeout(w.current);
409
+ // Return focus to invoking element if panel was previously open
410
+ if (q && h) {
411
+ if (typeof h === "function") {
412
+ h();
413
+ } else {
414
+ i()((function() {
415
+ var e, t;
416
+ (e = h.current) === null || e === void 0 ? void 0 : (t = e.focus) === null || t === void 0 ? void 0 : t.call(e);
417
+ }));
418
+ }
419
+ }
420
+ }
421
+ }), [ m, q, h, C ]);
422
+ // Handle return focus when panel closes, runs on change of handleReturnFocus deps
423
+ (0, n.useEffect)((function() {
424
+ $();
425
+ }), [ $ ]);
426
+ // Handle initial focus when panel opens - runs on change of handleInitialFocus deps
427
+ (0, n.useEffect)((function() {
428
+ I();
429
+ }), [ I ]);
430
+ var z = (0, n.useMemo)((function() {
431
+ if (P) {
272
432
  return "interactive";
273
433
  }
274
434
  return "hidden";
275
- }), [ v ]);
276
- var N = (0, r.useMemo)((function() {
277
- if (i === "left" || i === "right") {
435
+ }), [ P ]);
436
+ var D = (0, n.useMemo)((function() {
437
+ if (l === "left" || l === "right") {
278
438
  return {
279
439
  height: "100%"
280
440
  };
@@ -282,47 +442,66 @@
282
442
  return {
283
443
  width: "100%"
284
444
  };
285
- }), [ i ]);
286
- var T = (0, r.useMemo)((function() {
287
- return P(P({}, N), c);
288
- }), [ N, c ]);
289
- var x = (0, r.useCallback)((function() {
290
- j(false);
291
- f === null || f === void 0 ? void 0 : f();
292
- }), [ f ]);
293
- var E = (0, r.useMemo)((function() {
294
- return F[i];
295
- }), [ i ]);
296
- var M = (0, r.useCallback)((function() {
445
+ }), [ l ]);
446
+ var B = (0, n.useMemo)((function() {
447
+ return M(M({}, D), v);
448
+ }), [ D, v ]);
449
+ var Y = (0, n.useCallback)((function() {
450
+ R(false);
451
+ p === null || p === void 0 ? void 0 : p();
452
+ }), [ p ]);
453
+ var G = (0, n.useCallback)((function(e) {
454
+ E(k, e);
455
+ E(f, e);
456
+ }), [ k, f ]);
457
+ var K = (0, n.useCallback)((function(e) {
458
+ T.current = null;
459
+ b === null || b === void 0 ? void 0 : b(e);
460
+ }), [ b ]);
461
+ var Q = (0, n.useMemo)((function() {
462
+ return J[l];
463
+ }), [ l ]);
464
+ var V = (0, n.useMemo)((function() {
465
+ return {
466
+ retainFocus: true,
467
+ role: "dialog",
468
+ tabIndex: -1
469
+ };
470
+ }), []);
471
+ var W = (0, n.useMemo)((function() {
297
472
 
298
- return n().createElement(E, S({
473
+ return r().createElement(Q, F({
474
+ $dockLayout: u,
299
475
  animateOnMount: true,
300
- animation: R[i],
476
+ animation: H[l],
301
477
  "data-test": "side-panel",
302
- elementRef: a,
303
- innerClassName: u,
304
- innerStyle: T,
305
- onAnimationEnd: x,
306
- open: d,
307
- outerClassName: p,
308
- outerStyle: m,
309
- retainFocus: true,
310
- role: "dialog",
311
- tabIndex: -1,
312
- takeFocus: true
313
- }, h), t);
314
- }), [ t, i, a, T, x, u, d, p, m, E, h ]);
478
+ elementRef: G,
479
+ innerClassName: d,
480
+ innerStyle: B,
481
+ onAnimationEnd: Y,
482
+ open: m,
483
+ outerClassName: g,
484
+ outerStyle: S
485
+ }, u === "page" && V, j), t);
486
+ }), [ t, u, l, B, Y, G, d, m, g, S, V, Q, j ]);
487
+ var X = (0, n.useCallback)((function() {
488
+ return W;
489
+ }), [ W ]);
490
+ // If dockLayout is container or inline we want to return without the ModalLayer below.
491
+ if (u !== "page") {
492
+ return W;
493
+ }
315
494
 
316
- return n().createElement(l(), {
317
- childrenInAnimation: w,
318
- onRequestClose: y,
319
- open: d,
320
- renderModal: M,
321
- scrim: k
495
+ return r().createElement(c(), {
496
+ childrenInAnimation: N,
497
+ onRequestClose: K,
498
+ open: m,
499
+ renderModal: X,
500
+ scrim: z
322
501
  });
323
502
  }
324
- z.propTypes = I;
325
- /* harmony default export */ const L = z;
503
+ K.propTypes = G;
504
+ /* harmony default export */ const Q = K;
326
505
  // CONCATENATED MODULE: ./src/SidePanel/index.ts
327
506
  module.exports = t;
328
507
  /******/})();