@atlaskit/react-select 3.0.0 → 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 (270) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/components/containers.compiled.css +26 -0
  3. package/dist/cjs/components/containers.js +80 -12
  4. package/dist/cjs/components/control.js +50 -7
  5. package/dist/cjs/components/group.js +60 -10
  6. package/dist/cjs/components/indicators.js +128 -13
  7. package/dist/cjs/components/input.js +50 -7
  8. package/dist/cjs/components/internal/a11y-text.js +14 -5
  9. package/dist/cjs/components/internal/dummy-input.js +21 -5
  10. package/dist/cjs/components/internal/required-input.js +24 -6
  11. package/dist/cjs/components/live-region.js +101 -5
  12. package/dist/cjs/components/menu.js +436 -25
  13. package/dist/cjs/components/multi-value.js +148 -17
  14. package/dist/cjs/components/option.js +41 -7
  15. package/dist/cjs/components/placeholder.js +29 -7
  16. package/dist/cjs/components/single-value.js +30 -7
  17. package/dist/es2019/components/containers.compiled.css +26 -0
  18. package/dist/es2019/components/containers.js +93 -9
  19. package/dist/es2019/components/control.js +54 -6
  20. package/dist/es2019/components/group.js +67 -7
  21. package/dist/es2019/components/indicators.js +131 -9
  22. package/dist/es2019/components/input.js +53 -5
  23. package/dist/es2019/components/internal/a11y-text.js +12 -4
  24. package/dist/es2019/components/internal/dummy-input.js +19 -5
  25. package/dist/es2019/components/internal/required-input.js +22 -4
  26. package/dist/es2019/components/live-region.js +104 -4
  27. package/dist/es2019/components/menu.js +444 -17
  28. package/dist/es2019/components/multi-value.js +158 -11
  29. package/dist/es2019/components/option.js +45 -5
  30. package/dist/es2019/components/placeholder.js +33 -5
  31. package/dist/es2019/components/single-value.js +34 -5
  32. package/dist/esm/components/containers.compiled.css +26 -0
  33. package/dist/esm/components/containers.js +78 -11
  34. package/dist/esm/components/control.js +51 -6
  35. package/dist/esm/components/group.js +60 -9
  36. package/dist/esm/components/indicators.js +127 -13
  37. package/dist/esm/components/input.js +50 -6
  38. package/dist/esm/components/internal/a11y-text.js +12 -4
  39. package/dist/esm/components/internal/dummy-input.js +20 -5
  40. package/dist/esm/components/internal/required-input.js +22 -5
  41. package/dist/esm/components/live-region.js +99 -4
  42. package/dist/esm/components/menu.js +437 -25
  43. package/dist/esm/components/multi-value.js +148 -16
  44. package/dist/esm/components/option.js +41 -6
  45. package/dist/esm/components/placeholder.js +29 -6
  46. package/dist/esm/components/single-value.js +30 -6
  47. package/dist/types/components/containers.d.ts +12 -8
  48. package/dist/types/components/control.d.ts +7 -3
  49. package/dist/types/components/group.d.ts +10 -6
  50. package/dist/types/components/index.d.ts +21 -21
  51. package/dist/types/components/indicators.d.ts +12 -8
  52. package/dist/types/components/input.d.ts +8 -4
  53. package/dist/types/components/internal/a11y-text.d.ts +2 -2
  54. package/dist/types/components/internal/dummy-input.d.ts +7 -3
  55. package/dist/types/components/internal/required-input.d.ts +4 -0
  56. package/dist/types/components/live-region.d.ts +0 -2
  57. package/dist/types/components/menu.d.ts +17 -13
  58. package/dist/types/components/multi-value.d.ts +13 -9
  59. package/dist/types/components/option.d.ts +8 -4
  60. package/dist/types/components/placeholder.d.ts +8 -4
  61. package/dist/types/components/single-value.d.ts +8 -4
  62. package/dist/types/select.d.ts +21 -21
  63. package/dist/types-ts4.5/components/containers.d.ts +12 -8
  64. package/dist/types-ts4.5/components/control.d.ts +7 -3
  65. package/dist/types-ts4.5/components/group.d.ts +10 -6
  66. package/dist/types-ts4.5/components/index.d.ts +21 -21
  67. package/dist/types-ts4.5/components/indicators.d.ts +12 -8
  68. package/dist/types-ts4.5/components/input.d.ts +8 -4
  69. package/dist/types-ts4.5/components/internal/a11y-text.d.ts +2 -2
  70. package/dist/types-ts4.5/components/internal/dummy-input.d.ts +7 -3
  71. package/dist/types-ts4.5/components/internal/required-input.d.ts +4 -0
  72. package/dist/types-ts4.5/components/live-region.d.ts +0 -2
  73. package/dist/types-ts4.5/components/menu.d.ts +17 -13
  74. package/dist/types-ts4.5/components/multi-value.d.ts +13 -9
  75. package/dist/types-ts4.5/components/option.d.ts +8 -4
  76. package/dist/types-ts4.5/components/placeholder.d.ts +8 -4
  77. package/dist/types-ts4.5/components/single-value.d.ts +8 -4
  78. package/dist/types-ts4.5/select.d.ts +21 -21
  79. package/package.json +2 -2
  80. package/dist/cjs/compiled/components/control.js +0 -65
  81. package/dist/cjs/compiled/components/group.js +0 -80
  82. package/dist/cjs/compiled/components/indicators.js +0 -158
  83. package/dist/cjs/compiled/components/input.js +0 -65
  84. package/dist/cjs/compiled/components/internal/a11y-text.js +0 -24
  85. package/dist/cjs/compiled/components/internal/dummy-input.js +0 -30
  86. package/dist/cjs/compiled/components/internal/required-input.js +0 -35
  87. package/dist/cjs/compiled/components/live-region.js +0 -117
  88. package/dist/cjs/compiled/components/menu.js +0 -489
  89. package/dist/cjs/compiled/components/multi-value.js +0 -173
  90. package/dist/cjs/compiled/components/option.js +0 -56
  91. package/dist/cjs/compiled/components/placeholder.js +0 -44
  92. package/dist/cjs/compiled/components/single-value.js +0 -45
  93. package/dist/cjs/emotion/components/containers.js +0 -117
  94. package/dist/cjs/emotion/components/control.js +0 -112
  95. package/dist/cjs/emotion/components/group.js +0 -72
  96. package/dist/cjs/emotion/components/indicators.js +0 -140
  97. package/dist/cjs/emotion/components/input.js +0 -94
  98. package/dist/cjs/emotion/components/internal/a11y-text.js +0 -37
  99. package/dist/cjs/emotion/components/internal/dummy-input.js +0 -45
  100. package/dist/cjs/emotion/components/internal/index.js +0 -34
  101. package/dist/cjs/emotion/components/internal/required-input.js +0 -45
  102. package/dist/cjs/emotion/components/internal/scroll-manager.js +0 -59
  103. package/dist/cjs/emotion/components/internal/use-scroll-capture.js +0 -132
  104. package/dist/cjs/emotion/components/internal/use-scroll-lock.js +0 -149
  105. package/dist/cjs/emotion/components/live-region.js +0 -120
  106. package/dist/cjs/emotion/components/menu.js +0 -456
  107. package/dist/cjs/emotion/components/multi-value.js +0 -199
  108. package/dist/cjs/emotion/components/option.js +0 -84
  109. package/dist/cjs/emotion/components/placeholder.js +0 -36
  110. package/dist/cjs/emotion/components/single-value.js +0 -42
  111. package/dist/es2019/compiled/components/control.js +0 -58
  112. package/dist/es2019/compiled/components/group.js +0 -72
  113. package/dist/es2019/compiled/components/indicators.js +0 -146
  114. package/dist/es2019/compiled/components/input.js +0 -56
  115. package/dist/es2019/compiled/components/internal/a11y-text.js +0 -13
  116. package/dist/es2019/compiled/components/internal/dummy-input.js +0 -20
  117. package/dist/es2019/compiled/components/internal/required-input.js +0 -25
  118. package/dist/es2019/compiled/components/live-region.js +0 -112
  119. package/dist/es2019/compiled/components/menu.js +0 -477
  120. package/dist/es2019/compiled/components/multi-value.js +0 -165
  121. package/dist/es2019/compiled/components/option.js +0 -48
  122. package/dist/es2019/compiled/components/placeholder.js +0 -36
  123. package/dist/es2019/compiled/components/single-value.js +0 -37
  124. package/dist/es2019/emotion/components/containers.js +0 -114
  125. package/dist/es2019/emotion/components/control.js +0 -108
  126. package/dist/es2019/emotion/components/group.js +0 -60
  127. package/dist/es2019/emotion/components/indicators.js +0 -131
  128. package/dist/es2019/emotion/components/input.js +0 -87
  129. package/dist/es2019/emotion/components/internal/a11y-text.js +0 -28
  130. package/dist/es2019/emotion/components/internal/dummy-input.js +0 -38
  131. package/dist/es2019/emotion/components/internal/index.js +0 -4
  132. package/dist/es2019/emotion/components/internal/required-input.js +0 -36
  133. package/dist/es2019/emotion/components/internal/scroll-manager.js +0 -51
  134. package/dist/es2019/emotion/components/internal/use-scroll-capture.js +0 -128
  135. package/dist/es2019/emotion/components/internal/use-scroll-lock.js +0 -143
  136. package/dist/es2019/emotion/components/live-region.js +0 -120
  137. package/dist/es2019/emotion/components/menu.js +0 -452
  138. package/dist/es2019/emotion/components/multi-value.js +0 -203
  139. package/dist/es2019/emotion/components/option.js +0 -79
  140. package/dist/es2019/emotion/components/placeholder.js +0 -29
  141. package/dist/es2019/emotion/components/single-value.js +0 -35
  142. package/dist/esm/compiled/components/control.js +0 -57
  143. package/dist/esm/compiled/components/group.js +0 -71
  144. package/dist/esm/compiled/components/indicators.js +0 -150
  145. package/dist/esm/compiled/components/input.js +0 -56
  146. package/dist/esm/compiled/components/internal/a11y-text.js +0 -15
  147. package/dist/esm/compiled/components/internal/dummy-input.js +0 -21
  148. package/dist/esm/compiled/components/internal/required-input.js +0 -26
  149. package/dist/esm/compiled/components/live-region.js +0 -109
  150. package/dist/esm/compiled/components/menu.js +0 -484
  151. package/dist/esm/compiled/components/multi-value.js +0 -162
  152. package/dist/esm/compiled/components/option.js +0 -47
  153. package/dist/esm/compiled/components/placeholder.js +0 -35
  154. package/dist/esm/compiled/components/single-value.js +0 -36
  155. package/dist/esm/emotion/components/containers.js +0 -110
  156. package/dist/esm/emotion/components/control.js +0 -104
  157. package/dist/esm/emotion/components/group.js +0 -66
  158. package/dist/esm/emotion/components/indicators.js +0 -135
  159. package/dist/esm/emotion/components/input.js +0 -90
  160. package/dist/esm/emotion/components/internal/a11y-text.js +0 -30
  161. package/dist/esm/emotion/components/internal/dummy-input.js +0 -39
  162. package/dist/esm/emotion/components/internal/index.js +0 -4
  163. package/dist/esm/emotion/components/internal/required-input.js +0 -37
  164. package/dist/esm/emotion/components/internal/scroll-manager.js +0 -51
  165. package/dist/esm/emotion/components/internal/use-scroll-capture.js +0 -126
  166. package/dist/esm/emotion/components/internal/use-scroll-lock.js +0 -143
  167. package/dist/esm/emotion/components/live-region.js +0 -117
  168. package/dist/esm/emotion/components/menu.js +0 -456
  169. package/dist/esm/emotion/components/multi-value.js +0 -193
  170. package/dist/esm/emotion/components/option.js +0 -76
  171. package/dist/esm/emotion/components/placeholder.js +0 -28
  172. package/dist/esm/emotion/components/single-value.js +0 -34
  173. package/dist/types/compiled/components/control.d.ts +0 -41
  174. package/dist/types/compiled/components/group.d.ts +0 -54
  175. package/dist/types/compiled/components/indicators.d.ts +0 -72
  176. package/dist/types/compiled/components/input.d.ts +0 -36
  177. package/dist/types/compiled/components/internal/a11y-text.d.ts +0 -3
  178. package/dist/types/compiled/components/internal/dummy-input.d.ts +0 -8
  179. package/dist/types/compiled/components/internal/required-input.d.ts +0 -10
  180. package/dist/types/compiled/components/live-region.d.ts +0 -17
  181. package/dist/types/compiled/components/menu.d.ts +0 -115
  182. package/dist/types/compiled/components/multi-value.d.ts +0 -57
  183. package/dist/types/compiled/components/option.d.ts +0 -48
  184. package/dist/types/compiled/components/placeholder.d.ts +0 -21
  185. package/dist/types/compiled/components/single-value.d.ts +0 -27
  186. package/dist/types/emotion/components/containers.d.ts +0 -54
  187. package/dist/types/emotion/components/control.d.ts +0 -42
  188. package/dist/types/emotion/components/group.d.ts +0 -52
  189. package/dist/types/emotion/components/indicators.d.ts +0 -73
  190. package/dist/types/emotion/components/input.d.ts +0 -37
  191. package/dist/types/emotion/components/internal/a11y-text.d.ts +0 -8
  192. package/dist/types/emotion/components/internal/dummy-input.d.ts +0 -9
  193. package/dist/types/emotion/components/internal/index.d.ts +0 -4
  194. package/dist/types/emotion/components/internal/required-input.d.ts +0 -10
  195. package/dist/types/emotion/components/internal/scroll-manager.d.ts +0 -17
  196. package/dist/types/emotion/components/internal/use-scroll-capture.d.ts +0 -12
  197. package/dist/types/emotion/components/internal/use-scroll-lock.d.ts +0 -9
  198. package/dist/types/emotion/components/live-region.d.ts +0 -23
  199. package/dist/types/emotion/components/menu.d.ts +0 -116
  200. package/dist/types/emotion/components/multi-value.d.ts +0 -47
  201. package/dist/types/emotion/components/option.d.ts +0 -49
  202. package/dist/types/emotion/components/placeholder.d.ts +0 -22
  203. package/dist/types/emotion/components/single-value.d.ts +0 -28
  204. package/dist/types-ts4.5/compiled/components/control.d.ts +0 -41
  205. package/dist/types-ts4.5/compiled/components/group.d.ts +0 -54
  206. package/dist/types-ts4.5/compiled/components/indicators.d.ts +0 -72
  207. package/dist/types-ts4.5/compiled/components/input.d.ts +0 -36
  208. package/dist/types-ts4.5/compiled/components/internal/a11y-text.d.ts +0 -3
  209. package/dist/types-ts4.5/compiled/components/internal/dummy-input.d.ts +0 -8
  210. package/dist/types-ts4.5/compiled/components/internal/required-input.d.ts +0 -10
  211. package/dist/types-ts4.5/compiled/components/live-region.d.ts +0 -17
  212. package/dist/types-ts4.5/compiled/components/menu.d.ts +0 -115
  213. package/dist/types-ts4.5/compiled/components/multi-value.d.ts +0 -57
  214. package/dist/types-ts4.5/compiled/components/option.d.ts +0 -48
  215. package/dist/types-ts4.5/compiled/components/placeholder.d.ts +0 -21
  216. package/dist/types-ts4.5/compiled/components/single-value.d.ts +0 -27
  217. package/dist/types-ts4.5/emotion/components/containers.d.ts +0 -54
  218. package/dist/types-ts4.5/emotion/components/control.d.ts +0 -42
  219. package/dist/types-ts4.5/emotion/components/group.d.ts +0 -52
  220. package/dist/types-ts4.5/emotion/components/indicators.d.ts +0 -73
  221. package/dist/types-ts4.5/emotion/components/input.d.ts +0 -37
  222. package/dist/types-ts4.5/emotion/components/internal/a11y-text.d.ts +0 -8
  223. package/dist/types-ts4.5/emotion/components/internal/dummy-input.d.ts +0 -9
  224. package/dist/types-ts4.5/emotion/components/internal/index.d.ts +0 -4
  225. package/dist/types-ts4.5/emotion/components/internal/required-input.d.ts +0 -10
  226. package/dist/types-ts4.5/emotion/components/internal/scroll-manager.d.ts +0 -17
  227. package/dist/types-ts4.5/emotion/components/internal/use-scroll-capture.d.ts +0 -12
  228. package/dist/types-ts4.5/emotion/components/internal/use-scroll-lock.d.ts +0 -9
  229. package/dist/types-ts4.5/emotion/components/live-region.d.ts +0 -23
  230. package/dist/types-ts4.5/emotion/components/menu.d.ts +0 -116
  231. package/dist/types-ts4.5/emotion/components/multi-value.d.ts +0 -47
  232. package/dist/types-ts4.5/emotion/components/option.d.ts +0 -49
  233. package/dist/types-ts4.5/emotion/components/placeholder.d.ts +0 -22
  234. package/dist/types-ts4.5/emotion/components/single-value.d.ts +0 -28
  235. /package/dist/cjs/{compiled/components → components}/control.compiled.css +0 -0
  236. /package/dist/cjs/{compiled/components → components}/group.compiled.css +0 -0
  237. /package/dist/cjs/{compiled/components → components}/indicators.compiled.css +0 -0
  238. /package/dist/cjs/{compiled/components → components}/input.compiled.css +0 -0
  239. /package/dist/cjs/{compiled/components → components}/internal/a11y-text.compiled.css +0 -0
  240. /package/dist/cjs/{compiled/components → components}/internal/dummy-input.compiled.css +0 -0
  241. /package/dist/cjs/{compiled/components → components}/internal/required-input.compiled.css +0 -0
  242. /package/dist/cjs/{compiled/components → components}/menu.compiled.css +0 -0
  243. /package/dist/cjs/{compiled/components → components}/multi-value.compiled.css +0 -0
  244. /package/dist/cjs/{compiled/components → components}/option.compiled.css +0 -0
  245. /package/dist/cjs/{compiled/components → components}/placeholder.compiled.css +0 -0
  246. /package/dist/cjs/{compiled/components → components}/single-value.compiled.css +0 -0
  247. /package/dist/es2019/{compiled/components → components}/control.compiled.css +0 -0
  248. /package/dist/es2019/{compiled/components → components}/group.compiled.css +0 -0
  249. /package/dist/es2019/{compiled/components → components}/indicators.compiled.css +0 -0
  250. /package/dist/es2019/{compiled/components → components}/input.compiled.css +0 -0
  251. /package/dist/es2019/{compiled/components → components}/internal/a11y-text.compiled.css +0 -0
  252. /package/dist/es2019/{compiled/components → components}/internal/dummy-input.compiled.css +0 -0
  253. /package/dist/es2019/{compiled/components → components}/internal/required-input.compiled.css +0 -0
  254. /package/dist/es2019/{compiled/components → components}/menu.compiled.css +0 -0
  255. /package/dist/es2019/{compiled/components → components}/multi-value.compiled.css +0 -0
  256. /package/dist/es2019/{compiled/components → components}/option.compiled.css +0 -0
  257. /package/dist/es2019/{compiled/components → components}/placeholder.compiled.css +0 -0
  258. /package/dist/es2019/{compiled/components → components}/single-value.compiled.css +0 -0
  259. /package/dist/esm/{compiled/components → components}/control.compiled.css +0 -0
  260. /package/dist/esm/{compiled/components → components}/group.compiled.css +0 -0
  261. /package/dist/esm/{compiled/components → components}/indicators.compiled.css +0 -0
  262. /package/dist/esm/{compiled/components → components}/input.compiled.css +0 -0
  263. /package/dist/esm/{compiled/components → components}/internal/a11y-text.compiled.css +0 -0
  264. /package/dist/esm/{compiled/components → components}/internal/dummy-input.compiled.css +0 -0
  265. /package/dist/esm/{compiled/components → components}/internal/required-input.compiled.css +0 -0
  266. /package/dist/esm/{compiled/components → components}/menu.compiled.css +0 -0
  267. /package/dist/esm/{compiled/components → components}/multi-value.compiled.css +0 -0
  268. /package/dist/esm/{compiled/components → components}/option.compiled.css +0 -0
  269. /package/dist/esm/{compiled/components → components}/placeholder.compiled.css +0 -0
  270. /package/dist/esm/{compiled/components → components}/single-value.compiled.css +0 -0
@@ -1,16 +1,268 @@
1
- /* eslint-disable @repo/internal/react/no-unsafe-spread-props */
2
- import React from 'react';
3
- 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';
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
+ }
4
180
 
5
181
  // Menu Component
6
182
  // ------------------------------
7
183
 
8
- export const menuCSS = props => compiledMenuCSS();
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);
9
192
 
10
193
  // NOTE: internal only
11
194
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
12
- export const MenuPlacer = props => /*#__PURE__*/React.createElement(CompiledMenuPlacer, props);
13
- const Menu = props => /*#__PURE__*/React.createElement(Compiled, 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
+ };
14
266
 
15
267
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
16
268
  export default Menu;
@@ -19,32 +271,207 @@ export default Menu;
19
271
  // Menu List
20
272
  // ==============================
21
273
 
22
- export const menuListCSS = props => compiledMenuListCSS();
274
+ export const menuListCSS = () => ({});
275
+ const menuListStyles = null;
23
276
 
24
277
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
25
- export const MenuList = props => /*#__PURE__*/React.createElement(CompiledMenuList, 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
+ };
26
308
 
27
309
  // ==============================
28
310
  // Menu Notices
29
311
  // ==============================
30
312
 
31
- const noticeCSS = ({}) => ({
32
- textAlign: 'center',
33
- padding: `${"var(--ds-space-100, 8px)"} ${"var(--ds-space-150, 12px)"}`
34
- });
313
+ const noticeCSS = () => ({});
314
+ const noticeStyles = null;
35
315
  export const noOptionsMessageCSS = noticeCSS;
36
316
  export const loadingMessageCSS = noticeCSS;
37
317
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
38
- export const NoOptionsMessage = props => /*#__PURE__*/React.createElement(CompiledNoOptionsMessage, 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
+ };
39
348
 
40
349
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
41
- export const LoadingMessage = props => /*#__PURE__*/React.createElement(CompiledLoadingMessage, 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
+ };
42
380
 
43
381
  // ==============================
44
382
  // Menu Portal
45
383
  // ==============================
46
384
 
47
- export const menuPortalCSS = props => compiledMenuPortalCSS();
48
-
385
+ export const menuPortalCSS = () => ({});
386
+ const menuPortalStyles = {
387
+ root: "_1pbykb7n _1ltva1vk _kqswcp1v _154i1nmo _1bsb1qxj"
388
+ };
49
389
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
50
- export const MenuPortal = props => /*#__PURE__*/React.createElement(CompiledMenuPortal, 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,18 +1,165 @@
1
- /* eslint-disable @repo/internal/react/no-unsafe-spread-props */
2
- import React from 'react';
3
- 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';
4
- export const multiValueCSS = props => CompiledMultiValueCSS();
5
- export const multiValueLabelCSS = props => CompiledMultiValueLabelCSS();
6
- export const multiValueRemoveCSS = props => CompiledMultiValueRemoveCSS();
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';
9
+ import { fg } from '@atlaskit/platform-feature-flags';
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
+ };
7
31
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
8
- export const MultiValueContainer = props => /*#__PURE__*/React.createElement(CompiledMultiValueContainer, 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
+ };
9
45
 
10
46
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
11
- export const MultiValueLabel = props => /*#__PURE__*/React.createElement(CompiledMultiValueLabel, props);
12
- export function MultiValueRemove(props) {
13
- return /*#__PURE__*/React.createElement(CompiledMultiValueRemove, props);
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
+ })));
14
84
  }
15
- const MultiValue = props => /*#__PURE__*/React.createElement(Compiled, 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
+ };
16
163
 
17
164
  // eslint-disable-next-line @repo/internal/react/require-jsdoc
18
165
  export default MultiValue;