@atlaskit/react-select 2.7.6 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/cjs/components/containers.compiled.css +26 -0
  3. package/dist/cjs/components/containers.js +80 -13
  4. package/dist/cjs/components/control.js +50 -9
  5. package/dist/cjs/components/group.js +60 -12
  6. package/dist/cjs/components/indicators.js +128 -15
  7. package/dist/cjs/components/input.js +50 -9
  8. package/dist/cjs/components/internal/a11y-text.js +14 -7
  9. package/dist/cjs/components/internal/dummy-input.js +21 -7
  10. package/dist/cjs/components/internal/required-input.js +24 -8
  11. package/dist/cjs/components/live-region.js +101 -7
  12. package/dist/cjs/components/menu.js +436 -27
  13. package/dist/cjs/components/multi-value.js +148 -22
  14. package/dist/cjs/components/option.js +41 -9
  15. package/dist/cjs/components/placeholder.js +29 -9
  16. package/dist/cjs/components/single-value.js +30 -9
  17. package/dist/cjs/select.js +1 -1
  18. package/dist/es2019/components/containers.compiled.css +26 -0
  19. package/dist/es2019/components/containers.js +93 -10
  20. package/dist/es2019/components/control.js +54 -8
  21. package/dist/es2019/components/group.js +67 -9
  22. package/dist/es2019/components/indicators.js +131 -11
  23. package/dist/es2019/components/input.js +53 -7
  24. package/dist/es2019/components/internal/a11y-text.js +12 -6
  25. package/dist/es2019/components/internal/dummy-input.js +19 -7
  26. package/dist/es2019/components/internal/required-input.js +22 -6
  27. package/dist/es2019/components/live-region.js +104 -6
  28. package/dist/es2019/components/menu.js +444 -19
  29. package/dist/es2019/components/multi-value.js +157 -15
  30. package/dist/es2019/components/option.js +45 -7
  31. package/dist/es2019/components/placeholder.js +33 -7
  32. package/dist/es2019/components/single-value.js +34 -7
  33. package/dist/es2019/select.js +1 -1
  34. package/dist/esm/components/containers.compiled.css +26 -0
  35. package/dist/esm/components/containers.js +78 -12
  36. package/dist/esm/components/control.js +51 -8
  37. package/dist/esm/components/group.js +60 -11
  38. package/dist/esm/components/indicators.js +127 -15
  39. package/dist/esm/components/input.js +50 -8
  40. package/dist/esm/components/internal/a11y-text.js +12 -6
  41. package/dist/esm/components/internal/dummy-input.js +20 -7
  42. package/dist/esm/components/internal/required-input.js +22 -7
  43. package/dist/esm/components/live-region.js +99 -6
  44. package/dist/esm/components/menu.js +437 -27
  45. package/dist/esm/components/multi-value.js +148 -21
  46. package/dist/esm/components/option.js +41 -8
  47. package/dist/esm/components/placeholder.js +29 -8
  48. package/dist/esm/components/single-value.js +30 -8
  49. package/dist/esm/select.js +1 -1
  50. package/dist/types/components/containers.d.ts +12 -8
  51. package/dist/types/components/control.d.ts +7 -3
  52. package/dist/types/components/group.d.ts +10 -6
  53. package/dist/types/components/index.d.ts +21 -21
  54. package/dist/types/components/indicators.d.ts +12 -8
  55. package/dist/types/components/input.d.ts +8 -4
  56. package/dist/types/components/internal/a11y-text.d.ts +2 -2
  57. package/dist/types/components/internal/dummy-input.d.ts +7 -3
  58. package/dist/types/components/internal/required-input.d.ts +4 -0
  59. package/dist/types/components/live-region.d.ts +0 -2
  60. package/dist/types/components/menu.d.ts +17 -13
  61. package/dist/types/components/multi-value.d.ts +13 -9
  62. package/dist/types/components/option.d.ts +8 -4
  63. package/dist/types/components/placeholder.d.ts +8 -4
  64. package/dist/types/components/single-value.d.ts +8 -4
  65. package/dist/types/select.d.ts +23 -25
  66. package/dist/types-ts4.5/components/containers.d.ts +12 -8
  67. package/dist/types-ts4.5/components/control.d.ts +7 -3
  68. package/dist/types-ts4.5/components/group.d.ts +10 -6
  69. package/dist/types-ts4.5/components/index.d.ts +21 -21
  70. package/dist/types-ts4.5/components/indicators.d.ts +12 -8
  71. package/dist/types-ts4.5/components/input.d.ts +8 -4
  72. package/dist/types-ts4.5/components/internal/a11y-text.d.ts +2 -2
  73. package/dist/types-ts4.5/components/internal/dummy-input.d.ts +7 -3
  74. package/dist/types-ts4.5/components/internal/required-input.d.ts +4 -0
  75. package/dist/types-ts4.5/components/live-region.d.ts +0 -2
  76. package/dist/types-ts4.5/components/menu.d.ts +17 -13
  77. package/dist/types-ts4.5/components/multi-value.d.ts +13 -9
  78. package/dist/types-ts4.5/components/option.d.ts +8 -4
  79. package/dist/types-ts4.5/components/placeholder.d.ts +8 -4
  80. package/dist/types-ts4.5/components/single-value.d.ts +8 -4
  81. package/dist/types-ts4.5/select.d.ts +23 -25
  82. package/package.json +3 -3
  83. package/dist/cjs/compiled/components/control.js +0 -65
  84. package/dist/cjs/compiled/components/group.js +0 -80
  85. package/dist/cjs/compiled/components/indicators.js +0 -158
  86. package/dist/cjs/compiled/components/input.js +0 -65
  87. package/dist/cjs/compiled/components/internal/a11y-text.js +0 -24
  88. package/dist/cjs/compiled/components/internal/dummy-input.js +0 -30
  89. package/dist/cjs/compiled/components/internal/required-input.js +0 -35
  90. package/dist/cjs/compiled/components/live-region.js +0 -117
  91. package/dist/cjs/compiled/components/menu.js +0 -489
  92. package/dist/cjs/compiled/components/multi-value.js +0 -173
  93. package/dist/cjs/compiled/components/option.js +0 -56
  94. package/dist/cjs/compiled/components/placeholder.js +0 -44
  95. package/dist/cjs/compiled/components/single-value.js +0 -45
  96. package/dist/cjs/emotion/components/containers.js +0 -117
  97. package/dist/cjs/emotion/components/control.js +0 -112
  98. package/dist/cjs/emotion/components/group.js +0 -72
  99. package/dist/cjs/emotion/components/indicators.js +0 -140
  100. package/dist/cjs/emotion/components/input.js +0 -94
  101. package/dist/cjs/emotion/components/internal/a11y-text.js +0 -37
  102. package/dist/cjs/emotion/components/internal/dummy-input.js +0 -45
  103. package/dist/cjs/emotion/components/internal/index.js +0 -34
  104. package/dist/cjs/emotion/components/internal/required-input.js +0 -45
  105. package/dist/cjs/emotion/components/internal/scroll-manager.js +0 -59
  106. package/dist/cjs/emotion/components/internal/use-scroll-capture.js +0 -132
  107. package/dist/cjs/emotion/components/internal/use-scroll-lock.js +0 -149
  108. package/dist/cjs/emotion/components/live-region.js +0 -120
  109. package/dist/cjs/emotion/components/menu.js +0 -456
  110. package/dist/cjs/emotion/components/multi-value.js +0 -199
  111. package/dist/cjs/emotion/components/option.js +0 -84
  112. package/dist/cjs/emotion/components/placeholder.js +0 -36
  113. package/dist/cjs/emotion/components/single-value.js +0 -42
  114. package/dist/es2019/compiled/components/control.js +0 -58
  115. package/dist/es2019/compiled/components/group.js +0 -72
  116. package/dist/es2019/compiled/components/indicators.js +0 -146
  117. package/dist/es2019/compiled/components/input.js +0 -56
  118. package/dist/es2019/compiled/components/internal/a11y-text.js +0 -13
  119. package/dist/es2019/compiled/components/internal/dummy-input.js +0 -20
  120. package/dist/es2019/compiled/components/internal/required-input.js +0 -25
  121. package/dist/es2019/compiled/components/live-region.js +0 -112
  122. package/dist/es2019/compiled/components/menu.js +0 -477
  123. package/dist/es2019/compiled/components/multi-value.js +0 -165
  124. package/dist/es2019/compiled/components/option.js +0 -48
  125. package/dist/es2019/compiled/components/placeholder.js +0 -36
  126. package/dist/es2019/compiled/components/single-value.js +0 -37
  127. package/dist/es2019/emotion/components/containers.js +0 -114
  128. package/dist/es2019/emotion/components/control.js +0 -108
  129. package/dist/es2019/emotion/components/group.js +0 -60
  130. package/dist/es2019/emotion/components/indicators.js +0 -131
  131. package/dist/es2019/emotion/components/input.js +0 -87
  132. package/dist/es2019/emotion/components/internal/a11y-text.js +0 -28
  133. package/dist/es2019/emotion/components/internal/dummy-input.js +0 -38
  134. package/dist/es2019/emotion/components/internal/index.js +0 -4
  135. package/dist/es2019/emotion/components/internal/required-input.js +0 -36
  136. package/dist/es2019/emotion/components/internal/scroll-manager.js +0 -51
  137. package/dist/es2019/emotion/components/internal/use-scroll-capture.js +0 -128
  138. package/dist/es2019/emotion/components/internal/use-scroll-lock.js +0 -143
  139. package/dist/es2019/emotion/components/live-region.js +0 -120
  140. package/dist/es2019/emotion/components/menu.js +0 -452
  141. package/dist/es2019/emotion/components/multi-value.js +0 -203
  142. package/dist/es2019/emotion/components/option.js +0 -79
  143. package/dist/es2019/emotion/components/placeholder.js +0 -29
  144. package/dist/es2019/emotion/components/single-value.js +0 -35
  145. package/dist/esm/compiled/components/control.js +0 -57
  146. package/dist/esm/compiled/components/group.js +0 -71
  147. package/dist/esm/compiled/components/indicators.js +0 -150
  148. package/dist/esm/compiled/components/input.js +0 -56
  149. package/dist/esm/compiled/components/internal/a11y-text.js +0 -15
  150. package/dist/esm/compiled/components/internal/dummy-input.js +0 -21
  151. package/dist/esm/compiled/components/internal/required-input.js +0 -26
  152. package/dist/esm/compiled/components/live-region.js +0 -109
  153. package/dist/esm/compiled/components/menu.js +0 -484
  154. package/dist/esm/compiled/components/multi-value.js +0 -162
  155. package/dist/esm/compiled/components/option.js +0 -47
  156. package/dist/esm/compiled/components/placeholder.js +0 -35
  157. package/dist/esm/compiled/components/single-value.js +0 -36
  158. package/dist/esm/emotion/components/containers.js +0 -110
  159. package/dist/esm/emotion/components/control.js +0 -104
  160. package/dist/esm/emotion/components/group.js +0 -66
  161. package/dist/esm/emotion/components/indicators.js +0 -135
  162. package/dist/esm/emotion/components/input.js +0 -90
  163. package/dist/esm/emotion/components/internal/a11y-text.js +0 -30
  164. package/dist/esm/emotion/components/internal/dummy-input.js +0 -39
  165. package/dist/esm/emotion/components/internal/index.js +0 -4
  166. package/dist/esm/emotion/components/internal/required-input.js +0 -37
  167. package/dist/esm/emotion/components/internal/scroll-manager.js +0 -51
  168. package/dist/esm/emotion/components/internal/use-scroll-capture.js +0 -126
  169. package/dist/esm/emotion/components/internal/use-scroll-lock.js +0 -143
  170. package/dist/esm/emotion/components/live-region.js +0 -117
  171. package/dist/esm/emotion/components/menu.js +0 -456
  172. package/dist/esm/emotion/components/multi-value.js +0 -193
  173. package/dist/esm/emotion/components/option.js +0 -76
  174. package/dist/esm/emotion/components/placeholder.js +0 -28
  175. package/dist/esm/emotion/components/single-value.js +0 -34
  176. package/dist/types/compiled/components/control.d.ts +0 -41
  177. package/dist/types/compiled/components/group.d.ts +0 -54
  178. package/dist/types/compiled/components/indicators.d.ts +0 -72
  179. package/dist/types/compiled/components/input.d.ts +0 -36
  180. package/dist/types/compiled/components/internal/a11y-text.d.ts +0 -3
  181. package/dist/types/compiled/components/internal/dummy-input.d.ts +0 -8
  182. package/dist/types/compiled/components/internal/required-input.d.ts +0 -10
  183. package/dist/types/compiled/components/live-region.d.ts +0 -17
  184. package/dist/types/compiled/components/menu.d.ts +0 -115
  185. package/dist/types/compiled/components/multi-value.d.ts +0 -57
  186. package/dist/types/compiled/components/option.d.ts +0 -48
  187. package/dist/types/compiled/components/placeholder.d.ts +0 -21
  188. package/dist/types/compiled/components/single-value.d.ts +0 -27
  189. package/dist/types/emotion/components/containers.d.ts +0 -54
  190. package/dist/types/emotion/components/control.d.ts +0 -42
  191. package/dist/types/emotion/components/group.d.ts +0 -52
  192. package/dist/types/emotion/components/indicators.d.ts +0 -73
  193. package/dist/types/emotion/components/input.d.ts +0 -37
  194. package/dist/types/emotion/components/internal/a11y-text.d.ts +0 -8
  195. package/dist/types/emotion/components/internal/dummy-input.d.ts +0 -9
  196. package/dist/types/emotion/components/internal/index.d.ts +0 -4
  197. package/dist/types/emotion/components/internal/required-input.d.ts +0 -10
  198. package/dist/types/emotion/components/internal/scroll-manager.d.ts +0 -17
  199. package/dist/types/emotion/components/internal/use-scroll-capture.d.ts +0 -12
  200. package/dist/types/emotion/components/internal/use-scroll-lock.d.ts +0 -9
  201. package/dist/types/emotion/components/live-region.d.ts +0 -23
  202. package/dist/types/emotion/components/menu.d.ts +0 -116
  203. package/dist/types/emotion/components/multi-value.d.ts +0 -47
  204. package/dist/types/emotion/components/option.d.ts +0 -49
  205. package/dist/types/emotion/components/placeholder.d.ts +0 -22
  206. package/dist/types/emotion/components/single-value.d.ts +0 -28
  207. package/dist/types-ts4.5/compiled/components/control.d.ts +0 -41
  208. package/dist/types-ts4.5/compiled/components/group.d.ts +0 -54
  209. package/dist/types-ts4.5/compiled/components/indicators.d.ts +0 -72
  210. package/dist/types-ts4.5/compiled/components/input.d.ts +0 -36
  211. package/dist/types-ts4.5/compiled/components/internal/a11y-text.d.ts +0 -3
  212. package/dist/types-ts4.5/compiled/components/internal/dummy-input.d.ts +0 -8
  213. package/dist/types-ts4.5/compiled/components/internal/required-input.d.ts +0 -10
  214. package/dist/types-ts4.5/compiled/components/live-region.d.ts +0 -17
  215. package/dist/types-ts4.5/compiled/components/menu.d.ts +0 -115
  216. package/dist/types-ts4.5/compiled/components/multi-value.d.ts +0 -57
  217. package/dist/types-ts4.5/compiled/components/option.d.ts +0 -48
  218. package/dist/types-ts4.5/compiled/components/placeholder.d.ts +0 -21
  219. package/dist/types-ts4.5/compiled/components/single-value.d.ts +0 -27
  220. package/dist/types-ts4.5/emotion/components/containers.d.ts +0 -54
  221. package/dist/types-ts4.5/emotion/components/control.d.ts +0 -42
  222. package/dist/types-ts4.5/emotion/components/group.d.ts +0 -52
  223. package/dist/types-ts4.5/emotion/components/indicators.d.ts +0 -73
  224. package/dist/types-ts4.5/emotion/components/input.d.ts +0 -37
  225. package/dist/types-ts4.5/emotion/components/internal/a11y-text.d.ts +0 -8
  226. package/dist/types-ts4.5/emotion/components/internal/dummy-input.d.ts +0 -9
  227. package/dist/types-ts4.5/emotion/components/internal/index.d.ts +0 -4
  228. package/dist/types-ts4.5/emotion/components/internal/required-input.d.ts +0 -10
  229. package/dist/types-ts4.5/emotion/components/internal/scroll-manager.d.ts +0 -17
  230. package/dist/types-ts4.5/emotion/components/internal/use-scroll-capture.d.ts +0 -12
  231. package/dist/types-ts4.5/emotion/components/internal/use-scroll-lock.d.ts +0 -9
  232. package/dist/types-ts4.5/emotion/components/live-region.d.ts +0 -23
  233. package/dist/types-ts4.5/emotion/components/menu.d.ts +0 -116
  234. package/dist/types-ts4.5/emotion/components/multi-value.d.ts +0 -47
  235. package/dist/types-ts4.5/emotion/components/option.d.ts +0 -49
  236. package/dist/types-ts4.5/emotion/components/placeholder.d.ts +0 -22
  237. package/dist/types-ts4.5/emotion/components/single-value.d.ts +0 -28
  238. /package/dist/cjs/{compiled/components → components}/control.compiled.css +0 -0
  239. /package/dist/cjs/{compiled/components → components}/group.compiled.css +0 -0
  240. /package/dist/cjs/{compiled/components → components}/indicators.compiled.css +0 -0
  241. /package/dist/cjs/{compiled/components → components}/input.compiled.css +0 -0
  242. /package/dist/cjs/{compiled/components → components}/internal/a11y-text.compiled.css +0 -0
  243. /package/dist/cjs/{compiled/components → components}/internal/dummy-input.compiled.css +0 -0
  244. /package/dist/cjs/{compiled/components → components}/internal/required-input.compiled.css +0 -0
  245. /package/dist/cjs/{compiled/components → components}/menu.compiled.css +0 -0
  246. /package/dist/cjs/{compiled/components → components}/multi-value.compiled.css +0 -0
  247. /package/dist/cjs/{compiled/components → components}/option.compiled.css +0 -0
  248. /package/dist/cjs/{compiled/components → components}/placeholder.compiled.css +0 -0
  249. /package/dist/cjs/{compiled/components → components}/single-value.compiled.css +0 -0
  250. /package/dist/es2019/{compiled/components → components}/control.compiled.css +0 -0
  251. /package/dist/es2019/{compiled/components → components}/group.compiled.css +0 -0
  252. /package/dist/es2019/{compiled/components → components}/indicators.compiled.css +0 -0
  253. /package/dist/es2019/{compiled/components → components}/input.compiled.css +0 -0
  254. /package/dist/es2019/{compiled/components → components}/internal/a11y-text.compiled.css +0 -0
  255. /package/dist/es2019/{compiled/components → components}/internal/dummy-input.compiled.css +0 -0
  256. /package/dist/es2019/{compiled/components → components}/internal/required-input.compiled.css +0 -0
  257. /package/dist/es2019/{compiled/components → components}/menu.compiled.css +0 -0
  258. /package/dist/es2019/{compiled/components → components}/multi-value.compiled.css +0 -0
  259. /package/dist/es2019/{compiled/components → components}/option.compiled.css +0 -0
  260. /package/dist/es2019/{compiled/components → components}/placeholder.compiled.css +0 -0
  261. /package/dist/es2019/{compiled/components → components}/single-value.compiled.css +0 -0
  262. /package/dist/esm/{compiled/components → components}/control.compiled.css +0 -0
  263. /package/dist/esm/{compiled/components → components}/group.compiled.css +0 -0
  264. /package/dist/esm/{compiled/components → components}/indicators.compiled.css +0 -0
  265. /package/dist/esm/{compiled/components → components}/input.compiled.css +0 -0
  266. /package/dist/esm/{compiled/components → components}/internal/a11y-text.compiled.css +0 -0
  267. /package/dist/esm/{compiled/components → components}/internal/dummy-input.compiled.css +0 -0
  268. /package/dist/esm/{compiled/components → components}/internal/required-input.compiled.css +0 -0
  269. /package/dist/esm/{compiled/components → components}/menu.compiled.css +0 -0
  270. /package/dist/esm/{compiled/components → components}/multi-value.compiled.css +0 -0
  271. /package/dist/esm/{compiled/components → components}/option.compiled.css +0 -0
  272. /package/dist/esm/{compiled/components → components}/placeholder.compiled.css +0 -0
  273. /package/dist/esm/{compiled/components → components}/single-value.compiled.css +0 -0
@@ -1,18 +1,268 @@
1
- /* eslint-disable @repo/internal/react/no-unsafe-spread-props */
2
- import React from 'react';
3
- import { fg } from '@atlaskit/platform-feature-flags';
4
- 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';
5
- 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';
1
+ /* menu.tsx generated by @compiled/babel-plugin v0.36.1 */
2
+ import _extends from "@babel/runtime/helpers/extends";
3
+ import "./menu.compiled.css";
4
+ import * as React from 'react';
5
+ import { ax, ix } from "@compiled/react/runtime";
6
+ import { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';
7
+ import { cx } from '@compiled/react';
8
+ import { autoUpdate } from '@floating-ui/dom';
9
+ import { createPortal } from 'react-dom';
10
+ import useLayoutEffect from 'use-isomorphic-layout-effect';
11
+ import { Text } from '@atlaskit/primitives/compiled';
12
+ import { animatedScrollTo, getBoundingClientObj, getScrollParent, getScrollTop, getStyleProps, normalizedHeight, scrollTo } from '../utils';
13
+
14
+ // ==============================
15
+ // Menu
16
+ // ==============================
17
+
18
+ // Get Menu Placement
19
+ // ------------------------------
20
+
21
+ function getMenuPlacement({
22
+ maxHeight: preferredMaxHeight,
23
+ menuEl,
24
+ minHeight,
25
+ placement: preferredPlacement,
26
+ shouldScroll,
27
+ isFixedPosition,
28
+ controlHeight
29
+ }) {
30
+ const scrollParent = getScrollParent(menuEl);
31
+ const defaultState = {
32
+ placement: 'bottom',
33
+ maxHeight: preferredMaxHeight
34
+ };
35
+
36
+ // something went wrong, return default state
37
+ if (!menuEl || !menuEl.offsetParent) {
38
+ return defaultState;
39
+ }
40
+
41
+ // we can't trust `scrollParent.scrollHeight` --> it may increase when
42
+ // the menu is rendered
43
+ const {
44
+ height: scrollHeight
45
+ } = scrollParent.getBoundingClientRect();
46
+ const {
47
+ bottom: menuBottom,
48
+ height: menuHeight,
49
+ top: menuTop
50
+ } = menuEl.getBoundingClientRect();
51
+ const {
52
+ top: containerTop
53
+ } = menuEl.offsetParent.getBoundingClientRect();
54
+ const viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent);
55
+ const scrollTop = getScrollTop(scrollParent);
56
+ const menuTopFromParent = menuTop;
57
+ const marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);
58
+ const marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);
59
+ const viewSpaceAbove = containerTop - marginTop;
60
+ const viewSpaceBelow = viewHeight - menuTopFromParent;
61
+ const scrollSpaceAbove = viewSpaceAbove + scrollTop;
62
+ const scrollSpaceBelow = scrollHeight - scrollTop - menuTopFromParent;
63
+ const scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;
64
+ const scrollUp = scrollTop + menuTop - marginTop;
65
+ const scrollDuration = 160;
66
+ switch (preferredPlacement) {
67
+ case 'auto':
68
+ case 'bottom':
69
+ // 1: the menu will fit, do nothing
70
+ if (viewSpaceBelow >= menuHeight) {
71
+ return {
72
+ placement: 'bottom',
73
+ maxHeight: preferredMaxHeight
74
+ };
75
+ }
76
+
77
+ // 2: the menu will fit, if scrolled
78
+ if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {
79
+ if (shouldScroll) {
80
+ animatedScrollTo(scrollParent, scrollDown, scrollDuration);
81
+ }
82
+ return {
83
+ placement: 'bottom',
84
+ maxHeight: preferredMaxHeight
85
+ };
86
+ }
87
+
88
+ // 3: the menu will fit, if constrained
89
+ if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {
90
+ if (shouldScroll) {
91
+ animatedScrollTo(scrollParent, scrollDown, scrollDuration);
92
+ }
93
+
94
+ // we want to provide as much of the menu as possible to the user,
95
+ // so give them whatever is available below rather than the minHeight.
96
+ const constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;
97
+ return {
98
+ placement: 'bottom',
99
+ maxHeight: constrainedHeight
100
+ };
101
+ }
102
+
103
+ // 4. Forked beviour when there isn't enough space below
104
+
105
+ // AUTO: flip the menu, render above
106
+ if (preferredPlacement === 'auto' || isFixedPosition) {
107
+ // may need to be constrained after flipping
108
+ let constrainedHeight = preferredMaxHeight;
109
+ const spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;
110
+ if (spaceAbove >= minHeight) {
111
+ constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight);
112
+ }
113
+ return {
114
+ placement: 'top',
115
+ maxHeight: constrainedHeight
116
+ };
117
+ }
118
+
119
+ // BOTTOM: allow browser to increase scrollable area and immediately set scroll
120
+ if (preferredPlacement === 'bottom') {
121
+ if (shouldScroll) {
122
+ scrollTo(scrollParent, scrollDown);
123
+ }
124
+ return {
125
+ placement: 'bottom',
126
+ maxHeight: preferredMaxHeight
127
+ };
128
+ }
129
+ break;
130
+ case 'top':
131
+ // 1: the menu will fit, do nothing
132
+ if (viewSpaceAbove >= menuHeight) {
133
+ return {
134
+ placement: 'top',
135
+ maxHeight: preferredMaxHeight
136
+ };
137
+ }
138
+
139
+ // 2: the menu will fit, if scrolled
140
+ if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {
141
+ if (shouldScroll) {
142
+ animatedScrollTo(scrollParent, scrollUp, scrollDuration);
143
+ }
144
+ return {
145
+ placement: 'top',
146
+ maxHeight: preferredMaxHeight
147
+ };
148
+ }
149
+
150
+ // 3: the menu will fit, if constrained
151
+ if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
152
+ let constrainedHeight = preferredMaxHeight;
153
+
154
+ // we want to provide as much of the menu as possible to the user,
155
+ // so give them whatever is available below rather than the minHeight.
156
+ if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
157
+ constrainedHeight = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;
158
+ }
159
+ if (shouldScroll) {
160
+ animatedScrollTo(scrollParent, scrollUp, scrollDuration);
161
+ }
162
+ return {
163
+ placement: 'top',
164
+ maxHeight: constrainedHeight
165
+ };
166
+ }
167
+
168
+ // 4. not enough space, the browser WILL NOT increase scrollable area when
169
+ // absolutely positioned element rendered above the viewport (only below).
170
+ // Flip the menu, render below
171
+ return {
172
+ placement: 'bottom',
173
+ maxHeight: preferredMaxHeight
174
+ };
175
+ default:
176
+ throw new Error(`Invalid placement provided "${preferredPlacement}".`);
177
+ }
178
+ return defaultState;
179
+ }
6
180
 
7
181
  // Menu Component
8
182
  // ------------------------------
9
183
 
10
- export const menuCSS = props => fg('compiled-react-select') ? compiledMenuCSS() : emotionMenuCSS(props);
184
+ const coercePlacement = p => p === 'auto' ? 'bottom' : p;
185
+ const menuStyles = {
186
+ root: "_2rkoglpi _kqswstnw _1bsb1osq _1pbykb7n _otyru2gc _19pku2gc _bfhk1bhr _16qsd0yg",
187
+ bottom: "_154i1osq",
188
+ top: "_94n51osq"
189
+ };
190
+ export const menuCSS = () => ({});
191
+ const PortalPlacementContext = /*#__PURE__*/createContext(null);
11
192
 
12
193
  // NOTE: internal only
13
194
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
14
- export const MenuPlacer = props => fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledMenuPlacer, props) : /*#__PURE__*/React.createElement(EmotionMenuPlacer, props);
15
- const Menu = props => fg('compiled-react-select') ? /*#__PURE__*/React.createElement(Compiled, props) : /*#__PURE__*/React.createElement(Emotion, props);
195
+ export const MenuPlacer = props => {
196
+ const {
197
+ children,
198
+ minMenuHeight,
199
+ maxMenuHeight,
200
+ menuPlacement,
201
+ menuPosition,
202
+ menuShouldScrollIntoView
203
+ } = props;
204
+ const {
205
+ setPortalPlacement
206
+ } = useContext(PortalPlacementContext) || {};
207
+ const ref = useRef(null);
208
+ const [maxHeight, setMaxHeight] = useState(maxMenuHeight);
209
+ const [placement, setPlacement] = useState(null);
210
+ // The minimum height of the control
211
+ const controlHeight = 38;
212
+ useLayoutEffect(() => {
213
+ const menuEl = ref.current;
214
+ if (!menuEl) {
215
+ return;
216
+ }
217
+
218
+ // DO NOT scroll if position is fixed
219
+ const isFixedPosition = menuPosition === 'fixed';
220
+ const shouldScroll = menuShouldScrollIntoView && !isFixedPosition;
221
+ const state = getMenuPlacement({
222
+ maxHeight: maxMenuHeight,
223
+ menuEl,
224
+ minHeight: minMenuHeight,
225
+ placement: menuPlacement,
226
+ shouldScroll,
227
+ isFixedPosition,
228
+ controlHeight
229
+ });
230
+ setMaxHeight(state.maxHeight);
231
+ setPlacement(state.placement);
232
+ setPortalPlacement === null || setPortalPlacement === void 0 ? void 0 : setPortalPlacement(state.placement);
233
+ }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]);
234
+ return children({
235
+ ref,
236
+ placerProps: {
237
+ ...props,
238
+ placement: placement || coercePlacement(menuPlacement),
239
+ maxHeight
240
+ }
241
+ });
242
+ };
243
+ const Menu = props => {
244
+ const {
245
+ children,
246
+ innerRef,
247
+ innerProps,
248
+ placement = 'bottom',
249
+ xcss
250
+ } = props;
251
+ const {
252
+ css,
253
+ className
254
+ } = getStyleProps(props, 'menu', {
255
+ menu: true
256
+ });
257
+ return /*#__PURE__*/React.createElement("div", _extends({
258
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
259
+ className: ax([menuStyles.root, menuStyles[placement], cx(xcss, className, '-menu')])
260
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
261
+ ,
262
+ style: css,
263
+ ref: innerRef
264
+ }, innerProps), children);
265
+ };
16
266
 
17
267
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
18
268
  export default Menu;
@@ -21,32 +271,207 @@ export default Menu;
21
271
  // Menu List
22
272
  // ==============================
23
273
 
24
- export const menuListCSS = props => fg('compiled-react-select') ? compiledMenuListCSS() : emotionMenuListCSS(props);
274
+ export const menuListCSS = () => ({});
275
+ const menuListStyles = null;
25
276
 
26
277
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
27
- export const MenuList = props => fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledMenuList, props) : /*#__PURE__*/React.createElement(EmotionMenuList, props);
278
+ export const MenuList = props => {
279
+ const {
280
+ children,
281
+ innerProps,
282
+ innerRef,
283
+ isMulti,
284
+ maxHeight,
285
+ xcss
286
+ } = props;
287
+ const {
288
+ css,
289
+ className
290
+ } = getStyleProps(props, 'menuList', {
291
+ 'menu-list': true,
292
+ 'menu-list--is-multi': isMulti
293
+ });
294
+ return /*#__PURE__*/React.createElement("div", _extends({
295
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
296
+ className: ax(["_kqswh2mm _18m91wug _85i5u2gc _1q51u2gc _8am5i4x0", cx(className, xcss, '-MenuList')])
297
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
298
+ ,
299
+ style: {
300
+ ...css,
301
+ maxHeight: maxHeight
302
+ },
303
+ ref: innerRef
304
+ }, innerProps, {
305
+ tabIndex: -1
306
+ }), children);
307
+ };
28
308
 
29
309
  // ==============================
30
310
  // Menu Notices
31
311
  // ==============================
32
312
 
33
- const noticeCSS = ({}) => ({
34
- textAlign: 'center',
35
- padding: `${"var(--ds-space-100, 8px)"} ${"var(--ds-space-150, 12px)"}`
36
- });
313
+ const noticeCSS = () => ({});
314
+ const noticeStyles = null;
37
315
  export const noOptionsMessageCSS = noticeCSS;
38
316
  export const loadingMessageCSS = noticeCSS;
39
317
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
40
- export const NoOptionsMessage = props => fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledNoOptionsMessage, props) : /*#__PURE__*/React.createElement(EmotionNoOptionsMessage, props);
318
+ export const NoOptionsMessage = ({
319
+ children = 'No options',
320
+ innerProps,
321
+ xcss,
322
+ ...restProps
323
+ }) => {
324
+ const {
325
+ css,
326
+ className
327
+ } = getStyleProps({
328
+ ...restProps,
329
+ children,
330
+ innerProps
331
+ }, 'noOptionsMessage', {
332
+ 'menu-notice': true,
333
+ 'menu-notice--no-options': true
334
+ });
335
+ return /*#__PURE__*/React.createElement("div", _extends({
336
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
337
+ className: ax(["_85i5u2gc _1q51u2gc _y4tiutpp _bozgutpp _y3gn1h6o", cx(className, xcss, '-NoOptionsMessage')])
338
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
339
+ ,
340
+ style: css
341
+ // eslint-disable-next-line jsx-a11y/role-has-required-aria-props
342
+ ,
343
+ role: "option"
344
+ }, innerProps), /*#__PURE__*/React.createElement(Text, {
345
+ color: "color.text.subtle"
346
+ }, children));
347
+ };
41
348
 
42
349
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
43
- export const LoadingMessage = props => fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledLoadingMessage, props) : /*#__PURE__*/React.createElement(EmotionLoadingMessage, props);
350
+ export const LoadingMessage = ({
351
+ children = 'Loading...',
352
+ innerProps,
353
+ xcss,
354
+ ...restProps
355
+ }) => {
356
+ const {
357
+ css,
358
+ className
359
+ } = getStyleProps({
360
+ ...restProps,
361
+ children,
362
+ innerProps
363
+ }, 'loadingMessage', {
364
+ 'menu-notice': true,
365
+ 'menu-notice--loading': true
366
+ });
367
+ return /*#__PURE__*/React.createElement("div", _extends({
368
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
369
+ className: ax(["_85i5u2gc _1q51u2gc _y4tiutpp _bozgutpp _y3gn1h6o", cx(className, xcss, '-LoadingMessage')])
370
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
371
+ ,
372
+ style: css
373
+ }, innerProps, {
374
+ // eslint-disable-next-line jsx-a11y/role-has-required-aria-props
375
+ role: "option"
376
+ }), /*#__PURE__*/React.createElement(Text, {
377
+ color: "color.text.subtle"
378
+ }, children));
379
+ };
44
380
 
45
381
  // ==============================
46
382
  // Menu Portal
47
383
  // ==============================
48
384
 
49
- export const menuPortalCSS = props => fg('compiled-react-select') ? compiledMenuPortalCSS() : emotionMenuPortalCSS(props);
50
-
385
+ export const menuPortalCSS = () => ({});
386
+ const menuPortalStyles = {
387
+ root: "_1pbykb7n _1ltva1vk _kqswcp1v _154i1nmo _1bsb1qxj"
388
+ };
51
389
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
52
- export const MenuPortal = props => fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledMenuPortal, props) : /*#__PURE__*/React.createElement(EmotionMenuPortal, props);
390
+ export const MenuPortal = props => {
391
+ const {
392
+ appendTo,
393
+ children,
394
+ controlElement,
395
+ innerProps,
396
+ menuPlacement,
397
+ menuPosition,
398
+ xcss
399
+ } = props;
400
+ const menuPortalRef = useRef(null);
401
+ const cleanupRef = useRef(null);
402
+ const [placement, setPortalPlacement] = useState(coercePlacement(menuPlacement));
403
+ const portalPlacementContext = useMemo(() => ({
404
+ setPortalPlacement
405
+ }), []);
406
+ const [computedPosition, setComputedPosition] = useState(null);
407
+ const updateComputedPosition = useCallback(() => {
408
+ if (!controlElement) {
409
+ return;
410
+ }
411
+ const rect = getBoundingClientObj(controlElement);
412
+ const scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset;
413
+ const offset = rect[placement] + scrollDistance;
414
+ 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)) {
415
+ setComputedPosition({
416
+ offset,
417
+ rect
418
+ });
419
+ }
420
+ }, [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]);
421
+ useLayoutEffect(() => {
422
+ updateComputedPosition();
423
+ }, [updateComputedPosition]);
424
+ const runAutoUpdate = useCallback(() => {
425
+ if (typeof cleanupRef.current === 'function') {
426
+ cleanupRef.current();
427
+ cleanupRef.current = null;
428
+ }
429
+ if (controlElement && menuPortalRef.current) {
430
+ cleanupRef.current = autoUpdate(controlElement, menuPortalRef.current, updateComputedPosition, {
431
+ elementResize: 'ResizeObserver' in window
432
+ });
433
+ }
434
+ }, [controlElement, updateComputedPosition]);
435
+ useLayoutEffect(() => {
436
+ runAutoUpdate();
437
+ }, [runAutoUpdate]);
438
+ const setMenuPortalElement = useCallback(menuPortalElement => {
439
+ menuPortalRef.current = menuPortalElement;
440
+ runAutoUpdate();
441
+ }, [runAutoUpdate]);
442
+
443
+ // bail early if required elements aren't present
444
+ if (!appendTo && menuPosition !== 'fixed' || !computedPosition) {
445
+ return null;
446
+ }
447
+ const {
448
+ css,
449
+ className
450
+ } = getStyleProps({
451
+ ...props,
452
+ offset: computedPosition.offset,
453
+ position: menuPosition,
454
+ rect: computedPosition.rect
455
+ }, 'menuPortal', {
456
+ 'menu-portal': true
457
+ });
458
+
459
+ // same wrapper element whether fixed or portalled
460
+ const menuWrapper = /*#__PURE__*/React.createElement("div", _extends({
461
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
462
+ className: ax([menuPortalStyles.root, cx(className, xcss, '-MenuPortal')]),
463
+ ref: setMenuPortalElement,
464
+ style: {
465
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
466
+ '--menu-left': `${computedPosition.rect.left}px`,
467
+ '--menu-position': menuPosition,
468
+ '--menu-top': `${computedPosition.offset}px`,
469
+ '--menu-width': `${computedPosition.rect.width}px`,
470
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
471
+ ...css
472
+ }
473
+ }, innerProps), children);
474
+ return /*#__PURE__*/React.createElement(PortalPlacementContext.Provider, {
475
+ value: portalPlacementContext
476
+ }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);
477
+ };
@@ -1,23 +1,165 @@
1
- /* eslint-disable @repo/internal/react/no-unsafe-spread-props */
2
- import React from 'react';
1
+ /* multi-value.tsx generated by @compiled/babel-plugin v0.36.1 */
2
+ import _extends from "@babel/runtime/helpers/extends";
3
+ import "./multi-value.compiled.css";
4
+ import * as React from 'react';
5
+ import { ax, ix } from "@compiled/react/runtime";
6
+ import { cx } from '@compiled/react';
7
+ import CrossIcon from '@atlaskit/icon/core/close';
8
+ import LegacySelectClearIcon from '@atlaskit/icon/glyph/select-clear';
3
9
  import { fg } from '@atlaskit/platform-feature-flags';
4
- import Compiled, { MultiValueContainer as CompiledMultiValueContainer, multiValueCSS as CompiledMultiValueCSS, MultiValueLabel as CompiledMultiValueLabel, multiValueLabelCSS as CompiledMultiValueLabelCSS, MultiValueRemove as CompiledMultiValueRemove, multiValueRemoveCSS as CompiledMultiValueRemoveCSS } from '../compiled/components/multi-value';
5
- import Emotion, { MultiValueContainer as EmotionMultiValueContainer, multiValueCSS as EmotionMultiValueCSS, MultiValueLabel as EmotionMultiValueLabel, multiValueLabelCSS as EmotionMultiValueLabelCSS, MultiValueRemove as EmotionMultiValueRemove, multiValueRemoveCSS as EmotionMultiValueRemoveCSS } from '../emotion/components/multi-value';
6
- export const multiValueCSS = props => fg('compiled-react-select') ? CompiledMultiValueCSS() : EmotionMultiValueCSS(props);
7
- export const multiValueLabelCSS = props => fg('compiled-react-select') ? CompiledMultiValueLabelCSS() : EmotionMultiValueLabelCSS(props);
8
- export const multiValueRemoveCSS = props => fg('compiled-react-select') ? CompiledMultiValueRemoveCSS() : EmotionMultiValueRemoveCSS(props);
10
+ import { getStyleProps } from '../utils';
11
+ const multiValueStyles = {
12
+ root: "_2rkogqwt _1e0c1txw _1ul9ze3t _19pkv77o _2hwxv77o _otyrv77o _18u0v77o _bfhkm7j4 _p12f1osq _syazjpor _3yq3glyw",
13
+ disabled: "_syaz1lh4 _bfhkm7j4",
14
+ focused: "_syaz1wum _bfhkfg4m _16qs7ex6 _1aewe4h9 _6up51j28 _1xdnnqa1",
15
+ refresh: "_2rkoiti9 _1h6d14je _1dqonqa1 _189ee4h9 _bfhk1j9a"
16
+ };
17
+ export const multiValueCSS = () => ({});
18
+ export const multiValueLabelCSS = () => ({});
19
+ const multiValueLabelStyles = {
20
+ root: "_1reo15vq _18m915vq _2rkogqwt _11c8dcr7 _o5721q9c _ca0qv77o _u5f3v77o _n3tdv77o _19bv12x7 _syaz1kw7",
21
+ disabled: "_syaz1lh4",
22
+ ellipsis: "_1bto1l2s",
23
+ refresh: "_11c82smr _ca0qidpf _n3tdidpf _19bv1b66"
24
+ };
25
+ export const multiValueRemoveCSS = () => ({});
26
+ const multiValueRemoveStyles = {
27
+ focused: "_bfhkb1q9 _lswu1rrc",
28
+ root: "_2rkovtp2 _4cvr1h6o _1e0c1txw _lswu1dx5 _19bvv77o _u5f3v77o _irr31yvi _13br1jjn _1di61io2 _i5f81jjn",
29
+ refresh: "_19itglyw _2rkoglpi _bfhksm61 _4cvr1h6o _1bah1h6o _1wpz1h6o _r06hglyw _syaz1fxt _ca0qv77o _u5f3v77o _n3tdv77o _19bvv77o _2hwxv77o _1ah312gs _irr3166n _1di61dty"
30
+ };
9
31
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
10
- export const MultiValueContainer = props => fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledMultiValueContainer, props) : /*#__PURE__*/React.createElement(EmotionMultiValueContainer, props);
32
+ export const MultiValueContainer = ({
33
+ children,
34
+ innerProps,
35
+ isFocused,
36
+ isDisabled,
37
+ className,
38
+ xcss
39
+ }) => {
40
+ return /*#__PURE__*/React.createElement("div", _extends({}, innerProps, {
41
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
42
+ className: ax([multiValueStyles.root, isDisabled && multiValueStyles.disabled, isFocused && multiValueStyles.focused, fg('platform-component-visual-refresh') && multiValueStyles.refresh, cx(className, xcss, '-multiValue')])
43
+ }), children);
44
+ };
11
45
 
12
46
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
13
- export const MultiValueLabel = props => fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledMultiValueLabel, props) : /*#__PURE__*/React.createElement(EmotionMultiValueLabel, props);
14
- export function MultiValueRemove(props) {
15
- return (
16
- // The Remove button is intentionally excluded from the tab order, please avoid assigning a non-negative tabIndex to it. Context: https://hello.atlassian.net/wiki/spaces/A11YKB/pages/3031993460/Clear+Options+on+an+Input+Field
17
- fg('compiled-react-select') ? /*#__PURE__*/React.createElement(CompiledMultiValueRemove, props) : /*#__PURE__*/React.createElement(EmotionMultiValueRemove, props)
18
- );
47
+ export const MultiValueLabel = ({
48
+ children,
49
+ innerProps,
50
+ isDisabled,
51
+ hasEllipsis,
52
+ className,
53
+ xcss
54
+ }) => {
55
+ return /*#__PURE__*/React.createElement("div", _extends({}, innerProps, {
56
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
57
+ className: ax([multiValueLabelStyles.root, isDisabled && multiValueLabelStyles.disabled, hasEllipsis && multiValueLabelStyles.ellipsis, fg('platform-component-visual-refresh') && multiValueLabelStyles.refresh, cx(className, xcss, '-MultiValueLabel')])
58
+ }), children);
59
+ };
60
+ const disabledStyles = null;
61
+ const enabledStyles = null;
62
+ export function MultiValueRemove({
63
+ isDisabled,
64
+ isFocused,
65
+ innerProps,
66
+ className,
67
+ xcss
68
+ }) {
69
+ return /*#__PURE__*/React.createElement("div", _extends({}, innerProps, {
70
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
71
+ className: ax([multiValueRemoveStyles.root, isFocused && multiValueRemoveStyles.focused, fg('platform-component-visual-refresh') && multiValueRemoveStyles.refresh, cx(className, xcss, '-MultiValueRemove')])
72
+ }), /*#__PURE__*/React.createElement("div", {
73
+ "data-testid": isDisabled ? 'hide-clear-icon' : 'show-clear-icon',
74
+ className: ax([isDisabled && "_1e0cglyw", !isDisabled && "_1e0c1kw7"])
75
+ }, /*#__PURE__*/React.createElement(CrossIcon, {
76
+ label: "",
77
+ color: "currentColor",
78
+ LEGACY_fallbackIcon: LegacySelectClearIcon,
79
+ LEGACY_primaryColor: "transparent",
80
+ LEGACY_secondaryColor: "inherit",
81
+ LEGACY_size: "small",
82
+ size: "small"
83
+ })));
19
84
  }
20
- const MultiValue = props => fg('compiled-react-select') ? /*#__PURE__*/React.createElement(Compiled, props) : /*#__PURE__*/React.createElement(Emotion, props);
85
+ const MultiValue = props => {
86
+ const {
87
+ children,
88
+ components,
89
+ data,
90
+ innerProps,
91
+ isDisabled,
92
+ isFocused,
93
+ removeProps,
94
+ selectProps,
95
+ cropWithEllipsis
96
+ } = props;
97
+ const {
98
+ Container,
99
+ Label,
100
+ Remove
101
+ } = components;
102
+ const ariaLabel = typeof children === 'string' ? children : data.label;
103
+ const {
104
+ css: containerCss,
105
+ className: containerClassName
106
+ } = getStyleProps(props, 'multiValue', {
107
+ 'multi-value': true,
108
+ 'multi-value--is-disabled': isDisabled
109
+ });
110
+ const {
111
+ css: labelCss,
112
+ className: labelClassName
113
+ } = getStyleProps(props, 'multiValueLabel', {
114
+ 'multi-value__label': true
115
+ });
116
+ const {
117
+ css: removeCss,
118
+ className: removeClassName
119
+ } = getStyleProps(props, 'multiValueRemove', {
120
+ 'multi-value__remove': true
121
+ });
122
+ return /*#__PURE__*/React.createElement(Container, {
123
+ data: data,
124
+ innerProps: {
125
+ style: containerCss,
126
+ className: containerClassName,
127
+ ...innerProps
128
+ }
129
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
130
+ ,
131
+ className: containerClassName,
132
+ isFocused: isFocused,
133
+ isDisabled: isDisabled,
134
+ selectProps: selectProps
135
+ }, /*#__PURE__*/React.createElement(Label, {
136
+ data: data,
137
+ innerProps: {
138
+ style: labelCss,
139
+ className: labelClassName
140
+ }
141
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
142
+ ,
143
+ className: labelClassName,
144
+ hasEllipsis: cropWithEllipsis || cropWithEllipsis === undefined,
145
+ selectProps: selectProps
146
+ }, children), /*#__PURE__*/React.createElement(Remove, {
147
+ data: data,
148
+ innerProps: {
149
+ style: removeCss,
150
+ className: removeClassName,
151
+ role: 'button',
152
+ tabIndex: -1,
153
+ 'aria-label': `${ariaLabel || 'option'}, remove`,
154
+ ...removeProps
155
+ }
156
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
157
+ ,
158
+ className: removeClassName,
159
+ isDisabled: isDisabled,
160
+ selectProps: selectProps
161
+ }));
162
+ };
21
163
 
22
164
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
23
165
  export default MultiValue;