@carbon/react 1.24.0-rc.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.
Files changed (151) hide show
  1. package/es/components/CodeSnippet/CodeSnippet.js +13 -115
  2. package/es/components/ComboBox/ComboBox.d.ts +6 -0
  3. package/es/components/ComboBox/ComboBox.js +19 -172
  4. package/es/components/ComboButton/index.js +164 -0
  5. package/es/components/ComposedModal/ComposedModal.js +1 -2
  6. package/es/components/DataTable/TableToolbar.d.ts +19 -0
  7. package/es/components/DataTable/TableToolbar.js +1 -1
  8. package/es/components/DataTable/TableToolbarAction.d.ts +21 -0
  9. package/es/components/DataTable/TableToolbarContent.d.ts +21 -0
  10. package/es/components/DataTable/TableToolbarMenu.d.ts +24 -0
  11. package/es/components/DataTable/TableToolbarMenu.js +3 -3
  12. package/es/components/DataTable/tools/sorting.js +2 -1
  13. package/es/components/DataTableSkeleton/DataTableSkeleton.d.ts +107 -0
  14. package/es/components/Dropdown/Dropdown.d.ts +6 -0
  15. package/es/components/Dropdown/Dropdown.js +8 -145
  16. package/es/components/FileUploader/FileUploader.js +1 -1
  17. package/es/components/FileUploader/FileUploaderDropContainer.js +30 -18
  18. package/es/components/FileUploader/FileUploaderItem.js +2 -1
  19. package/es/components/FileUploader/Filename.js +8 -2
  20. package/es/components/FluidTextArea/FluidTextArea.js +12 -1
  21. package/es/components/IconButton/index.js +1 -0
  22. package/es/components/ListBox/ListBoxMenuItem.d.ts +2 -2
  23. package/es/components/ListBox/ListBoxSelection.js +4 -23
  24. package/es/components/ListBox/next/ListBoxSelection.js +2 -23
  25. package/es/components/Menu/Menu.js +50 -33
  26. package/es/components/Menu/MenuContext.js +3 -6
  27. package/es/components/Menu/MenuItem.js +1 -0
  28. package/es/components/MenuButton/index.js +127 -0
  29. package/es/components/Modal/Modal.js +4 -3
  30. package/es/components/MultiSelect/FilterableMultiSelect.js +31 -137
  31. package/es/components/MultiSelect/MultiSelect.d.ts +1 -1
  32. package/es/components/MultiSelect/MultiSelect.js +48 -26
  33. package/es/components/Notification/Notification.js +27 -264
  34. package/es/components/OverflowMenu/OverflowMenu.js +13 -139
  35. package/es/components/OverflowMenuItem/OverflowMenuItem.d.ts +58 -0
  36. package/es/components/OverflowMenuItem/OverflowMenuItem.js +12 -7
  37. package/es/components/OverflowMenuV2/index.js +15 -51
  38. package/es/components/Popover/index.d.ts +55 -0
  39. package/es/components/Popover/index.js +61 -29
  40. package/es/components/RadioButtonGroup/RadioButtonGroup.js +7 -4
  41. package/es/components/RadioTile/RadioTile.js +6 -6
  42. package/es/components/Select/Select.d.ts +89 -0
  43. package/es/components/SelectItem/SelectItem.d.ts +62 -0
  44. package/es/components/SelectItem/SelectItem.js +2 -4
  45. package/es/components/SelectItemGroup/SelectItemGroup.d.ts +52 -0
  46. package/es/components/SkeletonText/SkeletonText.js +1 -1
  47. package/es/components/Slider/Slider.Skeleton.d.ts +2 -2
  48. package/es/components/Slider/Slider.d.ts +355 -0
  49. package/es/components/Slider/Slider.js +63 -35
  50. package/es/components/StructuredList/StructuredList.js +10 -38
  51. package/es/components/Tabs/Tabs.js +3 -1
  52. package/es/components/TextArea/TextArea.Skeleton.d.ts +33 -0
  53. package/es/components/TextArea/TextArea.Skeleton.js +5 -5
  54. package/es/components/TextArea/TextArea.d.ts +9 -2
  55. package/es/components/TextArea/TextArea.js +31 -8
  56. package/es/components/TextArea/index.js +1 -0
  57. package/es/components/TextInput/TextInput.d.ts +106 -0
  58. package/es/components/TextInput/TextInput.js +3 -2
  59. package/es/components/Toggle/Toggle.js +8 -19
  60. package/es/components/Tooltip/DefinitionTooltip.d.ts +52 -0
  61. package/es/components/Tooltip/DefinitionTooltip.js +2 -2
  62. package/es/components/Tooltip/Tooltip.d.ts +117 -0
  63. package/es/components/Tooltip/Tooltip.js +6 -4
  64. package/es/components/Tooltip/index.d.ts +9 -0
  65. package/es/index.d.ts +2 -0
  66. package/es/index.js +5 -3
  67. package/es/internal/ClickListener.js +1 -2
  68. package/es/internal/keyboard/match.js +1 -1
  69. package/es/internal/useAttachedMenu.js +85 -0
  70. package/es/internal/useDelayedState.d.ts +19 -0
  71. package/es/internal/useDelayedState.js +7 -3
  72. package/es/internal/useId.js +1 -1
  73. package/es/internal/useMergedRefs.d.ts +13 -0
  74. package/es/internal/useMergedRefs.js +2 -5
  75. package/es/internal/useNormalizedInputProps.js +1 -0
  76. package/lib/components/CodeSnippet/CodeSnippet.js +13 -115
  77. package/lib/components/ComboBox/ComboBox.d.ts +6 -0
  78. package/lib/components/ComboBox/ComboBox.js +18 -171
  79. package/lib/components/ComboButton/index.js +174 -0
  80. package/lib/components/ComposedModal/ComposedModal.js +1 -2
  81. package/lib/components/DataTable/TableToolbar.d.ts +19 -0
  82. package/lib/components/DataTable/TableToolbar.js +1 -1
  83. package/lib/components/DataTable/TableToolbarAction.d.ts +21 -0
  84. package/lib/components/DataTable/TableToolbarContent.d.ts +21 -0
  85. package/lib/components/DataTable/TableToolbarMenu.d.ts +24 -0
  86. package/lib/components/DataTable/TableToolbarMenu.js +3 -3
  87. package/lib/components/DataTable/tools/sorting.js +2 -1
  88. package/lib/components/DataTableSkeleton/DataTableSkeleton.d.ts +107 -0
  89. package/lib/components/Dropdown/Dropdown.d.ts +6 -0
  90. package/lib/components/Dropdown/Dropdown.js +7 -144
  91. package/lib/components/FileUploader/FileUploader.js +1 -1
  92. package/lib/components/FileUploader/FileUploaderDropContainer.js +30 -18
  93. package/lib/components/FileUploader/FileUploaderItem.js +2 -1
  94. package/lib/components/FileUploader/Filename.js +8 -2
  95. package/lib/components/FluidTextArea/FluidTextArea.js +12 -1
  96. package/lib/components/IconButton/index.js +1 -0
  97. package/lib/components/ListBox/ListBoxMenuItem.d.ts +2 -2
  98. package/lib/components/ListBox/ListBoxSelection.js +4 -23
  99. package/lib/components/ListBox/next/ListBoxSelection.js +2 -23
  100. package/lib/components/Menu/Menu.js +50 -33
  101. package/lib/components/Menu/MenuContext.js +3 -6
  102. package/lib/components/Menu/MenuItem.js +1 -0
  103. package/lib/components/MenuButton/index.js +137 -0
  104. package/lib/components/Modal/Modal.js +4 -3
  105. package/lib/components/MultiSelect/FilterableMultiSelect.js +29 -135
  106. package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
  107. package/lib/components/MultiSelect/MultiSelect.js +47 -25
  108. package/lib/components/Notification/Notification.js +27 -264
  109. package/lib/components/OverflowMenu/OverflowMenu.js +13 -139
  110. package/lib/components/OverflowMenuItem/OverflowMenuItem.d.ts +58 -0
  111. package/lib/components/OverflowMenuItem/OverflowMenuItem.js +12 -7
  112. package/lib/components/OverflowMenuV2/index.js +13 -49
  113. package/lib/components/Popover/index.d.ts +55 -0
  114. package/lib/components/Popover/index.js +61 -29
  115. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +6 -3
  116. package/lib/components/RadioTile/RadioTile.js +6 -6
  117. package/lib/components/Select/Select.d.ts +89 -0
  118. package/lib/components/SelectItem/SelectItem.d.ts +62 -0
  119. package/lib/components/SelectItem/SelectItem.js +1 -3
  120. package/lib/components/SelectItemGroup/SelectItemGroup.d.ts +52 -0
  121. package/lib/components/SkeletonText/SkeletonText.js +1 -1
  122. package/lib/components/Slider/Slider.Skeleton.d.ts +2 -2
  123. package/lib/components/Slider/Slider.d.ts +355 -0
  124. package/lib/components/Slider/Slider.js +62 -34
  125. package/lib/components/StructuredList/StructuredList.js +10 -38
  126. package/lib/components/Tabs/Tabs.js +3 -1
  127. package/lib/components/TextArea/TextArea.Skeleton.d.ts +33 -0
  128. package/lib/components/TextArea/TextArea.Skeleton.js +5 -5
  129. package/lib/components/TextArea/TextArea.d.ts +9 -2
  130. package/lib/components/TextArea/TextArea.js +30 -7
  131. package/lib/components/TextArea/index.js +2 -0
  132. package/lib/components/TextInput/TextInput.d.ts +106 -0
  133. package/lib/components/TextInput/TextInput.js +3 -2
  134. package/lib/components/Toggle/Toggle.js +8 -19
  135. package/lib/components/Tooltip/DefinitionTooltip.d.ts +52 -0
  136. package/lib/components/Tooltip/DefinitionTooltip.js +2 -2
  137. package/lib/components/Tooltip/Tooltip.d.ts +117 -0
  138. package/lib/components/Tooltip/Tooltip.js +6 -4
  139. package/lib/components/Tooltip/index.d.ts +9 -0
  140. package/lib/index.d.ts +2 -0
  141. package/lib/index.js +50 -46
  142. package/lib/internal/ClickListener.js +1 -2
  143. package/lib/internal/keyboard/match.js +1 -1
  144. package/lib/internal/useAttachedMenu.js +89 -0
  145. package/lib/internal/useDelayedState.d.ts +19 -0
  146. package/lib/internal/useDelayedState.js +7 -3
  147. package/lib/internal/useId.js +1 -1
  148. package/lib/internal/useMergedRefs.d.ts +13 -0
  149. package/lib/internal/useMergedRefs.js +2 -5
  150. package/lib/internal/useNormalizedInputProps.js +1 -0
  151. package/package.json +10 -10
@@ -31,9 +31,9 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
31
31
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
32
32
  var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
33
33
 
34
- var _excluded = ["id", "ariaLabel", "children", "iconDescription", "direction", "flipped", "focusTrap", "menuOffset", "menuOffsetFlip", "iconClass", "onClick", "onOpen", "selectorPrimaryFocus", "renderIcon", "innerRef", "menuOptionsClass", "light", "size"];
34
+ var _excluded = ["id", "aria-label", "ariaLabel", "children", "iconDescription", "direction", "flipped", "focusTrap", "menuOffset", "menuOffsetFlip", "iconClass", "onClick", "onOpen", "selectorPrimaryFocus", "renderIcon", "innerRef", "menuOptionsClass", "light", "size"];
35
35
 
36
- var _triggerButtonPositio, _triggerButtonPositio2;
36
+ var _triggerButtonPositio, _triggerButtonPositio2, _defineProperty2, _defineProperty3;
37
37
 
38
38
  var on = function on(element) {
39
39
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
@@ -299,7 +299,8 @@ var OverflowMenu = /*#__PURE__*/function (_Component) {
299
299
 
300
300
  var _this$props = this.props,
301
301
  id = _this$props.id,
302
- ariaLabel = _this$props.ariaLabel,
302
+ ariaLabel = _this$props['aria-label'],
303
+ deprecatedAriaLabel = _this$props.ariaLabel,
303
304
  children = _this$props.children,
304
305
  iconDescription = _this$props.iconDescription,
305
306
  direction = _this$props.direction,
@@ -339,7 +340,7 @@ var OverflowMenu = /*#__PURE__*/function (_Component) {
339
340
  className: overflowMenuOptionsClasses,
340
341
  tabIndex: "-1",
341
342
  role: "menu",
342
- "aria-label": ariaLabel,
343
+ "aria-label": ariaLabel || deprecatedAriaLabel,
343
344
  onKeyDown: this.handleKeyPress
344
345
  }, childrenWithProps);
345
346
  var wrappedMenuBody = /*#__PURE__*/React__default["default"].createElement(FloatingMenu["default"], {
@@ -389,144 +390,17 @@ var OverflowMenu = /*#__PURE__*/function (_Component) {
389
390
  return OverflowMenu;
390
391
  }(React.Component);
391
392
 
392
- _rollupPluginBabelHelpers.defineProperty(OverflowMenu, "propTypes", {
393
- /**
394
- * The ARIA label.
395
- */
396
- ariaLabel: PropTypes__default["default"].string.isRequired,
397
-
398
- /**
399
- * The child nodes.
400
- */
401
- children: PropTypes__default["default"].node,
402
-
403
- /**
404
- * The CSS class names.
405
- */
406
- className: PropTypes__default["default"].string,
407
-
408
- /**
409
- * The menu direction.
410
- */
411
- direction: PropTypes__default["default"].oneOf([FloatingMenu.DIRECTION_TOP, FloatingMenu.DIRECTION_BOTTOM]),
412
-
413
- /**
414
- * `true` if the menu alignment should be flipped.
415
- */
416
- flipped: PropTypes__default["default"].bool,
417
-
418
- /**
419
- * Enable or disable focus trap behavior
420
- */
421
- focusTrap: PropTypes__default["default"].bool,
422
-
423
- /**
424
- * The CSS class for the icon.
425
- */
426
- iconClass: PropTypes__default["default"].string,
427
-
428
- /**
429
- * The icon description.
430
- */
431
- iconDescription: PropTypes__default["default"].string.isRequired,
432
-
433
- /**
434
- * The element ID.
435
- */
436
- id: PropTypes__default["default"].string,
437
-
438
- /**
439
- * `true` to use the light version. For use on $ui-01 backgrounds only.
440
- * Don't use this to make OverflowMenu background color same as container background color.
441
- */
442
- light: deprecate["default"](PropTypes__default["default"].bool, 'The `light` prop for `OverflowMenu` is no longer needed and has been deprecated. It will be removed in the next major release. Use the Layer component instead.'),
443
-
444
- /**
445
- * The adjustment in position applied to the floating menu.
446
- */
447
- menuOffset: PropTypes__default["default"].oneOfType([PropTypes__default["default"].shape({
448
- top: PropTypes__default["default"].number,
449
- left: PropTypes__default["default"].number
450
- }), PropTypes__default["default"].func]),
451
-
452
- /**
453
- * The adjustment in position applied to the floating menu.
454
- */
455
- menuOffsetFlip: PropTypes__default["default"].oneOfType([PropTypes__default["default"].shape({
456
- top: PropTypes__default["default"].number,
457
- left: PropTypes__default["default"].number
458
- }), PropTypes__default["default"].func]),
459
-
460
- /**
461
- * The class to apply to the menu options
462
- */
463
- menuOptionsClass: PropTypes__default["default"].string,
464
-
465
- /**
466
- * The event handler for the `click` event.
467
- */
468
- onClick: PropTypes__default["default"].func,
469
-
470
- /**
471
- * Function called when menu is closed
472
- */
473
- onClose: PropTypes__default["default"].func,
474
-
475
- /**
476
- * The event handler for the `focus` event.
477
- */
478
- onFocus: PropTypes__default["default"].func,
479
-
480
- /**
481
- * The event handler for the `keydown` event.
482
- */
483
- onKeyDown: PropTypes__default["default"].func,
484
-
485
- /**
486
- * Function called when menu is opened
487
- */
488
- onOpen: PropTypes__default["default"].func,
489
-
490
- /**
491
- * `true` if the menu should be open.
492
- */
493
- open: PropTypes__default["default"].bool,
494
-
495
- /**
496
- * Function called to override icon rendering.
497
- */
498
- renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]),
499
-
500
- /**
501
- * Specify a CSS selector that matches the DOM element that should
502
- * be focused when the OverflowMenu opens
503
- */
504
- selectorPrimaryFocus: PropTypes__default["default"].string,
505
-
506
- /**
507
- * Specify the size of the OverflowMenu. Currently supports either `sm`, 'md' (default) or 'lg` as an option.
508
- */
509
- size: PropTypes__default["default"].oneOf(['sm', 'md', 'lg'])
510
- });
393
+ _rollupPluginBabelHelpers.defineProperty(OverflowMenu, "propTypes", (_defineProperty2 = {}, _rollupPluginBabelHelpers.defineProperty(_defineProperty2, 'aria-label', PropTypes__default["default"].string), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "ariaLabel", deprecate["default"](PropTypes__default["default"].string, 'This prop syntax has been deprecated. Please use the new `aria-label`.')), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "children", PropTypes__default["default"].node), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "className", PropTypes__default["default"].string), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "direction", PropTypes__default["default"].oneOf([FloatingMenu.DIRECTION_TOP, FloatingMenu.DIRECTION_BOTTOM])), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "flipped", PropTypes__default["default"].bool), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "focusTrap", PropTypes__default["default"].bool), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "iconClass", PropTypes__default["default"].string), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "iconDescription", PropTypes__default["default"].string.isRequired), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "id", PropTypes__default["default"].string), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "light", deprecate["default"](PropTypes__default["default"].bool, 'The `light` prop for `OverflowMenu` is no longer needed and has been deprecated. It will be removed in the next major release. Use the Layer component instead.')), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "menuOffset", PropTypes__default["default"].oneOfType([PropTypes__default["default"].shape({
394
+ top: PropTypes__default["default"].number,
395
+ left: PropTypes__default["default"].number
396
+ }), PropTypes__default["default"].func])), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "menuOffsetFlip", PropTypes__default["default"].oneOfType([PropTypes__default["default"].shape({
397
+ top: PropTypes__default["default"].number,
398
+ left: PropTypes__default["default"].number
399
+ }), PropTypes__default["default"].func])), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "menuOptionsClass", PropTypes__default["default"].string), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "onClick", PropTypes__default["default"].func), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "onClose", PropTypes__default["default"].func), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "onFocus", PropTypes__default["default"].func), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "onKeyDown", PropTypes__default["default"].func), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "onOpen", PropTypes__default["default"].func), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "open", PropTypes__default["default"].bool), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "renderIcon", PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object])), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "selectorPrimaryFocus", PropTypes__default["default"].string), _rollupPluginBabelHelpers.defineProperty(_defineProperty2, "size", PropTypes__default["default"].oneOf(['sm', 'md', 'lg'])), _defineProperty2));
511
400
 
512
401
  _rollupPluginBabelHelpers.defineProperty(OverflowMenu, "contextType", usePrefix.PrefixContext);
513
402
 
514
- _rollupPluginBabelHelpers.defineProperty(OverflowMenu, "defaultProps", {
515
- ariaLabel: null,
516
- iconDescription: 'Options',
517
- open: false,
518
- direction: FloatingMenu.DIRECTION_BOTTOM,
519
- flipped: false,
520
- focusTrap: true,
521
- renderIcon: iconsReact.OverflowMenuVertical,
522
- onClick: function onClick() {},
523
- onKeyDown: function onKeyDown() {},
524
- onClose: function onClose() {},
525
- onOpen: function onOpen() {},
526
- menuOffset: getMenuOffset,
527
- menuOffsetFlip: getMenuOffset,
528
- selectorPrimaryFocus: '[data-overflow-menu-primary-focus]'
529
- });
403
+ _rollupPluginBabelHelpers.defineProperty(OverflowMenu, "defaultProps", (_defineProperty3 = {}, _rollupPluginBabelHelpers.defineProperty(_defineProperty3, 'aria-label', null), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "iconDescription", 'Options'), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "open", false), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "direction", FloatingMenu.DIRECTION_BOTTOM), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "flipped", false), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "focusTrap", true), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "renderIcon", iconsReact.OverflowMenuVertical), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "onClick", function onClick() {}), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "onKeyDown", function onKeyDown() {}), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "onClose", function onClose() {}), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "onOpen", function onOpen() {}), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "menuOffset", getMenuOffset), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "menuOffsetFlip", getMenuOffset), _rollupPluginBabelHelpers.defineProperty(_defineProperty3, "selectorPrimaryFocus", '[data-overflow-menu-primary-focus]'), _defineProperty3));
530
404
  ((function () {
531
405
  var forwardRef = function forwardRef(props, ref) {
532
406
  return /*#__PURE__*/React__default["default"].createElement(OverflowMenu, _rollupPluginBabelHelpers["extends"]({}, props, {
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2023
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import { ForwardRefReturn } from '../../types/common';
9
+ export interface OverflowMenuItemProps extends React.HTMLAttributes<HTMLElement> {
10
+ /**
11
+ * The CSS class name to be placed on the button element
12
+ */
13
+ className?: string;
14
+ /**
15
+ * A callback to tell the parent menu component that the menu should be closed.
16
+ */
17
+ closeMenu?: () => void;
18
+ /**
19
+ * `true` to make this menu item disabled.
20
+ */
21
+ disabled?: boolean;
22
+ handleOverflowMenuItemFocus?: (options: {
23
+ currentIndex?: number;
24
+ direction: number;
25
+ }) => void;
26
+ /**
27
+ * `true` to make this menu item a divider.
28
+ */
29
+ hasDivider?: boolean;
30
+ /**
31
+ * If given, overflow item will render as a link with the given href
32
+ */
33
+ href?: string;
34
+ index?: number;
35
+ /**
36
+ * The text to show for the menu item
37
+ */
38
+ itemText?: React.ReactNode;
39
+ /**
40
+ * `true` to make this menu item a danger button.
41
+ */
42
+ isDelete?: boolean;
43
+ /**
44
+ * `true` to require the title attribute.
45
+ */
46
+ requireTitle?: boolean;
47
+ /**
48
+ * The title attribute.
49
+ */
50
+ title?: string;
51
+ /**
52
+ * The CSS class name to be placed on the wrapper element
53
+ */
54
+ wrapperClassName?: string;
55
+ }
56
+ export type OverflowMenuItemComponent = ForwardRefReturn<HTMLElement, OverflowMenuItemProps>;
57
+ declare const OverflowMenuItem: OverflowMenuItemComponent;
58
+ export default OverflowMenuItem;
@@ -13,8 +13,8 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
13
13
  var cx = require('classnames');
14
14
  var PropTypes = require('prop-types');
15
15
  var React = require('react');
16
- var warning = require('../../internal/warning.js');
17
16
  var usePrefix = require('../../internal/usePrefix.js');
17
+ var warning = require('../../internal/warning.js');
18
18
  var match = require('../../internal/keyboard/match.js');
19
19
  var keys = require('../../internal/keyboard/keys.js');
20
20
 
@@ -54,14 +54,14 @@ var OverflowMenuItem = /*#__PURE__*/React__default["default"].forwardRef(functio
54
54
 
55
55
  function setTabFocus(evt) {
56
56
  if (match.match(evt, keys.ArrowDown)) {
57
- handleOverflowMenuItemFocus({
57
+ handleOverflowMenuItemFocus === null || handleOverflowMenuItemFocus === void 0 ? void 0 : handleOverflowMenuItemFocus({
58
58
  currentIndex: index,
59
59
  direction: 1
60
60
  });
61
61
  }
62
62
 
63
63
  if (match.match(evt, keys.ArrowUp)) {
64
- handleOverflowMenuItemFocus({
64
+ handleOverflowMenuItemFocus === null || handleOverflowMenuItemFocus === void 0 ? void 0 : handleOverflowMenuItemFocus({
65
65
  currentIndex: index,
66
66
  direction: -1
67
67
  });
@@ -101,17 +101,22 @@ var OverflowMenuItem = /*#__PURE__*/React__default["default"].forwardRef(functio
101
101
  className: overflowMenuBtnClasses,
102
102
  disabled: disabled,
103
103
  href: href,
104
- index: index,
105
104
  onClick: handleClick,
106
105
  onKeyDown: function onKeyDown(evt) {
107
106
  setTabFocus(evt);
108
107
 
109
108
  _onKeyDown(evt);
110
109
  },
111
- role: "menuitem",
110
+ role: "menuitem" // ref as any: the type of `ref` is `ForwardedRef<HTMLButtonElement>` in `Button` component
111
+ // but `OverflowMenuItem` can be rendered as `a` tag as well, which is `HTMLAnchorElement`
112
+ // so we have to use `any` here
113
+ ,
112
114
  ref: ref,
113
- tabIndex: "-1",
114
- title: requireTitle ? title || itemText : null
115
+ tabIndex: -1 // itemText as any: itemText may be a ReactNode, but `title` only accepts string
116
+ // to avoid compatibility issue, we use `any` here. Consider to enforce `itemText` to be `string?`
117
+ // in the next major release
118
+ ,
119
+ title: requireTitle ? title || itemText : undefined
115
120
  }, rest), OverflowMenuItemContent));
116
121
  });
117
122
  OverflowMenuItem.propTypes = {
@@ -14,9 +14,10 @@ var React = require('react');
14
14
  var PropTypes = require('prop-types');
15
15
  var cx = require('classnames');
16
16
  var iconsReact = require('@carbon/icons-react');
17
- var useId = require('../../internal/useId.js');
18
17
  var Menu = require('../Menu/Menu.js');
18
+ var useId = require('../../internal/useId.js');
19
19
  var usePrefix = require('../../internal/usePrefix.js');
20
+ var useAttachedMenu = require('../../internal/useAttachedMenu.js');
20
21
 
21
22
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
23
 
@@ -39,53 +40,16 @@ function OverflowMenuV2(_ref) {
39
40
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
40
41
 
41
42
  var id = useId.useId('overflowmenu');
42
-
43
- var _useState = React.useState(false),
44
- _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
45
- open = _useState2[0],
46
- setOpen = _useState2[1];
47
-
48
- var _useState3 = React.useState([[0, 0], [0, 0]]),
49
- _useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
50
- position = _useState4[0],
51
- setPosition = _useState4[1];
52
-
53
- var triggerRef = React.useRef(null);
54
43
  var prefix = usePrefix.usePrefix();
44
+ var triggerRef = React.useRef(null);
55
45
 
56
- function openMenu() {
57
- if (triggerRef.current) {
58
- var _triggerRef$current$g = triggerRef.current.getBoundingClientRect(),
59
- left = _triggerRef$current$g.left,
60
- top = _triggerRef$current$g.top,
61
- right = _triggerRef$current$g.right,
62
- bottom = _triggerRef$current$g.bottom;
63
-
64
- setPosition([[left, right], [top, bottom]]);
65
- }
66
-
67
- setOpen(true);
68
- }
69
-
70
- function closeMenu() {
71
- setOpen(false);
72
- }
73
-
74
- function handleClick() {
75
- if (open) {
76
- closeMenu();
77
- } else {
78
- openMenu();
79
- }
80
- }
81
-
82
- function handleMousedown(e) {
83
- // prevent default for mousedown on trigger element to avoid
84
- // the "blur" event from firing on the menu as this would close
85
- // it and immediately re-open since "click" event is fired after
86
- // "blur" event.
87
- e.preventDefault();
88
- }
46
+ var _useAttachedMenu = useAttachedMenu.useAttachedMenu(triggerRef),
47
+ open = _useAttachedMenu.open,
48
+ x = _useAttachedMenu.x,
49
+ y = _useAttachedMenu.y,
50
+ handleClick = _useAttachedMenu.handleClick,
51
+ handleMousedown = _useAttachedMenu.handleMousedown,
52
+ handleClose = _useAttachedMenu.handleClose;
89
53
 
90
54
  var containerClasses = cx__default["default"]("".concat(prefix, "--overflow-menu__container"));
91
55
  var triggerClasses = cx__default["default"]("".concat(prefix, "--overflow-menu"), (_classNames = {}, _rollupPluginBabelHelpers.defineProperty(_classNames, "".concat(prefix, "--overflow-menu--open"), open), _rollupPluginBabelHelpers.defineProperty(_classNames, className, className), _classNames), size !== defaultSize && "".concat(prefix, "--overflow-menu--").concat(size));
@@ -106,9 +70,9 @@ function OverflowMenuV2(_ref) {
106
70
  id: id,
107
71
  size: size,
108
72
  open: open,
109
- onClose: closeMenu,
110
- x: position[0],
111
- y: position[1]
73
+ onClose: handleClose,
74
+ x: x,
75
+ y: y
112
76
  }, children));
113
77
  }
114
78
 
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2023
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import { PolymorphicProps } from '../../types/common';
9
+ export type PopoverAlignment = 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right' | 'left' | 'left-bottom' | 'left-top' | 'right' | 'right-bottom' | 'right-top';
10
+ interface PopoverBaseProps {
11
+ /**
12
+ * Specify how the popover should align with the trigger element
13
+ */
14
+ align?: PopoverAlignment;
15
+ /**
16
+ * Will auto-align the popover on first render if it is not visible. This prop is currently experimental and is subject to future changes.
17
+ */
18
+ autoAlign?: boolean;
19
+ /**
20
+ * Specify whether a caret should be rendered
21
+ */
22
+ caret?: boolean;
23
+ /**
24
+ * Provide elements to be rendered inside of the component
25
+ */
26
+ children?: React.ReactNode;
27
+ /**
28
+ * Provide a custom class name to be added to the outermost node in the
29
+ * component
30
+ */
31
+ className?: string;
32
+ /**
33
+ * Specify whether a drop shadow should be rendered on the popover
34
+ */
35
+ dropShadow?: boolean;
36
+ /**
37
+ * Render the component using the high-contrast variant
38
+ */
39
+ highContrast?: boolean;
40
+ /**
41
+ * Render the component using the tab tip variant
42
+ */
43
+ isTabTip?: boolean;
44
+ /**
45
+ * Specify whether the component is currently open or closed
46
+ */
47
+ open: boolean;
48
+ }
49
+ export type PopoverProps<T extends React.ElementType> = PolymorphicProps<T, PopoverBaseProps>;
50
+ declare const Popover: React.ForwardRefExoticComponent<Pick<PopoverBaseProps & Omit<any, "as"> & {
51
+ as?: React.ElementType<any> | undefined;
52
+ }, string | number | symbol> & React.RefAttributes<Element>>;
53
+ export type PopoverContentProps = React.HTMLAttributes<HTMLSpanElement>;
54
+ declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProps & React.RefAttributes<HTMLSpanElement>>;
55
+ export { Popover, PopoverContent };
@@ -23,41 +23,50 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
23
23
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
24
24
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
25
25
 
26
- var _excluded = ["align", "as", "autoAlign", "caret", "className", "children", "dropShadow", "highContrast", "open"],
26
+ var _excluded = ["isTabTip", "align", "as", "autoAlign", "caret", "className", "children", "dropShadow", "highContrast", "open"],
27
27
  _excluded2 = ["className", "children"];
28
28
  var PopoverContext = /*#__PURE__*/React__default["default"].createContext({
29
29
  floating: {
30
30
  current: null
31
31
  }
32
32
  });
33
- var Popover = /*#__PURE__*/React__default["default"].forwardRef(function Popover(props, forwardRef) {
33
+ var Popover = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, forwardRef) {
34
34
  var _cx;
35
35
 
36
- var _props$align = props.align,
37
- align = _props$align === void 0 ? 'bottom' : _props$align,
38
- _props$as = props.as,
39
- BaseComponent = _props$as === void 0 ? 'span' : _props$as,
40
- _props$autoAlign = props.autoAlign,
41
- autoAlign = _props$autoAlign === void 0 ? false : _props$autoAlign,
42
- _props$caret = props.caret,
43
- caret = _props$caret === void 0 ? true : _props$caret,
44
- customClassName = props.className,
45
- children = props.children,
46
- _props$dropShadow = props.dropShadow,
47
- dropShadow = _props$dropShadow === void 0 ? true : _props$dropShadow,
48
- _props$highContrast = props.highContrast,
49
- highContrast = _props$highContrast === void 0 ? false : _props$highContrast,
50
- open = props.open,
51
- rest = _rollupPluginBabelHelpers.objectWithoutProperties(props, _excluded);
36
+ var isTabTip = _ref.isTabTip,
37
+ _ref$align = _ref.align,
38
+ align = _ref$align === void 0 ? isTabTip ? 'bottom-left' : 'bottom' : _ref$align,
39
+ as = _ref.as,
40
+ _ref$autoAlign = _ref.autoAlign,
41
+ autoAlign = _ref$autoAlign === void 0 ? false : _ref$autoAlign,
42
+ _ref$caret = _ref.caret,
43
+ caret = _ref$caret === void 0 ? isTabTip ? false : true : _ref$caret,
44
+ customClassName = _ref.className,
45
+ children = _ref.children,
46
+ _ref$dropShadow = _ref.dropShadow,
47
+ dropShadow = _ref$dropShadow === void 0 ? true : _ref$dropShadow,
48
+ _ref$highContrast = _ref.highContrast,
49
+ highContrast = _ref$highContrast === void 0 ? false : _ref$highContrast,
50
+ open = _ref.open,
51
+ rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
52
52
 
53
53
  var prefix = usePrefix.usePrefix();
54
- var floating = React.useRef();
55
- var popover = React.useRef();
54
+ var floating = React.useRef(null);
55
+ var popover = React.useRef(null);
56
56
  var value = React.useMemo(function () {
57
57
  return {
58
58
  floating: floating
59
59
  };
60
60
  }, []);
61
+
62
+ if (isTabTip) {
63
+ var tabTipAlignments = ['bottom-left', 'bottom-right'];
64
+
65
+ if (!tabTipAlignments.includes(align)) {
66
+ align = 'bottom-left';
67
+ }
68
+ }
69
+
61
70
  var ref = useMergedRefs.useMergedRefs([forwardRef, popover]);
62
71
 
63
72
  var _useState = React.useState(false),
@@ -70,13 +79,13 @@ var Popover = /*#__PURE__*/React__default["default"].forwardRef(function Popover
70
79
  autoAlignment = _useState4[0],
71
80
  setAutoAlignment = _useState4[1];
72
81
 
73
- var className = cx__default["default"]((_cx = {}, _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover-container"), true), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--caret"), caret), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--drop-shadow"), dropShadow), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--high-contrast"), highContrast), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--open"), open), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--").concat(autoAlignment), autoAligned), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--").concat(align), !autoAligned), _rollupPluginBabelHelpers.defineProperty(_cx, customClassName, !!customClassName), _cx));
82
+ var className = cx__default["default"]((_cx = {}, _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover-container"), true), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--caret"), caret), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--drop-shadow"), dropShadow), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--high-contrast"), highContrast), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--open"), open), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--").concat(autoAlignment), autoAligned && !isTabTip), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--").concat(align), !autoAligned), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--popover--tab-tip"), isTabTip), _cx), customClassName);
74
83
  useIsomorphicEffect["default"](function () {
75
84
  if (!open) {
76
85
  return;
77
86
  }
78
87
 
79
- if (!autoAlign) {
88
+ if (!autoAlign || isTabTip) {
80
89
  setAutoAligned(false);
81
90
  return;
82
91
  }
@@ -118,6 +127,10 @@ var Popover = /*#__PURE__*/React__default["default"].forwardRef(function Popover
118
127
  }
119
128
 
120
129
  function isVisible(alignment) {
130
+ if (!popover.current || !floating.current) {
131
+ return false;
132
+ }
133
+
121
134
  popover.current.classList.add("".concat(prefix, "--popover--").concat(alignment));
122
135
  var rect = floating.current.getBoundingClientRect(); // Check if popover is not visible to the left of the screen
123
136
 
@@ -163,13 +176,27 @@ var Popover = /*#__PURE__*/React__default["default"].forwardRef(function Popover
163
176
  setAutoAligned(true);
164
177
  setAutoAlignment(alignment);
165
178
  }
166
- }, [autoAligned, align, autoAlign, prefix, open]);
179
+ }, [autoAligned, align, autoAlign, prefix, open, isTabTip]);
180
+ var BaseComponent = as !== null && as !== void 0 ? as : 'span';
181
+ var mappedChildren = React__default["default"].Children.map(children, function (child) {
182
+ var item = child;
183
+
184
+ if ((item === null || item === void 0 ? void 0 : item.type) === 'button') {
185
+ var _className = item.props.className;
186
+ var tabTipClasses = cx__default["default"]("".concat(prefix, "--popover--tab-tip__button"), _className);
187
+ return /*#__PURE__*/React__default["default"].cloneElement(item, {
188
+ className: tabTipClasses
189
+ });
190
+ } else {
191
+ return item;
192
+ }
193
+ });
167
194
  return /*#__PURE__*/React__default["default"].createElement(PopoverContext.Provider, {
168
195
  value: value
169
196
  }, /*#__PURE__*/React__default["default"].createElement(BaseComponent, _rollupPluginBabelHelpers["extends"]({}, rest, {
170
197
  className: className,
171
198
  ref: ref
172
- }), children));
199
+ }), isTabTip ? mappedChildren : children));
173
200
  }); // Note: this displayName is temporarily set so that Storybook ArgTable
174
201
  // correctly displays the name of this component
175
202
 
@@ -190,7 +217,7 @@ Popover.propTypes = {
190
217
  as: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].elementType]),
191
218
 
192
219
  /**
193
- * Will auto-align the popover on first render if it is not visible. This prop is currently experimental and is subject to futurue changes.
220
+ * Will auto-align the popover on first render if it is not visible. This prop is currently experimental and is subject to future changes.
194
221
  */
195
222
  autoAlign: PropTypes__default["default"].bool,
196
223
 
@@ -220,15 +247,20 @@ Popover.propTypes = {
220
247
  */
221
248
  highContrast: PropTypes__default["default"].bool,
222
249
 
250
+ /**
251
+ * Render the component using the tab tip variant
252
+ */
253
+ isTabTip: PropTypes__default["default"].bool,
254
+
223
255
  /**
224
256
  * Specify whether the component is currently open or closed
225
257
  */
226
258
  open: PropTypes__default["default"].bool.isRequired
227
259
  };
228
- var PopoverContent = /*#__PURE__*/React__default["default"].forwardRef(function PopoverContent(_ref, forwardRef) {
229
- var className = _ref.className,
230
- children = _ref.children,
231
- rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded2);
260
+ var PopoverContent = /*#__PURE__*/React__default["default"].forwardRef(function PopoverContent(_ref2, forwardRef) {
261
+ var className = _ref2.className,
262
+ children = _ref2.children,
263
+ rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref2, _excluded2);
232
264
 
233
265
  var prefix = usePrefix.usePrefix();
234
266
 
@@ -22,6 +22,7 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
22
22
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
23
  var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
24
24
 
25
+ var _excluded = ["children", "className", "defaultSelected", "disabled", "labelPosition", "legendText", "name", "onChange", "orientation", "readOnly", "valueSelected"];
25
26
  var RadioButtonGroup = /*#__PURE__*/React__default["default"].forwardRef(function RadioButtonGroup(_ref, ref) {
26
27
  var _classNames;
27
28
 
@@ -38,7 +39,9 @@ var RadioButtonGroup = /*#__PURE__*/React__default["default"].forwardRef(functio
38
39
  _ref$orientation = _ref.orientation,
39
40
  orientation = _ref$orientation === void 0 ? 'horizontal' : _ref$orientation,
40
41
  readOnly = _ref.readOnly,
41
- valueSelected = _ref.valueSelected;
42
+ valueSelected = _ref.valueSelected,
43
+ rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
44
+
42
45
  var prefix = usePrefix.usePrefix();
43
46
 
44
47
  var _useState = React.useState(valueSelected !== null && valueSelected !== void 0 ? valueSelected : defaultSelected),
@@ -95,11 +98,11 @@ var RadioButtonGroup = /*#__PURE__*/React__default["default"].forwardRef(functio
95
98
  return /*#__PURE__*/React__default["default"].createElement("div", {
96
99
  className: wrapperClasses,
97
100
  ref: ref
98
- }, /*#__PURE__*/React__default["default"].createElement("fieldset", {
101
+ }, /*#__PURE__*/React__default["default"].createElement("fieldset", _rollupPluginBabelHelpers["extends"]({
99
102
  className: fieldsetClasses,
100
103
  disabled: disabled,
101
104
  "aria-readonly": readOnly
102
- }, legendText && /*#__PURE__*/React__default["default"].createElement(index.Legend, {
105
+ }, rest), legendText && /*#__PURE__*/React__default["default"].createElement(index.Legend, {
103
106
  className: "".concat(prefix, "--label")
104
107
  }, legendText), getRadioButtons()));
105
108
  });