@carbon/react 1.24.0 → 1.25.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.
- package/es/components/CodeSnippet/CodeSnippet.js +13 -115
- package/es/components/ComboBox/ComboBox.d.ts +6 -0
- package/es/components/ComboBox/ComboBox.js +19 -172
- package/es/components/ComboButton/index.js +164 -0
- package/es/components/ComposedModal/ComposedModal.js +1 -2
- package/es/components/DataTable/TableToolbar.d.ts +19 -0
- package/es/components/DataTable/TableToolbar.js +1 -1
- package/es/components/DataTable/TableToolbarAction.d.ts +21 -0
- package/es/components/DataTable/TableToolbarContent.d.ts +21 -0
- package/es/components/DataTable/TableToolbarMenu.d.ts +24 -0
- package/es/components/DataTable/TableToolbarMenu.js +3 -3
- package/es/components/DataTable/tools/sorting.js +2 -1
- package/es/components/DataTableSkeleton/DataTableSkeleton.d.ts +107 -0
- package/es/components/Dropdown/Dropdown.d.ts +6 -0
- package/es/components/Dropdown/Dropdown.js +8 -145
- package/es/components/FileUploader/FileUploader.js +1 -1
- package/es/components/FileUploader/FileUploaderDropContainer.js +30 -18
- package/es/components/FileUploader/FileUploaderItem.js +2 -1
- package/es/components/FileUploader/Filename.js +8 -2
- package/es/components/FluidTextArea/FluidTextArea.js +12 -1
- package/es/components/IconButton/index.js +1 -0
- package/es/components/ListBox/ListBoxSelection.js +4 -23
- package/es/components/ListBox/next/ListBoxSelection.js +2 -23
- package/es/components/Menu/Menu.js +50 -29
- package/es/components/Menu/MenuItem.js +1 -0
- package/es/components/MenuButton/index.js +127 -0
- package/es/components/Modal/Modal.js +4 -3
- package/es/components/MultiSelect/FilterableMultiSelect.js +31 -137
- package/es/components/MultiSelect/MultiSelect.d.ts +1 -1
- package/es/components/MultiSelect/MultiSelect.js +48 -26
- package/es/components/Notification/Notification.js +27 -264
- package/es/components/OverflowMenu/OverflowMenu.js +13 -139
- package/es/components/OverflowMenuItem/OverflowMenuItem.d.ts +58 -0
- package/es/components/OverflowMenuItem/OverflowMenuItem.js +12 -7
- package/es/components/OverflowMenuV2/index.js +15 -51
- package/es/components/Popover/index.d.ts +5 -1
- package/es/components/Popover/index.js +37 -9
- package/es/components/RadioButtonGroup/RadioButtonGroup.js +7 -4
- package/es/components/RadioTile/RadioTile.js +6 -6
- package/es/components/Select/Select.d.ts +89 -0
- package/es/components/SelectItem/SelectItem.d.ts +62 -0
- package/es/components/SelectItem/SelectItem.js +2 -4
- package/es/components/SelectItemGroup/SelectItemGroup.d.ts +52 -0
- package/es/components/SkeletonText/SkeletonText.js +1 -1
- package/es/components/StructuredList/StructuredList.js +10 -38
- package/es/components/Tabs/Tabs.js +3 -1
- package/es/components/TextArea/TextArea.Skeleton.d.ts +33 -0
- package/es/components/TextArea/TextArea.Skeleton.js +5 -5
- package/es/components/TextArea/TextArea.d.ts +9 -2
- package/es/components/TextArea/TextArea.js +31 -8
- package/es/components/TextArea/index.js +1 -0
- package/es/components/Toggle/Toggle.js +8 -19
- package/es/components/Tooltip/DefinitionTooltip.d.ts +52 -0
- package/es/components/Tooltip/DefinitionTooltip.js +2 -2
- package/es/components/Tooltip/Tooltip.d.ts +117 -0
- package/es/components/Tooltip/Tooltip.js +6 -4
- package/es/components/Tooltip/index.d.ts +9 -0
- package/es/index.d.ts +2 -0
- package/es/index.js +5 -3
- package/es/internal/ClickListener.js +1 -2
- package/es/internal/keyboard/match.js +1 -1
- package/es/internal/useAttachedMenu.js +85 -0
- package/es/internal/useDelayedState.d.ts +19 -0
- package/es/internal/useDelayedState.js +7 -3
- package/es/internal/useId.js +1 -1
- package/lib/components/CodeSnippet/CodeSnippet.js +13 -115
- package/lib/components/ComboBox/ComboBox.d.ts +6 -0
- package/lib/components/ComboBox/ComboBox.js +18 -171
- package/lib/components/ComboButton/index.js +174 -0
- package/lib/components/ComposedModal/ComposedModal.js +1 -2
- package/lib/components/DataTable/TableToolbar.d.ts +19 -0
- package/lib/components/DataTable/TableToolbar.js +1 -1
- package/lib/components/DataTable/TableToolbarAction.d.ts +21 -0
- package/lib/components/DataTable/TableToolbarContent.d.ts +21 -0
- package/lib/components/DataTable/TableToolbarMenu.d.ts +24 -0
- package/lib/components/DataTable/TableToolbarMenu.js +3 -3
- package/lib/components/DataTable/tools/sorting.js +2 -1
- package/lib/components/DataTableSkeleton/DataTableSkeleton.d.ts +107 -0
- package/lib/components/Dropdown/Dropdown.d.ts +6 -0
- package/lib/components/Dropdown/Dropdown.js +7 -144
- package/lib/components/FileUploader/FileUploader.js +1 -1
- package/lib/components/FileUploader/FileUploaderDropContainer.js +30 -18
- package/lib/components/FileUploader/FileUploaderItem.js +2 -1
- package/lib/components/FileUploader/Filename.js +8 -2
- package/lib/components/FluidTextArea/FluidTextArea.js +12 -1
- package/lib/components/IconButton/index.js +1 -0
- package/lib/components/ListBox/ListBoxSelection.js +4 -23
- package/lib/components/ListBox/next/ListBoxSelection.js +2 -23
- package/lib/components/Menu/Menu.js +50 -29
- package/lib/components/Menu/MenuItem.js +1 -0
- package/lib/components/MenuButton/index.js +137 -0
- package/lib/components/Modal/Modal.js +4 -3
- package/lib/components/MultiSelect/FilterableMultiSelect.js +29 -135
- package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
- package/lib/components/MultiSelect/MultiSelect.js +47 -25
- package/lib/components/Notification/Notification.js +27 -264
- package/lib/components/OverflowMenu/OverflowMenu.js +13 -139
- package/lib/components/OverflowMenuItem/OverflowMenuItem.d.ts +58 -0
- package/lib/components/OverflowMenuItem/OverflowMenuItem.js +12 -7
- package/lib/components/OverflowMenuV2/index.js +13 -49
- package/lib/components/Popover/index.d.ts +5 -1
- package/lib/components/Popover/index.js +37 -9
- package/lib/components/RadioButtonGroup/RadioButtonGroup.js +6 -3
- package/lib/components/RadioTile/RadioTile.js +6 -6
- package/lib/components/Select/Select.d.ts +89 -0
- package/lib/components/SelectItem/SelectItem.d.ts +62 -0
- package/lib/components/SelectItem/SelectItem.js +1 -3
- package/lib/components/SelectItemGroup/SelectItemGroup.d.ts +52 -0
- package/lib/components/SkeletonText/SkeletonText.js +1 -1
- package/lib/components/StructuredList/StructuredList.js +10 -38
- package/lib/components/Tabs/Tabs.js +3 -1
- package/lib/components/TextArea/TextArea.Skeleton.d.ts +33 -0
- package/lib/components/TextArea/TextArea.Skeleton.js +5 -5
- package/lib/components/TextArea/TextArea.d.ts +9 -2
- package/lib/components/TextArea/TextArea.js +30 -7
- package/lib/components/TextArea/index.js +2 -0
- package/lib/components/Toggle/Toggle.js +8 -19
- package/lib/components/Tooltip/DefinitionTooltip.d.ts +52 -0
- package/lib/components/Tooltip/DefinitionTooltip.js +2 -2
- package/lib/components/Tooltip/Tooltip.d.ts +117 -0
- package/lib/components/Tooltip/Tooltip.js +6 -4
- package/lib/components/Tooltip/index.d.ts +9 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +50 -46
- package/lib/internal/ClickListener.js +1 -2
- package/lib/internal/keyboard/match.js +1 -1
- package/lib/internal/useAttachedMenu.js +89 -0
- package/lib/internal/useDelayedState.d.ts +19 -0
- package/lib/internal/useDelayedState.js +7 -3
- package/lib/internal/useId.js +1 -1
- package/package.json +3 -3
|
@@ -30,7 +30,9 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
30
30
|
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
31
31
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
32
32
|
|
|
33
|
-
var
|
|
33
|
+
var _Dropdown$propTypes;
|
|
34
|
+
|
|
35
|
+
var _excluded = ["className", "disabled", "direction", "items", "label", "aria-label", "ariaLabel", "itemToString", "itemToElement", "renderSelectedItem", "type", "size", "onChange", "id", "titleText", "hideLabel", "helperText", "translateWithId", "light", "invalid", "invalidText", "warn", "warnText", "initialSelectedItem", "selectedItem", "downshiftProps", "readOnly"];
|
|
34
36
|
|
|
35
37
|
var defaultItemToString = function defaultItemToString(item) {
|
|
36
38
|
if (typeof item === 'string') {
|
|
@@ -56,7 +58,8 @@ var Dropdown = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
56
58
|
direction = _ref.direction,
|
|
57
59
|
items = _ref.items,
|
|
58
60
|
label = _ref.label,
|
|
59
|
-
ariaLabel = _ref
|
|
61
|
+
ariaLabel = _ref['aria-label'],
|
|
62
|
+
deprecatedAriaLabel = _ref.ariaLabel,
|
|
60
63
|
_ref$itemToString = _ref.itemToString,
|
|
61
64
|
itemToString = _ref$itemToString === void 0 ? defaultItemToString : _ref$itemToString,
|
|
62
65
|
itemToElement = _ref.itemToElement,
|
|
@@ -171,7 +174,7 @@ var Dropdown = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
171
174
|
}, getLabelProps()), titleText), /*#__PURE__*/React__default["default"].createElement(index$1["default"], {
|
|
172
175
|
onFocus: handleFocus,
|
|
173
176
|
onBlur: handleFocus,
|
|
174
|
-
"aria-label": ariaLabel,
|
|
177
|
+
"aria-label": deprecatedAriaLabel || ariaLabel,
|
|
175
178
|
size: size,
|
|
176
179
|
className: className,
|
|
177
180
|
invalid: invalid,
|
|
@@ -224,147 +227,7 @@ var Dropdown = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
224
227
|
}))), !inline && !invalid && !warn && helper);
|
|
225
228
|
});
|
|
226
229
|
Dropdown.displayName = 'Dropdown';
|
|
227
|
-
Dropdown.propTypes = {
|
|
228
|
-
/**
|
|
229
|
-
* 'aria-label' of the ListBox component.
|
|
230
|
-
*/
|
|
231
|
-
ariaLabel: PropTypes__default["default"].string,
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Provide a custom className to be applied on the bx--dropdown node
|
|
235
|
-
*/
|
|
236
|
-
className: PropTypes__default["default"].string,
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Specify the direction of the dropdown. Can be either top or bottom.
|
|
240
|
-
*/
|
|
241
|
-
direction: PropTypes__default["default"].oneOf(['top', 'bottom']),
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* Disable the control
|
|
245
|
-
*/
|
|
246
|
-
disabled: PropTypes__default["default"].bool,
|
|
247
|
-
|
|
248
|
-
/**
|
|
249
|
-
* Additional props passed to Downshift
|
|
250
|
-
*/
|
|
251
|
-
downshiftProps: PropTypes__default["default"].object,
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Provide helper text that is used alongside the control label for
|
|
255
|
-
* additional help
|
|
256
|
-
*/
|
|
257
|
-
helperText: PropTypes__default["default"].node,
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* Specify whether the title text should be hidden or not
|
|
261
|
-
*/
|
|
262
|
-
hideLabel: PropTypes__default["default"].bool,
|
|
263
|
-
|
|
264
|
-
/**
|
|
265
|
-
* Specify a custom `id`
|
|
266
|
-
*/
|
|
267
|
-
id: PropTypes__default["default"].string.isRequired,
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Allow users to pass in an arbitrary item or a string (in case their items are an array of strings)
|
|
271
|
-
* from their collection that are pre-selected
|
|
272
|
-
*/
|
|
273
|
-
initialSelectedItem: PropTypes__default["default"].oneOfType([PropTypes__default["default"].object, PropTypes__default["default"].string, PropTypes__default["default"].number]),
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* Specify if the currently selected value is invalid.
|
|
277
|
-
*/
|
|
278
|
-
invalid: PropTypes__default["default"].bool,
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Message which is displayed if the value is invalid.
|
|
282
|
-
*/
|
|
283
|
-
invalidText: PropTypes__default["default"].node,
|
|
284
|
-
|
|
285
|
-
/**
|
|
286
|
-
* Function to render items as custom components instead of strings.
|
|
287
|
-
* Defaults to null and is overridden by a getter
|
|
288
|
-
*/
|
|
289
|
-
itemToElement: PropTypes__default["default"].func,
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* Helper function passed to downshift that allows the library to render a
|
|
293
|
-
* given item to a string label. By default, it extracts the `label` field
|
|
294
|
-
* from a given item to serve as the item label in the list.
|
|
295
|
-
*/
|
|
296
|
-
itemToString: PropTypes__default["default"].func,
|
|
297
|
-
|
|
298
|
-
/**
|
|
299
|
-
* We try to stay as generic as possible here to allow individuals to pass
|
|
300
|
-
* in a collection of whatever kind of data structure they prefer
|
|
301
|
-
*/
|
|
302
|
-
items: PropTypes__default["default"].array.isRequired,
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* Generic `label` that will be used as the textual representation of what
|
|
306
|
-
* this field is for
|
|
307
|
-
*/
|
|
308
|
-
label: PropTypes__default["default"].node.isRequired,
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* `true` to use the light version.
|
|
312
|
-
*/
|
|
313
|
-
light: deprecate["default"](PropTypes__default["default"].bool, 'The `light` prop for `Dropdown` has ' + 'been deprecated in favor of the new `Layer` component. It will be removed in the next major release.'),
|
|
314
|
-
|
|
315
|
-
/**
|
|
316
|
-
* `onChange` is a utility for this controlled component to communicate to a
|
|
317
|
-
* consuming component what kind of internal state changes are occurring.
|
|
318
|
-
*/
|
|
319
|
-
onChange: PropTypes__default["default"].func,
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Whether or not the Dropdown is readonly
|
|
323
|
-
*/
|
|
324
|
-
readOnly: PropTypes__default["default"].bool,
|
|
325
|
-
|
|
326
|
-
/**
|
|
327
|
-
* An optional callback to render the currently selected item as a react element instead of only
|
|
328
|
-
* as a string.
|
|
329
|
-
*/
|
|
330
|
-
renderSelectedItem: PropTypes__default["default"].func,
|
|
331
|
-
|
|
332
|
-
/**
|
|
333
|
-
* In the case you want to control the dropdown selection entirely.
|
|
334
|
-
*/
|
|
335
|
-
selectedItem: PropTypes__default["default"].oneOfType([PropTypes__default["default"].object, PropTypes__default["default"].string, PropTypes__default["default"].number]),
|
|
336
|
-
|
|
337
|
-
/**
|
|
338
|
-
* Specify the size of the ListBox. Currently supports either `sm`, `md` or `lg` as an option.
|
|
339
|
-
*/
|
|
340
|
-
size: ListBoxPropTypes.ListBoxSize,
|
|
341
|
-
|
|
342
|
-
/**
|
|
343
|
-
* Provide the title text that will be read by a screen reader when
|
|
344
|
-
* visiting this control
|
|
345
|
-
*/
|
|
346
|
-
titleText: PropTypes__default["default"].node.isRequired,
|
|
347
|
-
|
|
348
|
-
/**
|
|
349
|
-
* Callback function for translating ListBoxMenuIcon SVG title
|
|
350
|
-
*/
|
|
351
|
-
translateWithId: PropTypes__default["default"].func,
|
|
352
|
-
|
|
353
|
-
/**
|
|
354
|
-
* The dropdown type, `default` or `inline`
|
|
355
|
-
*/
|
|
356
|
-
type: ListBoxPropTypes.ListBoxType,
|
|
357
|
-
|
|
358
|
-
/**
|
|
359
|
-
* Specify whether the control is currently in warning state
|
|
360
|
-
*/
|
|
361
|
-
warn: PropTypes__default["default"].bool,
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* Provide the text that is displayed when the control is in warning state
|
|
365
|
-
*/
|
|
366
|
-
warnText: PropTypes__default["default"].node
|
|
367
|
-
};
|
|
230
|
+
Dropdown.propTypes = (_Dropdown$propTypes = {}, _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, 'aria-label', PropTypes__default["default"].string), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "ariaLabel", deprecate["default"](PropTypes__default["default"].string, 'This prop syntax has been deprecated. Please use the new `aria-label`.')), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "className", PropTypes__default["default"].string), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "direction", PropTypes__default["default"].oneOf(['top', 'bottom'])), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "disabled", PropTypes__default["default"].bool), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "downshiftProps", PropTypes__default["default"].object), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "helperText", PropTypes__default["default"].node), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "hideLabel", PropTypes__default["default"].bool), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "id", PropTypes__default["default"].string.isRequired), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "initialSelectedItem", PropTypes__default["default"].oneOfType([PropTypes__default["default"].object, PropTypes__default["default"].string, PropTypes__default["default"].number])), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "invalid", PropTypes__default["default"].bool), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "invalidText", PropTypes__default["default"].node), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "itemToElement", PropTypes__default["default"].func), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "itemToString", PropTypes__default["default"].func), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "items", PropTypes__default["default"].array.isRequired), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "label", PropTypes__default["default"].node.isRequired), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "light", deprecate["default"](PropTypes__default["default"].bool, 'The `light` prop for `Dropdown` has ' + 'been deprecated in favor of the new `Layer` component. It will be removed in the next major release.')), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "onChange", PropTypes__default["default"].func), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "readOnly", PropTypes__default["default"].bool), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "renderSelectedItem", PropTypes__default["default"].func), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "selectedItem", PropTypes__default["default"].oneOfType([PropTypes__default["default"].object, PropTypes__default["default"].string, PropTypes__default["default"].number])), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "size", ListBoxPropTypes.ListBoxSize), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "titleText", PropTypes__default["default"].node.isRequired), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "translateWithId", PropTypes__default["default"].func), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "type", ListBoxPropTypes.ListBoxType), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "warn", PropTypes__default["default"].bool), _rollupPluginBabelHelpers.defineProperty(_Dropdown$propTypes, "warnText", PropTypes__default["default"].node), _Dropdown$propTypes);
|
|
368
231
|
Dropdown.defaultProps = {
|
|
369
232
|
disabled: false,
|
|
370
233
|
type: 'default',
|
|
@@ -187,8 +187,8 @@ var FileUploader = /*#__PURE__*/function (_React$Component) {
|
|
|
187
187
|
}, name), /*#__PURE__*/React__default["default"].createElement("span", {
|
|
188
188
|
className: "".concat(prefix, "--file__state-container")
|
|
189
189
|
}, /*#__PURE__*/React__default["default"].createElement(Filename["default"], {
|
|
190
|
+
name: name,
|
|
190
191
|
iconDescription: iconDescription,
|
|
191
|
-
"aria-describedby": name,
|
|
192
192
|
status: filenameStatus,
|
|
193
193
|
onKeyDown: function onKeyDown(evt) {
|
|
194
194
|
if (match.matches(evt, [keys.Enter, keys.Space])) {
|
|
@@ -15,6 +15,8 @@ var PropTypes = require('prop-types');
|
|
|
15
15
|
var cx = require('classnames');
|
|
16
16
|
var uniqueId = require('../../tools/uniqueId.js');
|
|
17
17
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
18
|
+
var events = require('../../tools/events.js');
|
|
19
|
+
var deprecate = require('../../prop-types/deprecate.js');
|
|
18
20
|
var match = require('../../internal/keyboard/match.js');
|
|
19
21
|
var keys = require('../../internal/keyboard/keys.js');
|
|
20
22
|
|
|
@@ -24,10 +26,10 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
24
26
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
25
27
|
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
26
28
|
|
|
27
|
-
var _excluded = ["accept", "className", "id", "disabled", "labelText", "multiple", "name", "onAddFiles", "
|
|
29
|
+
var _excluded = ["accept", "className", "id", "disabled", "labelText", "multiple", "name", "onAddFiles", "onClick", "pattern", "innerRef"];
|
|
28
30
|
|
|
29
31
|
function FileUploaderDropContainer(_ref) {
|
|
30
|
-
var
|
|
32
|
+
var _classNames;
|
|
31
33
|
|
|
32
34
|
var accept = _ref.accept,
|
|
33
35
|
className = _ref.className,
|
|
@@ -37,9 +39,8 @@ function FileUploaderDropContainer(_ref) {
|
|
|
37
39
|
multiple = _ref.multiple,
|
|
38
40
|
name = _ref.name,
|
|
39
41
|
onAddFiles = _ref.onAddFiles,
|
|
42
|
+
onClick = _ref.onClick,
|
|
40
43
|
pattern = _ref.pattern,
|
|
41
|
-
role = _ref.role,
|
|
42
|
-
tabIndex = _ref.tabIndex,
|
|
43
44
|
innerRef = _ref.innerRef,
|
|
44
45
|
rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
|
|
45
46
|
|
|
@@ -54,8 +55,7 @@ function FileUploaderDropContainer(_ref) {
|
|
|
54
55
|
isActive = _useState2[0],
|
|
55
56
|
setActive = _useState2[1];
|
|
56
57
|
|
|
57
|
-
var
|
|
58
|
-
var dropareaClasses = cx__default["default"]("".concat(prefix, "--file__drop-container"), (_classNames2 = {}, _rollupPluginBabelHelpers.defineProperty(_classNames2, "".concat(prefix, "--file__drop-container--drag-over"), isActive), _rollupPluginBabelHelpers.defineProperty(_classNames2, className, className), _classNames2));
|
|
58
|
+
var dropareaClasses = cx__default["default"]("".concat(prefix, "--file__drop-container"), "".concat(prefix, "--file-browse-btn"), (_classNames = {}, _rollupPluginBabelHelpers.defineProperty(_classNames, "".concat(prefix, "--file__drop-container--drag-over"), isActive), _rollupPluginBabelHelpers.defineProperty(_classNames, "".concat(prefix, "--file-browse-btn--disabled"), disabled), _rollupPluginBabelHelpers.defineProperty(_classNames, className, className), _classNames));
|
|
59
59
|
/**
|
|
60
60
|
* Filters the array of added files based on file type restrictions
|
|
61
61
|
* @param {Event} event - Event object, used to get the list of files added
|
|
@@ -100,6 +100,12 @@ function FileUploaderDropContainer(_ref) {
|
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
var handleClick = function handleClick() {
|
|
104
|
+
if (!disabled) {
|
|
105
|
+
inputRef.current.click();
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
103
109
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
104
110
|
className: "".concat(prefix, "--file"),
|
|
105
111
|
onDragOver: function onDragOver(evt) {
|
|
@@ -135,20 +141,21 @@ function FileUploaderDropContainer(_ref) {
|
|
|
135
141
|
setActive(false);
|
|
136
142
|
handleChange(evt);
|
|
137
143
|
}
|
|
138
|
-
}, /*#__PURE__*/React__default["default"].createElement("
|
|
144
|
+
}, /*#__PURE__*/React__default["default"].createElement("button", _rollupPluginBabelHelpers["extends"]({
|
|
145
|
+
type: "button",
|
|
146
|
+
className: dropareaClasses,
|
|
139
147
|
ref: innerRef,
|
|
140
|
-
className: labelClasses,
|
|
141
|
-
htmlFor: uid,
|
|
142
|
-
tabIndex: tabIndex || 0,
|
|
143
148
|
onKeyDown: function onKeyDown(evt) {
|
|
144
149
|
if (match.matches(evt, [keys.Enter, keys.Space])) {
|
|
150
|
+
evt.preventDefault();
|
|
145
151
|
inputRef.current.click();
|
|
146
152
|
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
153
|
+
},
|
|
154
|
+
onClick: events.composeEventHandlers([onClick, handleClick])
|
|
155
|
+
}, rest), labelText), /*#__PURE__*/React__default["default"].createElement("label", {
|
|
156
|
+
htmlFor: uid,
|
|
157
|
+
className: "".concat(prefix, "--visually-hidden")
|
|
158
|
+
}, labelText), /*#__PURE__*/React__default["default"].createElement("input", {
|
|
152
159
|
type: "file",
|
|
153
160
|
id: uid,
|
|
154
161
|
className: "".concat(prefix, "--file-input"),
|
|
@@ -208,6 +215,12 @@ FileUploaderDropContainer.propTypes = {
|
|
|
208
215
|
*/
|
|
209
216
|
onAddFiles: PropTypes__default["default"].func,
|
|
210
217
|
|
|
218
|
+
/**
|
|
219
|
+
* Provide an optional function to be called when the button element
|
|
220
|
+
* is clicked
|
|
221
|
+
*/
|
|
222
|
+
onClick: PropTypes__default["default"].func,
|
|
223
|
+
|
|
211
224
|
/**
|
|
212
225
|
* Provide a custom regex pattern for the acceptedTypes
|
|
213
226
|
*/
|
|
@@ -216,15 +229,14 @@ FileUploaderDropContainer.propTypes = {
|
|
|
216
229
|
/**
|
|
217
230
|
* Provide an accessibility role for the `<FileUploaderButton>`
|
|
218
231
|
*/
|
|
219
|
-
role: PropTypes__default["default"].
|
|
232
|
+
role: deprecate["default"](PropTypes__default["default"].number, 'The `role` prop for `FileUploaderButton` has ' + 'been deprecated since it now renders a button element by default, and has an implicit role of button.'),
|
|
220
233
|
|
|
221
234
|
/**
|
|
222
235
|
* Provide a custom tabIndex value for the `<FileUploaderButton>`
|
|
223
236
|
*/
|
|
224
|
-
tabIndex: PropTypes__default["default"].number
|
|
237
|
+
tabIndex: deprecate["default"](PropTypes__default["default"].number, 'The `tabIndex` prop for `FileUploaderButton` has ' + 'been deprecated since it now renders a button element by default.')
|
|
225
238
|
};
|
|
226
239
|
FileUploaderDropContainer.defaultProps = {
|
|
227
|
-
tabIndex: 0,
|
|
228
240
|
labelText: 'Add file',
|
|
229
241
|
multiple: false,
|
|
230
242
|
onAddFiles: function onAddFiles() {},
|
|
@@ -76,13 +76,14 @@ function FileUploaderItem(_ref) {
|
|
|
76
76
|
}, name), /*#__PURE__*/React__default["default"].createElement("span", {
|
|
77
77
|
className: "".concat(prefix, "--file__state-container")
|
|
78
78
|
}, /*#__PURE__*/React__default["default"].createElement(Filename["default"], {
|
|
79
|
+
name: name,
|
|
79
80
|
iconDescription: iconDescription,
|
|
80
|
-
"aria-describedby": name,
|
|
81
81
|
status: status,
|
|
82
82
|
invalid: invalid,
|
|
83
83
|
onKeyDown: function onKeyDown(evt) {
|
|
84
84
|
if (match.matches(evt, [keys.Enter, keys.Space])) {
|
|
85
85
|
if (status === 'edit') {
|
|
86
|
+
evt.preventDefault();
|
|
86
87
|
onDelete(evt, {
|
|
87
88
|
uuid: id
|
|
88
89
|
});
|
|
@@ -23,12 +23,13 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
23
23
|
|
|
24
24
|
var _Close;
|
|
25
25
|
|
|
26
|
-
var _excluded = ["iconDescription", "status", "invalid"];
|
|
26
|
+
var _excluded = ["iconDescription", "status", "invalid", "name"];
|
|
27
27
|
|
|
28
28
|
function Filename(_ref) {
|
|
29
29
|
var iconDescription = _ref.iconDescription,
|
|
30
30
|
status = _ref.status,
|
|
31
31
|
invalid = _ref.invalid,
|
|
32
|
+
name = _ref.name,
|
|
32
33
|
rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
|
|
33
34
|
|
|
34
35
|
var prefix = usePrefix.usePrefix();
|
|
@@ -45,7 +46,7 @@ function Filename(_ref) {
|
|
|
45
46
|
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, invalid && /*#__PURE__*/React__default["default"].createElement(iconsReact.WarningFilled, {
|
|
46
47
|
className: "".concat(prefix, "--file-invalid")
|
|
47
48
|
}), /*#__PURE__*/React__default["default"].createElement("button", _rollupPluginBabelHelpers["extends"]({
|
|
48
|
-
"aria-label": iconDescription,
|
|
49
|
+
"aria-label": "".concat(iconDescription, " - ").concat(name),
|
|
49
50
|
className: "".concat(prefix, "--file-close"),
|
|
50
51
|
type: "button"
|
|
51
52
|
}, rest), _Close || (_Close = /*#__PURE__*/React__default["default"].createElement(iconsReact.Close, null))));
|
|
@@ -74,6 +75,11 @@ Filename.propTypes = {
|
|
|
74
75
|
*/
|
|
75
76
|
invalid: PropTypes__default["default"].bool,
|
|
76
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Name of the uploaded file
|
|
80
|
+
*/
|
|
81
|
+
name: PropTypes__default["default"].string,
|
|
82
|
+
|
|
77
83
|
/**
|
|
78
84
|
* Status of the file upload
|
|
79
85
|
*/
|
|
@@ -14,6 +14,7 @@ var PropTypes = require('prop-types');
|
|
|
14
14
|
var React = require('react');
|
|
15
15
|
var cx = require('classnames');
|
|
16
16
|
var TextArea = require('../TextArea/TextArea.js');
|
|
17
|
+
require('../TextArea/TextArea.Skeleton.js');
|
|
17
18
|
var deprecate = require('../../prop-types/deprecate.js');
|
|
18
19
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
19
20
|
var FormContext = require('../FluidForm/FormContext.js');
|
|
@@ -135,7 +136,17 @@ FluidTextArea.propTypes = {
|
|
|
135
136
|
/**
|
|
136
137
|
* Provide the current value of the `<textarea>`
|
|
137
138
|
*/
|
|
138
|
-
value: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
|
|
139
|
+
value: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]),
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Specify whether the control is currently in warning state
|
|
143
|
+
*/
|
|
144
|
+
warn: PropTypes__default["default"].bool,
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Provide the text that is displayed when the control is in warning state
|
|
148
|
+
*/
|
|
149
|
+
warnText: PropTypes__default["default"].node
|
|
139
150
|
};
|
|
140
151
|
|
|
141
152
|
exports["default"] = FluidTextArea;
|
|
@@ -13,6 +13,7 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
|
|
|
13
13
|
var PropTypes = require('prop-types');
|
|
14
14
|
var React = require('react');
|
|
15
15
|
var Button = require('../Button/Button.js');
|
|
16
|
+
require('../Tooltip/DefinitionTooltip.js');
|
|
16
17
|
var Tooltip = require('../Tooltip/Tooltip.js');
|
|
17
18
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
18
19
|
var cx = require('classnames');
|
|
@@ -15,8 +15,6 @@ var React = require('react');
|
|
|
15
15
|
var PropTypes = require('prop-types');
|
|
16
16
|
var iconsReact = require('@carbon/icons-react');
|
|
17
17
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
18
|
-
var match = require('../../internal/keyboard/match.js');
|
|
19
|
-
var keys = require('../../internal/keyboard/keys.js');
|
|
20
18
|
|
|
21
19
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
22
20
|
|
|
@@ -57,25 +55,10 @@ var ListBoxSelection = function ListBoxSelection(_ref) {
|
|
|
57
55
|
}
|
|
58
56
|
};
|
|
59
57
|
|
|
60
|
-
var handleOnKeyDown = function handleOnKeyDown(event) {
|
|
61
|
-
event.stopPropagation();
|
|
62
|
-
|
|
63
|
-
if (disabled || readOnly) {
|
|
64
|
-
return;
|
|
65
|
-
} // When a user hits ENTER, we'll clear the selection
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (match.match(event.code, keys.Enter)) {
|
|
69
|
-
clearSelection(event);
|
|
70
|
-
|
|
71
|
-
if (onClearSelection) {
|
|
72
|
-
onClearSelection(event);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
|
|
77
58
|
var description = selectionCount ? t('clear.all') : t('clear.selection');
|
|
78
59
|
var tagClasses = cx__default["default"]("".concat(prefix, "--tag"), "".concat(prefix, "--tag--filter"), "".concat(prefix, "--tag--high-contrast"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(prefix, "--tag--disabled"), disabled));
|
|
60
|
+
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
61
|
+
|
|
79
62
|
return selectionCount ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
80
63
|
className: tagClasses
|
|
81
64
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
@@ -83,19 +66,17 @@ var ListBoxSelection = function ListBoxSelection(_ref) {
|
|
|
83
66
|
title: "".concat(selectionCount)
|
|
84
67
|
}, selectionCount), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
85
68
|
role: "button",
|
|
86
|
-
tabIndex:
|
|
69
|
+
tabIndex: -1,
|
|
87
70
|
className: "".concat(prefix, "--tag__close-icon"),
|
|
88
71
|
onClick: handleOnClick,
|
|
89
|
-
onKeyDown: handleOnKeyDown,
|
|
90
72
|
"aria-label": t('clear.all'),
|
|
91
73
|
title: description,
|
|
92
74
|
"aria-disabled": readOnly ? true : undefined
|
|
93
75
|
}, _Close || (_Close = /*#__PURE__*/React__default["default"].createElement(iconsReact.Close, null)))) : /*#__PURE__*/React__default["default"].createElement("div", {
|
|
94
76
|
role: "button",
|
|
95
77
|
className: className,
|
|
96
|
-
tabIndex:
|
|
78
|
+
tabIndex: -1,
|
|
97
79
|
onClick: handleOnClick,
|
|
98
|
-
onKeyDown: handleOnKeyDown,
|
|
99
80
|
"aria-label": description,
|
|
100
81
|
title: description
|
|
101
82
|
}, selectionCount, _Close2 || (_Close2 = /*#__PURE__*/React__default["default"].createElement(iconsReact.Close, null)));
|
|
@@ -15,8 +15,6 @@ var React = require('react');
|
|
|
15
15
|
var PropTypes = require('prop-types');
|
|
16
16
|
var iconsReact = require('@carbon/icons-react');
|
|
17
17
|
var usePrefix = require('../../../internal/usePrefix.js');
|
|
18
|
-
var match = require('../../../internal/keyboard/match.js');
|
|
19
|
-
var keys = require('../../../internal/keyboard/keys.js');
|
|
20
18
|
|
|
21
19
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
22
20
|
|
|
@@ -62,23 +60,6 @@ function ListBoxSelection(_ref) {
|
|
|
62
60
|
}
|
|
63
61
|
}
|
|
64
62
|
|
|
65
|
-
function onKeyDown(event) {
|
|
66
|
-
event.stopPropagation();
|
|
67
|
-
|
|
68
|
-
if (disabled) {
|
|
69
|
-
return;
|
|
70
|
-
} // When a user hits ENTER, we'll clear the selection
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (match.match(event, keys.Enter)) {
|
|
74
|
-
clearSelection(event);
|
|
75
|
-
|
|
76
|
-
if (onClearSelection) {
|
|
77
|
-
onClearSelection(event);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
63
|
if (selectionCount) {
|
|
83
64
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
84
65
|
className: tagClasses
|
|
@@ -90,8 +71,7 @@ function ListBoxSelection(_ref) {
|
|
|
90
71
|
className: "".concat(prefix, "--tag__close-icon"),
|
|
91
72
|
disabled: disabled,
|
|
92
73
|
onClick: onClick,
|
|
93
|
-
|
|
94
|
-
tabIndex: disabled ? -1 : 0,
|
|
74
|
+
tabIndex: -1,
|
|
95
75
|
title: description,
|
|
96
76
|
type: "button"
|
|
97
77
|
}, _Close || (_Close = /*#__PURE__*/React__default["default"].createElement(iconsReact.Close, null))));
|
|
@@ -102,8 +82,7 @@ function ListBoxSelection(_ref) {
|
|
|
102
82
|
className: className,
|
|
103
83
|
disabled: disabled,
|
|
104
84
|
onClick: onClick,
|
|
105
|
-
|
|
106
|
-
tabIndex: disabled ? -1 : 0,
|
|
85
|
+
tabIndex: -1,
|
|
107
86
|
title: description,
|
|
108
87
|
type: "button"
|
|
109
88
|
}), _Close2 || (_Close2 = /*#__PURE__*/React__default["default"].createElement(iconsReact.Close, null)));
|
|
@@ -26,7 +26,7 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
|
26
26
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
27
27
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
28
28
|
|
|
29
|
-
var _excluded = ["children", "className", "label", "onClose", "open", "size", "target", "x", "y"];
|
|
29
|
+
var _excluded = ["children", "className", "label", "onClose", "onOpen", "open", "size", "target", "x", "y"];
|
|
30
30
|
var spacing = 8; // distance to keep to window edges, in px
|
|
31
31
|
|
|
32
32
|
var Menu = /*#__PURE__*/React__default["default"].forwardRef(function Menu(_ref, forwardRef) {
|
|
@@ -36,6 +36,7 @@ var Menu = /*#__PURE__*/React__default["default"].forwardRef(function Menu(_ref,
|
|
|
36
36
|
className = _ref.className,
|
|
37
37
|
label = _ref.label,
|
|
38
38
|
onClose = _ref.onClose,
|
|
39
|
+
onOpen = _ref.onOpen,
|
|
39
40
|
open = _ref.open,
|
|
40
41
|
_ref$size = _ref.size,
|
|
41
42
|
size = _ref$size === void 0 ? 'sm' : _ref$size,
|
|
@@ -77,7 +78,7 @@ var Menu = /*#__PURE__*/React__default["default"].forwardRef(function Menu(_ref,
|
|
|
77
78
|
setPosition = _useState2[1];
|
|
78
79
|
|
|
79
80
|
var focusableItems = childContext.state.items.filter(function (item) {
|
|
80
|
-
return !item.disabled;
|
|
81
|
+
return !item.disabled && item.ref.current;
|
|
81
82
|
});
|
|
82
83
|
|
|
83
84
|
function returnFocus() {
|
|
@@ -89,8 +90,15 @@ var Menu = /*#__PURE__*/React__default["default"].forwardRef(function Menu(_ref,
|
|
|
89
90
|
function handleOpen() {
|
|
90
91
|
if (menu.current) {
|
|
91
92
|
focusReturn.current = document.activeElement;
|
|
92
|
-
|
|
93
|
+
var pos = calculatePosition();
|
|
94
|
+
menu.current.style.left = "".concat(pos[0], "px");
|
|
95
|
+
menu.current.style.top = "".concat(pos[1], "px");
|
|
96
|
+
setPosition(pos);
|
|
93
97
|
menu.current.focus();
|
|
98
|
+
|
|
99
|
+
if (onOpen) {
|
|
100
|
+
onOpen();
|
|
101
|
+
}
|
|
94
102
|
}
|
|
95
103
|
}
|
|
96
104
|
|
|
@@ -113,39 +121,46 @@ var Menu = /*#__PURE__*/React__default["default"].forwardRef(function Menu(_ref,
|
|
|
113
121
|
}
|
|
114
122
|
|
|
115
123
|
function handleKeyDown(e) {
|
|
116
|
-
e.stopPropagation();
|
|
117
|
-
var currentItem = focusableItems.findIndex(function (item) {
|
|
118
|
-
return item.ref.current.contains(document.activeElement);
|
|
119
|
-
});
|
|
120
|
-
var indexToFocus = currentItem; // if the user presses escape or this is a submenu
|
|
124
|
+
e.stopPropagation(); // if the user presses escape or this is a submenu
|
|
121
125
|
// and the user presses ArrowLeft, close it
|
|
122
126
|
|
|
123
127
|
if ((match.match(e, keys.Escape) || !isRoot && match.match(e, keys.ArrowLeft)) && onClose) {
|
|
124
128
|
handleClose(e);
|
|
125
129
|
} else {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
130
|
+
focusItem(e);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function focusItem(e) {
|
|
135
|
+
var currentItem = focusableItems.findIndex(function (item) {
|
|
136
|
+
return item.ref.current.contains(document.activeElement);
|
|
137
|
+
});
|
|
138
|
+
var indexToFocus = currentItem; // if currentItem is -1, no menu item is focused yet.
|
|
139
|
+
// in this case, the first item should receive focus.
|
|
140
|
+
|
|
141
|
+
if (currentItem === -1) {
|
|
142
|
+
indexToFocus = 0;
|
|
143
|
+
} else if (e) {
|
|
129
144
|
if (match.match(e, keys.ArrowUp)) {
|
|
130
|
-
indexToFocus =
|
|
145
|
+
indexToFocus = indexToFocus - 1;
|
|
131
146
|
}
|
|
132
147
|
|
|
133
148
|
if (match.match(e, keys.ArrowDown)) {
|
|
134
|
-
indexToFocus =
|
|
149
|
+
indexToFocus = indexToFocus + 1;
|
|
135
150
|
}
|
|
151
|
+
}
|
|
136
152
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
153
|
+
if (indexToFocus < 0) {
|
|
154
|
+
indexToFocus = focusableItems.length - 1;
|
|
155
|
+
}
|
|
140
156
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
157
|
+
if (indexToFocus >= focusableItems.length) {
|
|
158
|
+
indexToFocus = 0;
|
|
159
|
+
}
|
|
144
160
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
161
|
+
if (indexToFocus !== currentItem) {
|
|
162
|
+
var nodeToFocus = focusableItems[indexToFocus];
|
|
163
|
+
nodeToFocus.ref.current.focus();
|
|
149
164
|
}
|
|
150
165
|
}
|
|
151
166
|
|
|
@@ -207,6 +222,12 @@ var Menu = /*#__PURE__*/React__default["default"].forwardRef(function Menu(_ref,
|
|
|
207
222
|
return [-1, -1];
|
|
208
223
|
}
|
|
209
224
|
|
|
225
|
+
React.useEffect(function () {
|
|
226
|
+
if (open && focusableItems.length > 0) {
|
|
227
|
+
focusItem();
|
|
228
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
229
|
+
|
|
230
|
+
}, [open, focusableItems]);
|
|
210
231
|
React.useEffect(function () {
|
|
211
232
|
if (open) {
|
|
212
233
|
handleOpen();
|
|
@@ -227,12 +248,7 @@ var Menu = /*#__PURE__*/React__default["default"].forwardRef(function Menu(_ref,
|
|
|
227
248
|
"aria-label": label,
|
|
228
249
|
tabIndex: -1,
|
|
229
250
|
onKeyDown: handleKeyDown,
|
|
230
|
-
onBlur: handleBlur
|
|
231
|
-
,
|
|
232
|
-
style: {
|
|
233
|
-
left: "".concat(position[0], "px"),
|
|
234
|
-
top: "".concat(position[1], "px")
|
|
235
|
-
}
|
|
251
|
+
onBlur: handleBlur
|
|
236
252
|
}), children));
|
|
237
253
|
return isRoot ? open && /*#__PURE__*/ReactDOM.createPortal(rendered, target) || null : rendered;
|
|
238
254
|
});
|
|
@@ -257,6 +273,11 @@ Menu.propTypes = {
|
|
|
257
273
|
*/
|
|
258
274
|
onClose: PropTypes__default["default"].func,
|
|
259
275
|
|
|
276
|
+
/**
|
|
277
|
+
* Provide an optional function to be called when the Menu is opened.
|
|
278
|
+
*/
|
|
279
|
+
onOpen: PropTypes__default["default"].func,
|
|
280
|
+
|
|
260
281
|
/**
|
|
261
282
|
* Whether the Menu is open or not.
|
|
262
283
|
*/
|
|
@@ -136,6 +136,7 @@ var MenuItem = /*#__PURE__*/React__default["default"].forwardRef(function MenuIt
|
|
|
136
136
|
function handleKeyDown(e) {
|
|
137
137
|
if (hasChildren && match.match(e, keys.ArrowRight)) {
|
|
138
138
|
openSubmenu();
|
|
139
|
+
e.stopPropagation();
|
|
139
140
|
}
|
|
140
141
|
|
|
141
142
|
if (match.match(e, keys.Enter) || match.match(e, keys.Space)) {
|