carbon-react 117.5.0 → 117.6.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 (134) hide show
  1. package/esm/__internal__/input/input.component.d.ts +3 -3
  2. package/esm/components/advanced-color-picker/advanced-color-picker.component.js +8 -0
  3. package/esm/components/button-toggle/button-toggle.component.js +7 -0
  4. package/esm/components/checkbox/checkbox.component.js +6 -0
  5. package/esm/components/decimal/decimal.component.js +7 -0
  6. package/esm/components/grouped-character/grouped-character.component.js +6 -0
  7. package/esm/components/menu/__internal__/locators.d.ts +6 -6
  8. package/esm/components/menu/__internal__/spec-helper/index.d.ts +3 -0
  9. package/esm/components/menu/__internal__/submenu/index.d.ts +2 -0
  10. package/esm/components/menu/__internal__/submenu/index.js +1 -0
  11. package/esm/components/menu/__internal__/submenu/submenu.component.d.ts +42 -0
  12. package/esm/components/menu/__internal__/submenu/submenu.component.js +162 -85
  13. package/esm/components/menu/__internal__/submenu/submenu.context.d.ts +10 -0
  14. package/esm/components/menu/__internal__/submenu/submenu.style.d.ts +16 -0
  15. package/esm/components/menu/__internal__/submenu/submenu.style.js +4 -4
  16. package/esm/components/menu/index.d.ts +12 -6
  17. package/esm/components/menu/index.js +5 -5
  18. package/esm/components/menu/menu-divider/index.d.ts +2 -2
  19. package/esm/components/menu/menu-divider/index.js +1 -0
  20. package/esm/components/menu/menu-divider/menu-divider.component.d.ts +7 -0
  21. package/esm/components/menu/menu-divider/menu-divider.component.js +14 -7
  22. package/esm/components/menu/menu-divider/menu-divider.style.d.ts +6 -0
  23. package/esm/components/menu/menu-full-screen/index.d.ts +2 -2
  24. package/esm/components/menu/menu-full-screen/menu-full-screen.component.d.ts +14 -0
  25. package/esm/components/menu/menu-full-screen/menu-full-screen.component.js +20 -30
  26. package/esm/components/menu/menu-full-screen/menu-full-screen.style.d.ts +8 -0
  27. package/esm/components/menu/menu-full-screen/menu-full-screen.style.js +29 -27
  28. package/esm/components/menu/menu-item/index.d.ts +2 -2
  29. package/esm/components/menu/menu-item/menu-item.component.d.ts +67 -0
  30. package/esm/components/menu/menu-item/menu-item.component.js +2084 -121
  31. package/esm/components/menu/menu-item/menu-item.style.d.ts +21 -0
  32. package/esm/components/menu/menu-item/menu-item.style.js +188 -146
  33. package/esm/components/menu/menu-segment-title/index.d.ts +2 -2
  34. package/esm/components/menu/menu-segment-title/index.js +1 -0
  35. package/esm/components/menu/menu-segment-title/menu-segment-title.component.d.ts +10 -0
  36. package/esm/components/menu/menu-segment-title/menu-segment-title.component.js +13 -9
  37. package/esm/components/menu/menu-segment-title/menu-segment-title.style.d.ts +8 -0
  38. package/esm/components/menu/menu.component.d.ts +11 -9
  39. package/esm/components/menu/menu.component.js +1887 -18
  40. package/esm/components/menu/menu.config.d.ts +58 -94
  41. package/esm/components/menu/menu.context.d.ts +12 -6
  42. package/esm/components/menu/menu.style.d.ts +12 -2
  43. package/esm/components/menu/menu.style.js +11 -11
  44. package/esm/components/menu/scrollable-block/index.d.ts +2 -1
  45. package/esm/components/menu/scrollable-block/scrollable-block.component.d.ts +19 -0
  46. package/esm/components/menu/scrollable-block/scrollable-block.component.js +13 -20
  47. package/esm/components/menu/scrollable-block/scrollable-block.style.d.ts +8 -0
  48. package/esm/components/number/number.component.js +6 -0
  49. package/esm/components/numeral-date/numeral-date.component.js +8 -0
  50. package/esm/components/radio-button/radio-button-group.component.js +8 -0
  51. package/esm/components/radio-button/radio-button.style.js +1 -1
  52. package/esm/components/search/search.component.js +6 -0
  53. package/esm/components/select/filterable-select/filterable-select.component.js +9 -1
  54. package/esm/components/select/multi-select/multi-select.component.js +9 -1
  55. package/esm/components/select/simple-select/simple-select.component.js +9 -1
  56. package/esm/components/simple-color-picker/simple-color-picker.component.js +8 -0
  57. package/esm/components/switch/switch.component.js +6 -0
  58. package/esm/components/textarea/textarea.component.js +6 -0
  59. package/esm/components/textbox/textbox.component.js +6 -0
  60. package/lib/__internal__/input/input.component.d.ts +3 -3
  61. package/lib/components/advanced-color-picker/advanced-color-picker.component.js +11 -0
  62. package/lib/components/button-toggle/button-toggle.component.js +10 -0
  63. package/lib/components/checkbox/checkbox.component.js +7 -0
  64. package/lib/components/decimal/decimal.component.js +8 -0
  65. package/lib/components/grouped-character/grouped-character.component.js +7 -0
  66. package/lib/components/menu/__internal__/locators.d.ts +6 -6
  67. package/lib/components/menu/__internal__/spec-helper/index.d.ts +3 -0
  68. package/lib/components/menu/__internal__/submenu/index.d.ts +2 -0
  69. package/lib/components/menu/__internal__/submenu/index.js +15 -0
  70. package/lib/components/menu/__internal__/submenu/package.json +6 -0
  71. package/lib/components/menu/__internal__/submenu/submenu.component.d.ts +42 -0
  72. package/lib/components/menu/__internal__/submenu/submenu.component.js +162 -86
  73. package/lib/components/menu/__internal__/submenu/submenu.context.d.ts +10 -0
  74. package/lib/components/menu/__internal__/submenu/submenu.style.d.ts +16 -0
  75. package/lib/components/menu/__internal__/submenu/submenu.style.js +4 -4
  76. package/lib/components/menu/index.d.ts +12 -6
  77. package/lib/components/menu/index.js +5 -5
  78. package/lib/components/menu/menu-divider/index.d.ts +2 -2
  79. package/lib/components/menu/menu-divider/index.js +15 -0
  80. package/lib/components/menu/menu-divider/menu-divider.component.d.ts +7 -0
  81. package/lib/components/menu/menu-divider/menu-divider.component.js +15 -7
  82. package/lib/components/menu/menu-divider/menu-divider.style.d.ts +6 -0
  83. package/lib/components/menu/menu-divider/package.json +6 -0
  84. package/lib/components/menu/menu-full-screen/index.d.ts +2 -2
  85. package/lib/components/menu/menu-full-screen/menu-full-screen.component.d.ts +14 -0
  86. package/lib/components/menu/menu-full-screen/menu-full-screen.component.js +22 -31
  87. package/lib/components/menu/menu-full-screen/menu-full-screen.style.d.ts +8 -0
  88. package/lib/components/menu/menu-full-screen/menu-full-screen.style.js +30 -28
  89. package/lib/components/menu/menu-item/index.d.ts +2 -2
  90. package/lib/components/menu/menu-item/menu-item.component.d.ts +67 -0
  91. package/lib/components/menu/menu-item/menu-item.component.js +2085 -122
  92. package/lib/components/menu/menu-item/menu-item.style.d.ts +21 -0
  93. package/lib/components/menu/menu-item/menu-item.style.js +191 -146
  94. package/lib/components/menu/menu-segment-title/index.d.ts +2 -2
  95. package/lib/components/menu/menu-segment-title/index.js +15 -0
  96. package/lib/components/menu/menu-segment-title/menu-segment-title.component.d.ts +10 -0
  97. package/lib/components/menu/menu-segment-title/menu-segment-title.component.js +14 -9
  98. package/lib/components/menu/menu-segment-title/menu-segment-title.style.d.ts +8 -0
  99. package/lib/components/menu/menu-segment-title/package.json +6 -0
  100. package/lib/components/menu/menu.component.d.ts +11 -9
  101. package/lib/components/menu/menu.component.js +1889 -20
  102. package/lib/components/menu/menu.config.d.ts +58 -94
  103. package/lib/components/menu/menu.context.d.ts +12 -6
  104. package/lib/components/menu/menu.style.d.ts +12 -2
  105. package/lib/components/menu/menu.style.js +12 -12
  106. package/lib/components/menu/scrollable-block/index.d.ts +2 -1
  107. package/lib/components/menu/scrollable-block/scrollable-block.component.d.ts +19 -0
  108. package/lib/components/menu/scrollable-block/scrollable-block.component.js +15 -21
  109. package/lib/components/menu/scrollable-block/scrollable-block.style.d.ts +8 -0
  110. package/lib/components/number/number.component.js +7 -0
  111. package/lib/components/numeral-date/numeral-date.component.js +10 -0
  112. package/lib/components/radio-button/radio-button-group.component.js +11 -0
  113. package/lib/components/radio-button/radio-button.style.js +1 -1
  114. package/lib/components/search/search.component.js +7 -0
  115. package/lib/components/select/filterable-select/filterable-select.component.js +10 -1
  116. package/lib/components/select/multi-select/multi-select.component.js +10 -1
  117. package/lib/components/select/simple-select/simple-select.component.js +10 -1
  118. package/lib/components/simple-color-picker/simple-color-picker.component.js +11 -0
  119. package/lib/components/switch/switch.component.js +7 -0
  120. package/lib/components/textarea/textarea.component.js +7 -0
  121. package/lib/components/textbox/textbox.component.js +7 -0
  122. package/package.json +2 -2
  123. package/esm/components/menu/menu-divider/menu-divider.d.ts +0 -11
  124. package/esm/components/menu/menu-full-screen/menu-full-screen.d.ts +0 -16
  125. package/esm/components/menu/menu-item/menu-item.d.ts +0 -60
  126. package/esm/components/menu/menu-segment-title/menu-segment-title.d.ts +0 -12
  127. package/esm/components/menu/menu.d.ts +0 -28
  128. package/esm/components/menu/scrollable-block/scrollable-block.d.ts +0 -20
  129. package/lib/components/menu/menu-divider/menu-divider.d.ts +0 -11
  130. package/lib/components/menu/menu-full-screen/menu-full-screen.d.ts +0 -16
  131. package/lib/components/menu/menu-item/menu-item.d.ts +0 -60
  132. package/lib/components/menu/menu-segment-title/menu-segment-title.d.ts +0 -12
  133. package/lib/components/menu/menu.d.ts +0 -28
  134. package/lib/components/menu/scrollable-block/scrollable-block.d.ts +0 -20
@@ -42,14 +42,14 @@ Object.defineProperty(exports, "ScrollableBlock", {
42
42
 
43
43
  var _menu = _interopRequireDefault(require("./menu.component"));
44
44
 
45
- var _menuItem = _interopRequireDefault(require("./menu-item/menu-item.component"));
45
+ var _menuItem = _interopRequireDefault(require("./menu-item"));
46
46
 
47
- var _menuDivider = _interopRequireDefault(require("./menu-divider/menu-divider.component"));
47
+ var _menuDivider = _interopRequireDefault(require("./menu-divider"));
48
48
 
49
- var _menuSegmentTitle = _interopRequireDefault(require("./menu-segment-title/menu-segment-title.component"));
49
+ var _menuSegmentTitle = _interopRequireDefault(require("./menu-segment-title"));
50
50
 
51
- var _menuFullScreen = _interopRequireDefault(require("./menu-full-screen/menu-full-screen.component"));
51
+ var _menuFullScreen = _interopRequireDefault(require("./menu-full-screen"));
52
52
 
53
- var _scrollableBlock = _interopRequireDefault(require("./scrollable-block/scrollable-block.component"));
53
+ var _scrollableBlock = _interopRequireDefault(require("./scrollable-block"));
54
54
 
55
55
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,2 +1,2 @@
1
- export { default } from "./menu-divider";
2
- export * from "./menu-divider";
1
+ export { default } from "./menu-divider.component";
2
+ export type { MenuDividerProps } from "./menu-divider.component";
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _menuDivider.default;
10
+ }
11
+ });
12
+
13
+ var _menuDivider = _interopRequireDefault(require("./menu-divider.component"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { TagProps } from "../../../__internal__/utils/helpers/tags";
3
+ export interface MenuDividerProps extends TagProps {
4
+ size?: "default" | "large";
5
+ }
6
+ declare const MenuDivider: React.ForwardRefExoticComponent<MenuDividerProps & React.RefAttributes<HTMLDivElement>>;
7
+ export default MenuDivider;
@@ -15,29 +15,37 @@ var _menu = _interopRequireDefault(require("../menu.context"));
15
15
 
16
16
  var _menu2 = require("../menu.style");
17
17
 
18
+ var _tags = _interopRequireDefault(require("../../../__internal__/utils/helpers/tags"));
19
+
18
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
21
 
20
22
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
21
23
 
22
24
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
25
 
26
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
27
+
24
28
  const MenuDivider = /*#__PURE__*/_react.default.forwardRef(({
25
- size = "default"
29
+ size = "default",
30
+ ...rest
26
31
  }, ref) => {
27
32
  const menuContext = (0, _react.useContext)(_menu.default);
28
33
  return /*#__PURE__*/_react.default.createElement(_menu2.StyledMenuItem, {
29
34
  inSubmenu: true
30
- }, /*#__PURE__*/_react.default.createElement(_menuDivider.default, {
31
- size: size,
32
- "data-component": "menu-divider",
35
+ }, /*#__PURE__*/_react.default.createElement(_menuDivider.default, _extends({
36
+ size: size
37
+ }, (0, _tags.default)("menu-divider", rest), {
33
38
  menuType: menuContext.menuType,
34
39
  ref: ref
35
- }));
40
+ })));
36
41
  });
37
42
 
38
43
  MenuDivider.propTypes = {
39
- /** sets the size of the MenuDivider */
40
- size: _propTypes.default.oneOf(["default", "large"])
44
+ "data-component": _propTypes.default.string,
45
+ "data-element": _propTypes.default.string,
46
+ "data-role": _propTypes.default.string,
47
+ "size": _propTypes.default.oneOf(["default", "large"])
41
48
  };
49
+ MenuDivider.displayName = "MenuDivider";
42
50
  var _default = MenuDivider;
43
51
  exports.default = _default;
@@ -0,0 +1,6 @@
1
+ import { MenuDividerProps } from "./menu-divider.component";
2
+ import { MenuType } from "../menu.context";
3
+ declare const StyledDivider: import("styled-components").StyledComponent<"div", any, MenuDividerProps & {
4
+ menuType: MenuType;
5
+ }, never>;
6
+ export default StyledDivider;
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "../../../../esm/components/menu/menu-divider/index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -1,2 +1,2 @@
1
- export { default } from "./menu-full-screen";
2
- export * from "./menu-full-screen";
1
+ export { default } from "./menu-full-screen.component";
2
+ export type { MenuFullscreenProps } from "./menu-full-screen.component";
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import { TagProps } from "../../../__internal__/utils/helpers/tags";
3
+ export interface MenuFullscreenProps extends TagProps {
4
+ /** The child elements to render */
5
+ children?: React.ReactNode;
6
+ /** Sets whether the component is open or closed */
7
+ isOpen?: boolean;
8
+ /** The start position for the component to open from */
9
+ startPosition?: "left" | "right";
10
+ /** A callback to be called when the close icon is clicked or enter is pressed when focused */
11
+ onClose: (ev: React.KeyboardEvent<HTMLElement> | React.MouseEvent<HTMLButtonElement>) => void;
12
+ }
13
+ export declare const MenuFullscreen: ({ children, isOpen, startPosition, onClose, ...rest }: MenuFullscreenProps) => JSX.Element;
14
+ export default MenuFullscreen;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = exports.MenuFullscreen = void 0;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
@@ -29,6 +29,8 @@ var _portal = _interopRequireDefault(require("../../portal"));
29
29
 
30
30
  var _menuDivider = _interopRequireDefault(require("../menu-divider/menu-divider.component"));
31
31
 
32
+ var _tags = _interopRequireDefault(require("../../../__internal__/utils/helpers/tags"));
33
+
32
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
35
 
34
36
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
@@ -44,11 +46,12 @@ const MenuFullscreen = ({
44
46
  onClose,
45
47
  ...rest
46
48
  }) => {
47
- const menuWrapperRef = (0, _react.useRef)();
48
- const menuContentRef = (0, _react.useRef)();
49
+ const menuWrapperRef = (0, _react.useRef)(null);
50
+ const menuContentRef = (0, _react.useRef)(null);
49
51
  const {
50
52
  menuType
51
53
  } = (0, _react.useContext)(_menu2.default);
54
+ const isDarkVariant = ["dark", "black"].includes(menuType);
52
55
 
53
56
  const handleKeyDown = ev => {
54
57
  /* istanbul ignore else */
@@ -57,31 +60,18 @@ const MenuFullscreen = ({
57
60
  }
58
61
  };
59
62
 
60
- const scrollVariants = {
61
- light: "light",
62
- dark: "dark",
63
- white: "light",
64
- black: "dark"
65
- };
66
- const iconColors = {
67
- light: undefined,
68
- dark: "#FFFFFF",
69
- white: undefined,
70
- black: "#FFFFFF"
71
- };
72
63
  return /*#__PURE__*/_react.default.createElement("li", {
73
64
  "aria-label": "menu-fullscreen"
74
65
  }, /*#__PURE__*/_react.default.createElement(_portal.default, null, /*#__PURE__*/_react.default.createElement(_focusTrap.default, {
75
66
  wrapperRef: menuWrapperRef,
76
67
  isOpen: isOpen
77
68
  }, /*#__PURE__*/_react.default.createElement(_menuFullScreen.StyledMenuFullscreen, _extends({
78
- "data-component": "menu-fullscreen",
79
69
  ref: menuWrapperRef,
80
70
  isOpen: isOpen,
81
71
  menuType: menuType,
82
72
  startPosition: startPosition,
83
73
  onKeyDown: handleKeyDown
84
- }, rest), /*#__PURE__*/_react.default.createElement(_menuFullScreen.StyledMenuFullscreenHeader, {
74
+ }, rest, (0, _tags.default)("menu-fullscreen", rest)), /*#__PURE__*/_react.default.createElement(_menuFullScreen.StyledMenuFullscreenHeader, {
85
75
  isOpen: isOpen,
86
76
  menuType: menuType,
87
77
  startPosition: startPosition
@@ -91,10 +81,10 @@ const MenuFullscreen = ({
91
81
  "data-element": "close"
92
82
  }, /*#__PURE__*/_react.default.createElement(_icon.default, {
93
83
  type: "close",
94
- color: iconColors[menuType]
84
+ color: isDarkVariant ? "--colorsYang100" : undefined
95
85
  }))), /*#__PURE__*/_react.default.createElement(_box.default, {
96
86
  overflowY: "auto",
97
- scrollVariant: scrollVariants[menuType],
87
+ scrollVariant: isDarkVariant ? "dark" : "light",
98
88
  width: "100%",
99
89
  height: "calc(100% - 40px)"
100
90
  }, /*#__PURE__*/_react.default.createElement(_menu.StyledMenuWrapper, {
@@ -109,23 +99,24 @@ const MenuFullscreen = ({
109
99
  value: {
110
100
  inFullscreenView: true,
111
101
  menuType,
112
- inMenu: true
102
+ inMenu: true,
103
+ openSubmenuId: null,
104
+ setOpenSubmenuId:
105
+ /* istanbul ignore next */
106
+ () => {}
113
107
  }
114
108
  }, _react.default.Children.map(children, (child, index) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, child, index < _react.default.Children.count(children) - 1 && /*#__PURE__*/_react.default.createElement(_menuDivider.default, null))))))))));
115
109
  };
116
110
 
111
+ exports.MenuFullscreen = MenuFullscreen;
117
112
  MenuFullscreen.propTypes = {
118
- /** The child elements to render */
119
- children: _propTypes.default.node,
120
-
121
- /** Sets whether the component is open or closed */
122
- isOpen: _propTypes.default.bool,
123
-
124
- /** The start position for the component to open from */
125
- startPosition: _propTypes.default.oneOf(["left", "right"]),
126
-
127
- /** A callback to be called when the close icon is clicked or enter is pressed when focused */
128
- onClose: _propTypes.default.func.isRequired
113
+ "children": _propTypes.default.node,
114
+ "data-component": _propTypes.default.string,
115
+ "data-element": _propTypes.default.string,
116
+ "data-role": _propTypes.default.string,
117
+ "isOpen": _propTypes.default.bool,
118
+ "onClose": _propTypes.default.func.isRequired,
119
+ "startPosition": _propTypes.default.oneOf(["left", "right"])
129
120
  };
130
121
  var _default = MenuFullscreen;
131
122
  exports.default = _default;
@@ -0,0 +1,8 @@
1
+ import { MenuFullscreenProps } from "./menu-full-screen.component";
2
+ import { MenuType } from "../menu.context";
3
+ interface StyledMenuFullScreenProps extends Pick<MenuFullscreenProps, "isOpen" | "startPosition"> {
4
+ menuType: MenuType;
5
+ }
6
+ declare const StyledMenuFullscreen: import("styled-components").StyledComponent<"div", any, StyledMenuFullScreenProps, never>;
7
+ declare const StyledMenuFullscreenHeader: import("styled-components").StyledComponent<"div", any, StyledMenuFullScreenProps, never>;
8
+ export { StyledMenuFullscreen, StyledMenuFullscreenHeader };
@@ -50,41 +50,43 @@ const StyledMenuFullscreen = _styledComponents.default.div`
50
50
  background-color: ${_menu.default[menuType].background};
51
51
  z-index: ${theme.zIndex.fullScreenModal};
52
52
 
53
- ${menuType === "dark" && (0, _styledComponents.css)`
54
- ${_search.default} span > [data-component="icon"] {
55
- color: var(--colorsUtilityMajor200);
56
-
57
- &:hover {
58
- color: var(--colorsUtilityMajor150);
53
+ && {
54
+ ${menuType === "dark" && (0, _styledComponents.css)`
55
+ ${_search.default} span > [data-component="icon"] {
56
+ color: var(--colorsUtilityMajor200);
57
+
58
+ &:hover {
59
+ color: var(--colorsUtilityMajor150);
60
+ }
59
61
  }
60
- }
61
- `}
62
+ `}
62
63
 
63
- ${menuType === "light" && (0, _styledComponents.css)`
64
- ${_search.default} span > [data-component="icon"] {
65
- color: var(--colorsUtilityMajor200);
64
+ ${menuType === "light" && (0, _styledComponents.css)`
65
+ ${_search.default} span > [data-component="icon"] {
66
+ color: var(--colorsUtilityMajor200);
66
67
 
67
- &:hover {
68
- color: var(--colorsUtilityMajor400);
68
+ &:hover {
69
+ color: var(--colorsUtilityMajor400);
70
+ }
69
71
  }
70
- }
71
- `}
72
+ `}
72
73
 
73
- ${_search.default} {
74
- ${_icon.default} {
75
- display: inline-flex;
76
- margin-right: 0;
77
- bottom: auto;
78
- }
74
+ ${_search.default} {
75
+ ${_icon.default} {
76
+ display: inline-flex;
77
+ margin-right: 0;
78
+ bottom: auto;
79
+ }
79
80
 
80
- ${_button.default} {
81
- display: flex;
82
- line-height: normal;
83
- padding-bottom: 0;
81
+ ${_button.default} {
82
+ display: flex;
83
+ line-height: normal;
84
+ padding-bottom: 0;
84
85
 
85
- &:focus {
86
- outline: solid 3px var(--colorsSemanticFocus500);
87
- box-shadow: none;
86
+ &:focus {
87
+ outline: solid 3px var(--colorsSemanticFocus500);
88
+ box-shadow: none;
89
+ }
88
90
  }
89
91
  }
90
92
  }
@@ -1,2 +1,2 @@
1
- export { default } from "./menu-item";
2
- export * from "./menu-item";
1
+ export { default } from "./menu-item.component";
2
+ export type { MenuWithChildren, MenuWithIcon, VariantType, } from "./menu-item.component";
@@ -0,0 +1,67 @@
1
+ import React from "react";
2
+ import { FlexboxProps, LayoutProps, MaxWidthProps, PaddingProps } from "styled-system";
3
+ import { IconType } from "../../icon";
4
+ import { TagProps } from "../../../__internal__/utils/helpers/tags";
5
+ export declare type VariantType = "default" | "alternate";
6
+ interface MenuItemBaseProps extends TagProps, LayoutProps, FlexboxProps, PaddingProps {
7
+ /** Custom className */
8
+ className?: string;
9
+ /** onClick handler */
10
+ onClick?: (event: React.MouseEvent<HTMLAnchorElement> | React.MouseEvent<HTMLButtonElement>) => void;
11
+ /** Defines which direction the submenu will hang eg. left/right */
12
+ submenuDirection?: string;
13
+ /** Is the menu item the currently selected item. */
14
+ selected?: boolean;
15
+ /** A title for the menu item that has a submenu. */
16
+ submenu?: string | boolean;
17
+ /** The href to use for the menu item. */
18
+ href?: string;
19
+ /** onKeyDown handler */
20
+ onKeyDown?: (event: React.KeyboardEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLButtonElement>) => void;
21
+ /** The target to use for the menu item. */
22
+ target?: string;
23
+ /** The rel attribute to be used for the underlying <a> tag */
24
+ rel?: string;
25
+ /** set the colour variant for a menuType */
26
+ variant?: VariantType;
27
+ /** Flag to display the dropdown arrow when an item has a submenu */
28
+ showDropdownArrow?: boolean;
29
+ /** If no text is provided an ariaLabel should be given to facilitate accessibility. */
30
+ ariaLabel?: string;
31
+ /** Callback triggered when submenu opens. Only valid with submenu prop */
32
+ onSubmenuOpen?: () => void;
33
+ /** Callback triggered when submenu closes. Only valid with submenu prop */
34
+ onSubmenuClose?: () => void;
35
+ /**
36
+ @ignore @private
37
+ private prop, used inside ScrollableBlock to ensure the MenuItem's color variant overrides the CSS
38
+ for other MenuItems inside the block
39
+ */
40
+ overrideColor?: boolean;
41
+ /** @private @ignore */
42
+ "data-component"?: string;
43
+ /** When set the submenu opens by click instead of hover */
44
+ clickToOpen?: boolean;
45
+ /** Sets the maxWidth of the MenuItem */
46
+ maxWidth?: MaxWidthProps["maxWidth"];
47
+ /**
48
+ * @private @ignore
49
+ * Renders MenuItem as a div element
50
+ * */
51
+ as?: "div";
52
+ }
53
+ export interface MenuWithChildren extends MenuItemBaseProps {
54
+ children?: React.ReactNode;
55
+ /** Either prop `icon` must be defined or this node must have children. */
56
+ icon?: IconType;
57
+ }
58
+ export interface MenuWithIcon extends MenuItemBaseProps {
59
+ /** Either prop `icon` must be defined or this node must have children. */
60
+ icon: IconType;
61
+ children?: React.ReactNode;
62
+ }
63
+ export declare const MenuItem: {
64
+ ({ submenu, children, href, onClick, target, submenuDirection, icon, selected, onKeyDown, variant, showDropdownArrow, ariaLabel, clickToOpen, maxWidth, onSubmenuOpen, onSubmenuClose, overrideColor, rel, as, ...rest }: MenuWithChildren | MenuWithIcon): JSX.Element;
65
+ displayName: string;
66
+ };
67
+ export default MenuItem;