@atlaskit/dropdown-menu 10.1.8 → 11.0.2

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 (211) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/__perf__/default.tsx +1 -1
  3. package/__perf__/dropdown-menu.tsx +216 -0
  4. package/codemods/11.0.0-lite-mode.tsx +39 -0
  5. package/codemods/__tests__/11.0.0-lite-mode.test.tsx +48 -0
  6. package/codemods/__tests__/convert-position.test.tsx +88 -0
  7. package/codemods/__tests__/convert-triggerType.test.tsx +100 -0
  8. package/codemods/__tests__/deprecate-items.test.tsx +108 -0
  9. package/codemods/__tests__/deprecate-onItemActivated.test.tsx +108 -0
  10. package/codemods/__tests__/deprecate-onPositioned.test.tsx +108 -0
  11. package/codemods/__tests__/deprecate-shouldFitContainer.tsx +108 -0
  12. package/codemods/__tests__/rename-imports.tsx +136 -0
  13. package/codemods/__tests__/replace-position-to-placement.test.tsx +84 -0
  14. package/codemods/__tests__/replace-shouldAllowMultipleLine.test.tsx +122 -0
  15. package/codemods/__tests__/update-component-callsites.tsx +66 -0
  16. package/codemods/migrates/convert-trigger-type.tsx +57 -0
  17. package/codemods/migrates/deprecate-items.tsx +9 -0
  18. package/codemods/migrates/deprecate-onItemActivated.tsx +9 -0
  19. package/codemods/migrates/deprecate-onPositioned.tsx +9 -0
  20. package/codemods/migrates/deprecate-shouldFitContainer.tsx +9 -0
  21. package/codemods/migrates/rename-imports.tsx +22 -0
  22. package/codemods/migrates/replace-position-to-placement.tsx +38 -0
  23. package/codemods/migrates/replace-shouldAllowMultiline.tsx +47 -0
  24. package/codemods/migrates/update-component-callsites.tsx +13 -0
  25. package/codemods/utils/convert-position.tsx +24 -0
  26. package/codemods/utils/create-rename-import.tsx +41 -0
  27. package/codemods/utils/create-update-callsite.tsx +32 -0
  28. package/dist/cjs/checkbox/dropdown-item-checkbox-group.js +31 -0
  29. package/dist/cjs/checkbox/dropdown-item-checkbox.js +108 -0
  30. package/dist/cjs/dropdown-menu-item-group.js +22 -0
  31. package/dist/cjs/dropdown-menu-item.js +67 -0
  32. package/dist/cjs/dropdown-menu.js +194 -0
  33. package/dist/cjs/index.js +21 -29
  34. package/dist/cjs/{components/item/DropdownItemRadio.js → internal/components/focus-manager.js} +40 -9
  35. package/dist/cjs/internal/components/menu-wrapper.js +68 -0
  36. package/dist/cjs/internal/context/checkbox-group-context.js +14 -0
  37. package/dist/cjs/internal/context/selection-store.js +76 -0
  38. package/dist/cjs/internal/hooks/use-checkbox-state.js +68 -0
  39. package/dist/cjs/internal/hooks/use-radio-state.js +84 -0
  40. package/dist/cjs/internal/hooks/use-register-item-with-focus-manager.js +29 -0
  41. package/dist/cjs/internal/utils/get-icon-colors.js +25 -0
  42. package/dist/cjs/internal/utils/handle-focus.js +58 -0
  43. package/dist/cjs/internal/utils/is-checkbox-item.js +11 -0
  44. package/dist/cjs/internal/utils/is-radio-item.js +11 -0
  45. package/dist/cjs/internal/utils/is-voice-over-supported.js +23 -0
  46. package/dist/cjs/internal/utils/reset-options-in-group.js +23 -0
  47. package/dist/cjs/radio/dropdown-item-radio-group.js +89 -0
  48. package/dist/cjs/radio/dropdown-item-radio.js +108 -0
  49. package/dist/cjs/version.json +1 -1
  50. package/dist/es2019/checkbox/dropdown-item-checkbox-group.js +21 -0
  51. package/dist/es2019/checkbox/dropdown-item-checkbox.js +67 -0
  52. package/dist/es2019/dropdown-menu-item-group.js +11 -0
  53. package/dist/es2019/dropdown-menu-item.js +49 -0
  54. package/dist/es2019/dropdown-menu.js +151 -0
  55. package/dist/es2019/index.js +7 -11
  56. package/dist/es2019/internal/components/focus-manager.js +40 -0
  57. package/dist/es2019/internal/components/menu-wrapper.js +44 -0
  58. package/dist/es2019/internal/context/checkbox-group-context.js +6 -0
  59. package/dist/es2019/internal/context/selection-store.js +54 -0
  60. package/dist/es2019/internal/hooks/use-checkbox-state.js +45 -0
  61. package/dist/es2019/internal/hooks/use-radio-state.js +56 -0
  62. package/dist/es2019/internal/hooks/use-register-item-with-focus-manager.js +19 -0
  63. package/dist/es2019/internal/utils/get-icon-colors.js +17 -0
  64. package/dist/es2019/internal/utils/handle-focus.js +48 -0
  65. package/dist/es2019/internal/utils/is-checkbox-item.js +4 -0
  66. package/dist/es2019/internal/utils/is-radio-item.js +4 -0
  67. package/dist/es2019/internal/utils/is-voice-over-supported.js +11 -0
  68. package/dist/es2019/internal/utils/reset-options-in-group.js +7 -0
  69. package/dist/es2019/radio/dropdown-item-radio-group.js +56 -0
  70. package/dist/es2019/radio/dropdown-item-radio.js +67 -0
  71. package/dist/es2019/version.json +1 -1
  72. package/dist/esm/checkbox/dropdown-item-checkbox-group.js +19 -0
  73. package/dist/esm/checkbox/dropdown-item-checkbox.js +81 -0
  74. package/dist/esm/dropdown-menu-item-group.js +11 -0
  75. package/dist/esm/dropdown-menu-item.js +52 -0
  76. package/dist/esm/dropdown-menu.js +168 -0
  77. package/dist/esm/index.js +7 -11
  78. package/dist/esm/internal/components/focus-manager.js +39 -0
  79. package/dist/esm/internal/components/menu-wrapper.js +45 -0
  80. package/dist/esm/internal/context/checkbox-group-context.js +6 -0
  81. package/dist/esm/internal/context/selection-store.js +58 -0
  82. package/dist/esm/internal/hooks/use-checkbox-state.js +55 -0
  83. package/dist/esm/internal/hooks/use-radio-state.js +70 -0
  84. package/dist/esm/internal/hooks/use-register-item-with-focus-manager.js +19 -0
  85. package/dist/esm/internal/utils/get-icon-colors.js +17 -0
  86. package/dist/esm/internal/utils/handle-focus.js +47 -0
  87. package/dist/esm/internal/utils/is-checkbox-item.js +4 -0
  88. package/dist/esm/internal/utils/is-radio-item.js +4 -0
  89. package/dist/esm/internal/utils/is-voice-over-supported.js +15 -0
  90. package/dist/esm/internal/utils/reset-options-in-group.js +13 -0
  91. package/dist/esm/radio/dropdown-item-radio-group.js +66 -0
  92. package/dist/esm/radio/dropdown-item-radio.js +81 -0
  93. package/dist/esm/version.json +1 -1
  94. package/dist/types/checkbox/dropdown-item-checkbox-group.d.ts +16 -0
  95. package/dist/types/checkbox/dropdown-item-checkbox.d.ts +13 -0
  96. package/dist/types/dropdown-menu-item-group.d.ts +11 -0
  97. package/dist/types/dropdown-menu-item.d.ts +13 -0
  98. package/dist/types/dropdown-menu.d.ts +13 -0
  99. package/dist/types/index.d.ts +8 -10
  100. package/dist/types/internal/components/focus-manager.d.ts +19 -0
  101. package/dist/types/internal/components/menu-wrapper.d.ts +11 -0
  102. package/dist/types/internal/context/checkbox-group-context.d.ts +5 -0
  103. package/dist/types/internal/context/selection-store.d.ts +27 -0
  104. package/dist/types/internal/hooks/use-checkbox-state.d.ts +14 -0
  105. package/dist/types/internal/hooks/use-radio-state.d.ts +9 -0
  106. package/dist/types/internal/hooks/use-register-item-with-focus-manager.d.ts +4 -0
  107. package/dist/types/internal/utils/get-icon-colors.d.ts +8 -0
  108. package/dist/types/internal/utils/handle-focus.d.ts +2 -0
  109. package/dist/types/internal/utils/is-checkbox-item.d.ts +1 -0
  110. package/dist/types/internal/utils/is-radio-item.d.ts +1 -0
  111. package/dist/types/internal/utils/is-voice-over-supported.d.ts +2 -0
  112. package/dist/types/internal/utils/reset-options-in-group.d.ts +4 -0
  113. package/dist/types/radio/dropdown-item-radio-group.d.ts +25 -0
  114. package/dist/types/radio/dropdown-item-radio.d.ts +13 -0
  115. package/dist/types/types.d.ts +254 -79
  116. package/package.json +39 -23
  117. package/dist/cjs/components/DropdownMenu.js +0 -230
  118. package/dist/cjs/components/DropdownMenuStateless.js +0 -523
  119. package/dist/cjs/components/context/DropdownItemClickManager.js +0 -72
  120. package/dist/cjs/components/context/DropdownItemFocusManager.js +0 -178
  121. package/dist/cjs/components/context/DropdownItemSelectionCache.js +0 -131
  122. package/dist/cjs/components/context/DropdownItemSelectionManager.js +0 -185
  123. package/dist/cjs/components/group/DropdownItemGroup.js +0 -61
  124. package/dist/cjs/components/group/DropdownItemGroupCheckbox.js +0 -16
  125. package/dist/cjs/components/group/DropdownItemGroupRadio.js +0 -16
  126. package/dist/cjs/components/group/ert-group-selection.js +0 -8
  127. package/dist/cjs/components/hoc/withItemSelectionManager.js +0 -66
  128. package/dist/cjs/components/hoc/withToggleInteraction.js +0 -175
  129. package/dist/cjs/components/item/DropdownItem.js +0 -19
  130. package/dist/cjs/components/item/DropdownItemCheckbox.js +0 -28
  131. package/dist/cjs/components/item/ert-item-checkbox.js +0 -8
  132. package/dist/cjs/components/item/ert-item-radio.js +0 -8
  133. package/dist/cjs/components/item/ert-item.js +0 -8
  134. package/dist/cjs/styled/WidthConstrainer.js +0 -21
  135. package/dist/cjs/util/contextNamespace.js +0 -19
  136. package/dist/cjs/util/getDisplayName.js +0 -14
  137. package/dist/cjs/util/keys.js +0 -18
  138. package/dist/cjs/util/safeContextCall.js +0 -27
  139. package/dist/cjs/util/supportsVoiceover.js +0 -17
  140. package/dist/es2019/components/DropdownMenu.js +0 -156
  141. package/dist/es2019/components/DropdownMenuStateless.js +0 -459
  142. package/dist/es2019/components/context/DropdownItemClickManager.js +0 -31
  143. package/dist/es2019/components/context/DropdownItemFocusManager.js +0 -134
  144. package/dist/es2019/components/context/DropdownItemSelectionCache.js +0 -68
  145. package/dist/es2019/components/context/DropdownItemSelectionManager.js +0 -140
  146. package/dist/es2019/components/group/DropdownItemGroup.js +0 -17
  147. package/dist/es2019/components/group/DropdownItemGroupCheckbox.js +0 -3
  148. package/dist/es2019/components/group/DropdownItemGroupRadio.js +0 -3
  149. package/dist/es2019/components/group/ert-group-selection.js +0 -1
  150. package/dist/es2019/components/hoc/withItemSelectionManager.js +0 -20
  151. package/dist/es2019/components/hoc/withToggleInteraction.js +0 -119
  152. package/dist/es2019/components/item/DropdownItem.js +0 -3
  153. package/dist/es2019/components/item/DropdownItemCheckbox.js +0 -5
  154. package/dist/es2019/components/item/DropdownItemRadio.js +0 -5
  155. package/dist/es2019/components/item/ert-item-checkbox.js +0 -1
  156. package/dist/es2019/components/item/ert-item-radio.js +0 -1
  157. package/dist/es2019/components/item/ert-item.js +0 -1
  158. package/dist/es2019/styled/WidthConstrainer.js +0 -6
  159. package/dist/es2019/util/contextNamespace.js +0 -6
  160. package/dist/es2019/util/getDisplayName.js +0 -4
  161. package/dist/es2019/util/keys.js +0 -6
  162. package/dist/es2019/util/safeContextCall.js +0 -10
  163. package/dist/es2019/util/supportsVoiceover.js +0 -5
  164. package/dist/esm/components/DropdownMenu.js +0 -215
  165. package/dist/esm/components/DropdownMenuStateless.js +0 -516
  166. package/dist/esm/components/context/DropdownItemClickManager.js +0 -59
  167. package/dist/esm/components/context/DropdownItemFocusManager.js +0 -164
  168. package/dist/esm/components/context/DropdownItemSelectionCache.js +0 -113
  169. package/dist/esm/components/context/DropdownItemSelectionManager.js +0 -174
  170. package/dist/esm/components/group/DropdownItemGroup.js +0 -43
  171. package/dist/esm/components/group/DropdownItemGroupCheckbox.js +0 -3
  172. package/dist/esm/components/group/DropdownItemGroupRadio.js +0 -3
  173. package/dist/esm/components/group/ert-group-selection.js +0 -1
  174. package/dist/esm/components/hoc/withItemSelectionManager.js +0 -47
  175. package/dist/esm/components/hoc/withToggleInteraction.js +0 -155
  176. package/dist/esm/components/item/DropdownItem.js +0 -3
  177. package/dist/esm/components/item/DropdownItemCheckbox.js +0 -7
  178. package/dist/esm/components/item/DropdownItemRadio.js +0 -7
  179. package/dist/esm/components/item/ert-item-checkbox.js +0 -1
  180. package/dist/esm/components/item/ert-item-radio.js +0 -1
  181. package/dist/esm/components/item/ert-item.js +0 -1
  182. package/dist/esm/styled/WidthConstrainer.js +0 -9
  183. package/dist/esm/util/contextNamespace.js +0 -8
  184. package/dist/esm/util/getDisplayName.js +0 -6
  185. package/dist/esm/util/keys.js +0 -6
  186. package/dist/esm/util/safeContextCall.js +0 -18
  187. package/dist/esm/util/supportsVoiceover.js +0 -9
  188. package/dist/types/components/DropdownMenu.d.ts +0 -36
  189. package/dist/types/components/DropdownMenuStateless.d.ts +0 -82
  190. package/dist/types/components/context/DropdownItemClickManager.d.ts +0 -19
  191. package/dist/types/components/context/DropdownItemFocusManager.d.ts +0 -35
  192. package/dist/types/components/context/DropdownItemSelectionCache.d.ts +0 -31
  193. package/dist/types/components/context/DropdownItemSelectionManager.d.ts +0 -34
  194. package/dist/types/components/group/DropdownItemGroup.d.ts +0 -12
  195. package/dist/types/components/group/DropdownItemGroupCheckbox.d.ts +0 -55
  196. package/dist/types/components/group/DropdownItemGroupRadio.d.ts +0 -55
  197. package/dist/types/components/group/ert-group-selection.d.ts +0 -6
  198. package/dist/types/components/hoc/withItemSelectionManager.d.ts +0 -63
  199. package/dist/types/components/hoc/withToggleInteraction.d.ts +0 -98
  200. package/dist/types/components/item/DropdownItem.d.ts +0 -65
  201. package/dist/types/components/item/DropdownItemCheckbox.d.ts +0 -80
  202. package/dist/types/components/item/DropdownItemRadio.d.ts +0 -80
  203. package/dist/types/components/item/ert-item-checkbox.d.ts +0 -2
  204. package/dist/types/components/item/ert-item-radio.d.ts +0 -2
  205. package/dist/types/components/item/ert-item.d.ts +0 -2
  206. package/dist/types/styled/WidthConstrainer.d.ts +0 -7
  207. package/dist/types/util/contextNamespace.d.ts +0 -4
  208. package/dist/types/util/getDisplayName.d.ts +0 -3
  209. package/dist/types/util/keys.d.ts +0 -6
  210. package/dist/types/util/safeContextCall.d.ts +0 -6
  211. package/dist/types/util/supportsVoiceover.d.ts +0 -2
@@ -1,516 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
- import _createClass from "@babel/runtime/helpers/createClass";
4
- import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
5
- import _inherits from "@babel/runtime/helpers/inherits";
6
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
-
10
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
-
12
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
13
-
14
- /* eslint-disable react/no-array-index-key */
15
- import React, { Component, Fragment } from 'react';
16
- import { findDOMNode } from 'react-dom';
17
- import { createAndFireEvent, withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
18
- import Button from '@atlaskit/button/custom-theme-button';
19
- import Droplist, { Group, Item } from '@atlaskit/droplist';
20
- import ExpandIcon from '@atlaskit/icon/glyph/chevron-down';
21
- import WidthConstrainer from '../styled/WidthConstrainer';
22
- import { KEY_DOWN, KEY_ENTER, KEY_SPACE } from '../util/keys';
23
- import DropdownItemClickManager from './context/DropdownItemClickManager';
24
- import DropdownItemFocusManager from './context/DropdownItemFocusManager';
25
- import DropdownItemSelectionCache from './context/DropdownItemSelectionCache';
26
- var packageName = "@atlaskit/dropdown-menu";
27
- var packageVersion = "10.1.8";
28
- export var DropdownMenuStateless = /*#__PURE__*/function (_Component) {
29
- _inherits(DropdownMenuStateless, _Component);
30
-
31
- var _super = _createSuper(DropdownMenuStateless);
32
-
33
- function DropdownMenuStateless() {
34
- var _this;
35
-
36
- _classCallCheck(this, DropdownMenuStateless);
37
-
38
- for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
39
- _args[_key] = arguments[_key];
40
- }
41
-
42
- _this = _super.call.apply(_super, [this].concat(_args));
43
-
44
- _defineProperty(_assertThisInitialized(_this), "dropdownListPositioned", false);
45
-
46
- _defineProperty(_assertThisInitialized(_this), "state", {
47
- autoFocusDropdownItems: false
48
- });
49
-
50
- _defineProperty(_assertThisInitialized(_this), "componentDidMount", function () {
51
- if (_this.isUsingDeprecatedAPI()) {
52
- if (process.env.NODE_ENV !== 'test' && process.env.NODE_ENV !== 'production' && !process.env.CI) {
53
- // eslint-disable-next-line no-console
54
- console.log('DropdownMenu.items is deprecated. Please switch to the declarative API.');
55
- }
56
-
57
- if (_this.domItemsList) {
58
- _this.focusFirstItem();
59
- }
60
- }
61
- });
62
-
63
- _defineProperty(_assertThisInitialized(_this), "componentDidUpdate", function (prevProp) {
64
- if (_this.isUsingDeprecatedAPI() && _this.props.isOpen && !prevProp.isOpen) {
65
- _this.focusFirstItem();
66
- }
67
- });
68
-
69
- _defineProperty(_assertThisInitialized(_this), "getNextFocusable", function (indexItem, available) {
70
- if (!_this.domItemsList) {
71
- return null;
72
- }
73
-
74
- var currentItem = typeof indexItem !== 'number' ? -1 : indexItem;
75
- var latestAvailable = typeof available !== 'number' ? currentItem : available;
76
-
77
- if (currentItem < _this.domItemsList.length - 1) {
78
- currentItem++;
79
-
80
- if (_this.domItemsList[currentItem].getAttribute('aria-hidden') !== 'true') {
81
- return currentItem;
82
- }
83
-
84
- return _this.getNextFocusable(currentItem, latestAvailable);
85
- }
86
-
87
- return latestAvailable;
88
- });
89
-
90
- _defineProperty(_assertThisInitialized(_this), "getPrevFocusable", function (indexItem, available) {
91
- if (!_this.domItemsList) {
92
- return null;
93
- }
94
-
95
- var currentItem = typeof indexItem !== 'number' ? -1 : indexItem;
96
- var latestAvailable = typeof available !== 'number' ? currentItem : available;
97
-
98
- if (currentItem && currentItem > 0) {
99
- currentItem--;
100
-
101
- if (_this.domItemsList[currentItem].getAttribute('aria-hidden') !== 'true') {
102
- return currentItem;
103
- }
104
-
105
- return _this.getPrevFocusable(currentItem, latestAvailable);
106
- }
107
-
108
- return latestAvailable || currentItem;
109
- });
110
-
111
- _defineProperty(_assertThisInitialized(_this), "focusFirstItem", function () {
112
- if (_this.sourceOfIsOpen === 'keydown') {
113
- _this.focusItem(_this.getNextFocusable());
114
- }
115
- });
116
-
117
- _defineProperty(_assertThisInitialized(_this), "focusNextItem", function () {
118
- _this.focusItem(_this.getNextFocusable(_this.focusedItem));
119
- });
120
-
121
- _defineProperty(_assertThisInitialized(_this), "focusPreviousItem", function () {
122
- _this.focusItem(_this.getPrevFocusable(_this.focusedItem));
123
- });
124
-
125
- _defineProperty(_assertThisInitialized(_this), "focusItem", function (index) {
126
- if (!_this.domItemsList || !index) {
127
- return;
128
- }
129
-
130
- _this.focusedItem = index;
131
-
132
- _this.domItemsList[_this.focusedItem].focus();
133
- });
134
-
135
- _defineProperty(_assertThisInitialized(_this), "isTargetChildItem", function (target) {
136
- if (!target) {
137
- return false;
138
- }
139
-
140
- var isDroplistItem = target.getAttribute('data-role') === 'droplistItem'; // eslint-disable-next-line react/no-find-dom-node
141
-
142
- var thisDom = findDOMNode(_assertThisInitialized(_this));
143
- return isDroplistItem && thisDom ? thisDom.contains(target) : false;
144
- });
145
-
146
- _defineProperty(_assertThisInitialized(_this), "handleKeyboardInteractionForClosed", function (event) {
147
- if (_this.props.isOpen) {
148
- return;
149
- }
150
-
151
- switch (event.key) {
152
- case KEY_DOWN:
153
- case KEY_SPACE:
154
- case KEY_ENTER:
155
- event.preventDefault();
156
-
157
- _this.open({
158
- event: event,
159
- source: 'keydown'
160
- });
161
-
162
- break;
163
-
164
- default:
165
- break;
166
- }
167
- });
168
-
169
- _defineProperty(_assertThisInitialized(_this), "handleKeyboardInteractionsDeprecated", function (event) {
170
- if (_this.props.isOpen) {
171
- if (_this.isTargetChildItem(event.target)) {
172
- switch (event.key) {
173
- case 'ArrowUp':
174
- event.preventDefault();
175
-
176
- _this.focusPreviousItem();
177
-
178
- break;
179
-
180
- case 'ArrowDown':
181
- event.preventDefault();
182
-
183
- _this.focusNextItem();
184
-
185
- break;
186
-
187
- case 'Tab':
188
- event.preventDefault();
189
-
190
- _this.close({
191
- event: event
192
- });
193
-
194
- break;
195
-
196
- default:
197
- break;
198
- }
199
- } else if (event.key === 'ArrowDown') {
200
- _this.sourceOfIsOpen = 'keydown';
201
-
202
- _this.focusFirstItem();
203
- } else if (event.key === 'Tab') {
204
- _this.close({
205
- event: event
206
- });
207
- }
208
- } else {
209
- switch (event.key) {
210
- case KEY_DOWN:
211
- case KEY_SPACE:
212
- case KEY_ENTER:
213
- event.preventDefault();
214
-
215
- _this.open({
216
- event: event,
217
- source: 'keydown'
218
- });
219
-
220
- break;
221
-
222
- default:
223
- break;
224
- }
225
- }
226
- });
227
-
228
- _defineProperty(_assertThisInitialized(_this), "domMenuContainer", null);
229
-
230
- _defineProperty(_assertThisInitialized(_this), "isUsingDeprecatedAPI", function () {
231
- return Boolean(_this.props.items.length);
232
- });
233
-
234
- _defineProperty(_assertThisInitialized(_this), "handleOpenChange", function (args) {
235
- _this.props.onOpenChange(args);
236
- });
237
-
238
- _defineProperty(_assertThisInitialized(_this), "triggerContent", function () {
239
- var _this$props = _this.props,
240
- children = _this$props.children,
241
- trigger = _this$props.trigger,
242
- isOpen = _this$props.isOpen,
243
- triggerButtonProps = _this$props.triggerButtonProps,
244
- triggerType = _this$props.triggerType,
245
- testId = _this$props.testId;
246
- var insideTriggerContent = _this.isUsingDeprecatedAPI() ? children : trigger;
247
-
248
- if (triggerType !== 'button') {
249
- return insideTriggerContent;
250
- } // we probably don't need to object copying
251
- // ts doesn't like destructuring copy - so converting to object.assign
252
-
253
-
254
- var triggerProps = Object.assign({}, triggerButtonProps);
255
- var defaultButtonProps = {
256
- 'aria-expanded': isOpen,
257
- 'aria-haspopup': true,
258
- isSelected: isOpen
259
- };
260
-
261
- if (!triggerProps.iconAfter && !triggerProps.iconBefore) {
262
- triggerProps.iconAfter = /*#__PURE__*/React.createElement(ExpandIcon, {
263
- size: "medium",
264
- label: ""
265
- });
266
- }
267
-
268
- return /*#__PURE__*/React.createElement(Button, _extends({}, defaultButtonProps, triggerProps, {
269
- testId: testId && "".concat(testId, "--trigger")
270
- }), insideTriggerContent);
271
- });
272
-
273
- _defineProperty(_assertThisInitialized(_this), "open", function (attrs) {
274
- _this.sourceOfIsOpen = attrs.source;
275
-
276
- _this.props.onOpenChange({
277
- isOpen: true,
278
- event: attrs.event
279
- }); // Dropdown opened via keyboard gets auto focussed
280
-
281
-
282
- _this.setState({
283
- autoFocusDropdownItems: _this.sourceOfIsOpen === 'keydown'
284
- });
285
- });
286
-
287
- _defineProperty(_assertThisInitialized(_this), "close", function (attrs) {
288
- _this.sourceOfIsOpen = null;
289
-
290
- _this.props.onOpenChange({
291
- isOpen: false,
292
- event: attrs.event
293
- });
294
- });
295
-
296
- _defineProperty(_assertThisInitialized(_this), "toggle", function (attrs) {
297
- if (attrs.source === 'keydown') {
298
- return;
299
- }
300
-
301
- if (_this.props.isOpen) {
302
- _this.close(attrs);
303
- } else {
304
- _this.open(attrs);
305
- }
306
- });
307
-
308
- _defineProperty(_assertThisInitialized(_this), "renderTrigger", function () {
309
- var triggerContent = _this.triggerContent();
310
-
311
- return _this.isUsingDeprecatedAPI() ? triggerContent : /*#__PURE__*/React.createElement("div", {
312
- ref: function ref(_ref) {
313
- _this.triggerContainer = _ref;
314
- }
315
- }, triggerContent);
316
- });
317
-
318
- _defineProperty(_assertThisInitialized(_this), "renderItems", function (items) {
319
- return items.map(function (item, itemIndex) {
320
- return /*#__PURE__*/React.createElement(Item, _extends({}, item, {
321
- key: itemIndex,
322
- onActivate: function onActivate(_ref2) {
323
- var event = _ref2.event;
324
-
325
- _this.props.onItemActivated({
326
- item: item,
327
- event: event
328
- });
329
- }
330
- }), item.content);
331
- });
332
- });
333
-
334
- _defineProperty(_assertThisInitialized(_this), "renderGroups", function (groups) {
335
- return groups.map(function (group, groupIndex) {
336
- return /*#__PURE__*/React.createElement(Group, {
337
- heading: group.heading,
338
- elemAfter: group.elemAfter,
339
- key: groupIndex
340
- }, _this.renderItems(group.items));
341
- });
342
- });
343
-
344
- _defineProperty(_assertThisInitialized(_this), "renderDeprecated", function () {
345
- var _this$props2 = _this.props,
346
- items = _this$props2.items,
347
- shouldFitContainer = _this$props2.shouldFitContainer;
348
- return /*#__PURE__*/React.createElement("div", {
349
- ref: function ref(_ref3) {
350
- _this.domMenuContainer = _ref3;
351
- _this.domItemsList = _ref3 ? _ref3.querySelectorAll('[data-role="droplistItem"]') : null;
352
- },
353
- role: "menu",
354
- style: shouldFitContainer ? undefined : {
355
- maxWidth: 300
356
- }
357
- }, _this.renderGroups(items));
358
- });
359
-
360
- _defineProperty(_assertThisInitialized(_this), "onDroplistPositioned", function () {
361
- _this.dropdownListPositioned = true; // Trigger render so item focus manager can auto focus for keyboard trigger
362
-
363
- _this.setState({
364
- autoFocusDropdownItems: _this.sourceOfIsOpen === 'keydown'
365
- });
366
-
367
- if (_this.props.onPositioned) {
368
- _this.props.onPositioned();
369
- }
370
- });
371
-
372
- _defineProperty(_assertThisInitialized(_this), "renderDropdownItems", function () {
373
- if (_this.sourceOfIsOpen === 'keydown' && _this.dropdownListPositioned) {
374
- return /*#__PURE__*/React.createElement(DropdownItemFocusManager, {
375
- autoFocus: _this.state.autoFocusDropdownItems,
376
- close: _this.close
377
- }, _this.props.children);
378
- }
379
-
380
- return /*#__PURE__*/React.createElement(Fragment, null, _this.props.children);
381
- });
382
-
383
- return _this;
384
- }
385
-
386
- _createClass(DropdownMenuStateless, [{
387
- key: "handleClickDeprecated",
388
- value: function handleClickDeprecated(event) {
389
- var menuContainer = this.domMenuContainer;
390
-
391
- if (!menuContainer || menuContainer && !menuContainer.contains(event.target)) {
392
- this.toggle({
393
- source: 'click',
394
- event: event
395
- });
396
- }
397
- }
398
- }, {
399
- key: "handleClick",
400
- value: function handleClick(event) {
401
- // For any clicks we don't want autofocus
402
- this.setState({
403
- autoFocusDropdownItems: false
404
- });
405
-
406
- if (this.isUsingDeprecatedAPI()) {
407
- this.handleClickDeprecated(event);
408
- return;
409
- }
410
-
411
- if (this.triggerContainer && this.triggerContainer.contains(event.target) && event.target.disabled !== true) {
412
- var isOpen = this.props.isOpen;
413
- this.sourceOfIsOpen = 'mouse';
414
- this.props.onOpenChange({
415
- isOpen: !isOpen,
416
- event: event
417
- });
418
- }
419
- }
420
- }, {
421
- key: "render",
422
- value: function render() {
423
- var _this2 = this;
424
-
425
- var _this$props3 = this.props,
426
- appearance = _this$props3.appearance,
427
- boundariesElement = _this$props3.boundariesElement,
428
- isLoading = _this$props3.isLoading,
429
- isOpen = _this$props3.isOpen,
430
- onOpenChange = _this$props3.onOpenChange,
431
- position = _this$props3.position,
432
- isMenuFixed = _this$props3.isMenuFixed,
433
- shouldAllowMultilineItems = _this$props3.shouldAllowMultilineItems,
434
- shouldFitContainer = _this$props3.shouldFitContainer,
435
- shouldFlip = _this$props3.shouldFlip,
436
- testId = _this$props3.testId;
437
- var isDeprecated = this.isUsingDeprecatedAPI();
438
- var deprecatedProps = isDeprecated ? {
439
- onKeyDown: this.handleKeyboardInteractionsDeprecated,
440
- shouldAllowMultilineItems: shouldAllowMultilineItems
441
- } : {
442
- onKeyDown: this.handleKeyboardInteractionForClosed
443
- };
444
- return /*#__PURE__*/React.createElement(DropdownItemSelectionCache, null, /*#__PURE__*/React.createElement(Droplist, _extends({
445
- appearance: appearance,
446
- boundariesElement: boundariesElement,
447
- isLoading: isLoading,
448
- isOpen: isOpen,
449
- onClick: function onClick(e) {
450
- return _this2.handleClick(e);
451
- },
452
- onOpenChange: this.handleOpenChange,
453
- position: position,
454
- isMenuFixed: isMenuFixed,
455
- shouldFitContainer: shouldFitContainer,
456
- shouldFlip: shouldFlip,
457
- trigger: this.renderTrigger(),
458
- onPositioned: this.onDroplistPositioned
459
- }, deprecatedProps, {
460
- analyticsContext: {
461
- componentName: 'dropdownMenu',
462
- packageName: packageName,
463
- packageVersion: packageVersion
464
- },
465
- testId: testId
466
- }), isDeprecated ? this.renderDeprecated() : /*#__PURE__*/React.createElement(WidthConstrainer, {
467
- role: "menu",
468
- shouldFitContainer: shouldFitContainer
469
- }, /*#__PURE__*/React.createElement(DropdownItemClickManager, {
470
- onItemClicked: function onItemClicked(event) {
471
- return onOpenChange({
472
- isOpen: false,
473
- event: event
474
- });
475
- }
476
- }, this.renderDropdownItems()))));
477
- }
478
- }]);
479
-
480
- return DropdownMenuStateless;
481
- }(Component);
482
-
483
- _defineProperty(DropdownMenuStateless, "defaultProps", {
484
- appearance: 'default',
485
- boundariesElement: 'viewport',
486
- isLoading: false,
487
- isOpen: false,
488
- items: [],
489
- onItemActivated: function onItemActivated() {},
490
- onOpenChange: function onOpenChange() {},
491
- position: 'bottom left',
492
- isMenuFixed: false,
493
- shouldAllowMultilineItems: false,
494
- shouldFitContainer: false,
495
- shouldFlip: true,
496
- triggerType: 'default',
497
- onPositioned: function onPositioned() {}
498
- });
499
-
500
- export { DropdownMenuStateless as DropdownMenuStatelessWithoutAnalytics };
501
- var createAndFireEventOnAtlaskit = createAndFireEvent('atlaskit');
502
- export default withAnalyticsContext({
503
- componentName: 'dropdownMenu',
504
- packageName: packageName,
505
- packageVersion: packageVersion
506
- })(withAnalyticsEvents({
507
- onOpenChange: createAndFireEventOnAtlaskit({
508
- action: 'toggled',
509
- actionSubject: 'dropdownMenu',
510
- attributes: {
511
- componentName: 'dropdownMenu',
512
- packageName: packageName,
513
- packageVersion: packageVersion
514
- }
515
- })
516
- })(DropdownMenuStateless));
@@ -1,59 +0,0 @@
1
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/createClass";
3
- import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
4
- import _inherits from "@babel/runtime/helpers/inherits";
5
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
-
9
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
10
-
11
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
12
-
13
- import { Component } from 'react';
14
- import PropTypes from 'prop-types';
15
- import { clickManagerContext } from '../../util/contextNamespace';
16
-
17
- var DropdownItemClickManager = /*#__PURE__*/function (_Component) {
18
- _inherits(DropdownItemClickManager, _Component);
19
-
20
- var _super = _createSuper(DropdownItemClickManager);
21
-
22
- function DropdownItemClickManager() {
23
- var _this;
24
-
25
- _classCallCheck(this, DropdownItemClickManager);
26
-
27
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28
- args[_key] = arguments[_key];
29
- }
30
-
31
- _this = _super.call.apply(_super, [this].concat(args));
32
-
33
- _defineProperty(_assertThisInitialized(_this), "handleItemClicked", function (event) {
34
- _this.props.onItemClicked(event);
35
- });
36
-
37
- return _this;
38
- }
39
-
40
- _createClass(DropdownItemClickManager, [{
41
- key: "getChildContext",
42
- value: function getChildContext() {
43
- return _defineProperty({}, clickManagerContext, {
44
- itemClicked: this.handleItemClicked
45
- });
46
- }
47
- }, {
48
- key: "render",
49
- value: function render() {
50
- return this.props.children;
51
- }
52
- }]);
53
-
54
- return DropdownItemClickManager;
55
- }(Component);
56
-
57
- _defineProperty(DropdownItemClickManager, "childContextTypes", _defineProperty({}, clickManagerContext, PropTypes.object));
58
-
59
- export { DropdownItemClickManager as default };