@atlaskit/react-select 2.2.1 → 2.4.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 (253) hide show
  1. package/CHANGELOG.md +29 -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 +24 -399
  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/internal/scroll-manager.js +2 -0
  54. package/dist/cjs/emotion/components/live-region.js +1 -1
  55. package/dist/cjs/emotion/components/menu.js +1 -1
  56. package/dist/cjs/emotion/components/multi-value.js +1 -1
  57. package/dist/cjs/emotion/components/option.js +2 -0
  58. package/dist/cjs/emotion/components/placeholder.js +2 -0
  59. package/dist/cjs/emotion/components/single-value.js +2 -0
  60. package/dist/cjs/utils.js +2 -1
  61. package/dist/es2019/compiled/components/containers.compiled.css +26 -0
  62. package/dist/es2019/compiled/components/containers.js +115 -0
  63. package/dist/es2019/compiled/components/control.compiled.css +51 -0
  64. package/dist/es2019/compiled/components/control.js +58 -0
  65. package/dist/es2019/compiled/components/group.compiled.css +12 -0
  66. package/dist/es2019/compiled/components/group.js +72 -0
  67. package/dist/es2019/compiled/components/indicators.compiled.css +24 -0
  68. package/dist/es2019/compiled/components/indicators.js +144 -0
  69. package/dist/es2019/compiled/components/input.compiled.css +49 -0
  70. package/dist/es2019/compiled/components/input.js +59 -0
  71. package/dist/es2019/compiled/components/internal/a11y-text.compiled.css +15 -0
  72. package/dist/es2019/compiled/components/internal/a11y-text.js +11 -0
  73. package/dist/es2019/compiled/components/internal/dummy-input.compiled.css +17 -0
  74. package/dist/es2019/compiled/components/internal/dummy-input.js +19 -0
  75. package/dist/es2019/compiled/components/internal/required-input.compiled.css +8 -0
  76. package/dist/es2019/compiled/components/internal/required-input.js +23 -0
  77. package/dist/es2019/compiled/components/live-region.js +171 -0
  78. package/dist/es2019/compiled/components/menu.compiled.css +19 -0
  79. package/dist/es2019/compiled/components/menu.js +478 -0
  80. package/dist/es2019/compiled/components/multi-value.compiled.css +56 -0
  81. package/dist/es2019/compiled/components/multi-value.js +190 -0
  82. package/dist/es2019/compiled/components/option.compiled.css +22 -0
  83. package/dist/es2019/compiled/components/option.js +48 -0
  84. package/dist/es2019/compiled/components/placeholder.compiled.css +7 -0
  85. package/dist/es2019/compiled/components/placeholder.js +36 -0
  86. package/dist/es2019/compiled/components/single-value.compiled.css +13 -0
  87. package/dist/es2019/compiled/components/single-value.js +37 -0
  88. package/dist/es2019/components/containers.js +10 -87
  89. package/dist/es2019/components/control.js +8 -103
  90. package/dist/es2019/components/group.js +9 -54
  91. package/dist/es2019/components/indicators.js +11 -113
  92. package/dist/es2019/components/input.js +7 -83
  93. package/dist/es2019/components/internal/a11y-text.js +6 -26
  94. package/dist/es2019/components/internal/dummy-input.js +7 -36
  95. package/dist/es2019/components/internal/notify-open-layer-observer.js +1 -0
  96. package/dist/es2019/components/internal/required-input.js +6 -32
  97. package/dist/es2019/components/internal/scroll-manager.js +16 -16
  98. package/dist/es2019/components/live-region.js +5 -168
  99. package/dist/es2019/components/menu.js +14 -412
  100. package/dist/es2019/components/multi-value.js +12 -216
  101. package/dist/es2019/components/option.js +7 -75
  102. package/dist/es2019/components/placeholder.js +7 -25
  103. package/dist/es2019/components/single-value.js +7 -31
  104. package/dist/es2019/emotion/components/containers.js +1 -0
  105. package/dist/es2019/emotion/components/control.js +1 -0
  106. package/dist/es2019/emotion/components/group.js +1 -0
  107. package/dist/es2019/emotion/components/indicators.js +1 -0
  108. package/dist/es2019/emotion/components/input.js +1 -0
  109. package/dist/es2019/emotion/components/internal/a11y-text.js +1 -0
  110. package/dist/es2019/emotion/components/internal/dummy-input.js +1 -0
  111. package/dist/es2019/emotion/components/internal/required-input.js +1 -0
  112. package/dist/es2019/emotion/components/internal/scroll-manager.js +2 -0
  113. package/dist/es2019/emotion/components/live-region.js +2 -0
  114. package/dist/es2019/emotion/components/menu.js +2 -0
  115. package/dist/es2019/emotion/components/multi-value.js +1 -0
  116. package/dist/es2019/emotion/components/option.js +1 -0
  117. package/dist/es2019/emotion/components/placeholder.js +1 -0
  118. package/dist/es2019/emotion/components/single-value.js +1 -0
  119. package/dist/es2019/utils.js +1 -0
  120. package/dist/esm/compiled/components/containers.compiled.css +26 -0
  121. package/dist/esm/compiled/components/containers.js +110 -0
  122. package/dist/esm/compiled/components/control.compiled.css +51 -0
  123. package/dist/esm/compiled/components/control.js +57 -0
  124. package/dist/esm/compiled/components/group.compiled.css +12 -0
  125. package/dist/esm/compiled/components/group.js +71 -0
  126. package/dist/esm/compiled/components/indicators.compiled.css +24 -0
  127. package/dist/esm/compiled/components/indicators.js +148 -0
  128. package/dist/esm/compiled/components/input.compiled.css +49 -0
  129. package/dist/esm/compiled/components/input.js +59 -0
  130. package/dist/esm/compiled/components/internal/a11y-text.compiled.css +15 -0
  131. package/dist/esm/compiled/components/internal/a11y-text.js +13 -0
  132. package/dist/esm/compiled/components/internal/dummy-input.compiled.css +17 -0
  133. package/dist/esm/compiled/components/internal/dummy-input.js +20 -0
  134. package/dist/esm/compiled/components/internal/required-input.compiled.css +8 -0
  135. package/dist/esm/compiled/components/internal/required-input.js +24 -0
  136. package/dist/esm/compiled/components/live-region.js +168 -0
  137. package/dist/esm/compiled/components/menu.compiled.css +19 -0
  138. package/dist/esm/compiled/components/menu.js +485 -0
  139. package/dist/esm/compiled/components/multi-value.compiled.css +56 -0
  140. package/dist/esm/compiled/components/multi-value.js +187 -0
  141. package/dist/esm/compiled/components/option.compiled.css +22 -0
  142. package/dist/esm/compiled/components/option.js +47 -0
  143. package/dist/esm/compiled/components/placeholder.compiled.css +7 -0
  144. package/dist/esm/compiled/components/placeholder.js +35 -0
  145. package/dist/esm/compiled/components/single-value.compiled.css +13 -0
  146. package/dist/esm/compiled/components/single-value.js +36 -0
  147. package/dist/esm/components/containers.js +12 -73
  148. package/dist/esm/components/control.js +8 -97
  149. package/dist/esm/components/group.js +11 -54
  150. package/dist/esm/components/indicators.js +15 -109
  151. package/dist/esm/components/input.js +8 -83
  152. package/dist/esm/components/internal/a11y-text.js +6 -26
  153. package/dist/esm/components/internal/dummy-input.js +7 -37
  154. package/dist/esm/components/internal/notify-open-layer-observer.js +1 -0
  155. package/dist/esm/components/internal/required-input.js +7 -32
  156. package/dist/esm/components/internal/scroll-manager.js +16 -16
  157. package/dist/esm/components/live-region.js +5 -163
  158. package/dist/esm/components/menu.js +21 -401
  159. package/dist/esm/components/multi-value.js +17 -199
  160. package/dist/esm/components/option.js +8 -69
  161. package/dist/esm/components/placeholder.js +8 -21
  162. package/dist/esm/components/single-value.js +8 -27
  163. package/dist/esm/emotion/components/containers.js +1 -0
  164. package/dist/esm/emotion/components/control.js +1 -0
  165. package/dist/esm/emotion/components/group.js +1 -0
  166. package/dist/esm/emotion/components/indicators.js +1 -0
  167. package/dist/esm/emotion/components/input.js +1 -0
  168. package/dist/esm/emotion/components/internal/a11y-text.js +1 -0
  169. package/dist/esm/emotion/components/internal/dummy-input.js +1 -0
  170. package/dist/esm/emotion/components/internal/required-input.js +1 -0
  171. package/dist/esm/emotion/components/internal/scroll-manager.js +2 -0
  172. package/dist/esm/emotion/components/live-region.js +2 -0
  173. package/dist/esm/emotion/components/menu.js +2 -0
  174. package/dist/esm/emotion/components/multi-value.js +1 -0
  175. package/dist/esm/emotion/components/option.js +1 -0
  176. package/dist/esm/emotion/components/placeholder.js +1 -0
  177. package/dist/esm/emotion/components/single-value.js +1 -0
  178. package/dist/esm/utils.js +2 -1
  179. package/dist/types/compiled/components/containers.d.ts +53 -0
  180. package/dist/types/compiled/components/control.d.ts +41 -0
  181. package/dist/types/compiled/components/group.d.ts +54 -0
  182. package/dist/types/compiled/components/indicators.d.ts +72 -0
  183. package/dist/types/compiled/components/input.d.ts +36 -0
  184. package/dist/types/compiled/components/internal/a11y-text.d.ts +3 -0
  185. package/dist/types/compiled/components/internal/dummy-input.d.ts +8 -0
  186. package/dist/types/compiled/components/internal/required-input.d.ts +10 -0
  187. package/dist/types/compiled/components/live-region.d.ts +19 -0
  188. package/dist/types/compiled/components/menu.d.ts +115 -0
  189. package/dist/types/compiled/components/multi-value.d.ts +57 -0
  190. package/dist/types/compiled/components/option.d.ts +48 -0
  191. package/dist/types/compiled/components/placeholder.d.ts +21 -0
  192. package/dist/types/compiled/components/single-value.d.ts +27 -0
  193. package/dist/types/components/containers.d.ts +6 -11
  194. package/dist/types/components/control.d.ts +4 -9
  195. package/dist/types/components/group.d.ts +8 -10
  196. package/dist/types/components/index.d.ts +21 -21
  197. package/dist/types/components/indicators.d.ts +7 -12
  198. package/dist/types/components/input.d.ts +3 -8
  199. package/dist/types/components/internal/a11y-text.d.ts +2 -7
  200. package/dist/types/components/internal/dummy-input.d.ts +3 -8
  201. package/dist/types/components/internal/required-input.d.ts +0 -4
  202. package/dist/types/components/internal/scroll-manager.d.ts +2 -7
  203. package/dist/types/components/live-region.d.ts +2 -8
  204. package/dist/types/components/menu.d.ts +10 -15
  205. package/dist/types/components/multi-value.d.ts +19 -13
  206. package/dist/types/components/option.d.ts +3 -8
  207. package/dist/types/components/placeholder.d.ts +3 -8
  208. package/dist/types/components/single-value.d.ts +3 -8
  209. package/dist/types/select.d.ts +21 -21
  210. package/dist/types/types.d.ts +3 -0
  211. package/dist/types-ts4.5/compiled/components/containers.d.ts +53 -0
  212. package/dist/types-ts4.5/compiled/components/control.d.ts +41 -0
  213. package/dist/types-ts4.5/compiled/components/group.d.ts +54 -0
  214. package/dist/types-ts4.5/compiled/components/indicators.d.ts +72 -0
  215. package/dist/types-ts4.5/compiled/components/input.d.ts +36 -0
  216. package/dist/types-ts4.5/compiled/components/internal/a11y-text.d.ts +3 -0
  217. package/dist/types-ts4.5/compiled/components/internal/dummy-input.d.ts +8 -0
  218. package/dist/types-ts4.5/compiled/components/internal/required-input.d.ts +10 -0
  219. package/dist/types-ts4.5/compiled/components/live-region.d.ts +19 -0
  220. package/dist/types-ts4.5/compiled/components/menu.d.ts +115 -0
  221. package/dist/types-ts4.5/compiled/components/multi-value.d.ts +57 -0
  222. package/dist/types-ts4.5/compiled/components/option.d.ts +48 -0
  223. package/dist/types-ts4.5/compiled/components/placeholder.d.ts +21 -0
  224. package/dist/types-ts4.5/compiled/components/single-value.d.ts +27 -0
  225. package/dist/types-ts4.5/components/containers.d.ts +6 -11
  226. package/dist/types-ts4.5/components/control.d.ts +4 -9
  227. package/dist/types-ts4.5/components/group.d.ts +8 -10
  228. package/dist/types-ts4.5/components/index.d.ts +21 -21
  229. package/dist/types-ts4.5/components/indicators.d.ts +7 -12
  230. package/dist/types-ts4.5/components/input.d.ts +3 -8
  231. package/dist/types-ts4.5/components/internal/a11y-text.d.ts +2 -7
  232. package/dist/types-ts4.5/components/internal/dummy-input.d.ts +3 -8
  233. package/dist/types-ts4.5/components/internal/required-input.d.ts +0 -4
  234. package/dist/types-ts4.5/components/internal/scroll-manager.d.ts +2 -7
  235. package/dist/types-ts4.5/components/live-region.d.ts +2 -8
  236. package/dist/types-ts4.5/components/menu.d.ts +10 -15
  237. package/dist/types-ts4.5/components/multi-value.d.ts +19 -13
  238. package/dist/types-ts4.5/components/option.d.ts +3 -8
  239. package/dist/types-ts4.5/components/placeholder.d.ts +3 -8
  240. package/dist/types-ts4.5/components/single-value.d.ts +3 -8
  241. package/dist/types-ts4.5/select.d.ts +21 -21
  242. package/dist/types-ts4.5/types.d.ts +3 -0
  243. package/package.json +11 -3
  244. package/dist/cjs/emotion/components/index.js +0 -52
  245. package/dist/cjs/emotion/components/internal/notify-open-layer-observer.js +0 -21
  246. package/dist/es2019/emotion/components/index.js +0 -41
  247. package/dist/es2019/emotion/components/internal/notify-open-layer-observer.js +0 -16
  248. package/dist/esm/emotion/components/index.js +0 -43
  249. package/dist/esm/emotion/components/internal/notify-open-layer-observer.js +0 -15
  250. package/dist/types/emotion/components/index.d.ts +0 -67
  251. package/dist/types/emotion/components/internal/notify-open-layer-observer.d.ts +0 -11
  252. package/dist/types-ts4.5/emotion/components/index.d.ts +0 -67
  253. package/dist/types-ts4.5/emotion/components/internal/notify-open-layer-observer.d.ts +0 -11
@@ -1,272 +1,24 @@
1
- import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
1
  import _objectDestructuringEmpty from "@babel/runtime/helpers/objectDestructuringEmpty";
3
- import _extends from "@babel/runtime/helpers/extends";
4
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
6
- var _excluded = ["children", "innerProps"],
7
- _excluded2 = ["children", "innerProps"];
8
- 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; }
9
- 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; }
10
- /**
11
- * @jsxRuntime classic
12
- * @jsx jsx
13
- */
14
- import { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';
15
- import { jsx } from '@emotion/react';
16
- import { autoUpdate } from '@floating-ui/dom';
17
- import { createPortal } from 'react-dom';
18
- import useLayoutEffect from 'use-isomorphic-layout-effect';
2
+ /* eslint-disable @repo/internal/react/no-unsafe-spread-props */
3
+ import React from 'react';
19
4
  import { fg } from '@atlaskit/platform-feature-flags';
20
- import { Text } from '@atlaskit/primitives';
21
- import { animatedScrollTo, getBoundingClientObj, getScrollParent, getScrollTop, getStyleProps, normalizedHeight, scrollTo } from '../utils';
22
-
23
- // ==============================
24
- // Menu
25
- // ==============================
26
-
27
- // Get Menu Placement
28
- // ------------------------------
29
-
30
- function getMenuPlacement(_ref) {
31
- var preferredMaxHeight = _ref.maxHeight,
32
- menuEl = _ref.menuEl,
33
- minHeight = _ref.minHeight,
34
- preferredPlacement = _ref.placement,
35
- shouldScroll = _ref.shouldScroll,
36
- isFixedPosition = _ref.isFixedPosition,
37
- controlHeight = _ref.controlHeight;
38
- var scrollParent = getScrollParent(menuEl);
39
- var defaultState = {
40
- placement: 'bottom',
41
- maxHeight: preferredMaxHeight
42
- };
43
-
44
- // something went wrong, return default state
45
- if (!menuEl || !menuEl.offsetParent) {
46
- return defaultState;
47
- }
48
-
49
- // we can't trust `scrollParent.scrollHeight` --> it may increase when
50
- // the menu is rendered
51
- var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),
52
- scrollHeight = _scrollParent$getBoun.height,
53
- scrollParentTop = _scrollParent$getBoun.top;
54
- var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),
55
- menuBottom = _menuEl$getBoundingCl.bottom,
56
- menuHeight = _menuEl$getBoundingCl.height,
57
- menuTop = _menuEl$getBoundingCl.top;
58
- var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),
59
- containerTop = _menuEl$offsetParent$.top;
60
- var viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent);
61
- var scrollTop = getScrollTop(scrollParent);
62
- // use menuTop - scrollParentTop for the actual top space of menu in the scroll container
63
- var menuTopFromParent = fg('design-system-select-fix-placement') ? menuTop - scrollParentTop : menuTop;
64
- var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);
65
- var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);
66
- var viewSpaceAbove = containerTop - marginTop;
67
- var viewSpaceBelow = viewHeight - menuTopFromParent;
68
- var scrollSpaceAbove = viewSpaceAbove + scrollTop;
69
- var scrollSpaceBelow = scrollHeight - scrollTop - menuTopFromParent;
70
- var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;
71
- var scrollUp = scrollTop + menuTop - marginTop;
72
- var scrollDuration = 160;
73
- switch (preferredPlacement) {
74
- case 'auto':
75
- case 'bottom':
76
- // 1: the menu will fit, do nothing
77
- if (viewSpaceBelow >= menuHeight) {
78
- return {
79
- placement: 'bottom',
80
- maxHeight: preferredMaxHeight
81
- };
82
- }
83
-
84
- // 2: the menu will fit, if scrolled
85
- if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {
86
- if (shouldScroll) {
87
- animatedScrollTo(scrollParent, scrollDown, scrollDuration);
88
- }
89
- return {
90
- placement: 'bottom',
91
- maxHeight: preferredMaxHeight
92
- };
93
- }
94
-
95
- // 3: the menu will fit, if constrained
96
- if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {
97
- if (shouldScroll) {
98
- animatedScrollTo(scrollParent, scrollDown, scrollDuration);
99
- }
100
-
101
- // we want to provide as much of the menu as possible to the user,
102
- // so give them whatever is available below rather than the minHeight.
103
- var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;
104
- return {
105
- placement: 'bottom',
106
- maxHeight: constrainedHeight
107
- };
108
- }
109
-
110
- // 4. Forked beviour when there isn't enough space below
111
-
112
- // AUTO: flip the menu, render above
113
- if (preferredPlacement === 'auto' || isFixedPosition) {
114
- // may need to be constrained after flipping
115
- var _constrainedHeight = preferredMaxHeight;
116
- var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;
117
- if (spaceAbove >= minHeight) {
118
- _constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight);
119
- }
120
- return {
121
- placement: 'top',
122
- maxHeight: _constrainedHeight
123
- };
124
- }
125
-
126
- // BOTTOM: allow browser to increase scrollable area and immediately set scroll
127
- if (preferredPlacement === 'bottom') {
128
- if (shouldScroll) {
129
- scrollTo(scrollParent, scrollDown);
130
- }
131
- return {
132
- placement: 'bottom',
133
- maxHeight: preferredMaxHeight
134
- };
135
- }
136
- break;
137
- case 'top':
138
- // 1: the menu will fit, do nothing
139
- if (viewSpaceAbove >= menuHeight) {
140
- return {
141
- placement: 'top',
142
- maxHeight: preferredMaxHeight
143
- };
144
- }
145
-
146
- // 2: the menu will fit, if scrolled
147
- if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {
148
- if (shouldScroll) {
149
- animatedScrollTo(scrollParent, scrollUp, scrollDuration);
150
- }
151
- return {
152
- placement: 'top',
153
- maxHeight: preferredMaxHeight
154
- };
155
- }
156
-
157
- // 3: the menu will fit, if constrained
158
- if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
159
- var _constrainedHeight2 = preferredMaxHeight;
160
-
161
- // we want to provide as much of the menu as possible to the user,
162
- // so give them whatever is available below rather than the minHeight.
163
- if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
164
- _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;
165
- }
166
- if (shouldScroll) {
167
- animatedScrollTo(scrollParent, scrollUp, scrollDuration);
168
- }
169
- return {
170
- placement: 'top',
171
- maxHeight: _constrainedHeight2
172
- };
173
- }
174
-
175
- // 4. not enough space, the browser WILL NOT increase scrollable area when
176
- // absolutely positioned element rendered above the viewport (only below).
177
- // Flip the menu, render below
178
- return {
179
- placement: 'bottom',
180
- maxHeight: preferredMaxHeight
181
- };
182
- default:
183
- throw new Error("Invalid placement provided \"".concat(preferredPlacement, "\"."));
184
- }
185
- return defaultState;
186
- }
5
+ import Compiled, { LoadingMessage as CompiledLoadingMessage, menuCSS as compiledMenuCSS, MenuList as CompiledMenuList, menuListCSS as compiledMenuListCSS, MenuPlacer as CompiledMenuPlacer, MenuPortal as CompiledMenuPortal, menuPortalCSS as compiledMenuPortalCSS, NoOptionsMessage as CompiledNoOptionsMessage } from '../compiled/components/menu';
6
+ import Emotion, { LoadingMessage as EmotionLoadingMessage, menuCSS as emotionMenuCSS, MenuList as EmotionMenuList, menuListCSS as emotionMenuListCSS, MenuPlacer as EmotionMenuPlacer, MenuPortal as EmotionMenuPortal, menuPortalCSS as emotionMenuPortalCSS, NoOptionsMessage as EmotionNoOptionsMessage } from '../emotion/components/menu';
187
7
 
188
8
  // Menu Component
189
9
  // ------------------------------
190
10
 
191
- function alignToControl(placement) {
192
- var placementToCSSProp = {
193
- bottom: 'top',
194
- top: 'bottom'
195
- };
196
- return placement ? placementToCSSProp[placement] : 'bottom';
197
- }
198
- var coercePlacement = function coercePlacement(p) {
199
- return p === 'auto' ? 'bottom' : p;
200
- };
201
- export var menuCSS = function menuCSS(_ref2) {
202
- var placement = _ref2.placement;
203
- return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
204
- label: 'menu'
205
- }, alignToControl(placement), '100%'), "position", 'absolute'), "width", '100%'), "zIndex", 1), "borderRadius", "var(--ds-border-radius, 4px)"), "marginBottom", "var(--ds-space-100, 8px)"), "marginTop", "var(--ds-space-100, 8px)"), "backgroundColor", "var(--ds-surface-overlay, white)"), "boxShadow", "var(--ds-shadow-overlay, 0 0 0 1px hsl(0deg 0% 0% / 10%), 0 4px 11px hsl(0deg 0% 0% / 10%))");
11
+ export var menuCSS = function menuCSS(props) {
12
+ return fg('compiled-react-select') ? compiledMenuCSS() : emotionMenuCSS(props);
206
13
  };
207
- var PortalPlacementContext = /*#__PURE__*/createContext(null);
208
14
 
209
15
  // NOTE: internal only
210
16
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
211
17
  export var MenuPlacer = function MenuPlacer(props) {
212
- var children = props.children,
213
- minMenuHeight = props.minMenuHeight,
214
- maxMenuHeight = props.maxMenuHeight,
215
- menuPlacement = props.menuPlacement,
216
- menuPosition = props.menuPosition,
217
- menuShouldScrollIntoView = props.menuShouldScrollIntoView;
218
- var _ref4 = useContext(PortalPlacementContext) || {},
219
- setPortalPlacement = _ref4.setPortalPlacement;
220
- var ref = useRef(null);
221
- var _useState = useState(maxMenuHeight),
222
- _useState2 = _slicedToArray(_useState, 2),
223
- maxHeight = _useState2[0],
224
- setMaxHeight = _useState2[1];
225
- var _useState3 = useState(null),
226
- _useState4 = _slicedToArray(_useState3, 2),
227
- placement = _useState4[0],
228
- setPlacement = _useState4[1];
229
- // The minimum height of the control
230
- var controlHeight = 38;
231
- useLayoutEffect(function () {
232
- var menuEl = ref.current;
233
- if (!menuEl) {
234
- return;
235
- }
236
-
237
- // DO NOT scroll if position is fixed
238
- var isFixedPosition = menuPosition === 'fixed';
239
- var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;
240
- var state = getMenuPlacement({
241
- maxHeight: maxMenuHeight,
242
- menuEl: menuEl,
243
- minHeight: minMenuHeight,
244
- placement: menuPlacement,
245
- shouldScroll: shouldScroll,
246
- isFixedPosition: isFixedPosition,
247
- controlHeight: controlHeight
248
- });
249
- setMaxHeight(state.maxHeight);
250
- setPlacement(state.placement);
251
- setPortalPlacement === null || setPortalPlacement === void 0 || setPortalPlacement(state.placement);
252
- }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]);
253
- return children({
254
- ref: ref,
255
- placerProps: _objectSpread(_objectSpread({}, props), {}, {
256
- placement: placement || coercePlacement(menuPlacement),
257
- maxHeight: maxHeight
258
- })
259
- });
18
+ return fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledMenuPlacer, props) : /*#__PURE__*/React.createElement(EmotionMenuPlacer, props);
260
19
  };
261
20
  var Menu = function Menu(props) {
262
- var children = props.children,
263
- innerRef = props.innerRef,
264
- innerProps = props.innerProps;
265
- return jsx("div", _extends({}, getStyleProps(props, 'menu', {
266
- menu: true
267
- }), {
268
- ref: innerRef
269
- }, innerProps), children);
21
+ return fg('compiled-react-select') ? /*#__PURE__*/React.createElement(Compiled, props) : /*#__PURE__*/React.createElement(Emotion, props);
270
22
  };
271
23
 
272
24
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
@@ -276,41 +28,21 @@ export default Menu;
276
28
  // Menu List
277
29
  // ==============================
278
30
 
279
- export var menuListCSS = function menuListCSS(_ref5) {
280
- var maxHeight = _ref5.maxHeight;
281
- return {
282
- maxHeight: maxHeight,
283
- overflowY: 'auto',
284
- position: 'relative',
285
- // required for offset[Height, Top] > keyboard scroll
286
- WebkitOverflowScrolling: 'touch',
287
- paddingTop: "var(--ds-space-100, 8px)",
288
- paddingBottom: "var(--ds-space-100, 8px)"
289
- };
31
+ export var menuListCSS = function menuListCSS(props) {
32
+ return fg('compiled-react-select') ? compiledMenuListCSS() : emotionMenuListCSS(props);
290
33
  };
291
34
 
292
35
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
293
36
  export var MenuList = function MenuList(props) {
294
- var children = props.children,
295
- innerProps = props.innerProps,
296
- innerRef = props.innerRef,
297
- isMulti = props.isMulti;
298
- return jsx("div", _extends({}, getStyleProps(props, 'menuList', {
299
- 'menu-list': true,
300
- 'menu-list--is-multi': isMulti
301
- }), {
302
- ref: innerRef
303
- }, innerProps, {
304
- tabIndex: -1
305
- }), children);
37
+ return fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledMenuList, props) : /*#__PURE__*/React.createElement(EmotionMenuList, props);
306
38
  };
307
39
 
308
40
  // ==============================
309
41
  // Menu Notices
310
42
  // ==============================
311
43
 
312
- var noticeCSS = function noticeCSS(_ref6) {
313
- _objectDestructuringEmpty(_ref6);
44
+ var noticeCSS = function noticeCSS(_ref) {
45
+ _objectDestructuringEmpty(_ref);
314
46
  return {
315
47
  textAlign: 'center',
316
48
  padding: "var(--ds-space-100, 8px)".concat(" ", "var(--ds-space-150, 12px)")
@@ -319,136 +51,24 @@ var noticeCSS = function noticeCSS(_ref6) {
319
51
  export var noOptionsMessageCSS = noticeCSS;
320
52
  export var loadingMessageCSS = noticeCSS;
321
53
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
322
- export var NoOptionsMessage = function NoOptionsMessage(_ref7) {
323
- var _ref7$children = _ref7.children,
324
- children = _ref7$children === void 0 ? 'No options' : _ref7$children,
325
- innerProps = _ref7.innerProps,
326
- restProps = _objectWithoutProperties(_ref7, _excluded);
327
- return jsx("div", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {
328
- children: children,
329
- innerProps: innerProps
330
- }), 'noOptionsMessage', {
331
- 'menu-notice': true,
332
- 'menu-notice--no-options': true
333
- }), {
334
- // eslint-disable-next-line jsx-a11y/role-has-required-aria-props
335
- role: "option"
336
- }, innerProps), jsx(Text, {
337
- color: "color.text.subtle"
338
- }, children));
54
+ export var NoOptionsMessage = function NoOptionsMessage(props) {
55
+ return fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledNoOptionsMessage, props) : /*#__PURE__*/React.createElement(EmotionNoOptionsMessage, props);
339
56
  };
340
57
 
341
58
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
342
- export var LoadingMessage = function LoadingMessage(_ref8) {
343
- var _ref8$children = _ref8.children,
344
- children = _ref8$children === void 0 ? 'Loading...' : _ref8$children,
345
- innerProps = _ref8.innerProps,
346
- restProps = _objectWithoutProperties(_ref8, _excluded2);
347
- return jsx("div", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {
348
- children: children,
349
- innerProps: innerProps
350
- }), 'loadingMessage', {
351
- 'menu-notice': true,
352
- 'menu-notice--loading': true
353
- }), innerProps, {
354
- // eslint-disable-next-line jsx-a11y/role-has-required-aria-props
355
- role: "option"
356
- }), jsx(Text, {
357
- color: "color.text.subtle"
358
- }, children));
59
+ export var LoadingMessage = function LoadingMessage(props) {
60
+ return fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledLoadingMessage, props) : /*#__PURE__*/React.createElement(EmotionLoadingMessage, props);
359
61
  };
360
62
 
361
63
  // ==============================
362
64
  // Menu Portal
363
65
  // ==============================
364
66
 
365
- export var menuPortalCSS = function menuPortalCSS(_ref9) {
366
- var rect = _ref9.rect,
367
- offset = _ref9.offset,
368
- position = _ref9.position;
369
- return {
370
- left: rect.left,
371
- position: position,
372
- top: offset,
373
- width: rect.width,
374
- zIndex: 1
375
- };
67
+ export var menuPortalCSS = function menuPortalCSS(props) {
68
+ return fg('compiled-react-select') ? compiledMenuPortalCSS() : emotionMenuPortalCSS(props);
376
69
  };
70
+
377
71
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
378
72
  export var MenuPortal = function MenuPortal(props) {
379
- var appendTo = props.appendTo,
380
- children = props.children,
381
- controlElement = props.controlElement,
382
- innerProps = props.innerProps,
383
- menuPlacement = props.menuPlacement,
384
- menuPosition = props.menuPosition;
385
- var menuPortalRef = useRef(null);
386
- var cleanupRef = useRef(null);
387
- var _useState5 = useState(coercePlacement(menuPlacement)),
388
- _useState6 = _slicedToArray(_useState5, 2),
389
- placement = _useState6[0],
390
- setPortalPlacement = _useState6[1];
391
- var portalPlacementContext = useMemo(function () {
392
- return {
393
- setPortalPlacement: setPortalPlacement
394
- };
395
- }, []);
396
- var _useState7 = useState(null),
397
- _useState8 = _slicedToArray(_useState7, 2),
398
- computedPosition = _useState8[0],
399
- setComputedPosition = _useState8[1];
400
- var updateComputedPosition = useCallback(function () {
401
- if (!controlElement) {
402
- return;
403
- }
404
- var rect = getBoundingClientObj(controlElement);
405
- var scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset;
406
- var offset = rect[placement] + scrollDistance;
407
- 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)) {
408
- setComputedPosition({
409
- offset: offset,
410
- rect: rect
411
- });
412
- }
413
- }, [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]);
414
- useLayoutEffect(function () {
415
- updateComputedPosition();
416
- }, [updateComputedPosition]);
417
- var runAutoUpdate = useCallback(function () {
418
- if (typeof cleanupRef.current === 'function') {
419
- cleanupRef.current();
420
- cleanupRef.current = null;
421
- }
422
- if (controlElement && menuPortalRef.current) {
423
- cleanupRef.current = autoUpdate(controlElement, menuPortalRef.current, updateComputedPosition, {
424
- elementResize: 'ResizeObserver' in window
425
- });
426
- }
427
- }, [controlElement, updateComputedPosition]);
428
- useLayoutEffect(function () {
429
- runAutoUpdate();
430
- }, [runAutoUpdate]);
431
- var setMenuPortalElement = useCallback(function (menuPortalElement) {
432
- menuPortalRef.current = menuPortalElement;
433
- runAutoUpdate();
434
- }, [runAutoUpdate]);
435
-
436
- // bail early if required elements aren't present
437
- if (!appendTo && menuPosition !== 'fixed' || !computedPosition) {
438
- return null;
439
- }
440
-
441
- // same wrapper element whether fixed or portalled
442
- var menuWrapper = jsx("div", _extends({
443
- ref: setMenuPortalElement
444
- }, getStyleProps(_objectSpread(_objectSpread({}, props), {}, {
445
- offset: computedPosition.offset,
446
- position: menuPosition,
447
- rect: computedPosition.rect
448
- }), 'menuPortal', {
449
- 'menu-portal': true
450
- }), innerProps), children);
451
- return jsx(PortalPlacementContext.Provider, {
452
- value: portalPlacementContext
453
- }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);
73
+ return fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledMenuPortal, props) : /*#__PURE__*/React.createElement(EmotionMenuPortal, props);
454
74
  };