@atlaskit/menu 1.1.4 → 1.2.3

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 (79) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/cjs/internal/components/menu-item-primitive.js +193 -0
  3. package/dist/cjs/menu-item/button-item.js +31 -25
  4. package/dist/cjs/menu-item/custom-item.js +31 -32
  5. package/dist/cjs/menu-item/heading-item.js +23 -7
  6. package/dist/cjs/menu-item/link-item.js +50 -45
  7. package/dist/cjs/menu-item/skeleton-heading-item.js +40 -14
  8. package/dist/cjs/menu-item/skeleton-item.js +91 -13
  9. package/dist/cjs/menu-section/menu-group.js +11 -8
  10. package/dist/cjs/menu-section/section.js +81 -29
  11. package/dist/cjs/version.json +1 -1
  12. package/dist/es2019/internal/components/menu-item-primitive.js +174 -0
  13. package/dist/es2019/menu-item/button-item.js +28 -21
  14. package/dist/es2019/menu-item/custom-item.js +32 -24
  15. package/dist/es2019/menu-item/heading-item.js +21 -6
  16. package/dist/es2019/menu-item/link-item.js +31 -26
  17. package/dist/es2019/menu-item/skeleton-heading-item.js +36 -11
  18. package/dist/es2019/menu-item/skeleton-item.js +88 -11
  19. package/dist/es2019/menu-section/menu-group.js +12 -8
  20. package/dist/es2019/menu-section/section.js +82 -31
  21. package/dist/es2019/version.json +1 -1
  22. package/dist/esm/internal/components/menu-item-primitive.js +178 -0
  23. package/dist/esm/menu-item/button-item.js +30 -24
  24. package/dist/esm/menu-item/custom-item.js +32 -26
  25. package/dist/esm/menu-item/heading-item.js +21 -8
  26. package/dist/esm/menu-item/link-item.js +49 -45
  27. package/dist/esm/menu-item/skeleton-heading-item.js +37 -14
  28. package/dist/esm/menu-item/skeleton-item.js +88 -13
  29. package/dist/esm/menu-section/menu-group.js +12 -8
  30. package/dist/esm/menu-section/section.js +81 -32
  31. package/dist/esm/version.json +1 -1
  32. package/dist/types/index.d.ts +1 -1
  33. package/dist/types/internal/components/menu-item-primitive.d.ts +17 -0
  34. package/dist/types/menu-item/button-item.d.ts +1 -1
  35. package/dist/types/menu-item/custom-item.d.ts +2 -1
  36. package/dist/types/menu-item/skeleton-heading-item.d.ts +1 -2
  37. package/dist/types/menu-item/skeleton-item.d.ts +1 -2
  38. package/dist/types/types.d.ts +27 -7
  39. package/package.json +8 -3
  40. package/dist/cjs/internal/components/base-item.js +0 -65
  41. package/dist/cjs/internal/styles/menu-item/base-item.js +0 -152
  42. package/dist/cjs/internal/styles/menu-item/button-item.js +0 -28
  43. package/dist/cjs/internal/styles/menu-item/custom-item.js +0 -24
  44. package/dist/cjs/internal/styles/menu-item/heading-item.js +0 -28
  45. package/dist/cjs/internal/styles/menu-item/link-item.js +0 -22
  46. package/dist/cjs/internal/styles/menu-item/skeleton-heading-item.js +0 -50
  47. package/dist/cjs/internal/styles/menu-item/skeleton-item.js +0 -98
  48. package/dist/cjs/internal/styles/menu-section/menu-group.js +0 -24
  49. package/dist/cjs/internal/styles/menu-section/section.js +0 -83
  50. package/dist/es2019/internal/components/base-item.js +0 -51
  51. package/dist/es2019/internal/styles/menu-item/base-item.js +0 -122
  52. package/dist/es2019/internal/styles/menu-item/button-item.js +0 -9
  53. package/dist/es2019/internal/styles/menu-item/custom-item.js +0 -5
  54. package/dist/es2019/internal/styles/menu-item/heading-item.js +0 -16
  55. package/dist/es2019/internal/styles/menu-item/link-item.js +0 -3
  56. package/dist/es2019/internal/styles/menu-item/skeleton-heading-item.js +0 -25
  57. package/dist/es2019/internal/styles/menu-item/skeleton-item.js +0 -75
  58. package/dist/es2019/internal/styles/menu-section/menu-group.js +0 -14
  59. package/dist/es2019/internal/styles/menu-section/section.js +0 -62
  60. package/dist/esm/internal/components/base-item.js +0 -55
  61. package/dist/esm/internal/styles/menu-item/base-item.js +0 -124
  62. package/dist/esm/internal/styles/menu-item/button-item.js +0 -16
  63. package/dist/esm/internal/styles/menu-item/custom-item.js +0 -12
  64. package/dist/esm/internal/styles/menu-item/heading-item.js +0 -16
  65. package/dist/esm/internal/styles/menu-item/link-item.js +0 -10
  66. package/dist/esm/internal/styles/menu-item/skeleton-heading-item.js +0 -33
  67. package/dist/esm/internal/styles/menu-item/skeleton-item.js +0 -81
  68. package/dist/esm/internal/styles/menu-section/menu-group.js +0 -15
  69. package/dist/esm/internal/styles/menu-section/section.js +0 -67
  70. package/dist/types/internal/components/base-item.d.ts +0 -9
  71. package/dist/types/internal/styles/menu-item/base-item.d.ts +0 -23
  72. package/dist/types/internal/styles/menu-item/button-item.d.ts +0 -2
  73. package/dist/types/internal/styles/menu-item/custom-item.d.ts +0 -2
  74. package/dist/types/internal/styles/menu-item/heading-item.d.ts +0 -2
  75. package/dist/types/internal/styles/menu-item/link-item.d.ts +0 -2
  76. package/dist/types/internal/styles/menu-item/skeleton-heading-item.d.ts +0 -2
  77. package/dist/types/internal/styles/menu-item/skeleton-item.d.ts +0 -2
  78. package/dist/types/internal/styles/menu-section/menu-group.d.ts +0 -3
  79. package/dist/types/internal/styles/menu-section/section.d.ts +0 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,59 @@
1
1
  # @atlaskit/menu
2
2
 
3
+ ## 1.2.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`f460cc7c411`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f460cc7c411) - Builds for this package now pass through a tokens babel plugin, removing runtime invocations of the tokens() function and improving bundle size.
8
+ - Updated dependencies
9
+
10
+ ## 1.2.2
11
+
12
+ ### Patch Changes
13
+
14
+ - [`2eeb5c46710`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2eeb5c46710) - Menu items can take `data-testid` directly again however we recommend to still use the officially supported `testId` prop instead. The `data-testid` prop was unintentionally removed in a previous version however will be removed as a breaking change in a later major version and remains not officially typed.
15
+
16
+ ## 1.2.1
17
+
18
+ ### Patch Changes
19
+
20
+ - [`2b2290121eb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2b2290121eb) - Raised the minimum version carat range of focus ring to latest.
21
+
22
+ ## 1.2.0
23
+
24
+ ### Minor Changes
25
+
26
+ - [`213bfd77e61`](https://bitbucket.org/atlassian/atlassian-frontend/commits/213bfd77e61) - The DOM structure of menu item components has been flattened.
27
+ If you used CSS hacks (via className or cssFn) that targetted specific DOM nodes you may be broken.
28
+
29
+ Previously the structure looked like:
30
+
31
+ ```jsx
32
+ <button>
33
+ <div> // <-- this intermediate div has been removed
34
+ <span>
35
+ <span />
36
+ </span>
37
+ </div>
38
+ </button>
39
+ ```
40
+
41
+ Now it looks like:
42
+
43
+ ```jsx
44
+ <button>
45
+ <span>
46
+ <span />
47
+ </span>
48
+ </button>
49
+ ```
50
+
51
+ - [`63888b03b49`](https://bitbucket.org/atlassian/atlassian-frontend/commits/63888b03b49) - Internal refactor to align style declarations to common techstack.
52
+
53
+ ### Patch Changes
54
+
55
+ - Updated dependencies
56
+
3
57
  ## 1.1.4
4
58
 
5
59
  ### Patch Changes
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = require("react");
11
+
12
+ var _core = require("@emotion/core");
13
+
14
+ var _focusRing = _interopRequireDefault(require("@atlaskit/focus-ring"));
15
+
16
+ var _colors = require("@atlaskit/theme/colors");
17
+
18
+ var _constants = require("@atlaskit/theme/constants");
19
+
20
+ var _typography = require("@atlaskit/theme/typography");
21
+
22
+ /** @jsx jsx */
23
+ var defaultRender = function defaultRender(Component, props) {
24
+ return (0, _core.jsx)(Component, props);
25
+ };
26
+
27
+ var gridSize = (0, _constants.gridSize)();
28
+ var fontSize = (0, _constants.fontSize)();
29
+ var itemTopBottomPadding = gridSize;
30
+ var itemSidePadding = gridSize * 2.5;
31
+ var itemElemSpacing = gridSize * 1.5;
32
+ var itemDescriptionSpacing = gridSize * 0.375;
33
+ var itemMinHeight = gridSize * 5;
34
+ var beforeElementStyles = (0, _core.css)({
35
+ display: 'flex',
36
+ marginRight: itemElemSpacing,
37
+ alignItems: 'center',
38
+ flexShrink: 0
39
+ });
40
+ var afterElementStyles = (0, _core.css)({
41
+ display: 'flex',
42
+ marginLeft: itemElemSpacing,
43
+ alignItems: 'center',
44
+ flexShrink: 0
45
+ });
46
+ var contentStyles = (0, _core.css)({
47
+ display: 'flex',
48
+ justifyContent: 'center',
49
+ flexDirection: 'column',
50
+ flexGrow: 1,
51
+ // Fix - avoid clipped text descenders when using standard 16px line-height
52
+ lineHeight: 1.22,
53
+ outline: 'none',
54
+ overflow: 'hidden',
55
+ textAlign: 'left'
56
+ });
57
+ var truncateStyles = (0, _core.css)({
58
+ display: 'block',
59
+ overflow: 'hidden',
60
+ textOverflow: 'ellipsis',
61
+ whiteSpace: 'nowrap'
62
+ });
63
+ var wordBreakStyles = (0, _core.css)({
64
+ wordBreak: 'break-word'
65
+ });
66
+ var descriptionStyles = (0, _core.css)({
67
+ marginTop: itemDescriptionSpacing,
68
+ color: "var(--ds-text-lowEmphasis, ".concat(_colors.N200, ")"),
69
+ fontSize: _typography.headingSizes.h200.size
70
+ });
71
+ var primitiveStyles = (0, _core.css)({
72
+ display: 'flex',
73
+ boxSizing: 'border-box',
74
+ width: '100%',
75
+ minHeight: itemMinHeight,
76
+ margin: 0,
77
+ padding: "".concat(itemTopBottomPadding, "px ").concat(itemSidePadding, "px"),
78
+ alignItems: 'center',
79
+ border: 0,
80
+ fontSize: fontSize,
81
+ outline: 0,
82
+ textDecoration: 'none',
83
+ userSelect: 'none',
84
+ '::-moz-focus-inner': {
85
+ border: 0
86
+ },
87
+ ':hover': {
88
+ textDecoration: 'none'
89
+ }
90
+ });
91
+ var interactiveStyles = (0, _core.css)({
92
+ cursor: 'pointer'
93
+ });
94
+ var unselectedStyles = (0, _core.css)({
95
+ backgroundColor: 'transparent',
96
+ color: 'currentColor',
97
+ ':visited': {
98
+ color: 'currentColor'
99
+ },
100
+ ':hover': {
101
+ backgroundColor: "var(--ds-background-transparentNeutral-hover, ".concat(_colors.N20, ")"),
102
+ color: 'currentColor'
103
+ },
104
+ ':active': {
105
+ backgroundColor: "var(--ds-background-transparentNeutral-pressed, ".concat(_colors.N30, ")"),
106
+ boxShadow: 'none',
107
+ color: 'currentColor'
108
+ }
109
+ });
110
+ var disabledStyles = (0, _core.css)({
111
+ cursor: 'not-allowed',
112
+ '&, :hover, :active': {
113
+ backgroundColor: 'transparent',
114
+ color: "var(--ds-text-disabled, ".concat(_colors.N200, ")")
115
+ }
116
+ });
117
+ var selectedStyles = (0, _core.css)({
118
+ backgroundColor: "var(--ds-background-selected-resting, ".concat(_colors.N20, ")"),
119
+ // Fallback set as babel plugin inserts one otherwise
120
+ color: "var(--ds-text-selected, currentColor)",
121
+ ':visited': {
122
+ color: "var(--ds-text-selected, currentColor)"
123
+ },
124
+ ':hover': {
125
+ backgroundColor: "var(--ds-background-selected-hover, ".concat(_colors.N20, ")"),
126
+ color: "var(--ds-text-selected, currentColor)"
127
+ },
128
+ ':active': {
129
+ backgroundColor: "var(--ds-background-selected-pressed, ".concat(_colors.N30, ")"),
130
+ color: "var(--ds-text-selected, currentColor)"
131
+ }
132
+ });
133
+ /**
134
+ * __Menu item primitive__
135
+ *
136
+ * Menu item primitive contains all the styles for menu items,
137
+ * including support for selected, disabled, and interaction states.
138
+ *
139
+ * Using children as function prop you wire up this to your own host element.
140
+ *
141
+ * ```jsx
142
+ * <MenuItemPrimitive>
143
+ * {({ children, ...props }) => <button {...props}>{children}</button>}
144
+ * </MenuItemPrimitive>
145
+ * ```
146
+ */
147
+
148
+ var MenuItemPrimitive = function MenuItemPrimitive(_ref) {
149
+ var children = _ref.children,
150
+ title = _ref.title,
151
+ description = _ref.description,
152
+ iconAfter = _ref.iconAfter,
153
+ iconBefore = _ref.iconBefore,
154
+ overrides = _ref.overrides,
155
+ className = _ref.className,
156
+ _ref$shouldTitleWrap = _ref.shouldTitleWrap,
157
+ shouldTitleWrap = _ref$shouldTitleWrap === void 0 ? false : _ref$shouldTitleWrap,
158
+ _ref$shouldDescriptio = _ref.shouldDescriptionWrap,
159
+ shouldDescriptionWrap = _ref$shouldDescriptio === void 0 ? false : _ref$shouldDescriptio,
160
+ _ref$isDisabled = _ref.isDisabled,
161
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
162
+ _ref$isSelected = _ref.isSelected,
163
+ isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected;
164
+ var renderTitle = overrides && overrides.Title && overrides.Title.render || defaultRender;
165
+ return (0, _core.jsx)(_core.ClassNames, null, function (_ref2) {
166
+ var cn = _ref2.css,
167
+ cx = _ref2.cx;
168
+ return (0, _core.jsx)(_focusRing.default, {
169
+ isInset: true
170
+ }, children({
171
+ className: cx([cn([primitiveStyles, !isDisabled && !isSelected && unselectedStyles, !isDisabled && isSelected && selectedStyles, isDisabled ? disabledStyles : interactiveStyles]), className]),
172
+ children: (0, _core.jsx)(_react.Fragment, null, iconBefore && (0, _core.jsx)("span", {
173
+ "data-item-elem-before": true,
174
+ css: beforeElementStyles
175
+ }, iconBefore), title && (0, _core.jsx)("span", {
176
+ css: contentStyles
177
+ }, renderTitle('span', {
178
+ children: title,
179
+ className: cn(shouldTitleWrap ? wordBreakStyles : truncateStyles),
180
+ 'data-item-title': true
181
+ }), description && (0, _core.jsx)("span", {
182
+ "data-item-description": true,
183
+ css: [descriptionStyles, shouldDescriptionWrap ? wordBreakStyles : truncateStyles]
184
+ }, description)), iconAfter && (0, _core.jsx)("span", {
185
+ "data-item-elem-after": true,
186
+ css: afterElementStyles
187
+ }, iconAfter))
188
+ }));
189
+ });
190
+ };
191
+
192
+ var _default = MenuItemPrimitive;
193
+ exports.default = _default;
@@ -15,18 +15,18 @@ var _react = require("react");
15
15
 
16
16
  var _core = require("@emotion/core");
17
17
 
18
- var _baseItem = _interopRequireDefault(require("../internal/components/base-item"));
18
+ var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
19
19
 
20
- var _useBlurOnMouseDown = require("../internal/hooks/use-blur-on-mouse-down");
20
+ var _menuItemPrimitive = _interopRequireDefault(require("../internal/components/menu-item-primitive"));
21
21
 
22
- var _buttonItem = require("../internal/styles/menu-item/button-item");
22
+ var _useBlurOnMouseDown = require("../internal/hooks/use-blur-on-mouse-down");
23
23
 
24
24
  /** @jsx jsx */
25
25
 
26
26
  /**
27
27
  * __Button item__
28
28
  *
29
- * A button item is used to populate a menu with items that need to be a button element.
29
+ * A button item is used to populate a menu with items that are buttons.
30
30
  *
31
31
  * - [Examples](https://atlaskit.atlassian.com/packages/design-system/menu/docs/button-item)
32
32
  * - [Code](https://atlaskit.atlassian.com/packages/design-system/menu)
@@ -35,9 +35,7 @@ var ButtonItem = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardR
35
35
  function (props, ref) {
36
36
  var children = props.children,
37
37
  _props$cssFn = props.cssFn,
38
- cssFn = _props$cssFn === void 0 ? function () {
39
- return {};
40
- } : _props$cssFn,
38
+ cssFn = _props$cssFn === void 0 ? _noop.default : _props$cssFn,
41
39
  description = props.description,
42
40
  iconAfter = props.iconAfter,
43
41
  iconBefore = props.iconBefore,
@@ -51,35 +49,43 @@ function (props, ref) {
51
49
  onMouseDown = props.onMouseDown,
52
50
  shouldTitleWrap = props.shouldTitleWrap,
53
51
  shouldDescriptionWrap = props.shouldDescriptionWrap,
54
- others = (0, _objectWithoutProperties2.default)(props, ["children", "cssFn", "description", "iconAfter", "iconBefore", "isDisabled", "isSelected", "onClick", "testId", "overrides", "onMouseDown", "shouldTitleWrap", "shouldDescriptionWrap"]);
52
+ rest = (0, _objectWithoutProperties2.default)(props, ["children", "cssFn", "description", "iconAfter", "iconBefore", "isDisabled", "isSelected", "onClick", "testId", "overrides", "onMouseDown", "shouldTitleWrap", "shouldDescriptionWrap"]);
55
53
  var onMouseDownHandler = (0, _useBlurOnMouseDown.useBlurOnMouseDown)(onMouseDown);
56
54
 
57
55
  if (!children) {
58
56
  return null;
59
57
  }
60
58
 
61
- return (0, _core.jsx)("button", (0, _extends2.default)({
62
- css: [// eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
63
- (0, _buttonItem.buttonItemCSS)(isDisabled, isSelected), // eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
64
- cssFn({
65
- isSelected: isSelected,
66
- isDisabled: isDisabled
67
- })],
68
- type: "button",
69
- "data-testid": testId,
70
- disabled: isDisabled,
71
- onClick: onClick,
72
- onMouseDown: onMouseDownHandler,
73
- ref: ref
74
- }, others), (0, _core.jsx)(_baseItem.default // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
75
- , {
59
+ return (0, _core.jsx)(_menuItemPrimitive.default, (0, _extends2.default)({}, rest, {
60
+ // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
76
61
  overrides: overrides,
77
62
  iconBefore: iconBefore,
78
63
  iconAfter: iconAfter,
64
+ isDisabled: isDisabled,
65
+ isSelected: isSelected,
79
66
  description: description,
67
+ title: children,
80
68
  shouldTitleWrap: shouldTitleWrap,
81
- shouldDescriptionWrap: shouldDescriptionWrap
82
- }, children));
69
+ shouldDescriptionWrap: shouldDescriptionWrap,
70
+ css: // eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
71
+ cssFn({
72
+ isSelected: isSelected,
73
+ isDisabled: isDisabled
74
+ })
75
+ }), function (_ref) {
76
+ var children = _ref.children,
77
+ className = _ref.className;
78
+ return (0, _core.jsx)("button", (0, _extends2.default)({
79
+ "data-testid": testId
80
+ }, rest, {
81
+ className: className,
82
+ ref: ref,
83
+ disabled: isDisabled,
84
+ onClick: onClick,
85
+ onMouseDown: onMouseDownHandler,
86
+ type: "button"
87
+ }), children);
88
+ });
83
89
  }));
84
90
  var _default = ButtonItem;
85
91
  exports.default = _default;
@@ -2,8 +2,6 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
@@ -13,20 +11,17 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
13
11
 
14
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
13
 
16
- var _react = _interopRequireWildcard(require("react"));
14
+ var _react = require("react");
17
15
 
18
16
  var _core = require("@emotion/core");
19
17
 
20
- var _baseItem = _interopRequireDefault(require("../internal/components/base-item"));
21
-
22
- var _useBlurOnMouseDown = require("../internal/hooks/use-blur-on-mouse-down");
18
+ var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
23
19
 
24
- var _customItem = require("../internal/styles/menu-item/custom-item");
20
+ var _menuItemPrimitive = _interopRequireDefault(require("../internal/components/menu-item-primitive"));
25
21
 
26
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
-
28
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
22
+ var _useBlurOnMouseDown = require("../internal/hooks/use-blur-on-mouse-down");
29
23
 
24
+ /** @jsx jsx */
30
25
  var preventEvent = function preventEvent(e) {
31
26
  e.preventDefault();
32
27
  }; // Dirty hack to get generics working with forward ref [1/2]
@@ -35,7 +30,7 @@ var preventEvent = function preventEvent(e) {
35
30
  /**
36
31
  * __Custom item__
37
32
  *
38
- * A custom item is used to populate a menu with items that need to be a custom element.
33
+ * A custom item is used to populate a menu with items that can be any element.
39
34
  *
40
35
  * - [Examples](https://atlaskit.atlassian.com/packages/design-system/menu/docs/custom-item)
41
36
  * - [Code](https://atlaskit.atlassian.com/packages/design-system/menu)
@@ -43,9 +38,7 @@ var preventEvent = function preventEvent(e) {
43
38
  var CustomItem = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
44
39
  var Component = _ref.component,
45
40
  _ref$cssFn = _ref.cssFn,
46
- cssFn = _ref$cssFn === void 0 ? function () {
47
- return {};
48
- } : _ref$cssFn,
41
+ cssFn = _ref$cssFn === void 0 ? _noop.default : _ref$cssFn,
49
42
  _ref$isDisabled = _ref.isDisabled,
50
43
  isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
51
44
  _ref$isSelected = _ref.isSelected,
@@ -67,31 +60,37 @@ var CustomItem = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardR
67
60
  return null;
68
61
  }
69
62
 
70
- return /*#__PURE__*/_react.default.createElement(_core.ClassNames, null, function (_ref2) {
71
- var css = _ref2.css;
72
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
63
+ return (0, _core.jsx)(_menuItemPrimitive.default, (0, _extends2.default)({}, rest, {
64
+ // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
65
+ overrides: overrides,
66
+ description: description,
67
+ iconAfter: iconAfter,
68
+ title: children,
69
+ iconBefore: iconBefore,
70
+ isSelected: isSelected,
71
+ isDisabled: isDisabled,
72
+ shouldTitleWrap: shouldTitleWrap,
73
+ shouldDescriptionWrap: shouldDescriptionWrap // eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
74
+ ,
75
+ css: (0, _core.css)(cssFn({
76
+ isDisabled: isDisabled,
77
+ isSelected: isSelected
78
+ }))
79
+ }), function (_ref2) {
80
+ var children = _ref2.children,
81
+ className = _ref2.className;
82
+ return (0, _core.jsx)(Component, (0, _extends2.default)({
83
+ "data-testid": testId
84
+ }, rest, {
85
+ className: className,
73
86
  ref: ref,
74
- "data-testid": testId,
75
87
  draggable: false,
76
- className: css([(0, _customItem.customItemCSS)(isDisabled, isSelected), cssFn({
77
- isDisabled: isDisabled,
78
- isSelected: isSelected
79
- })]),
80
88
  onDragStart: preventEvent,
81
89
  onMouseDown: isDisabled ? preventEvent : onMouseDownHandler,
82
90
  onClick: isDisabled ? preventEvent : onClick,
83
91
  tabIndex: isDisabled ? -1 : undefined,
84
92
  "aria-disabled": isDisabled
85
- }, rest), /*#__PURE__*/_react.default.createElement(_baseItem.default // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
86
- , {
87
- overrides: overrides,
88
- children: children,
89
- description: description,
90
- iconAfter: iconAfter,
91
- iconBefore: iconBefore,
92
- shouldTitleWrap: shouldTitleWrap,
93
- shouldDescriptionWrap: shouldDescriptionWrap
94
- }));
93
+ }), children);
95
94
  });
96
95
  }) // Dirty hack to get generics working with forward ref [2/2]
97
96
  );
@@ -15,10 +15,27 @@ var _react = require("react");
15
15
 
16
16
  var _core = require("@emotion/core");
17
17
 
18
- var _headingItem = require("../internal/styles/menu-item/heading-item");
18
+ var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
19
19
 
20
- /** @jsx jsx */
20
+ var _colors = require("@atlaskit/theme/colors");
21
+
22
+ var _constants = require("@atlaskit/theme/constants");
23
+
24
+ var _typography = require("@atlaskit/theme/typography");
21
25
 
26
+ /** @jsx jsx */
27
+ var gridSize = (0, _constants.gridSize)();
28
+ var itemSidePadding = gridSize * 2.5;
29
+ var itemHeadingContentHeight = _typography.headingSizes.h100.lineHeight;
30
+ var itemHeadingFontSize = _typography.headingSizes.h100.size;
31
+ var headingStyles = (0, _core.css)({
32
+ padding: "0 ".concat(itemSidePadding, "px"),
33
+ color: "var(--ds-text-lowEmphasis, ".concat(_colors.N200, ")"),
34
+ fontSize: itemHeadingFontSize,
35
+ fontWeight: 700,
36
+ lineHeight: itemHeadingContentHeight / itemHeadingFontSize,
37
+ textTransform: 'uppercase'
38
+ });
22
39
  /**
23
40
  * __Heading item__
24
41
  *
@@ -27,18 +44,17 @@ var _headingItem = require("../internal/styles/menu-item/heading-item");
27
44
  * - [Examples](https://atlaskit.atlassian.com/packages/design-system/menu/docs/heading-item)
28
45
  * - [Code](https://atlaskit.atlassian.com/packages/design-system/menu)
29
46
  */
47
+
30
48
  var HeadingItem = /*#__PURE__*/(0, _react.memo)(function (_ref) {
31
49
  var children = _ref.children,
32
50
  testId = _ref.testId,
33
51
  id = _ref.id,
34
52
  _ref$cssFn = _ref.cssFn,
35
- cssFn = _ref$cssFn === void 0 ? function () {
36
- return {};
37
- } : _ref$cssFn,
53
+ cssFn = _ref$cssFn === void 0 ? _noop.default : _ref$cssFn,
38
54
  rest = (0, _objectWithoutProperties2.default)(_ref, ["children", "testId", "id", "cssFn"]);
39
55
  return (0, _core.jsx)("div", (0, _extends2.default)({
40
- // eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
41
- css: [_headingItem.headingItemCSS, cssFn(undefined)],
56
+ css: [headingStyles, // eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
57
+ cssFn(undefined)],
42
58
  "data-testid": testId,
43
59
  "data-ds--menu--heading-item": true,
44
60
  id: id
@@ -15,11 +15,11 @@ var _react = require("react");
15
15
 
16
16
  var _core = require("@emotion/core");
17
17
 
18
- var _baseItem = _interopRequireDefault(require("../internal/components/base-item"));
18
+ var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
19
19
 
20
- var _useBlurOnMouseDown = require("../internal/hooks/use-blur-on-mouse-down");
20
+ var _menuItemPrimitive = _interopRequireDefault(require("../internal/components/menu-item-primitive"));
21
21
 
22
- var _linkItem = require("../internal/styles/menu-item/link-item");
22
+ var _useBlurOnMouseDown = require("../internal/hooks/use-blur-on-mouse-down");
23
23
 
24
24
  /** @jsx jsx */
25
25
  var preventEvent = function preventEvent(e) {
@@ -36,59 +36,64 @@ var preventEvent = function preventEvent(e) {
36
36
 
37
37
 
38
38
  var LinkItem = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef)( // Type needed on props to extract types with extract react types.
39
- function (_ref, ref) {
40
- var href = _ref.href,
41
- rest = (0, _objectWithoutProperties2.default)(_ref, ["href"]);
42
- var children = rest.children,
43
- _rest$cssFn = rest.cssFn,
44
- cssFn = _rest$cssFn === void 0 ? function () {
45
- return {};
46
- } : _rest$cssFn,
47
- description = rest.description,
48
- iconAfter = rest.iconAfter,
49
- iconBefore = rest.iconBefore,
50
- _rest$isDisabled = rest.isDisabled,
51
- isDisabled = _rest$isDisabled === void 0 ? false : _rest$isDisabled,
52
- _rest$isSelected = rest.isSelected,
53
- isSelected = _rest$isSelected === void 0 ? false : _rest$isSelected,
54
- onClick = rest.onClick,
55
- testId = rest.testId,
56
- overrides = rest.overrides,
57
- onMouseDown = rest.onMouseDown,
58
- shouldTitleWrap = rest.shouldTitleWrap,
59
- shouldDescriptionWrap = rest.shouldDescriptionWrap,
60
- others = (0, _objectWithoutProperties2.default)(rest, ["children", "cssFn", "description", "iconAfter", "iconBefore", "isDisabled", "isSelected", "onClick", "testId", "overrides", "onMouseDown", "shouldTitleWrap", "shouldDescriptionWrap"]);
39
+ function (props, ref) {
40
+ var children = props.children,
41
+ href = props.href,
42
+ _props$cssFn = props.cssFn,
43
+ cssFn = _props$cssFn === void 0 ? _noop.default : _props$cssFn,
44
+ description = props.description,
45
+ iconAfter = props.iconAfter,
46
+ iconBefore = props.iconBefore,
47
+ _props$isDisabled = props.isDisabled,
48
+ isDisabled = _props$isDisabled === void 0 ? false : _props$isDisabled,
49
+ _props$isSelected = props.isSelected,
50
+ isSelected = _props$isSelected === void 0 ? false : _props$isSelected,
51
+ onClick = props.onClick,
52
+ testId = props.testId,
53
+ overrides = props.overrides,
54
+ onMouseDown = props.onMouseDown,
55
+ shouldTitleWrap = props.shouldTitleWrap,
56
+ shouldDescriptionWrap = props.shouldDescriptionWrap,
57
+ rest = (0, _objectWithoutProperties2.default)(props, ["children", "href", "cssFn", "description", "iconAfter", "iconBefore", "isDisabled", "isSelected", "onClick", "testId", "overrides", "onMouseDown", "shouldTitleWrap", "shouldDescriptionWrap"]);
61
58
  var onMouseDownHandler = (0, _useBlurOnMouseDown.useBlurOnMouseDown)(onMouseDown);
62
59
 
63
60
  if (!children) {
64
61
  return null;
65
62
  }
66
63
 
67
- return (0, _core.jsx)("a", (0, _extends2.default)({
68
- ref: ref,
69
- css: [// eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
70
- (0, _linkItem.linkItemCSS)(isDisabled, isSelected), // eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
71
- cssFn({
72
- isSelected: isSelected,
73
- isDisabled: isDisabled
74
- })],
75
- draggable: false,
76
- href: isDisabled ? undefined : href,
77
- "data-testid": testId,
78
- onDragStart: preventEvent,
79
- onMouseDown: isDisabled ? preventEvent : onMouseDownHandler,
80
- onClick: isDisabled ? preventEvent : onClick,
81
- "aria-current": isSelected ? 'page' : undefined,
82
- "aria-disabled": isDisabled
83
- }, others), (0, _core.jsx)(_baseItem.default // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
84
- , {
64
+ return (0, _core.jsx)(_menuItemPrimitive.default, (0, _extends2.default)({}, rest, {
65
+ // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
85
66
  overrides: overrides,
86
67
  iconBefore: iconBefore,
87
68
  iconAfter: iconAfter,
69
+ isSelected: isSelected,
70
+ isDisabled: isDisabled,
88
71
  description: description,
89
72
  shouldTitleWrap: shouldTitleWrap,
90
- shouldDescriptionWrap: shouldDescriptionWrap
91
- }, children));
73
+ shouldDescriptionWrap: shouldDescriptionWrap,
74
+ css: // eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
75
+ cssFn({
76
+ isSelected: isSelected,
77
+ isDisabled: isDisabled
78
+ }),
79
+ title: children
80
+ }), function (_ref) {
81
+ var children = _ref.children,
82
+ className = _ref.className;
83
+ return (0, _core.jsx)("a", (0, _extends2.default)({
84
+ "data-testid": testId
85
+ }, rest, {
86
+ className: className,
87
+ href: isDisabled ? undefined : href,
88
+ draggable: false,
89
+ onDragStart: preventEvent,
90
+ onMouseDown: isDisabled ? preventEvent : onMouseDownHandler,
91
+ onClick: isDisabled ? preventEvent : onClick,
92
+ "aria-current": isSelected ? 'page' : undefined,
93
+ "aria-disabled": isDisabled,
94
+ ref: ref
95
+ }), children);
96
+ });
92
97
  }));
93
98
  var _default = LinkItem;
94
99
  exports.default = _default;