@atlaskit/react-select 2.2.1 → 2.3.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 (270) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/compiled/components/containers.compiled.css +26 -0
  3. package/dist/cjs/compiled/components/containers.js +119 -0
  4. package/dist/cjs/compiled/components/control.compiled.css +51 -0
  5. package/dist/cjs/compiled/components/control.js +66 -0
  6. package/dist/cjs/compiled/components/group.compiled.css +12 -0
  7. package/dist/cjs/compiled/components/group.js +81 -0
  8. package/dist/cjs/compiled/components/indicators.compiled.css +24 -0
  9. package/dist/cjs/compiled/components/indicators.js +157 -0
  10. package/dist/cjs/compiled/components/input.compiled.css +49 -0
  11. package/dist/cjs/compiled/components/input.js +69 -0
  12. package/dist/cjs/compiled/components/internal/a11y-text.compiled.css +15 -0
  13. package/dist/cjs/compiled/components/internal/a11y-text.js +23 -0
  14. package/dist/cjs/compiled/components/internal/dummy-input.compiled.css +17 -0
  15. package/dist/cjs/compiled/components/internal/dummy-input.js +30 -0
  16. package/dist/cjs/compiled/components/internal/required-input.compiled.css +8 -0
  17. package/dist/cjs/compiled/components/internal/required-input.js +34 -0
  18. package/dist/cjs/compiled/components/live-region.js +177 -0
  19. package/dist/cjs/compiled/components/menu.compiled.css +19 -0
  20. package/dist/cjs/compiled/components/menu.js +491 -0
  21. package/dist/cjs/compiled/components/multi-value.compiled.css +56 -0
  22. package/dist/cjs/compiled/components/multi-value.js +199 -0
  23. package/dist/cjs/compiled/components/option.compiled.css +22 -0
  24. package/dist/cjs/compiled/components/option.js +57 -0
  25. package/dist/cjs/compiled/components/placeholder.compiled.css +7 -0
  26. package/dist/cjs/compiled/components/placeholder.js +45 -0
  27. package/dist/cjs/compiled/components/single-value.compiled.css +13 -0
  28. package/dist/cjs/compiled/components/single-value.js +46 -0
  29. package/dist/cjs/components/containers.js +12 -72
  30. package/dist/cjs/components/control.js +11 -96
  31. package/dist/cjs/components/group.js +15 -53
  32. package/dist/cjs/components/indicators.js +15 -107
  33. package/dist/cjs/components/input.js +12 -81
  34. package/dist/cjs/components/internal/a11y-text.js +6 -25
  35. package/dist/cjs/components/internal/dummy-input.js +8 -36
  36. package/dist/cjs/components/internal/notify-open-layer-observer.js +1 -0
  37. package/dist/cjs/components/internal/required-input.js +7 -31
  38. package/dist/cjs/components/internal/scroll-manager.js +19 -17
  39. package/dist/cjs/components/live-region.js +6 -164
  40. package/dist/cjs/components/menu.js +26 -181
  41. package/dist/cjs/components/multi-value.js +21 -197
  42. package/dist/cjs/components/option.js +11 -68
  43. package/dist/cjs/components/placeholder.js +11 -20
  44. package/dist/cjs/components/single-value.js +11 -26
  45. package/dist/cjs/emotion/components/containers.js +2 -0
  46. package/dist/cjs/emotion/components/control.js +2 -0
  47. package/dist/cjs/emotion/components/group.js +1 -0
  48. package/dist/cjs/emotion/components/indicators.js +1 -0
  49. package/dist/cjs/emotion/components/input.js +1 -1
  50. package/dist/cjs/emotion/components/internal/a11y-text.js +1 -0
  51. package/dist/cjs/emotion/components/internal/dummy-input.js +1 -0
  52. package/dist/cjs/emotion/components/internal/required-input.js +2 -0
  53. package/dist/cjs/emotion/components/live-region.js +1 -1
  54. package/dist/cjs/emotion/components/menu.js +1 -1
  55. package/dist/cjs/emotion/components/multi-value.js +1 -1
  56. package/dist/cjs/emotion/components/option.js +2 -0
  57. package/dist/cjs/emotion/components/placeholder.js +2 -0
  58. package/dist/cjs/emotion/components/single-value.js +2 -0
  59. package/dist/cjs/utils.js +2 -1
  60. package/dist/es2019/compiled/components/containers.compiled.css +26 -0
  61. package/dist/es2019/compiled/components/containers.js +115 -0
  62. package/dist/es2019/compiled/components/control.compiled.css +51 -0
  63. package/dist/es2019/compiled/components/control.js +58 -0
  64. package/dist/es2019/compiled/components/group.compiled.css +12 -0
  65. package/dist/es2019/compiled/components/group.js +72 -0
  66. package/dist/es2019/compiled/components/indicators.compiled.css +24 -0
  67. package/dist/es2019/compiled/components/indicators.js +144 -0
  68. package/dist/es2019/compiled/components/input.compiled.css +49 -0
  69. package/dist/es2019/compiled/components/input.js +59 -0
  70. package/dist/es2019/compiled/components/internal/a11y-text.compiled.css +15 -0
  71. package/dist/es2019/compiled/components/internal/a11y-text.js +11 -0
  72. package/dist/es2019/compiled/components/internal/dummy-input.compiled.css +17 -0
  73. package/dist/es2019/compiled/components/internal/dummy-input.js +19 -0
  74. package/dist/es2019/compiled/components/internal/required-input.compiled.css +8 -0
  75. package/dist/es2019/compiled/components/internal/required-input.js +23 -0
  76. package/dist/es2019/compiled/components/live-region.js +171 -0
  77. package/dist/es2019/compiled/components/menu.compiled.css +19 -0
  78. package/dist/es2019/compiled/components/menu.js +478 -0
  79. package/dist/es2019/compiled/components/multi-value.compiled.css +56 -0
  80. package/dist/es2019/compiled/components/multi-value.js +190 -0
  81. package/dist/es2019/compiled/components/option.compiled.css +22 -0
  82. package/dist/es2019/compiled/components/option.js +48 -0
  83. package/dist/es2019/compiled/components/placeholder.compiled.css +7 -0
  84. package/dist/es2019/compiled/components/placeholder.js +36 -0
  85. package/dist/es2019/compiled/components/single-value.compiled.css +13 -0
  86. package/dist/es2019/compiled/components/single-value.js +37 -0
  87. package/dist/es2019/components/containers.js +10 -87
  88. package/dist/es2019/components/control.js +8 -103
  89. package/dist/es2019/components/group.js +9 -54
  90. package/dist/es2019/components/indicators.js +11 -113
  91. package/dist/es2019/components/input.js +7 -83
  92. package/dist/es2019/components/internal/a11y-text.js +6 -26
  93. package/dist/es2019/components/internal/dummy-input.js +7 -36
  94. package/dist/es2019/components/internal/notify-open-layer-observer.js +1 -0
  95. package/dist/es2019/components/internal/required-input.js +6 -32
  96. package/dist/es2019/components/internal/scroll-manager.js +16 -16
  97. package/dist/es2019/components/live-region.js +5 -168
  98. package/dist/es2019/components/menu.js +14 -192
  99. package/dist/es2019/components/multi-value.js +12 -216
  100. package/dist/es2019/components/option.js +7 -75
  101. package/dist/es2019/components/placeholder.js +7 -25
  102. package/dist/es2019/components/single-value.js +7 -31
  103. package/dist/es2019/emotion/components/containers.js +1 -0
  104. package/dist/es2019/emotion/components/control.js +1 -0
  105. package/dist/es2019/emotion/components/group.js +1 -0
  106. package/dist/es2019/emotion/components/indicators.js +1 -0
  107. package/dist/es2019/emotion/components/input.js +1 -0
  108. package/dist/es2019/emotion/components/internal/a11y-text.js +1 -0
  109. package/dist/es2019/emotion/components/internal/dummy-input.js +1 -0
  110. package/dist/es2019/emotion/components/internal/required-input.js +1 -0
  111. package/dist/es2019/emotion/components/live-region.js +2 -0
  112. package/dist/es2019/emotion/components/menu.js +2 -0
  113. package/dist/es2019/emotion/components/multi-value.js +1 -0
  114. package/dist/es2019/emotion/components/option.js +1 -0
  115. package/dist/es2019/emotion/components/placeholder.js +1 -0
  116. package/dist/es2019/emotion/components/single-value.js +1 -0
  117. package/dist/es2019/utils.js +1 -0
  118. package/dist/esm/compiled/components/containers.compiled.css +26 -0
  119. package/dist/esm/compiled/components/containers.js +110 -0
  120. package/dist/esm/compiled/components/control.compiled.css +51 -0
  121. package/dist/esm/compiled/components/control.js +57 -0
  122. package/dist/esm/compiled/components/group.compiled.css +12 -0
  123. package/dist/esm/compiled/components/group.js +71 -0
  124. package/dist/esm/compiled/components/indicators.compiled.css +24 -0
  125. package/dist/esm/compiled/components/indicators.js +148 -0
  126. package/dist/esm/compiled/components/input.compiled.css +49 -0
  127. package/dist/esm/compiled/components/input.js +59 -0
  128. package/dist/esm/compiled/components/internal/a11y-text.compiled.css +15 -0
  129. package/dist/esm/compiled/components/internal/a11y-text.js +13 -0
  130. package/dist/esm/compiled/components/internal/dummy-input.compiled.css +17 -0
  131. package/dist/esm/compiled/components/internal/dummy-input.js +20 -0
  132. package/dist/esm/compiled/components/internal/required-input.compiled.css +8 -0
  133. package/dist/esm/compiled/components/internal/required-input.js +24 -0
  134. package/dist/esm/compiled/components/live-region.js +168 -0
  135. package/dist/esm/compiled/components/menu.compiled.css +19 -0
  136. package/dist/esm/compiled/components/menu.js +485 -0
  137. package/dist/esm/compiled/components/multi-value.compiled.css +56 -0
  138. package/dist/esm/compiled/components/multi-value.js +187 -0
  139. package/dist/esm/compiled/components/option.compiled.css +22 -0
  140. package/dist/esm/compiled/components/option.js +47 -0
  141. package/dist/esm/compiled/components/placeholder.compiled.css +7 -0
  142. package/dist/esm/compiled/components/placeholder.js +35 -0
  143. package/dist/esm/compiled/components/single-value.compiled.css +13 -0
  144. package/dist/esm/compiled/components/single-value.js +36 -0
  145. package/dist/esm/components/containers.js +12 -73
  146. package/dist/esm/components/control.js +8 -97
  147. package/dist/esm/components/group.js +11 -54
  148. package/dist/esm/components/indicators.js +15 -109
  149. package/dist/esm/components/input.js +8 -83
  150. package/dist/esm/components/internal/a11y-text.js +6 -26
  151. package/dist/esm/components/internal/dummy-input.js +7 -37
  152. package/dist/esm/components/internal/notify-open-layer-observer.js +1 -0
  153. package/dist/esm/components/internal/required-input.js +7 -32
  154. package/dist/esm/components/internal/scroll-manager.js +16 -16
  155. package/dist/esm/components/live-region.js +5 -163
  156. package/dist/esm/components/menu.js +24 -182
  157. package/dist/esm/components/multi-value.js +17 -199
  158. package/dist/esm/components/option.js +8 -69
  159. package/dist/esm/components/placeholder.js +8 -21
  160. package/dist/esm/components/single-value.js +8 -27
  161. package/dist/esm/emotion/components/containers.js +1 -0
  162. package/dist/esm/emotion/components/control.js +1 -0
  163. package/dist/esm/emotion/components/group.js +1 -0
  164. package/dist/esm/emotion/components/indicators.js +1 -0
  165. package/dist/esm/emotion/components/input.js +1 -0
  166. package/dist/esm/emotion/components/internal/a11y-text.js +1 -0
  167. package/dist/esm/emotion/components/internal/dummy-input.js +1 -0
  168. package/dist/esm/emotion/components/internal/required-input.js +1 -0
  169. package/dist/esm/emotion/components/live-region.js +2 -0
  170. package/dist/esm/emotion/components/menu.js +2 -0
  171. package/dist/esm/emotion/components/multi-value.js +1 -0
  172. package/dist/esm/emotion/components/option.js +1 -0
  173. package/dist/esm/emotion/components/placeholder.js +1 -0
  174. package/dist/esm/emotion/components/single-value.js +1 -0
  175. package/dist/esm/utils.js +2 -1
  176. package/dist/types/compiled/components/containers.d.ts +53 -0
  177. package/dist/types/compiled/components/control.d.ts +41 -0
  178. package/dist/types/compiled/components/group.d.ts +54 -0
  179. package/dist/types/compiled/components/indicators.d.ts +72 -0
  180. package/dist/types/compiled/components/input.d.ts +36 -0
  181. package/dist/types/compiled/components/internal/a11y-text.d.ts +3 -0
  182. package/dist/types/compiled/components/internal/dummy-input.d.ts +8 -0
  183. package/dist/types/compiled/components/internal/required-input.d.ts +10 -0
  184. package/dist/types/compiled/components/live-region.d.ts +19 -0
  185. package/dist/types/compiled/components/menu.d.ts +115 -0
  186. package/dist/types/compiled/components/multi-value.d.ts +57 -0
  187. package/dist/types/compiled/components/option.d.ts +48 -0
  188. package/dist/types/compiled/components/placeholder.d.ts +21 -0
  189. package/dist/types/compiled/components/single-value.d.ts +27 -0
  190. package/dist/types/components/containers.d.ts +6 -11
  191. package/dist/types/components/control.d.ts +4 -9
  192. package/dist/types/components/group.d.ts +8 -10
  193. package/dist/types/components/index.d.ts +21 -21
  194. package/dist/types/components/indicators.d.ts +7 -12
  195. package/dist/types/components/input.d.ts +3 -8
  196. package/dist/types/components/internal/a11y-text.d.ts +2 -7
  197. package/dist/types/components/internal/dummy-input.d.ts +3 -8
  198. package/dist/types/components/internal/required-input.d.ts +0 -4
  199. package/dist/types/components/internal/scroll-manager.d.ts +2 -7
  200. package/dist/types/components/live-region.d.ts +2 -8
  201. package/dist/types/components/menu.d.ts +10 -15
  202. package/dist/types/components/multi-value.d.ts +19 -13
  203. package/dist/types/components/option.d.ts +3 -8
  204. package/dist/types/components/placeholder.d.ts +3 -8
  205. package/dist/types/components/single-value.d.ts +3 -8
  206. package/dist/types/select.d.ts +21 -21
  207. package/dist/types/types.d.ts +3 -0
  208. package/dist/types-ts4.5/compiled/components/containers.d.ts +53 -0
  209. package/dist/types-ts4.5/compiled/components/control.d.ts +41 -0
  210. package/dist/types-ts4.5/compiled/components/group.d.ts +54 -0
  211. package/dist/types-ts4.5/compiled/components/indicators.d.ts +72 -0
  212. package/dist/types-ts4.5/compiled/components/input.d.ts +36 -0
  213. package/dist/types-ts4.5/compiled/components/internal/a11y-text.d.ts +3 -0
  214. package/dist/types-ts4.5/compiled/components/internal/dummy-input.d.ts +8 -0
  215. package/dist/types-ts4.5/compiled/components/internal/required-input.d.ts +10 -0
  216. package/dist/types-ts4.5/compiled/components/live-region.d.ts +19 -0
  217. package/dist/types-ts4.5/compiled/components/menu.d.ts +115 -0
  218. package/dist/types-ts4.5/compiled/components/multi-value.d.ts +57 -0
  219. package/dist/types-ts4.5/compiled/components/option.d.ts +48 -0
  220. package/dist/types-ts4.5/compiled/components/placeholder.d.ts +21 -0
  221. package/dist/types-ts4.5/compiled/components/single-value.d.ts +27 -0
  222. package/dist/types-ts4.5/components/containers.d.ts +6 -11
  223. package/dist/types-ts4.5/components/control.d.ts +4 -9
  224. package/dist/types-ts4.5/components/group.d.ts +8 -10
  225. package/dist/types-ts4.5/components/index.d.ts +21 -21
  226. package/dist/types-ts4.5/components/indicators.d.ts +7 -12
  227. package/dist/types-ts4.5/components/input.d.ts +3 -8
  228. package/dist/types-ts4.5/components/internal/a11y-text.d.ts +2 -7
  229. package/dist/types-ts4.5/components/internal/dummy-input.d.ts +3 -8
  230. package/dist/types-ts4.5/components/internal/required-input.d.ts +0 -4
  231. package/dist/types-ts4.5/components/internal/scroll-manager.d.ts +2 -7
  232. package/dist/types-ts4.5/components/live-region.d.ts +2 -8
  233. package/dist/types-ts4.5/components/menu.d.ts +10 -15
  234. package/dist/types-ts4.5/components/multi-value.d.ts +19 -13
  235. package/dist/types-ts4.5/components/option.d.ts +3 -8
  236. package/dist/types-ts4.5/components/placeholder.d.ts +3 -8
  237. package/dist/types-ts4.5/components/single-value.d.ts +3 -8
  238. package/dist/types-ts4.5/select.d.ts +21 -21
  239. package/dist/types-ts4.5/types.d.ts +3 -0
  240. package/package.json +10 -2
  241. package/dist/cjs/emotion/components/index.js +0 -52
  242. package/dist/cjs/emotion/components/internal/index.js +0 -34
  243. package/dist/cjs/emotion/components/internal/notify-open-layer-observer.js +0 -21
  244. package/dist/cjs/emotion/components/internal/scroll-manager.js +0 -57
  245. package/dist/cjs/emotion/components/internal/use-scroll-capture.js +0 -132
  246. package/dist/cjs/emotion/components/internal/use-scroll-lock.js +0 -149
  247. package/dist/es2019/emotion/components/index.js +0 -41
  248. package/dist/es2019/emotion/components/internal/index.js +0 -4
  249. package/dist/es2019/emotion/components/internal/notify-open-layer-observer.js +0 -16
  250. package/dist/es2019/emotion/components/internal/scroll-manager.js +0 -49
  251. package/dist/es2019/emotion/components/internal/use-scroll-capture.js +0 -128
  252. package/dist/es2019/emotion/components/internal/use-scroll-lock.js +0 -143
  253. package/dist/esm/emotion/components/index.js +0 -43
  254. package/dist/esm/emotion/components/internal/index.js +0 -4
  255. package/dist/esm/emotion/components/internal/notify-open-layer-observer.js +0 -15
  256. package/dist/esm/emotion/components/internal/scroll-manager.js +0 -49
  257. package/dist/esm/emotion/components/internal/use-scroll-capture.js +0 -126
  258. package/dist/esm/emotion/components/internal/use-scroll-lock.js +0 -143
  259. package/dist/types/emotion/components/index.d.ts +0 -67
  260. package/dist/types/emotion/components/internal/index.d.ts +0 -4
  261. package/dist/types/emotion/components/internal/notify-open-layer-observer.d.ts +0 -11
  262. package/dist/types/emotion/components/internal/scroll-manager.d.ts +0 -17
  263. package/dist/types/emotion/components/internal/use-scroll-capture.d.ts +0 -12
  264. package/dist/types/emotion/components/internal/use-scroll-lock.d.ts +0 -9
  265. package/dist/types-ts4.5/emotion/components/index.d.ts +0 -67
  266. package/dist/types-ts4.5/emotion/components/internal/index.d.ts +0 -4
  267. package/dist/types-ts4.5/emotion/components/internal/notify-open-layer-observer.d.ts +0 -11
  268. package/dist/types-ts4.5/emotion/components/internal/scroll-manager.d.ts +0 -17
  269. package/dist/types-ts4.5/emotion/components/internal/use-scroll-capture.d.ts +0 -12
  270. package/dist/types-ts4.5/emotion/components/internal/use-scroll-lock.d.ts +0 -9
@@ -0,0 +1,485 @@
1
+ /* menu.tsx generated by @compiled/babel-plugin v0.36.1 */
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import _extends from "@babel/runtime/helpers/extends";
4
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
6
+ var _excluded = ["children", "innerProps", "xcss"],
7
+ _excluded2 = ["children", "innerProps", "xcss"];
8
+ import "./menu.compiled.css";
9
+ import * as React from 'react';
10
+ import { ax, ix } from "@compiled/react/runtime";
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ import { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';
14
+ import { cx } from '@compiled/react';
15
+ import { autoUpdate } from '@floating-ui/dom';
16
+ import { createPortal } from 'react-dom';
17
+ import useLayoutEffect from 'use-isomorphic-layout-effect';
18
+ import { fg } from '@atlaskit/platform-feature-flags';
19
+ import { Text } from '@atlaskit/primitives/compiled';
20
+ import { animatedScrollTo, getBoundingClientObj, getScrollParent, getScrollTop, getStyleProps, normalizedHeight, scrollTo } from '../../utils';
21
+
22
+ // ==============================
23
+ // Menu
24
+ // ==============================
25
+
26
+ // Get Menu Placement
27
+ // ------------------------------
28
+
29
+ function getMenuPlacement(_ref) {
30
+ var preferredMaxHeight = _ref.maxHeight,
31
+ menuEl = _ref.menuEl,
32
+ minHeight = _ref.minHeight,
33
+ preferredPlacement = _ref.placement,
34
+ shouldScroll = _ref.shouldScroll,
35
+ isFixedPosition = _ref.isFixedPosition,
36
+ controlHeight = _ref.controlHeight;
37
+ var scrollParent = getScrollParent(menuEl);
38
+ var defaultState = {
39
+ placement: 'bottom',
40
+ maxHeight: preferredMaxHeight
41
+ };
42
+
43
+ // something went wrong, return default state
44
+ if (!menuEl || !menuEl.offsetParent) {
45
+ return defaultState;
46
+ }
47
+
48
+ // we can't trust `scrollParent.scrollHeight` --> it may increase when
49
+ // the menu is rendered
50
+ var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),
51
+ scrollHeight = _scrollParent$getBoun.height,
52
+ scrollParentTop = _scrollParent$getBoun.top;
53
+ var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),
54
+ menuBottom = _menuEl$getBoundingCl.bottom,
55
+ menuHeight = _menuEl$getBoundingCl.height,
56
+ menuTop = _menuEl$getBoundingCl.top;
57
+ var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),
58
+ containerTop = _menuEl$offsetParent$.top;
59
+ var viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent);
60
+ var scrollTop = getScrollTop(scrollParent);
61
+ // use menuTop - scrollParentTop for the actual top space of menu in the scroll container
62
+ var menuTopFromParent = fg('design-system-select-fix-placement') ? menuTop - scrollParentTop : menuTop;
63
+ var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);
64
+ var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);
65
+ var viewSpaceAbove = containerTop - marginTop;
66
+ var viewSpaceBelow = viewHeight - menuTopFromParent;
67
+ var scrollSpaceAbove = viewSpaceAbove + scrollTop;
68
+ var scrollSpaceBelow = scrollHeight - scrollTop - menuTopFromParent;
69
+ var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;
70
+ var scrollUp = scrollTop + menuTop - marginTop;
71
+ var scrollDuration = 160;
72
+ switch (preferredPlacement) {
73
+ case 'auto':
74
+ case 'bottom':
75
+ // 1: the menu will fit, do nothing
76
+ if (viewSpaceBelow >= menuHeight) {
77
+ return {
78
+ placement: 'bottom',
79
+ maxHeight: preferredMaxHeight
80
+ };
81
+ }
82
+
83
+ // 2: the menu will fit, if scrolled
84
+ if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {
85
+ if (shouldScroll) {
86
+ animatedScrollTo(scrollParent, scrollDown, scrollDuration);
87
+ }
88
+ return {
89
+ placement: 'bottom',
90
+ maxHeight: preferredMaxHeight
91
+ };
92
+ }
93
+
94
+ // 3: the menu will fit, if constrained
95
+ if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {
96
+ if (shouldScroll) {
97
+ animatedScrollTo(scrollParent, scrollDown, scrollDuration);
98
+ }
99
+
100
+ // we want to provide as much of the menu as possible to the user,
101
+ // so give them whatever is available below rather than the minHeight.
102
+ var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;
103
+ return {
104
+ placement: 'bottom',
105
+ maxHeight: constrainedHeight
106
+ };
107
+ }
108
+
109
+ // 4. Forked beviour when there isn't enough space below
110
+
111
+ // AUTO: flip the menu, render above
112
+ if (preferredPlacement === 'auto' || isFixedPosition) {
113
+ // may need to be constrained after flipping
114
+ var _constrainedHeight = preferredMaxHeight;
115
+ var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;
116
+ if (spaceAbove >= minHeight) {
117
+ _constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight);
118
+ }
119
+ return {
120
+ placement: 'top',
121
+ maxHeight: _constrainedHeight
122
+ };
123
+ }
124
+
125
+ // BOTTOM: allow browser to increase scrollable area and immediately set scroll
126
+ if (preferredPlacement === 'bottom') {
127
+ if (shouldScroll) {
128
+ scrollTo(scrollParent, scrollDown);
129
+ }
130
+ return {
131
+ placement: 'bottom',
132
+ maxHeight: preferredMaxHeight
133
+ };
134
+ }
135
+ break;
136
+ case 'top':
137
+ // 1: the menu will fit, do nothing
138
+ if (viewSpaceAbove >= menuHeight) {
139
+ return {
140
+ placement: 'top',
141
+ maxHeight: preferredMaxHeight
142
+ };
143
+ }
144
+
145
+ // 2: the menu will fit, if scrolled
146
+ if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {
147
+ if (shouldScroll) {
148
+ animatedScrollTo(scrollParent, scrollUp, scrollDuration);
149
+ }
150
+ return {
151
+ placement: 'top',
152
+ maxHeight: preferredMaxHeight
153
+ };
154
+ }
155
+
156
+ // 3: the menu will fit, if constrained
157
+ if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
158
+ var _constrainedHeight2 = preferredMaxHeight;
159
+
160
+ // we want to provide as much of the menu as possible to the user,
161
+ // so give them whatever is available below rather than the minHeight.
162
+ if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
163
+ _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;
164
+ }
165
+ if (shouldScroll) {
166
+ animatedScrollTo(scrollParent, scrollUp, scrollDuration);
167
+ }
168
+ return {
169
+ placement: 'top',
170
+ maxHeight: _constrainedHeight2
171
+ };
172
+ }
173
+
174
+ // 4. not enough space, the browser WILL NOT increase scrollable area when
175
+ // absolutely positioned element rendered above the viewport (only below).
176
+ // Flip the menu, render below
177
+ return {
178
+ placement: 'bottom',
179
+ maxHeight: preferredMaxHeight
180
+ };
181
+ default:
182
+ throw new Error("Invalid placement provided \"".concat(preferredPlacement, "\"."));
183
+ }
184
+ return defaultState;
185
+ }
186
+
187
+ // Menu Component
188
+ // ------------------------------
189
+
190
+ var coercePlacement = function coercePlacement(p) {
191
+ return p === 'auto' ? 'bottom' : p;
192
+ };
193
+ var menuStyles = {
194
+ root: "_2rkoglpi _jqf689mz _kqswstnw _1bsb1osq _1pbykb7n _otyru2gc _19pku2gc _bfhk1bhr _16qsd0yg",
195
+ bottom: "_154i1osq",
196
+ top: "_94n51osq"
197
+ };
198
+ export var menuCSS = function menuCSS() {
199
+ return {};
200
+ };
201
+ var PortalPlacementContext = /*#__PURE__*/createContext(null);
202
+
203
+ // NOTE: internal only
204
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
205
+ export var MenuPlacer = function MenuPlacer(props) {
206
+ var children = props.children,
207
+ minMenuHeight = props.minMenuHeight,
208
+ maxMenuHeight = props.maxMenuHeight,
209
+ menuPlacement = props.menuPlacement,
210
+ menuPosition = props.menuPosition,
211
+ menuShouldScrollIntoView = props.menuShouldScrollIntoView;
212
+ var _ref2 = useContext(PortalPlacementContext) || {},
213
+ setPortalPlacement = _ref2.setPortalPlacement;
214
+ var ref = useRef(null);
215
+ var _useState = useState(maxMenuHeight),
216
+ _useState2 = _slicedToArray(_useState, 2),
217
+ maxHeight = _useState2[0],
218
+ setMaxHeight = _useState2[1];
219
+ var _useState3 = useState(null),
220
+ _useState4 = _slicedToArray(_useState3, 2),
221
+ placement = _useState4[0],
222
+ setPlacement = _useState4[1];
223
+ // The minimum height of the control
224
+ var controlHeight = 38;
225
+ useLayoutEffect(function () {
226
+ var menuEl = ref.current;
227
+ if (!menuEl) {
228
+ return;
229
+ }
230
+
231
+ // DO NOT scroll if position is fixed
232
+ var isFixedPosition = menuPosition === 'fixed';
233
+ var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;
234
+ var state = getMenuPlacement({
235
+ maxHeight: maxMenuHeight,
236
+ menuEl: menuEl,
237
+ minHeight: minMenuHeight,
238
+ placement: menuPlacement,
239
+ shouldScroll: shouldScroll,
240
+ isFixedPosition: isFixedPosition,
241
+ controlHeight: controlHeight
242
+ });
243
+ setMaxHeight(state.maxHeight);
244
+ setPlacement(state.placement);
245
+ setPortalPlacement === null || setPortalPlacement === void 0 || setPortalPlacement(state.placement);
246
+ }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]);
247
+ return children({
248
+ ref: ref,
249
+ placerProps: _objectSpread(_objectSpread({}, props), {}, {
250
+ placement: placement || coercePlacement(menuPlacement),
251
+ maxHeight: maxHeight
252
+ })
253
+ });
254
+ };
255
+ var Menu = function Menu(props) {
256
+ var children = props.children,
257
+ innerRef = props.innerRef,
258
+ innerProps = props.innerProps,
259
+ _props$placement = props.placement,
260
+ placement = _props$placement === void 0 ? 'bottom' : _props$placement,
261
+ xcss = props.xcss;
262
+ var _getStyleProps = getStyleProps(props, 'menu', {
263
+ menu: true
264
+ }),
265
+ css = _getStyleProps.css,
266
+ className = _getStyleProps.className;
267
+ return /*#__PURE__*/React.createElement("div", _extends({
268
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
269
+ className: ax([menuStyles.root, menuStyles[placement], cx(xcss, className)])
270
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
271
+ ,
272
+ style: css,
273
+ ref: innerRef
274
+ }, innerProps), children);
275
+ };
276
+
277
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
278
+ export default Menu;
279
+
280
+ // ==============================
281
+ // Menu List
282
+ // ==============================
283
+
284
+ export var menuListCSS = function menuListCSS() {
285
+ return {};
286
+ };
287
+ var menuListStyles = null;
288
+
289
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
290
+ export var MenuList = function MenuList(props) {
291
+ var children = props.children,
292
+ innerProps = props.innerProps,
293
+ innerRef = props.innerRef,
294
+ isMulti = props.isMulti,
295
+ maxHeight = props.maxHeight,
296
+ xcss = props.xcss;
297
+ var _getStyleProps2 = getStyleProps(props, 'menuList', {
298
+ 'menu-list': true,
299
+ 'menu-list--is-multi': isMulti
300
+ }),
301
+ css = _getStyleProps2.css,
302
+ className = _getStyleProps2.className;
303
+ return /*#__PURE__*/React.createElement("div", _extends({
304
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
305
+ className: ax(["_kqswh2mm _18m91wug _85i5u2gc _1q51u2gc _8am5i4x0", cx(className, xcss)])
306
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
307
+ ,
308
+ style: _objectSpread(_objectSpread({}, css), {}, {
309
+ maxHeight: maxHeight
310
+ }),
311
+ ref: innerRef
312
+ }, innerProps, {
313
+ tabIndex: -1
314
+ }), children);
315
+ };
316
+
317
+ // ==============================
318
+ // Menu Notices
319
+ // ==============================
320
+
321
+ var noticeCSS = function noticeCSS() {
322
+ return {};
323
+ };
324
+ var noticeStyles = null;
325
+ export var noOptionsMessageCSS = noticeCSS;
326
+ export var loadingMessageCSS = noticeCSS;
327
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
328
+ export var NoOptionsMessage = function NoOptionsMessage(_ref3) {
329
+ var _ref3$children = _ref3.children,
330
+ children = _ref3$children === void 0 ? 'No options' : _ref3$children,
331
+ innerProps = _ref3.innerProps,
332
+ xcss = _ref3.xcss,
333
+ restProps = _objectWithoutProperties(_ref3, _excluded);
334
+ var _getStyleProps3 = getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {
335
+ children: children,
336
+ innerProps: innerProps
337
+ }), 'noOptionsMessage', {
338
+ 'menu-notice': true,
339
+ 'menu-notice--no-options': true
340
+ }),
341
+ css = _getStyleProps3.css,
342
+ className = _getStyleProps3.className;
343
+ return /*#__PURE__*/React.createElement("div", _extends({
344
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
345
+ className: ax(["_85i5u2gc _1q51u2gc _y4tiutpp _bozgutpp _y3gn1h6o", cx(className, xcss)])
346
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
347
+ ,
348
+ style: css
349
+ // eslint-disable-next-line jsx-a11y/role-has-required-aria-props
350
+ ,
351
+ role: "option"
352
+ }, innerProps), /*#__PURE__*/React.createElement(Text, {
353
+ color: "color.text.subtle"
354
+ }, children));
355
+ };
356
+
357
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
358
+ export var LoadingMessage = function LoadingMessage(_ref4) {
359
+ var _ref4$children = _ref4.children,
360
+ children = _ref4$children === void 0 ? 'Loading...' : _ref4$children,
361
+ innerProps = _ref4.innerProps,
362
+ xcss = _ref4.xcss,
363
+ restProps = _objectWithoutProperties(_ref4, _excluded2);
364
+ var _getStyleProps4 = getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {
365
+ children: children,
366
+ innerProps: innerProps
367
+ }), 'loadingMessage', {
368
+ 'menu-notice': true,
369
+ 'menu-notice--loading': true
370
+ }),
371
+ css = _getStyleProps4.css,
372
+ className = _getStyleProps4.className;
373
+ return /*#__PURE__*/React.createElement("div", _extends({
374
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
375
+ className: ax(["_85i5u2gc _1q51u2gc _y4tiutpp _bozgutpp _y3gn1h6o", cx(className, xcss)])
376
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
377
+ ,
378
+ style: css
379
+ }, innerProps, {
380
+ // eslint-disable-next-line jsx-a11y/role-has-required-aria-props
381
+ role: "option"
382
+ }), /*#__PURE__*/React.createElement(Text, {
383
+ color: "color.text.subtle"
384
+ }, children));
385
+ };
386
+
387
+ // ==============================
388
+ // Menu Portal
389
+ // ==============================
390
+
391
+ export var menuPortalCSS = function menuPortalCSS() {
392
+ return {};
393
+ };
394
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
395
+ export var MenuPortal = function MenuPortal(props) {
396
+ var appendTo = props.appendTo,
397
+ children = props.children,
398
+ controlElement = props.controlElement,
399
+ innerProps = props.innerProps,
400
+ menuPlacement = props.menuPlacement,
401
+ menuPosition = props.menuPosition,
402
+ xcss = props.xcss;
403
+ var menuPortalRef = useRef(null);
404
+ var cleanupRef = useRef(null);
405
+ var _useState5 = useState(coercePlacement(menuPlacement)),
406
+ _useState6 = _slicedToArray(_useState5, 2),
407
+ placement = _useState6[0],
408
+ setPortalPlacement = _useState6[1];
409
+ var portalPlacementContext = useMemo(function () {
410
+ return {
411
+ setPortalPlacement: setPortalPlacement
412
+ };
413
+ }, []);
414
+ var _useState7 = useState(null),
415
+ _useState8 = _slicedToArray(_useState7, 2),
416
+ computedPosition = _useState8[0],
417
+ setComputedPosition = _useState8[1];
418
+ var updateComputedPosition = useCallback(function () {
419
+ if (!controlElement) {
420
+ return;
421
+ }
422
+ var rect = getBoundingClientObj(controlElement);
423
+ var scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset;
424
+ var offset = rect[placement] + scrollDistance;
425
+ if (offset !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset) || rect.left !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left) || rect.width !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width)) {
426
+ setComputedPosition({
427
+ offset: offset,
428
+ rect: rect
429
+ });
430
+ }
431
+ }, [controlElement, menuPosition, placement, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width]);
432
+ useLayoutEffect(function () {
433
+ updateComputedPosition();
434
+ }, [updateComputedPosition]);
435
+ var runAutoUpdate = useCallback(function () {
436
+ if (typeof cleanupRef.current === 'function') {
437
+ cleanupRef.current();
438
+ cleanupRef.current = null;
439
+ }
440
+ if (controlElement && menuPortalRef.current) {
441
+ cleanupRef.current = autoUpdate(controlElement, menuPortalRef.current, updateComputedPosition, {
442
+ elementResize: 'ResizeObserver' in window
443
+ });
444
+ }
445
+ }, [controlElement, updateComputedPosition]);
446
+ useLayoutEffect(function () {
447
+ runAutoUpdate();
448
+ }, [runAutoUpdate]);
449
+ var setMenuPortalElement = useCallback(function (menuPortalElement) {
450
+ menuPortalRef.current = menuPortalElement;
451
+ runAutoUpdate();
452
+ }, [runAutoUpdate]);
453
+
454
+ // bail early if required elements aren't present
455
+ if (!appendTo && menuPosition !== 'fixed' || !computedPosition) {
456
+ return null;
457
+ }
458
+ var _getStyleProps5 = getStyleProps(_objectSpread(_objectSpread({}, props), {}, {
459
+ offset: computedPosition.offset,
460
+ position: menuPosition,
461
+ rect: computedPosition.rect
462
+ }), 'menuPortal', {
463
+ 'menu-portal': true
464
+ }),
465
+ css = _getStyleProps5.css,
466
+ className = _getStyleProps5.className;
467
+
468
+ // same wrapper element whether fixed or portalled
469
+ var menuWrapper = /*#__PURE__*/React.createElement("div", _extends({
470
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
471
+ className: cx(className, xcss),
472
+ ref: setMenuPortalElement,
473
+ style: _objectSpread({
474
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
475
+ zIndex: 9999,
476
+ left: computedPosition.rect.left,
477
+ position: menuPosition,
478
+ top: computedPosition.offset,
479
+ width: computedPosition.rect.width
480
+ }, css)
481
+ }, innerProps), children);
482
+ return /*#__PURE__*/React.createElement(PortalPlacementContext.Provider, {
483
+ value: portalPlacementContext
484
+ }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);
485
+ };
@@ -0,0 +1,56 @@
1
+ ._11c82smr{font:var(--ds-font-body,normal 400 14px/20px ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
2
+ ._11c8dcr7{font:var(--ds-font-body-UNSAFE_small,normal 400 9pt/1pc ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
3
+ ._19itglyw{border:none}
4
+ ._2rkoglpi{border-radius:var(--ds-border-radius,4px)}
5
+ ._2rkogqwt{border-radius:var(--ds-border-radius-050,2px)}
6
+ ._2rkoiti9{border-radius:var(--ds-border-radius-100,4px)}
7
+ ._2rkovtp2{border-radius:0 2px 2px 0}
8
+ ._189ee4h9{border-width:var(--ds-border-width,1px)}
9
+ ._1dqonqa1{border-style:solid}
10
+ ._1h6d14je{border-color:#b7b9be}
11
+ ._16qs7ex6{box-shadow:0 0 0 2px var(--ds-surface,transparent),0 0 0 4px var(--ds-border-focused,transparent)}
12
+ ._18m915vq{overflow-y:hidden}
13
+ ._18u0v77o{margin-left:var(--ds-space-025,2px)}
14
+ ._19bv12x7{padding-left:var(--ds-space-075,6px)}
15
+ ._19bv1b66{padding-left:var(--ds-space-050,4px)}
16
+ ._19bvv77o{padding-left:var(--ds-space-025,2px)}
17
+ ._19pkv77o{margin-top:var(--ds-space-025,2px)}
18
+ ._1bah1h6o{justify-content:center}
19
+ ._1bto1l2s{text-overflow:ellipsis}
20
+ ._1e0c1kw7{display:inherit}
21
+ ._1e0c1txw{display:flex}
22
+ ._1e0cglyw{display:none}
23
+ ._1reo15vq{overflow-x:hidden}
24
+ ._1ul9ze3t{min-width:var(--ds-space-0,0)}
25
+ ._1wpz1h6o{align-self:center}
26
+ ._2hwxv77o{margin-right:var(--ds-space-025,2px)}
27
+ ._4cvr1h6o{align-items:center}
28
+ ._bfhk1j9a{background-color:var(--ds-background-input,#fff)}
29
+ ._bfhkb1q9{background-color:var(--ds-UNSAFE-transparent,transparent)}
30
+ ._bfhkfg4m{background-color:var(--ds-background-selected,#e9f2ff)}
31
+ ._bfhkm7j4{background-color:var(--ds-background-neutral,#091e420f)}
32
+ ._bfhksm61{background-color:var(--ds-background-neutral-subtle,#00000000)}
33
+ ._ca0qidpf{padding-top:0}
34
+ ._ca0qv77o{padding-top:var(--ds-space-025,2px)}
35
+ ._lswu1dx5{fill:var(--ds-text,#000)}
36
+ ._lswu1rrc{fill:var(--ds-text-selected,#000)}
37
+ ._n3tdidpf{padding-bottom:0}
38
+ ._n3tdv77o{padding-bottom:var(--ds-space-025,2px)}
39
+ ._o5721q9c{white-space:nowrap}
40
+ ._otyrv77o{margin-bottom:var(--ds-space-025,2px)}
41
+ ._p12f1osq{max-width:100%}
42
+ ._r06hglyw{-webkit-appearance:none;appearance:none}
43
+ ._syaz1fxt{color:var(--ds-text,#172b4d)}
44
+ ._syaz1kw7{color:inherit}
45
+ ._syaz1lh4{color:var(--ds-text-disabled,#091e424f)}
46
+ ._syaz1wum{color:var(--ds-text-selected,#333)}
47
+ ._syazjpor{color:var(--ds-text,#333)}
48
+ ._u5f3v77o{padding-right:var(--ds-space-025,2px)}
49
+ ._1ah312gs:focus-visible{outline-offset:-2px}
50
+ ._13br1jjn:hover{fill:var(--ds-text-danger,#000)}
51
+ ._irr3166n:hover{background-color:var(--ds-background-neutral-subtle-hovered,#091e420f)}
52
+ ._irr31yvi:hover{background-color:var(--ds-background-danger-hovered,#ffd5d2)}
53
+ ._1di61dty:active{background-color:var(--ds-background-neutral-subtle-pressed,#091e4224)}
54
+ ._1di61io2:active{background-color:var(--ds-background-danger-pressed,#fd9891)}
55
+ ._i5f81jjn:active{fill:var(--ds-text-danger,#000)}
56
+ @media screen and (-ms-high-contrast:active){._1aewe4h9{border-width:var(--ds-border-width,1px)}._6up51j28{border-color:transparent}._1xdnnqa1{border-style:solid}._3yq3glyw{border:none}}