@atlaskit/dropdown-menu 11.0.0 → 11.1.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 (54) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/codemods/11.0.0-lite-mode.tsx +12 -0
  3. package/codemods/__tests__/11.0.0-lite-mode.test.tsx +22 -2
  4. package/codemods/__tests__/convert-triggerType.test.tsx +89 -6
  5. package/codemods/migrates/convert-trigger-type.tsx +14 -5
  6. package/codemods/migrates/deprecate-autoFocus.tsx +18 -0
  7. package/codemods/migrates/deprecate-boundariesElement.tsx +9 -0
  8. package/codemods/migrates/deprecate-isCompact.tsx +18 -0
  9. package/codemods/migrates/deprecate-isHidden.tsx +18 -0
  10. package/codemods/migrates/deprecate-isMenuFixed.tsx +9 -0
  11. package/dist/cjs/checkbox/dropdown-item-checkbox.js +5 -2
  12. package/dist/cjs/dropdown-menu-item.js +3 -1
  13. package/dist/cjs/dropdown-menu.js +45 -30
  14. package/dist/cjs/index.js +12 -12
  15. package/dist/cjs/internal/components/menu-wrapper.js +5 -2
  16. package/dist/cjs/internal/hooks/use-radio-state.js +2 -2
  17. package/dist/cjs/internal/utils/get-icon-colors.js +3 -3
  18. package/dist/cjs/internal/utils/reset-options-in-group.js +2 -2
  19. package/dist/cjs/internal/utils/use-generated-id.js +29 -0
  20. package/dist/cjs/radio/dropdown-item-radio-group.js +2 -2
  21. package/dist/cjs/radio/dropdown-item-radio.js +5 -2
  22. package/dist/cjs/version.json +1 -1
  23. package/dist/cjs/visual-regression/index.js +93 -0
  24. package/dist/es2019/checkbox/dropdown-item-checkbox.js +2 -1
  25. package/dist/es2019/dropdown-menu.js +38 -31
  26. package/dist/es2019/internal/components/menu-wrapper.js +2 -1
  27. package/dist/es2019/internal/utils/get-icon-colors.js +3 -3
  28. package/dist/es2019/internal/utils/use-generated-id.js +18 -0
  29. package/dist/es2019/radio/dropdown-item-radio.js +2 -1
  30. package/dist/es2019/version.json +1 -1
  31. package/dist/es2019/visual-regression/index.js +30 -0
  32. package/dist/esm/checkbox/dropdown-item-checkbox.js +4 -2
  33. package/dist/esm/dropdown-menu-item.js +2 -1
  34. package/dist/esm/dropdown-menu.js +43 -30
  35. package/dist/esm/internal/components/menu-wrapper.js +4 -2
  36. package/dist/esm/internal/hooks/use-radio-state.js +2 -2
  37. package/dist/esm/internal/utils/get-icon-colors.js +3 -3
  38. package/dist/esm/internal/utils/reset-options-in-group.js +2 -2
  39. package/dist/esm/internal/utils/use-generated-id.js +21 -0
  40. package/dist/esm/radio/dropdown-item-radio-group.js +2 -2
  41. package/dist/esm/radio/dropdown-item-radio.js +4 -2
  42. package/dist/esm/version.json +1 -1
  43. package/dist/esm/visual-regression/index.js +86 -0
  44. package/dist/types/checkbox/dropdown-item-checkbox-group.d.ts +1 -0
  45. package/dist/types/checkbox/dropdown-item-checkbox.d.ts +1 -0
  46. package/dist/types/dropdown-menu-item.d.ts +1 -0
  47. package/dist/types/dropdown-menu.d.ts +1 -0
  48. package/dist/types/internal/components/menu-wrapper.d.ts +1 -0
  49. package/dist/types/internal/utils/get-icon-colors.d.ts +3 -3
  50. package/dist/types/internal/utils/use-generated-id.d.ts +5 -0
  51. package/dist/types/radio/dropdown-item-radio.d.ts +1 -0
  52. package/dist/types/types.d.ts +6 -0
  53. package/dist/types/visual-regression/index.d.ts +1 -0
  54. package/package.json +10 -11
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # @atlaskit/dropdown-menu
2
2
 
3
+ ## 11.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`bb8a0f713e8`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bb8a0f713e8) - Add zIndex prop to pass custom z-index for the menu if it clashes with other components on the screen
8
+
9
+ ### Patch Changes
10
+
11
+ - [`58884c2f6c1`](https://bitbucket.org/atlassian/atlassian-frontend/commits/58884c2f6c1) - Internal code change turning on a new linting rule.
12
+ - [`94886036118`](https://bitbucket.org/atlassian/atlassian-frontend/commits/94886036118) - Internal refactor to properly use render props to avoid unwanted re-mounts and improve test coverage
13
+ - Updated dependencies
14
+
15
+ ## 11.0.3
16
+
17
+ ### Patch Changes
18
+
19
+ - [`19d72473dfb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/19d72473dfb) - Updates usage of deprecated token names so they're aligned with the latest naming conventions. No UI or visual changes
20
+ - [`19d72473dfb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/19d72473dfb) - Bump dependency tiny-invariant to latest"
21
+ - Updated dependencies
22
+
23
+ ## 11.0.2
24
+
25
+ ### Patch Changes
26
+
27
+ - Updated dependencies
28
+
29
+ ## 11.0.1
30
+
31
+ ### Patch Changes
32
+
33
+ - [`c2dd770a743`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c2dd770a743) - Add new prop which controls is outside click should be bound using capture
34
+ - Updated dependencies
35
+
3
36
  ## 11.0.0
4
37
 
5
38
  ### Major Changes
@@ -1,6 +1,11 @@
1
1
  import { createTransformer } from '@atlaskit/codemod-utils';
2
2
 
3
3
  import convertTriggerType from './migrates/convert-trigger-type';
4
+ import deprecateAutoFocus from './migrates/deprecate-autoFocus';
5
+ import deprecateboundariesElement from './migrates/deprecate-boundariesElement';
6
+ import deprecateIsCompact from './migrates/deprecate-isCompact';
7
+ import deprecateIsHidden from './migrates/deprecate-isHidden';
8
+ import deprecateIsMenuFixed from './migrates/deprecate-isMenuFixed';
4
9
  import deprecateItems from './migrates/deprecate-items';
5
10
  import deprecateOnItemActivated from './migrates/deprecate-onItemActivated';
6
11
  import deprecateOnPositioned from './migrates/deprecate-onPositioned';
@@ -22,6 +27,13 @@ const transformer = createTransformer([
22
27
  deprecateOnItemActivated,
23
28
  deprecateOnPositioned,
24
29
  deprecateShouldFitContainer,
30
+ deprecateboundariesElement,
31
+ deprecateIsMenuFixed,
32
+
33
+ // props on *Items
34
+ ...deprecateAutoFocus(),
35
+ ...deprecateIsCompact(),
36
+ ...deprecateIsHidden(),
25
37
 
26
38
  replaceShouldAllowMultiline,
27
39
  updatePositionValue,
@@ -12,7 +12,7 @@ describe('apply all needed codemods for version 11.0.0 major bump', () => {
12
12
  `
13
13
  import React from "react";
14
14
  import DropdownMenu, {
15
- DropdownItemGroupCheckbox as MyComponent, DropdownItemCheckbox,
15
+ DropdownItemGroupCheckbox as MyComponent, DropdownItemCheckbox, DropdownItem, DropdownItemRadio,
16
16
  } from "@atlaskit/dropdown-menu";
17
17
 
18
18
  export default () => (
@@ -24,14 +24,31 @@ describe('apply all needed codemods for version 11.0.0 major bump', () => {
24
24
  onPositioned={() => {}}
25
25
  position="bottom left"
26
26
  shouldFitContainer={false}
27
+ boundariesElement={document.body}
28
+ isMenuFixed
27
29
  shouldAllowMultiline>
30
+ <DropdownItem
31
+ isHidden
32
+ autoFocus
33
+ isCompact
34
+ >Cut</DropdownItem>
35
+ <DropdownItemCheckbox
36
+ isHidden
37
+ autoFocus
38
+ isCompact
39
+ >Copy</DropdownItemCheckbox>
40
+ <DropdownItemRadio
41
+ isHidden
42
+ autoFocus
43
+ isCompact
44
+ >Paste</DropdownItemRadio>
28
45
  </DropdownMenu>
29
46
  );
30
47
  `,
31
48
  `
32
49
  import React from "react";
33
50
  import DropdownMenu, {
34
- DropdownItemCheckboxGroup as MyComponent, DropdownItemCheckbox,
51
+ DropdownItemCheckboxGroup as MyComponent, DropdownItemCheckbox, DropdownItem, DropdownItemRadio,
35
52
  } from "@atlaskit/dropdown-menu";
36
53
 
37
54
  export default () => (
@@ -40,6 +57,9 @@ describe('apply all needed codemods for version 11.0.0 major bump', () => {
40
57
  placement="bottom-start"
41
58
  shouldTitleWrap
42
59
  shouldDescriptionWrap>
60
+ <DropdownItem>Cut</DropdownItem>
61
+ <DropdownItemCheckbox>Copy</DropdownItemCheckbox>
62
+ <DropdownItemRadio>Paste</DropdownItemRadio>
43
63
  </DropdownMenu>
44
64
  );
45
65
  `,
@@ -66,7 +66,7 @@ describe('update position value', () => {
66
66
  import DropdownMenu from "@atlaskit/dropdown-menu";
67
67
 
68
68
  export default () => (
69
- <DropdownMenu
69
+ <DropdownMenu
70
70
  trigger={
71
71
  <div>
72
72
  &lt;button/&gt; trigger
@@ -81,20 +81,103 @@ describe('update position value', () => {
81
81
  import DropdownMenu from "@atlaskit/dropdown-menu";
82
82
 
83
83
  export default () => (
84
- /* TODO: (from codemod)
84
+ <DropdownMenu
85
+ /* TODO: (from codemod)
85
86
  The usage of the 'trigger', 'triggerType' and 'triggerButtonProps' prop in this component could not be transformed and requires manual intervention.
86
- Since version 11.0.0, we simplified the API and lean towards to only use 'trigger' prop.
87
- For more info please reach out to #help-design-system-code. */
88
- (<DropdownMenu
87
+ Since version 11.0.0, we have simplified the API and now only use the 'trigger' prop.
88
+ Please refer to https://hello.atlassian.net/wiki/spaces/DST/pages/1330997516/Dropdown+menu+upgrade+guide for more details.
89
+ And feel free to reach out to us on our support channel if you have more queries – #help-design-system. */
89
90
  trigger={
90
91
  <div>
91
92
  &lt;button/&gt; trigger
92
93
  </div>
93
94
  }
94
95
  triggerType="button">
95
- </DropdownMenu>)
96
+ </DropdownMenu>
96
97
  );
97
98
  `,
98
99
  'should only add comments triggerType prop when trigger is an object',
99
100
  );
101
+
102
+ defineInlineTest(
103
+ { default: transformer, parser: 'tsx' },
104
+ {},
105
+ `
106
+ import React from "react";
107
+ import DropdownMenu from "@atlaskit/dropdown-menu";
108
+
109
+ export default () => (
110
+ <DropdownMenu
111
+ trigger={
112
+ <div>
113
+ &lt;button/&gt; trigger
114
+ </div>
115
+ }>
116
+ </DropdownMenu>
117
+ );
118
+ `,
119
+ `
120
+ import React from "react";
121
+ import DropdownMenu from "@atlaskit/dropdown-menu";
122
+
123
+ export default () => (
124
+ <DropdownMenu
125
+ /* TODO: (from codemod)
126
+ The usage of the 'trigger', 'triggerType' and 'triggerButtonProps' prop in this component could not be transformed and requires manual intervention.
127
+ Since version 11.0.0, we have simplified the API and now only use the 'trigger' prop.
128
+ Please refer to https://hello.atlassian.net/wiki/spaces/DST/pages/1330997516/Dropdown+menu+upgrade+guide for more details.
129
+ And feel free to reach out to us on our support channel if you have more queries – #help-design-system. */
130
+ trigger={
131
+ <div>
132
+ &lt;button/&gt; trigger
133
+ </div>
134
+ }>
135
+ </DropdownMenu>
136
+ );
137
+ `,
138
+ 'should only add comments triggerType prop when trigger is an object',
139
+ );
140
+
141
+ defineInlineTest(
142
+ { default: transformer, parser: 'tsx' },
143
+ {},
144
+ `
145
+ import React from "react";
146
+ import DropdownMenu from "@atlaskit/dropdown-menu";
147
+
148
+ export default () => (
149
+ <DropdownMenuWrapper>
150
+ <DropdownMenu
151
+ trigger={
152
+ <div>
153
+ &lt;button/&gt; trigger
154
+ </div>
155
+ }>
156
+ </DropdownMenu>
157
+ </DropdownMenuWrapper>
158
+ );
159
+ `,
160
+ `
161
+ import React from "react";
162
+ import DropdownMenu from "@atlaskit/dropdown-menu";
163
+
164
+ export default () => (
165
+ <DropdownMenuWrapper>
166
+ <DropdownMenu
167
+ /* TODO: (from codemod)
168
+ The usage of the 'trigger', 'triggerType' and 'triggerButtonProps' prop in this component could not be transformed and requires manual intervention.
169
+ Since version 11.0.0, we have simplified the API and now only use the 'trigger' prop.
170
+ Please refer to https://hello.atlassian.net/wiki/spaces/DST/pages/1330997516/Dropdown+menu+upgrade+guide for more details.
171
+ And feel free to reach out to us on our support channel if you have more queries – #help-design-system. */
172
+ trigger={
173
+ <div>
174
+ &lt;button/&gt; trigger
175
+ </div>
176
+ }>
177
+ </DropdownMenu>
178
+ </DropdownMenuWrapper>
179
+ );
180
+ `,
181
+ 'should only add comments that do not appear on the DOM',
182
+ );
100
183
  });
@@ -9,8 +9,9 @@ import {
9
9
 
10
10
  const comment = `
11
11
  The usage of the 'trigger', 'triggerType' and 'triggerButtonProps' prop in this component could not be transformed and requires manual intervention.
12
- Since version 11.0.0, we simplified the API and lean towards to only use 'trigger' prop.
13
- For more info please reach out to #help-design-system-code.
12
+ Since version 11.0.0, we have simplified the API and now only use the 'trigger' prop.
13
+ Please refer to https://hello.atlassian.net/wiki/spaces/DST/pages/1330997516/Dropdown+menu+upgrade+guide for more details.
14
+ And feel free to reach out to us on our support channel if you have more queries – #help-design-system.
14
15
  `;
15
16
 
16
17
  const convertTriggerType = (j: core.JSCodeshift, source: Collection<Node>) => {
@@ -30,8 +31,8 @@ const convertTriggerType = (j: core.JSCodeshift, source: Collection<Node>) => {
30
31
  const triggerTypeProp = getJSXAttributesByName(j, element, 'triggerType');
31
32
  const triggerProp = getJSXAttributesByName(j, element, 'trigger');
32
33
 
33
- // just skip when triggerType or trigger is not defined
34
- if (triggerTypeProp.length === 0 || triggerProp.length === 0) {
34
+ // just skip when trigger is not defined
35
+ if (triggerProp.length === 0) {
35
36
  return;
36
37
  }
37
38
 
@@ -49,7 +50,15 @@ const convertTriggerType = (j: core.JSCodeshift, source: Collection<Node>) => {
49
50
  });
50
51
  } else {
51
52
  // for anything else we left a inline message
52
- addCommentBefore(j, elements, comment);
53
+ // Overriding the comment prefix to be 'TODO: (from codemod)'
54
+ // to avoid trailing spaces.
55
+ addCommentBefore(
56
+ j,
57
+ triggerProp,
58
+ comment,
59
+ 'block',
60
+ 'TODO: (from codemod)',
61
+ );
53
62
  }
54
63
  });
55
64
  };
@@ -0,0 +1,18 @@
1
+ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
2
+ import { createRemoveFuncFor } from '@atlaskit/codemod-utils';
3
+
4
+ const deprecateAutoFocus = () => [
5
+ createRemoveFuncFor('@atlaskit/dropdown-menu', 'DropdownItem', 'autoFocus'),
6
+ createRemoveFuncFor(
7
+ '@atlaskit/dropdown-menu',
8
+ 'DropdownItemCheckbox',
9
+ 'autoFocus',
10
+ ),
11
+ createRemoveFuncFor(
12
+ '@atlaskit/dropdown-menu',
13
+ 'DropdownItemRadio',
14
+ 'autoFocus',
15
+ ),
16
+ ];
17
+
18
+ export default deprecateAutoFocus;
@@ -0,0 +1,9 @@
1
+ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
2
+ import { createRemoveFuncAddCommentFor } from '@atlaskit/codemod-utils';
3
+
4
+ const deprecateItems = createRemoveFuncAddCommentFor(
5
+ '@atlaskit/dropdown-menu',
6
+ 'boundariesElement',
7
+ );
8
+
9
+ export default deprecateItems;
@@ -0,0 +1,18 @@
1
+ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
2
+ import { createRemoveFuncFor } from '@atlaskit/codemod-utils';
3
+
4
+ const deprecateIsCompact = () => [
5
+ createRemoveFuncFor('@atlaskit/dropdown-menu', 'DropdownItem', 'isCompact'),
6
+ createRemoveFuncFor(
7
+ '@atlaskit/dropdown-menu',
8
+ 'DropdownItemCheckbox',
9
+ 'isCompact',
10
+ ),
11
+ createRemoveFuncFor(
12
+ '@atlaskit/dropdown-menu',
13
+ 'DropdownItemRadio',
14
+ 'isCompact',
15
+ ),
16
+ ];
17
+
18
+ export default deprecateIsCompact;
@@ -0,0 +1,18 @@
1
+ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
2
+ import { createRemoveFuncFor } from '@atlaskit/codemod-utils';
3
+
4
+ const deprecateIsHidden = () => [
5
+ createRemoveFuncFor('@atlaskit/dropdown-menu', 'DropdownItem', 'isHidden'),
6
+ createRemoveFuncFor(
7
+ '@atlaskit/dropdown-menu',
8
+ 'DropdownItemCheckbox',
9
+ 'isHidden',
10
+ ),
11
+ createRemoveFuncFor(
12
+ '@atlaskit/dropdown-menu',
13
+ 'DropdownItemRadio',
14
+ 'isHidden',
15
+ ),
16
+ ];
17
+
18
+ export default deprecateIsHidden;
@@ -0,0 +1,9 @@
1
+ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
2
+ import { createRemoveFuncAddCommentFor } from '@atlaskit/codemod-utils';
3
+
4
+ const deprecateItems = createRemoveFuncAddCommentFor(
5
+ '@atlaskit/dropdown-menu',
6
+ 'isMenuFixed',
7
+ );
8
+
9
+ export default deprecateItems;
@@ -31,6 +31,8 @@ var _getIconColors = _interopRequireDefault(require("../internal/utils/get-icon-
31
31
 
32
32
  var _isVoiceOverSupported = _interopRequireDefault(require("../internal/utils/is-voice-over-supported"));
33
33
 
34
+ var _excluded = ["id", "isSelected", "defaultSelected", "onClick", "shouldTitleWrap", "shouldDescriptionWrap"];
35
+
34
36
  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); }
35
37
 
36
38
  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; }
@@ -54,7 +56,7 @@ var DropdownItemCheckbox = function DropdownItemCheckbox(props) {
54
56
  shouldTitleWrap = _props$shouldTitleWra === void 0 ? true : _props$shouldTitleWra,
55
57
  _props$shouldDescript = props.shouldDescriptionWrap,
56
58
  shouldDescriptionWrap = _props$shouldDescript === void 0 ? true : _props$shouldDescript,
57
- rest = (0, _objectWithoutProperties2.default)(props, ["id", "isSelected", "defaultSelected", "onClick", "shouldTitleWrap", "shouldDescriptionWrap"]);
59
+ rest = (0, _objectWithoutProperties2.default)(props, _excluded);
58
60
 
59
61
  if (process.env.NODE_ENV !== 'production' && typeof isSelected !== 'undefined' && typeof defaultSelected !== 'undefined') {
60
62
  // eslint-disable-next-line no-console
@@ -98,7 +100,8 @@ var DropdownItemCheckbox = function DropdownItemCheckbox(props) {
98
100
  primaryColor: iconColors.primary,
99
101
  secondaryColor: iconColors.secondary
100
102
  }),
101
- ref: itemRef
103
+ ref: itemRef // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
104
+
102
105
  }, rest));
103
106
  };
104
107
 
@@ -19,6 +19,8 @@ var _linkItem = _interopRequireDefault(require("@atlaskit/menu/link-item"));
19
19
 
20
20
  var _useRegisterItemWithFocusManager = _interopRequireDefault(require("./internal/hooks/use-register-item-with-focus-manager"));
21
21
 
22
+ var _excluded = ["elemBefore", "elemAfter", "href", "shouldTitleWrap", "shouldDescriptionWrap"];
23
+
22
24
  /**
23
25
  * __Dropdown menu item__
24
26
  *
@@ -36,7 +38,7 @@ var DropdownMenuItem = function DropdownMenuItem(props) {
36
38
  shouldTitleWrap = _props$shouldTitleWra === void 0 ? true : _props$shouldTitleWra,
37
39
  _props$shouldDescript = props.shouldDescriptionWrap,
38
40
  shouldDescriptionWrap = _props$shouldDescript === void 0 ? true : _props$shouldDescript,
39
- rest = (0, _objectWithoutProperties2.default)(props, ["elemBefore", "elemAfter", "href", "shouldTitleWrap", "shouldDescriptionWrap"]);
41
+ rest = (0, _objectWithoutProperties2.default)(props, _excluded);
40
42
  var itemRef = (0, _useRegisterItemWithFocusManager.default)();
41
43
 
42
44
  if (href) {
@@ -9,6 +9,8 @@ exports.default = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
12
14
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
15
 
14
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -45,7 +47,14 @@ var _menuWrapper = _interopRequireDefault(require("./internal/components/menu-wr
45
47
 
46
48
  var _selectionStore = _interopRequireDefault(require("./internal/context/selection-store"));
47
49
 
48
- /** @jsx jsx */
50
+ var _useGeneratedId = _interopRequireDefault(require("./internal/utils/use-generated-id"));
51
+
52
+ var _excluded = ["ref"];
53
+
54
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
55
+
56
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
57
+
49
58
  var gridSize = (0, _constants.gridSize)();
50
59
  var spinnerContainerStyles = (0, _core.css)({
51
60
  display: 'flex',
@@ -54,6 +63,7 @@ var spinnerContainerStyles = (0, _core.css)({
54
63
  justifyContent: 'center'
55
64
  });
56
65
  var MAX_HEIGHT = "calc(100vh - ".concat(gridSize * 2, "px)");
66
+ var fallbackPlacements = ['bottom', 'bottom-end', 'right-start', 'left-start', 'auto'];
57
67
  /**
58
68
  * __Dropdown menu__
59
69
  *
@@ -73,7 +83,7 @@ var DropdownMenu = function DropdownMenu(props) {
73
83
  children = props.children,
74
84
  _props$placement = props.placement,
75
85
  placement = _props$placement === void 0 ? 'bottom-start' : _props$placement,
76
- Trigger = props.trigger,
86
+ _trigger = props.trigger,
77
87
  _props$shouldFlip = props.shouldFlip,
78
88
  shouldFlip = _props$shouldFlip === void 0 ? true : _props$shouldFlip,
79
89
  _props$isLoading = props.isLoading,
@@ -82,7 +92,9 @@ var DropdownMenu = function DropdownMenu(props) {
82
92
  autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,
83
93
  testId = props.testId,
84
94
  _props$statusLabel = props.statusLabel,
85
- statusLabel = _props$statusLabel === void 0 ? 'Loading' : _props$statusLabel;
95
+ statusLabel = _props$statusLabel === void 0 ? 'Loading' : _props$statusLabel,
96
+ _props$zIndex = props.zIndex,
97
+ zIndex = _props$zIndex === void 0 ? _constants.layers.modal() : _props$zIndex;
86
98
 
87
99
  var _useControlledState = (0, _useControlled.default)(isOpen, function () {
88
100
  return defaultOpen;
@@ -137,40 +149,43 @@ var DropdownMenu = function DropdownMenu(props) {
137
149
  };
138
150
 
139
151
  (0, _useKeydownEvent.default)(handleDownArrow, isFocused);
140
-
141
- var renderTrigger = function renderTrigger(triggerProps) {
142
- if (typeof Trigger === 'function') {
143
- var ref = triggerProps.ref,
144
- providedProps = (0, _objectWithoutProperties2.default)(triggerProps, ["ref"]);
145
- return (0, _core.jsx)(Trigger, (0, _extends2.default)({}, providedProps, bindFocus, {
146
- triggerRef: ref,
147
- isSelected: isLocalOpen,
148
- onClick: handleTriggerClicked,
149
- testId: testId && "".concat(testId, "--trigger")
150
- }));
151
- }
152
-
153
- return (0, _core.jsx)(_standardButton.default, (0, _extends2.default)({}, triggerProps, bindFocus, {
154
- isSelected: isLocalOpen,
155
- iconAfter: (0, _core.jsx)(_chevronDown.default, {
156
- size: "medium",
157
- label: "expand"
158
- }),
159
- onClick: handleTriggerClicked,
160
- testId: testId && "".concat(testId, "--trigger")
161
- }), Trigger);
162
- };
163
-
164
- var fallbackPlacements = ['bottom', 'bottom-end', 'right-start', 'left-start', 'auto'];
152
+ var id = (0, _useGeneratedId.default)();
165
153
  return (0, _core.jsx)(_selectionStore.default, null, (0, _core.jsx)(_popup.default, {
154
+ id: isLocalOpen ? id : undefined,
166
155
  shouldFlip: shouldFlip,
167
156
  isOpen: isLocalOpen,
168
157
  onClose: handleOnClose,
169
- zIndex: _constants.layers.modal(),
158
+ zIndex: zIndex,
170
159
  placement: placement,
171
160
  fallbackPlacements: fallbackPlacements,
172
161
  testId: testId && "".concat(testId, "--content"),
173
- trigger: renderTrigger,
162
+ shouldUseCaptureOnOutsideClick: true,
163
+ trigger: function trigger(triggerProps) {
164
+ if (typeof _trigger === 'function') {
165
+ var ref = triggerProps.ref,
166
+ providedProps = (0, _objectWithoutProperties2.default)(triggerProps, _excluded);
167
+ return _trigger(_objectSpread(_objectSpread(_objectSpread({}, providedProps), bindFocus), {}, {
168
+ triggerRef: ref,
169
+ isSelected: isLocalOpen,
170
+ onClick: handleTriggerClicked,
171
+ testId: testId && "".concat(testId, "--trigger")
172
+ }));
173
+ }
174
+
175
+ return (0, _core.jsx)(_standardButton.default, (0, _extends2.default)({}, bindFocus, {
176
+ ref: triggerProps.ref,
177
+ "aria-controls": triggerProps['aria-controls'],
178
+ "aria-expanded": triggerProps['aria-expanded'],
179
+ "aria-haspopup": triggerProps['aria-haspopup'],
180
+ isSelected: isLocalOpen,
181
+ iconAfter: (0, _core.jsx)(_chevronDown.default, {
182
+ size: "medium",
183
+ label: "expand"
184
+ }),
185
+ onClick: handleTriggerClicked,
186
+ testId: testId && "".concat(testId, "--trigger")
187
+ }), _trigger);
188
+ },
174
189
  content: function content(_ref) {
175
190
  var setInitialFocusRef = _ref.setInitialFocusRef;
176
191
  return (0, _core.jsx)(_focusManager.default, null, (0, _core.jsx)(_menuWrapper.default, {
package/dist/cjs/index.js CHANGED
@@ -5,18 +5,6 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- Object.defineProperty(exports, "default", {
9
- enumerable: true,
10
- get: function get() {
11
- return _dropdownMenu.default;
12
- }
13
- });
14
- Object.defineProperty(exports, "DropdownItemGroup", {
15
- enumerable: true,
16
- get: function get() {
17
- return _dropdownMenuItemGroup.default;
18
- }
19
- });
20
8
  Object.defineProperty(exports, "DropdownItem", {
21
9
  enumerable: true,
22
10
  get: function get() {
@@ -35,6 +23,12 @@ Object.defineProperty(exports, "DropdownItemCheckboxGroup", {
35
23
  return _dropdownItemCheckboxGroup.default;
36
24
  }
37
25
  });
26
+ Object.defineProperty(exports, "DropdownItemGroup", {
27
+ enumerable: true,
28
+ get: function get() {
29
+ return _dropdownMenuItemGroup.default;
30
+ }
31
+ });
38
32
  Object.defineProperty(exports, "DropdownItemRadio", {
39
33
  enumerable: true,
40
34
  get: function get() {
@@ -47,6 +41,12 @@ Object.defineProperty(exports, "DropdownItemRadioGroup", {
47
41
  return _dropdownItemRadioGroup.default;
48
42
  }
49
43
  });
44
+ Object.defineProperty(exports, "default", {
45
+ enumerable: true,
46
+ get: function get() {
47
+ return _dropdownMenu.default;
48
+ }
49
+ });
50
50
 
51
51
  var _dropdownMenu = _interopRequireDefault(require("./dropdown-menu"));
52
52
 
@@ -23,6 +23,8 @@ var _isCheckboxItem = _interopRequireDefault(require("../utils/is-checkbox-item"
23
23
 
24
24
  var _isRadioItem = _interopRequireDefault(require("../utils/is-radio-item"));
25
25
 
26
+ var _excluded = ["onClose", "setInitialFocusRef"];
27
+
26
28
  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
29
 
28
30
  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; }
@@ -37,7 +39,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
37
39
  var MenuWrapper = function MenuWrapper(_ref) {
38
40
  var onClose = _ref.onClose,
39
41
  setInitialFocusRef = _ref.setInitialFocusRef,
40
- props = (0, _objectWithoutProperties2.default)(_ref, ["onClose", "setInitialFocusRef"]);
42
+ props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
41
43
 
42
44
  var _useContext = (0, _react.useContext)(_focusManager.FocusManagerContext),
43
45
  menuItemRefs = _useContext.menuItemRefs;
@@ -56,7 +58,8 @@ var MenuWrapper = function MenuWrapper(_ref) {
56
58
  }
57
59
  };
58
60
 
59
- setInitialFocusRef && setInitialFocusRef(menuItemRefs[0]);
61
+ setInitialFocusRef && setInitialFocusRef(menuItemRefs[0]); // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
62
+
60
63
  return /*#__PURE__*/_react.default.createElement(_menuGroup.default, (0, _extends2.default)({
61
64
  onClick: closeOnMenuItemClick
62
65
  }, props));
@@ -19,9 +19,9 @@ var _selectionStore = require("../context/selection-store");
19
19
 
20
20
  var _resetOptionsInGroup = _interopRequireDefault(require("../utils/reset-options-in-group"));
21
21
 
22
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
23
 
24
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
25
 
26
26
  function useRadioState(_ref) {
27
27
  var id = _ref.id,
@@ -10,13 +10,13 @@ var _colors = require("@atlaskit/theme/colors");
10
10
  var getIconColors = function getIconColors(isSelected) {
11
11
  if (isSelected) {
12
12
  return {
13
- primary: "var(--ds-background-boldBrand-resting, ".concat(_colors.B400, ")"),
14
- secondary: "var(--ds-background-default, ".concat(_colors.N40, ")")
13
+ primary: "var(--ds-background-brand-bold, ".concat(_colors.B400, ")"),
14
+ secondary: "var(--ds-surface, ".concat(_colors.N40, ")")
15
15
  };
16
16
  }
17
17
 
18
18
  return {
19
- primary: "var(--ds-border-neutral, ".concat(_colors.N40, ")"),
19
+ primary: "var(--ds-border, ".concat(_colors.N40, ")"),
20
20
  secondary: "var(--ds-UNSAFE_util-transparent, ".concat(_colors.N40, ")")
21
21
  };
22
22
  };
@@ -9,9 +9,9 @@ exports.default = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
13
 
14
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15
15
 
16
16
  var resetOptionsInGroup = function resetOptionsInGroup(group) {
17
17
  return Object.keys(group || {}).reduce(function (accumulator, current) {