@atlaskit/menu 2.6.2 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/menu
2
2
 
3
+ ## 2.7.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`89377ac3c7f25`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/89377ac3c7f25) -
8
+ Removed internal props from link item and custom item that prevent drag and drop functionality
9
+ from being applied
10
+
11
+ ## 2.7.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [#117121](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/117121)
16
+ [`a3a6ca91979d4`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/a3a6ca91979d4) -
17
+ Adds a new optional `UNSAFE_shouldDisableRouterLink` prop, which when set to `true`, will opt out
18
+ of using a router link and instead use a regular anchor element.
19
+
3
20
  ## 2.6.2
4
21
 
5
22
  ### Patch Changes
@@ -62,7 +62,7 @@ var CustomItem = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardR
62
62
  return (0, _react2.jsx)(_menuItemPrimitive.default
63
63
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
64
64
  , (0, _extends2.default)({
65
- className: (0, _platformFeatureFlags.getBooleanFF)('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
65
+ className: (0, _platformFeatureFlags.fg)('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
66
66
  }, rest, {
67
67
  // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
68
68
  overrides: overrides,
@@ -91,9 +91,11 @@ var CustomItem = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardR
91
91
  }, rest, {
92
92
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
93
93
  className: className,
94
- ref: ref,
94
+ ref: ref
95
+ }, (0, _platformFeatureFlags.fg)('platform.wanjel.remove-drag-override-in-menu-items_l1dib') ? {} : {
95
96
  draggable: false,
96
- onDragStart: preventEvent,
97
+ onDragStart: preventEvent
98
+ }, {
97
99
  onMouseDown: isDisabled ? preventEvent : onMouseDownHandler,
98
100
  onClick: isDisabled ? preventEvent : onClick,
99
101
  tabIndex: isDisabled ? -1 : undefined,
@@ -14,7 +14,7 @@ var _deprecationWarning = require("@atlaskit/ds-lib/deprecation-warning");
14
14
  var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
15
15
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
16
  var _menuItemPrimitive = _interopRequireDefault(require("../internal/components/menu-item-primitive"));
17
- var _excluded = ["children", "href", "cssFn", "description", "iconAfter", "iconBefore", "isDisabled", "isSelected", "onClick", "testId", "overrides", "onMouseDown", "shouldTitleWrap", "shouldDescriptionWrap", "className"];
17
+ var _excluded = ["children", "href", "cssFn", "description", "iconAfter", "iconBefore", "isDisabled", "isSelected", "onClick", "testId", "overrides", "onMouseDown", "shouldTitleWrap", "shouldDescriptionWrap", "className", "UNSAFE_shouldDisableRouterLink"];
18
18
  /**
19
19
  * @jsxRuntime classic
20
20
  */
@@ -55,6 +55,7 @@ function (props, ref) {
55
55
  shouldTitleWrap = props.shouldTitleWrap,
56
56
  shouldDescriptionWrap = props.shouldDescriptionWrap,
57
57
  UNSAFE_className = props.className,
58
+ UNSAFE_shouldDisableRouterLink = props.UNSAFE_shouldDisableRouterLink,
58
59
  rest = (0, _objectWithoutProperties2.default)(props, _excluded);
59
60
  var onMouseDownHandler = onMouseDown;
60
61
  var RouterLink = (0, _appProvider.useRouterLink)();
@@ -71,13 +72,13 @@ function (props, ref) {
71
72
  * - it's not an external link (starting with `http://` or `https://`)
72
73
  * - it's not a non-HTTP-based link (e.g. emails, phone numbers, hash links etc.).
73
74
  */
74
- var isRouterLink = RouterLink && !isExternal && !isNonHttpBased;
75
- var Component = (0, _platformFeatureFlags.getBooleanFF)('platform.wanjel.use-router-links-for-the-linkitem-component') && isRouterLink ? RouterLink : 'a';
75
+ var isRouterLink = !UNSAFE_shouldDisableRouterLink && RouterLink && !isExternal && !isNonHttpBased;
76
+ var Component = isRouterLink && (0, _platformFeatureFlags.fg)('platform.wanjel.use-router-links-for-the-linkitem-component') ? RouterLink : 'a';
76
77
  (0, _deprecationWarning.propDeprecationWarning)("@atlaskit/menu" || '', 'cssFn', cssFn !== _noop.default, '' // TODO: Create DAC post when primitives/xcss are available as alternatives
77
78
  );
78
79
  return (0, _react2.jsx)(_menuItemPrimitive.default, (0, _extends2.default)({}, rest, {
79
80
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
80
- className: (0, _platformFeatureFlags.getBooleanFF)('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
81
+ className: (0, _platformFeatureFlags.fg)('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
81
82
  // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
82
83
  ,
83
84
  overrides: overrides,
@@ -107,11 +108,11 @@ function (props, ref) {
107
108
  className: className
108
109
  // @ts-expect-error
109
110
  ,
110
- href: isDisabled ? undefined : href,
111
- draggable: false
112
- // eslint-disable-next-line @atlaskit/design-system/no-direct-use-of-web-platform-drag-and-drop
113
- ,
114
- onDragStart: preventEvent,
111
+ href: isDisabled ? undefined : href
112
+ }, (0, _platformFeatureFlags.fg)('platform.wanjel.remove-drag-override-in-menu-items_l1dib') ? {} : {
113
+ draggable: false,
114
+ onDragStart: preventEvent
115
+ }, {
115
116
  onMouseDown: isDisabled ? preventEvent : onMouseDownHandler,
116
117
  onClick: isDisabled ? preventEvent : onClick,
117
118
  "aria-current": isSelected ? 'page' : undefined,
@@ -10,7 +10,7 @@ import { forwardRef, memo } from 'react';
10
10
  import { css, jsx } from '@emotion/react';
11
11
  import { propDeprecationWarning } from '@atlaskit/ds-lib/deprecation-warning';
12
12
  import noop from '@atlaskit/ds-lib/noop';
13
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
13
+ import { fg } from '@atlaskit/platform-feature-flags';
14
14
  import MenuItemPrimitive from '../internal/components/menu-item-primitive';
15
15
  const preventEvent = e => {
16
16
  e.preventDefault();
@@ -57,7 +57,7 @@ const CustomItem = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({
57
57
  return jsx(MenuItemPrimitive
58
58
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
59
59
  , _extends({
60
- className: getBooleanFF('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
60
+ className: fg('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
61
61
  }, rest, {
62
62
  // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
63
63
  overrides: overrides,
@@ -86,9 +86,11 @@ const CustomItem = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({
86
86
  }, rest, {
87
87
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
88
88
  className: className,
89
- ref: ref,
89
+ ref: ref
90
+ }, fg('platform.wanjel.remove-drag-override-in-menu-items_l1dib') ? {} : {
90
91
  draggable: false,
91
- onDragStart: preventEvent,
92
+ onDragStart: preventEvent
93
+ }, {
92
94
  onMouseDown: isDisabled ? preventEvent : onMouseDownHandler,
93
95
  onClick: isDisabled ? preventEvent : onClick,
94
96
  tabIndex: isDisabled ? -1 : undefined,
@@ -10,7 +10,7 @@ import { jsx } from '@emotion/react';
10
10
  import { useRouterLink } from '@atlaskit/app-provider';
11
11
  import { propDeprecationWarning } from '@atlaskit/ds-lib/deprecation-warning';
12
12
  import noop from '@atlaskit/ds-lib/noop';
13
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
13
+ import { fg } from '@atlaskit/platform-feature-flags';
14
14
  import MenuItemPrimitive from '../internal/components/menu-item-primitive';
15
15
  const IS_EXTERNAL_LINK_REGEX = /^(?:(http|https):\/\/)/;
16
16
  const IS_NON_HTTP_BASED = /^(((mailto|tel|sms):)|(#))/;
@@ -49,6 +49,7 @@ const LinkItem = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(
49
49
  // picked it out and supressed the expected type error.
50
50
  // @ts-expect-error
51
51
  className: UNSAFE_className,
52
+ UNSAFE_shouldDisableRouterLink,
52
53
  ...rest
53
54
  } = props;
54
55
  const onMouseDownHandler = onMouseDown;
@@ -66,13 +67,13 @@ const LinkItem = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(
66
67
  * - it's not an external link (starting with `http://` or `https://`)
67
68
  * - it's not a non-HTTP-based link (e.g. emails, phone numbers, hash links etc.).
68
69
  */
69
- const isRouterLink = RouterLink && !isExternal && !isNonHttpBased;
70
- const Component = getBooleanFF('platform.wanjel.use-router-links-for-the-linkitem-component') && isRouterLink ? RouterLink : 'a';
70
+ const isRouterLink = !UNSAFE_shouldDisableRouterLink && RouterLink && !isExternal && !isNonHttpBased;
71
+ const Component = isRouterLink && fg('platform.wanjel.use-router-links-for-the-linkitem-component') ? RouterLink : 'a';
71
72
  propDeprecationWarning("@atlaskit/menu" || '', 'cssFn', cssFn !== noop, '' // TODO: Create DAC post when primitives/xcss are available as alternatives
72
73
  );
73
74
  return jsx(MenuItemPrimitive, _extends({}, rest, {
74
75
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
75
- className: getBooleanFF('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
76
+ className: fg('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
76
77
  // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
77
78
  ,
78
79
  overrides: overrides,
@@ -102,11 +103,11 @@ const LinkItem = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(
102
103
  className: className
103
104
  // @ts-expect-error
104
105
  ,
105
- href: isDisabled ? undefined : href,
106
- draggable: false
107
- // eslint-disable-next-line @atlaskit/design-system/no-direct-use-of-web-platform-drag-and-drop
108
- ,
109
- onDragStart: preventEvent,
106
+ href: isDisabled ? undefined : href
107
+ }, fg('platform.wanjel.remove-drag-override-in-menu-items_l1dib') ? {} : {
108
+ draggable: false,
109
+ onDragStart: preventEvent
110
+ }, {
110
111
  onMouseDown: isDisabled ? preventEvent : onMouseDownHandler,
111
112
  onClick: isDisabled ? preventEvent : onClick,
112
113
  "aria-current": isSelected ? 'page' : undefined,
@@ -12,7 +12,7 @@ import { forwardRef, memo } from 'react';
12
12
  import { css, jsx } from '@emotion/react';
13
13
  import { propDeprecationWarning } from '@atlaskit/ds-lib/deprecation-warning';
14
14
  import noop from '@atlaskit/ds-lib/noop';
15
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
15
+ import { fg } from '@atlaskit/platform-feature-flags';
16
16
  import MenuItemPrimitive from '../internal/components/menu-item-primitive';
17
17
  var preventEvent = function preventEvent(e) {
18
18
  e.preventDefault();
@@ -57,7 +57,7 @@ var CustomItem = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (_ref, ref)
57
57
  return jsx(MenuItemPrimitive
58
58
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
59
59
  , _extends({
60
- className: getBooleanFF('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
60
+ className: fg('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
61
61
  }, rest, {
62
62
  // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
63
63
  overrides: overrides,
@@ -86,9 +86,11 @@ var CustomItem = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (_ref, ref)
86
86
  }, rest, {
87
87
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
88
88
  className: className,
89
- ref: ref,
89
+ ref: ref
90
+ }, fg('platform.wanjel.remove-drag-override-in-menu-items_l1dib') ? {} : {
90
91
  draggable: false,
91
- onDragStart: preventEvent,
92
+ onDragStart: preventEvent
93
+ }, {
92
94
  onMouseDown: isDisabled ? preventEvent : onMouseDownHandler,
93
95
  onClick: isDisabled ? preventEvent : onClick,
94
96
  tabIndex: isDisabled ? -1 : undefined,
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["children", "href", "cssFn", "description", "iconAfter", "iconBefore", "isDisabled", "isSelected", "onClick", "testId", "overrides", "onMouseDown", "shouldTitleWrap", "shouldDescriptionWrap", "className"];
3
+ var _excluded = ["children", "href", "cssFn", "description", "iconAfter", "iconBefore", "isDisabled", "isSelected", "onClick", "testId", "overrides", "onMouseDown", "shouldTitleWrap", "shouldDescriptionWrap", "className", "UNSAFE_shouldDisableRouterLink"];
4
4
  /**
5
5
  * @jsxRuntime classic
6
6
  */
@@ -12,7 +12,7 @@ import { jsx } from '@emotion/react';
12
12
  import { useRouterLink } from '@atlaskit/app-provider';
13
13
  import { propDeprecationWarning } from '@atlaskit/ds-lib/deprecation-warning';
14
14
  import noop from '@atlaskit/ds-lib/noop';
15
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
15
+ import { fg } from '@atlaskit/platform-feature-flags';
16
16
  import MenuItemPrimitive from '../internal/components/menu-item-primitive';
17
17
  var IS_EXTERNAL_LINK_REGEX = /^(?:(http|https):\/\/)/;
18
18
  var IS_NON_HTTP_BASED = /^(((mailto|tel|sms):)|(#))/;
@@ -49,6 +49,7 @@ function (props, ref) {
49
49
  shouldTitleWrap = props.shouldTitleWrap,
50
50
  shouldDescriptionWrap = props.shouldDescriptionWrap,
51
51
  UNSAFE_className = props.className,
52
+ UNSAFE_shouldDisableRouterLink = props.UNSAFE_shouldDisableRouterLink,
52
53
  rest = _objectWithoutProperties(props, _excluded);
53
54
  var onMouseDownHandler = onMouseDown;
54
55
  var RouterLink = useRouterLink();
@@ -65,13 +66,13 @@ function (props, ref) {
65
66
  * - it's not an external link (starting with `http://` or `https://`)
66
67
  * - it's not a non-HTTP-based link (e.g. emails, phone numbers, hash links etc.).
67
68
  */
68
- var isRouterLink = RouterLink && !isExternal && !isNonHttpBased;
69
- var Component = getBooleanFF('platform.wanjel.use-router-links-for-the-linkitem-component') && isRouterLink ? RouterLink : 'a';
69
+ var isRouterLink = !UNSAFE_shouldDisableRouterLink && RouterLink && !isExternal && !isNonHttpBased;
70
+ var Component = isRouterLink && fg('platform.wanjel.use-router-links-for-the-linkitem-component') ? RouterLink : 'a';
70
71
  propDeprecationWarning("@atlaskit/menu" || '', 'cssFn', cssFn !== noop, '' // TODO: Create DAC post when primitives/xcss are available as alternatives
71
72
  );
72
73
  return jsx(MenuItemPrimitive, _extends({}, rest, {
73
74
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
74
- className: getBooleanFF('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
75
+ className: fg('platform.design-system-team.unsafe-overrides-killswitch_c8j9m') ? undefined : UNSAFE_className
75
76
  // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
76
77
  ,
77
78
  overrides: overrides,
@@ -101,11 +102,11 @@ function (props, ref) {
101
102
  className: className
102
103
  // @ts-expect-error
103
104
  ,
104
- href: isDisabled ? undefined : href,
105
- draggable: false
106
- // eslint-disable-next-line @atlaskit/design-system/no-direct-use-of-web-platform-drag-and-drop
107
- ,
108
- onDragStart: preventEvent,
105
+ href: isDisabled ? undefined : href
106
+ }, fg('platform.wanjel.remove-drag-override-in-menu-items_l1dib') ? {} : {
107
+ draggable: false,
108
+ onDragStart: preventEvent
109
+ }, {
109
110
  onMouseDown: isDisabled ? preventEvent : onMouseDownHandler,
110
111
  onClick: isDisabled ? preventEvent : onClick,
111
112
  "aria-current": isSelected ? 'page' : undefined,
@@ -237,6 +237,11 @@ export interface LinkItemProps extends MenuItemProps {
237
237
  * Use this to override the accessibility role for the element.
238
238
  */
239
239
  role?: string;
240
+ /**
241
+ * Use this to opt out of using a router link and instead use a regular anchor element.
242
+ * Marked as "unsafe" because ideally, router links should be used for all internal links.
243
+ */
244
+ UNSAFE_shouldDisableRouterLink?: boolean;
240
245
  }
241
246
  export interface CustomItemComponentProps {
242
247
  /**
@@ -268,7 +273,7 @@ export interface CustomItemComponentProps {
268
273
  /**
269
274
  * Turns off the element being draggable.
270
275
  */
271
- draggable: boolean;
276
+ draggable?: boolean;
272
277
  /**
273
278
  * React ref for the raw DOM element,
274
279
  * make sure to place this on the outermost DOM element.
@@ -237,6 +237,11 @@ export interface LinkItemProps extends MenuItemProps {
237
237
  * Use this to override the accessibility role for the element.
238
238
  */
239
239
  role?: string;
240
+ /**
241
+ * Use this to opt out of using a router link and instead use a regular anchor element.
242
+ * Marked as "unsafe" because ideally, router links should be used for all internal links.
243
+ */
244
+ UNSAFE_shouldDisableRouterLink?: boolean;
240
245
  }
241
246
  export interface CustomItemComponentProps {
242
247
  /**
@@ -268,7 +273,7 @@ export interface CustomItemComponentProps {
268
273
  /**
269
274
  * Turns off the element being draggable.
270
275
  */
271
- draggable: boolean;
276
+ draggable?: boolean;
272
277
  /**
273
278
  * React ref for the raw DOM element,
274
279
  * make sure to place this on the outermost DOM element.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/menu",
3
- "version": "2.6.2",
3
+ "version": "2.7.1",
4
4
  "description": "A list of options to help users navigate, or perform actions.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -64,7 +64,7 @@
64
64
  "@atlaskit/visual-regression": "*",
65
65
  "@atlassian/feature-flags-test-utils": "*",
66
66
  "@emotion/jest": "^11.8.0",
67
- "@testing-library/dom": "^8.17.1",
67
+ "@testing-library/dom": "^10.1.0",
68
68
  "@testing-library/react": "^12.1.5",
69
69
  "@types/react-router-dom": "^4.3.1",
70
70
  "ast-types": "^0.13.3",
@@ -132,6 +132,9 @@
132
132
  },
133
133
  "platform.wanjel.use-router-links-for-the-linkitem-component": {
134
134
  "type": "boolean"
135
+ },
136
+ "platform.wanjel.remove-drag-override-in-menu-items_l1dib": {
137
+ "type": "boolean"
135
138
  }
136
139
  },
137
140
  "homepage": "https://atlassian.design/components/menu/"