@atlaskit/dropdown-menu 12.18.0 → 12.18.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,14 @@
1
1
  # @atlaskit/dropdown-menu
2
2
 
3
+ ## 12.18.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#138585](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/138585)
8
+ [`b72c2c7f9a2fd`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/b72c2c7f9a2fd) -
9
+ Support to close sibling dropdown menu under feature flag
10
+ - Updated dependencies
11
+
3
12
  ## 12.18.0
4
13
 
5
14
  ### Minor Changes
@@ -147,13 +147,22 @@ var DropdownMenu = function DropdownMenu(_ref) {
147
147
  event: event
148
148
  });
149
149
  }, [itemRef, onOpenChange, isLocalOpen, setLocalIsOpen]);
150
- var handleOnClose = (0, _react.useCallback)(function (event) {
150
+ var handleOnClose = (0, _react.useCallback)(function (event, currentLevel) {
151
151
  var _event$target, _event$target$closest;
152
152
  if (event.key !== 'Escape' && event.key !== 'Tab' && (_event$target = event.target) !== null && _event$target !== void 0 && (_event$target$closest = _event$target.closest) !== null && _event$target$closest !== void 0 && _event$target$closest.call(_event$target, "[id^=".concat(_useGeneratedId.PREFIX, "] [aria-haspopup]"))) {
153
+ var _itemRef$current2;
153
154
  // Check if it is within dropdown and it is a trigger button
154
155
  // if it is a nested dropdown, clicking trigger won't close the dropdown
155
156
  // Dropdown can be closed by pressing Escape, Tab or Shift + Tab
156
- return;
157
+ if (!currentLevel) {
158
+ return;
159
+ }
160
+ // if currentLevel is provided, we will compare with the given item's level
161
+ // when it is available and larger than currentLevel, we will proceed the close behavior
162
+ var toCloseLevel = (_itemRef$current2 = itemRef.current) === null || _itemRef$current2 === void 0 ? void 0 : _itemRef$current2.dataset['ds-Level'];
163
+ if (toCloseLevel && Number(toCloseLevel) < currentLevel) {
164
+ return;
165
+ }
157
166
  }
158
167
 
159
168
  // transfer focus to the element specified by ref
@@ -166,8 +175,8 @@ var DropdownMenu = function DropdownMenu(_ref) {
166
175
  });
167
176
  } else if (event.key === 'Tab' && event.shiftKey || event.key === 'Escape') {
168
177
  requestAnimationFrame(function () {
169
- var _itemRef$current2;
170
- (_itemRef$current2 = itemRef.current) === null || _itemRef$current2 === void 0 || _itemRef$current2.focus();
178
+ var _itemRef$current3;
179
+ (_itemRef$current3 = itemRef.current) === null || _itemRef$current3 === void 0 || _itemRef$current3.focus();
171
180
  });
172
181
  } else if (triggerRef.current) {
173
182
  requestAnimationFrame(function () {
@@ -116,13 +116,22 @@ const DropdownMenu = ({
116
116
  event
117
117
  });
118
118
  }, [itemRef, onOpenChange, isLocalOpen, setLocalIsOpen]);
119
- const handleOnClose = useCallback(event => {
119
+ const handleOnClose = useCallback((event, currentLevel) => {
120
120
  var _event$target, _event$target$closest;
121
121
  if (event.key !== 'Escape' && event.key !== 'Tab' && (_event$target = event.target) !== null && _event$target !== void 0 && (_event$target$closest = _event$target.closest) !== null && _event$target$closest !== void 0 && _event$target$closest.call(_event$target, `[id^=${PREFIX}] [aria-haspopup]`)) {
122
+ var _itemRef$current2;
122
123
  // Check if it is within dropdown and it is a trigger button
123
124
  // if it is a nested dropdown, clicking trigger won't close the dropdown
124
125
  // Dropdown can be closed by pressing Escape, Tab or Shift + Tab
125
- return;
126
+ if (!currentLevel) {
127
+ return;
128
+ }
129
+ // if currentLevel is provided, we will compare with the given item's level
130
+ // when it is available and larger than currentLevel, we will proceed the close behavior
131
+ const toCloseLevel = (_itemRef$current2 = itemRef.current) === null || _itemRef$current2 === void 0 ? void 0 : _itemRef$current2.dataset['ds-Level'];
132
+ if (toCloseLevel && Number(toCloseLevel) < currentLevel) {
133
+ return;
134
+ }
126
135
  }
127
136
 
128
137
  // transfer focus to the element specified by ref
@@ -135,8 +144,8 @@ const DropdownMenu = ({
135
144
  });
136
145
  } else if (event.key === 'Tab' && event.shiftKey || event.key === 'Escape') {
137
146
  requestAnimationFrame(() => {
138
- var _itemRef$current2;
139
- (_itemRef$current2 = itemRef.current) === null || _itemRef$current2 === void 0 ? void 0 : _itemRef$current2.focus();
147
+ var _itemRef$current3;
148
+ (_itemRef$current3 = itemRef.current) === null || _itemRef$current3 === void 0 ? void 0 : _itemRef$current3.focus();
140
149
  });
141
150
  } else if (triggerRef.current) {
142
151
  requestAnimationFrame(() => {
@@ -138,13 +138,22 @@ var DropdownMenu = function DropdownMenu(_ref) {
138
138
  event: event
139
139
  });
140
140
  }, [itemRef, onOpenChange, isLocalOpen, setLocalIsOpen]);
141
- var handleOnClose = useCallback(function (event) {
141
+ var handleOnClose = useCallback(function (event, currentLevel) {
142
142
  var _event$target, _event$target$closest;
143
143
  if (event.key !== 'Escape' && event.key !== 'Tab' && (_event$target = event.target) !== null && _event$target !== void 0 && (_event$target$closest = _event$target.closest) !== null && _event$target$closest !== void 0 && _event$target$closest.call(_event$target, "[id^=".concat(PREFIX, "] [aria-haspopup]"))) {
144
+ var _itemRef$current2;
144
145
  // Check if it is within dropdown and it is a trigger button
145
146
  // if it is a nested dropdown, clicking trigger won't close the dropdown
146
147
  // Dropdown can be closed by pressing Escape, Tab or Shift + Tab
147
- return;
148
+ if (!currentLevel) {
149
+ return;
150
+ }
151
+ // if currentLevel is provided, we will compare with the given item's level
152
+ // when it is available and larger than currentLevel, we will proceed the close behavior
153
+ var toCloseLevel = (_itemRef$current2 = itemRef.current) === null || _itemRef$current2 === void 0 ? void 0 : _itemRef$current2.dataset['ds-Level'];
154
+ if (toCloseLevel && Number(toCloseLevel) < currentLevel) {
155
+ return;
156
+ }
148
157
  }
149
158
 
150
159
  // transfer focus to the element specified by ref
@@ -157,8 +166,8 @@ var DropdownMenu = function DropdownMenu(_ref) {
157
166
  });
158
167
  } else if (event.key === 'Tab' && event.shiftKey || event.key === 'Escape') {
159
168
  requestAnimationFrame(function () {
160
- var _itemRef$current2;
161
- (_itemRef$current2 = itemRef.current) === null || _itemRef$current2 === void 0 || _itemRef$current2.focus();
169
+ var _itemRef$current3;
170
+ (_itemRef$current3 = itemRef.current) === null || _itemRef$current3 === void 0 || _itemRef$current3.focus();
162
171
  });
163
172
  } else if (triggerRef.current) {
164
173
  requestAnimationFrame(function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/dropdown-menu",
3
- "version": "12.18.0",
3
+ "version": "12.18.1",
4
4
  "description": "A dropdown menu displays a list of actions or options to a user.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -16,10 +16,6 @@
16
16
  "atlaskit:src": "src/index.tsx",
17
17
  "atlassian": {
18
18
  "team": "Design System Team",
19
- "releaseModel": "continuous",
20
- "productPushConsumption": [
21
- "jira"
22
- ],
23
19
  "website": {
24
20
  "name": "Dropdown menu",
25
21
  "category": "Components"
@@ -30,11 +26,11 @@
30
26
  "@atlaskit/button": "^20.1.0",
31
27
  "@atlaskit/codemod-utils": "^4.2.0",
32
28
  "@atlaskit/ds-lib": "^2.5.0",
33
- "@atlaskit/icon": "^22.15.0",
29
+ "@atlaskit/icon": "^22.16.0",
34
30
  "@atlaskit/layering": "^0.4.0",
35
31
  "@atlaskit/menu": "^2.12.0",
36
- "@atlaskit/popup": "^1.23.0",
37
- "@atlaskit/primitives": "^12.0.0",
32
+ "@atlaskit/popup": "^1.25.0",
33
+ "@atlaskit/primitives": "^12.1.0",
38
34
  "@atlaskit/spinner": "^16.3.0",
39
35
  "@atlaskit/theme": "^13.0.0",
40
36
  "@atlaskit/tokens": "^1.59.0",
@@ -52,7 +48,7 @@
52
48
  "@af/visual-regression": "*",
53
49
  "@atlaskit/app-provider": "^1.4.0",
54
50
  "@atlaskit/modal-dialog": "^12.15.0",
55
- "@atlaskit/toggle": "^13.3.0",
51
+ "@atlaskit/toggle": "^13.4.0",
56
52
  "@atlaskit/visual-regression": "*",
57
53
  "@atlassian/feature-flags-test-utils": "*",
58
54
  "@testing-library/dom": "^10.1.0",
@@ -72,6 +68,20 @@
72
68
  "react",
73
69
  "ui"
74
70
  ],
71
+ "platform-feature-flags": {
72
+ "platform_dst_popup-disable-focuslock": {
73
+ "type": "boolean",
74
+ "referenceOnly": true
75
+ },
76
+ "sibling-dropdown-close-issue": {
77
+ "type": "boolean",
78
+ "referenceOnly": true
79
+ },
80
+ "design-system-closed-all-when-click-outside": {
81
+ "type": "boolean",
82
+ "referenceOnly": true
83
+ }
84
+ },
75
85
  "techstack": {
76
86
  "@atlassian/frontend": {
77
87
  "import-structure": "atlassian-conventions"