@atlaskit/react-select 3.14.3 → 3.14.4

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 (348) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/compiled/components/containers.compiled.css +6 -6
  3. package/dist/cjs/compiled/components/containers.js +7 -17
  4. package/dist/cjs/components/containers/indicators-container.compiled.css +5 -0
  5. package/dist/cjs/components/containers/indicators-container.js +36 -0
  6. package/dist/cjs/components/containers/multi-value-container.compiled.css +19 -0
  7. package/dist/cjs/components/containers/multi-value-container.js +34 -0
  8. package/dist/cjs/components/containers/select-container.compiled.css +6 -0
  9. package/dist/cjs/components/containers/select-container.js +43 -0
  10. package/dist/cjs/components/containers/value-container.compiled.css +17 -0
  11. package/dist/cjs/components/containers/value-container.js +46 -0
  12. package/dist/cjs/components/control.js +3 -6
  13. package/dist/cjs/components/{internal/dummy-input.js → dummy-input.js} +22 -5
  14. package/dist/cjs/components/group-heading.compiled.css +9 -0
  15. package/dist/cjs/components/group-heading.js +40 -0
  16. package/dist/cjs/components/group.compiled.css +2 -11
  17. package/dist/cjs/components/group.js +4 -33
  18. package/dist/cjs/components/index.js +31 -21
  19. package/dist/{esm/components/indicators.compiled.css → cjs/components/indicators/clear-indicator.compiled.css} +0 -6
  20. package/dist/cjs/components/indicators/clear-indicator.js +55 -0
  21. package/dist/cjs/components/indicators/dropdown-indicator.compiled.css +13 -0
  22. package/dist/cjs/components/indicators/dropdown-indicator.js +55 -0
  23. package/dist/cjs/components/indicators/loading-indicator.compiled.css +6 -0
  24. package/dist/cjs/components/indicators/loading-indicator.js +55 -0
  25. package/dist/cjs/components/input.js +5 -7
  26. package/dist/cjs/components/live-region.js +1 -1
  27. package/dist/cjs/components/menu-list.compiled.css +5 -0
  28. package/dist/cjs/components/menu-list.js +48 -0
  29. package/dist/cjs/components/menu-loading-message.compiled.css +5 -0
  30. package/dist/cjs/components/menu-loading-message.js +53 -0
  31. package/dist/cjs/components/menu-no-options-message.compiled.css +5 -0
  32. package/dist/cjs/components/menu-no-options-message.js +52 -0
  33. package/dist/cjs/components/menu-placer.js +301 -0
  34. package/dist/cjs/components/menu-portal.compiled.css +5 -0
  35. package/dist/cjs/components/menu-portal.js +132 -0
  36. package/dist/cjs/components/menu.compiled.css +2 -14
  37. package/dist/cjs/components/menu.js +5 -449
  38. package/dist/cjs/components/multi-value-label.compiled.css +10 -0
  39. package/dist/cjs/components/multi-value-label.js +34 -0
  40. package/dist/cjs/components/multi-value-remove.compiled.css +24 -0
  41. package/dist/cjs/components/multi-value-remove.js +40 -0
  42. package/dist/cjs/components/multi-value.compiled.css +0 -30
  43. package/dist/cjs/components/multi-value.js +10 -82
  44. package/dist/cjs/components/option.js +3 -6
  45. package/dist/cjs/components/placeholder.compiled.css +4 -4
  46. package/dist/cjs/components/placeholder.js +4 -7
  47. package/dist/cjs/components/single-value.compiled.css +5 -5
  48. package/dist/cjs/components/single-value.js +4 -7
  49. package/dist/cjs/get-style-props.js +16 -0
  50. package/dist/cjs/internal/classnames.js +42 -0
  51. package/dist/cjs/internal/clean-common-props.js +34 -0
  52. package/dist/cjs/internal/clean-value.js +17 -0
  53. package/dist/cjs/internal/is-document-el.js +9 -0
  54. package/dist/cjs/internal/multi-value-as-value.js +9 -0
  55. package/dist/cjs/internal/passive-event-detector.js +30 -0
  56. package/dist/cjs/internal/portal-placement-context.js +19 -0
  57. package/dist/cjs/internal/scroll-to.js +15 -0
  58. package/dist/cjs/internal/single-value-as-value.js +9 -0
  59. package/dist/cjs/{components/internal → internal}/use-scroll-capture.js +2 -2
  60. package/dist/cjs/internal/value-ternary.js +9 -0
  61. package/dist/cjs/select.compiled.css +3 -0
  62. package/dist/cjs/select.js +132 -35
  63. package/dist/cjs/styles.js +0 -34
  64. package/dist/cjs/use-async.js +10 -2
  65. package/dist/cjs/use-creatable.js +4 -3
  66. package/dist/es2019/compiled/components/containers.compiled.css +6 -6
  67. package/dist/es2019/compiled/components/containers.js +3 -7
  68. package/dist/es2019/components/containers/indicators-container.compiled.css +5 -0
  69. package/dist/es2019/components/containers/indicators-container.js +30 -0
  70. package/dist/es2019/components/containers/multi-value-container.compiled.css +19 -0
  71. package/dist/es2019/components/containers/multi-value-container.js +26 -0
  72. package/dist/es2019/components/containers/select-container.compiled.css +6 -0
  73. package/dist/es2019/components/containers/select-container.js +37 -0
  74. package/dist/es2019/components/containers/value-container.compiled.css +17 -0
  75. package/dist/es2019/components/containers/value-container.js +42 -0
  76. package/dist/es2019/components/control.js +1 -2
  77. package/dist/es2019/components/{internal/dummy-input.js → dummy-input.js} +7 -1
  78. package/dist/es2019/components/group-heading.compiled.css +9 -0
  79. package/dist/es2019/components/group-heading.js +33 -0
  80. package/dist/es2019/components/group.compiled.css +2 -11
  81. package/dist/es2019/components/group.js +2 -29
  82. package/dist/es2019/components/index.js +17 -5
  83. package/dist/{cjs/components/indicators.compiled.css → es2019/components/indicators/clear-indicator.compiled.css} +0 -6
  84. package/dist/es2019/components/indicators/clear-indicator.js +48 -0
  85. package/dist/es2019/components/indicators/dropdown-indicator.compiled.css +13 -0
  86. package/dist/es2019/components/indicators/dropdown-indicator.js +49 -0
  87. package/dist/es2019/components/indicators/loading-indicator.compiled.css +6 -0
  88. package/dist/es2019/components/indicators/loading-indicator.js +43 -0
  89. package/dist/es2019/components/input.js +2 -2
  90. package/dist/es2019/components/live-region.js +1 -1
  91. package/dist/es2019/components/menu-list.compiled.css +5 -0
  92. package/dist/es2019/components/menu-list.js +40 -0
  93. package/dist/es2019/components/menu-loading-message.compiled.css +5 -0
  94. package/dist/es2019/components/menu-loading-message.js +41 -0
  95. package/dist/es2019/components/menu-no-options-message.compiled.css +5 -0
  96. package/dist/es2019/components/menu-no-options-message.js +40 -0
  97. package/dist/es2019/components/menu-placer.js +288 -0
  98. package/dist/es2019/components/menu-portal.compiled.css +5 -0
  99. package/dist/es2019/components/menu-portal.js +115 -0
  100. package/dist/es2019/components/menu.compiled.css +2 -14
  101. package/dist/es2019/components/menu.js +2 -441
  102. package/dist/es2019/components/multi-value-label.compiled.css +10 -0
  103. package/dist/es2019/components/multi-value-label.js +26 -0
  104. package/dist/es2019/components/multi-value-remove.compiled.css +24 -0
  105. package/dist/es2019/components/multi-value-remove.js +32 -0
  106. package/dist/es2019/components/multi-value.compiled.css +0 -30
  107. package/dist/es2019/components/multi-value.js +2 -69
  108. package/dist/es2019/components/option.js +1 -2
  109. package/dist/es2019/components/placeholder.compiled.css +4 -4
  110. package/dist/es2019/components/placeholder.js +2 -3
  111. package/dist/es2019/components/single-value.compiled.css +5 -5
  112. package/dist/es2019/components/single-value.js +2 -3
  113. package/dist/es2019/get-style-props.js +12 -0
  114. package/dist/es2019/internal/classnames.js +29 -0
  115. package/dist/es2019/internal/clean-common-props.js +28 -0
  116. package/dist/es2019/internal/clean-value.js +9 -0
  117. package/dist/es2019/internal/is-document-el.js +3 -0
  118. package/dist/es2019/internal/multi-value-as-value.js +3 -0
  119. package/dist/es2019/internal/passive-event-detector.js +22 -0
  120. package/dist/es2019/internal/portal-placement-context.js +13 -0
  121. package/dist/es2019/internal/scroll-to.js +9 -0
  122. package/dist/es2019/internal/single-value-as-value.js +3 -0
  123. package/dist/es2019/{components/internal → internal}/use-scroll-capture.js +1 -1
  124. package/dist/es2019/internal/value-ternary.js +3 -0
  125. package/dist/es2019/select.compiled.css +3 -0
  126. package/dist/es2019/select.js +110 -15
  127. package/dist/es2019/styles.js +0 -33
  128. package/dist/es2019/use-async.js +9 -1
  129. package/dist/es2019/use-creatable.js +2 -1
  130. package/dist/esm/compiled/components/containers.compiled.css +6 -6
  131. package/dist/esm/compiled/components/containers.js +3 -13
  132. package/dist/esm/components/containers/indicators-container.compiled.css +5 -0
  133. package/dist/esm/components/containers/indicators-container.js +27 -0
  134. package/dist/esm/components/containers/multi-value-container.compiled.css +19 -0
  135. package/dist/esm/components/containers/multi-value-container.js +25 -0
  136. package/dist/esm/components/containers/select-container.compiled.css +6 -0
  137. package/dist/esm/components/containers/select-container.js +34 -0
  138. package/dist/esm/components/containers/value-container.compiled.css +17 -0
  139. package/dist/esm/components/containers/value-container.js +37 -0
  140. package/dist/esm/components/control.js +1 -4
  141. package/dist/esm/components/{internal/dummy-input.js → dummy-input.js} +21 -4
  142. package/dist/esm/components/group-heading.compiled.css +9 -0
  143. package/dist/esm/components/group-heading.js +31 -0
  144. package/dist/esm/components/group.compiled.css +2 -11
  145. package/dist/esm/components/group.js +2 -31
  146. package/dist/esm/components/index.js +17 -5
  147. package/dist/{es2019/components/indicators.compiled.css → esm/components/indicators/clear-indicator.compiled.css} +0 -6
  148. package/dist/esm/components/indicators/clear-indicator.js +46 -0
  149. package/dist/esm/components/indicators/dropdown-indicator.compiled.css +13 -0
  150. package/dist/esm/components/indicators/dropdown-indicator.js +46 -0
  151. package/dist/esm/components/indicators/loading-indicator.compiled.css +6 -0
  152. package/dist/esm/components/indicators/loading-indicator.js +47 -0
  153. package/dist/esm/components/input.js +2 -4
  154. package/dist/esm/components/live-region.js +1 -1
  155. package/dist/esm/components/menu-list.compiled.css +5 -0
  156. package/dist/esm/components/menu-list.js +39 -0
  157. package/dist/esm/components/menu-loading-message.compiled.css +5 -0
  158. package/dist/esm/components/menu-loading-message.js +45 -0
  159. package/dist/esm/components/menu-no-options-message.compiled.css +5 -0
  160. package/dist/esm/components/menu-no-options-message.js +44 -0
  161. package/dist/esm/components/menu-placer.js +294 -0
  162. package/dist/esm/components/menu-portal.compiled.css +5 -0
  163. package/dist/esm/components/menu-portal.js +123 -0
  164. package/dist/esm/components/menu.compiled.css +2 -14
  165. package/dist/esm/components/menu.js +2 -451
  166. package/dist/esm/components/multi-value-label.compiled.css +10 -0
  167. package/dist/esm/components/multi-value-label.js +25 -0
  168. package/dist/esm/components/multi-value-remove.compiled.css +24 -0
  169. package/dist/esm/components/multi-value-remove.js +31 -0
  170. package/dist/esm/components/multi-value.compiled.css +0 -30
  171. package/dist/esm/components/multi-value.js +5 -75
  172. package/dist/esm/components/option.js +1 -4
  173. package/dist/esm/components/placeholder.compiled.css +4 -4
  174. package/dist/esm/components/placeholder.js +2 -5
  175. package/dist/esm/components/single-value.compiled.css +5 -5
  176. package/dist/esm/components/single-value.js +2 -5
  177. package/dist/esm/get-style-props.js +10 -0
  178. package/dist/esm/internal/classnames.js +36 -0
  179. package/dist/esm/internal/clean-common-props.js +27 -0
  180. package/dist/esm/internal/clean-value.js +10 -0
  181. package/dist/esm/internal/is-document-el.js +3 -0
  182. package/dist/esm/internal/multi-value-as-value.js +3 -0
  183. package/dist/esm/internal/passive-event-detector.js +22 -0
  184. package/dist/esm/internal/portal-placement-context.js +13 -0
  185. package/dist/esm/internal/scroll-to.js +9 -0
  186. package/dist/esm/internal/single-value-as-value.js +3 -0
  187. package/dist/esm/{components/internal → internal}/use-scroll-capture.js +1 -1
  188. package/dist/esm/internal/value-ternary.js +3 -0
  189. package/dist/esm/select.compiled.css +3 -0
  190. package/dist/esm/select.js +112 -15
  191. package/dist/esm/styles.js +0 -33
  192. package/dist/esm/use-async.js +9 -1
  193. package/dist/esm/use-creatable.js +2 -1
  194. package/dist/types/async-creatable.d.ts +1 -1
  195. package/dist/types/async.d.ts +1 -1
  196. package/dist/types/builtins.d.ts +1 -1
  197. package/dist/types/compiled/components/containers.d.ts +0 -3
  198. package/dist/types/components/containers/indicators-container.d.ts +18 -0
  199. package/dist/types/components/containers/multi-value-container.d.ts +6 -0
  200. package/dist/types/components/containers/select-container.d.ts +22 -0
  201. package/dist/types/components/containers/value-container.d.ts +22 -0
  202. package/dist/types/components/control.d.ts +0 -1
  203. package/dist/types/components/{internal/dummy-input.d.ts → dummy-input.d.ts} +1 -1
  204. package/dist/types/components/group-heading.d.ts +19 -0
  205. package/dist/types/components/group.d.ts +3 -21
  206. package/dist/types/components/index.d.ts +20 -7
  207. package/dist/types/components/indicators/clear-indicator.d.ts +29 -0
  208. package/dist/types/components/indicators/dropdown-indicator.d.ts +26 -0
  209. package/dist/types/components/indicators/loading-indicator.d.ts +25 -0
  210. package/dist/types/components/input.d.ts +0 -1
  211. package/dist/types/components/menu-list.d.ts +29 -0
  212. package/dist/types/components/menu-loading-message.d.ts +2 -0
  213. package/dist/types/components/menu-no-options-message.d.ts +2 -0
  214. package/dist/types/components/menu-placer.d.ts +49 -0
  215. package/dist/types/components/menu-portal.d.ts +23 -0
  216. package/dist/types/components/menu.d.ts +3 -96
  217. package/dist/types/components/multi-value-label.d.ts +6 -0
  218. package/dist/types/components/multi-value-remove.d.ts +20 -0
  219. package/dist/types/components/multi-value.d.ts +3 -35
  220. package/dist/types/components/option.d.ts +0 -1
  221. package/dist/types/components/placeholder.d.ts +0 -1
  222. package/dist/types/components/single-value.d.ts +0 -1
  223. package/dist/types/creatable.d.ts +1 -1
  224. package/dist/types/get-style-props.d.ts +6 -0
  225. package/dist/types/index.d.ts +14 -5
  226. package/dist/types/internal/classnames.d.ts +2 -0
  227. package/dist/types/internal/clean-common-props.d.ts +2 -0
  228. package/dist/types/internal/clean-value.d.ts +2 -0
  229. package/dist/types/internal/is-document-el.d.ts +1 -0
  230. package/dist/types/internal/multi-value-as-value.d.ts +2 -0
  231. package/dist/types/internal/passive-event-detector.d.ts +1 -0
  232. package/dist/types/internal/portal-placement-context.d.ts +13 -0
  233. package/dist/types/internal/scroll-to.d.ts +1 -0
  234. package/dist/types/internal/single-value-as-value.d.ts +2 -0
  235. package/dist/types/internal/value-ternary.d.ts +2 -0
  236. package/dist/types/select.d.ts +4 -0
  237. package/dist/types/state-manager.d.ts +1 -1
  238. package/dist/types/styles.d.ts +12 -8
  239. package/dist/types/theme.d.ts +1 -1
  240. package/dist/types/types.d.ts +28 -3
  241. package/dist/types/use-async.d.ts +2 -2
  242. package/dist/types/use-creatable.d.ts +1 -1
  243. package/dist/types/use-state-manager.d.ts +2 -2
  244. package/dist/types-ts4.5/async-creatable.d.ts +1 -1
  245. package/dist/types-ts4.5/async.d.ts +1 -1
  246. package/dist/types-ts4.5/builtins.d.ts +1 -1
  247. package/dist/types-ts4.5/compiled/components/containers.d.ts +0 -3
  248. package/dist/types-ts4.5/components/containers/indicators-container.d.ts +18 -0
  249. package/dist/types-ts4.5/components/containers/multi-value-container.d.ts +6 -0
  250. package/dist/types-ts4.5/components/containers/select-container.d.ts +22 -0
  251. package/dist/types-ts4.5/components/containers/value-container.d.ts +22 -0
  252. package/dist/types-ts4.5/components/control.d.ts +0 -1
  253. package/dist/types-ts4.5/components/{internal/dummy-input.d.ts → dummy-input.d.ts} +1 -1
  254. package/dist/types-ts4.5/components/group-heading.d.ts +19 -0
  255. package/dist/types-ts4.5/components/group.d.ts +3 -21
  256. package/dist/types-ts4.5/components/index.d.ts +20 -7
  257. package/dist/types-ts4.5/components/indicators/clear-indicator.d.ts +29 -0
  258. package/dist/types-ts4.5/components/indicators/dropdown-indicator.d.ts +26 -0
  259. package/dist/types-ts4.5/components/indicators/loading-indicator.d.ts +25 -0
  260. package/dist/types-ts4.5/components/input.d.ts +0 -1
  261. package/dist/types-ts4.5/components/menu-list.d.ts +29 -0
  262. package/dist/types-ts4.5/components/menu-loading-message.d.ts +2 -0
  263. package/dist/types-ts4.5/components/menu-no-options-message.d.ts +2 -0
  264. package/dist/types-ts4.5/components/menu-placer.d.ts +49 -0
  265. package/dist/types-ts4.5/components/menu-portal.d.ts +23 -0
  266. package/dist/types-ts4.5/components/menu.d.ts +3 -96
  267. package/dist/types-ts4.5/components/multi-value-label.d.ts +6 -0
  268. package/dist/types-ts4.5/components/multi-value-remove.d.ts +20 -0
  269. package/dist/types-ts4.5/components/multi-value.d.ts +3 -35
  270. package/dist/types-ts4.5/components/option.d.ts +0 -1
  271. package/dist/types-ts4.5/components/placeholder.d.ts +0 -1
  272. package/dist/types-ts4.5/components/single-value.d.ts +0 -1
  273. package/dist/types-ts4.5/creatable.d.ts +1 -1
  274. package/dist/types-ts4.5/get-style-props.d.ts +6 -0
  275. package/dist/types-ts4.5/index.d.ts +14 -5
  276. package/dist/types-ts4.5/internal/classnames.d.ts +2 -0
  277. package/dist/types-ts4.5/internal/clean-common-props.d.ts +2 -0
  278. package/dist/types-ts4.5/internal/clean-value.d.ts +2 -0
  279. package/dist/types-ts4.5/internal/is-document-el.d.ts +1 -0
  280. package/dist/types-ts4.5/internal/multi-value-as-value.d.ts +2 -0
  281. package/dist/types-ts4.5/internal/passive-event-detector.d.ts +1 -0
  282. package/dist/types-ts4.5/internal/portal-placement-context.d.ts +13 -0
  283. package/dist/types-ts4.5/internal/scroll-to.d.ts +1 -0
  284. package/dist/types-ts4.5/internal/single-value-as-value.d.ts +2 -0
  285. package/dist/types-ts4.5/internal/value-ternary.d.ts +2 -0
  286. package/dist/types-ts4.5/select.d.ts +4 -0
  287. package/dist/types-ts4.5/state-manager.d.ts +1 -1
  288. package/dist/types-ts4.5/styles.d.ts +12 -8
  289. package/dist/types-ts4.5/theme.d.ts +1 -1
  290. package/dist/types-ts4.5/types.d.ts +28 -3
  291. package/dist/types-ts4.5/use-async.d.ts +2 -2
  292. package/dist/types-ts4.5/use-creatable.d.ts +1 -1
  293. package/dist/types-ts4.5/use-state-manager.d.ts +2 -2
  294. package/package.json +6 -6
  295. package/dist/cjs/components/containers.compiled.css +0 -25
  296. package/dist/cjs/components/containers.js +0 -116
  297. package/dist/cjs/components/indicators.js +0 -155
  298. package/dist/cjs/utils.js +0 -391
  299. package/dist/es2019/components/containers.compiled.css +0 -25
  300. package/dist/es2019/components/containers.js +0 -113
  301. package/dist/es2019/components/indicators.js +0 -143
  302. package/dist/es2019/utils.js +0 -344
  303. package/dist/esm/components/containers.compiled.css +0 -25
  304. package/dist/esm/components/containers.js +0 -108
  305. package/dist/esm/components/indicators.js +0 -148
  306. package/dist/esm/utils.js +0 -364
  307. package/dist/types/components/containers.d.ts +0 -53
  308. package/dist/types/components/indicators.d.ts +0 -72
  309. package/dist/types/utils.d.ts +0 -40
  310. package/dist/types-ts4.5/components/containers.d.ts +0 -53
  311. package/dist/types-ts4.5/components/indicators.d.ts +0 -72
  312. package/dist/types-ts4.5/utils.d.ts +0 -40
  313. /package/dist/cjs/components/{internal/dummy-input.compiled.css → dummy-input.compiled.css} +0 -0
  314. /package/dist/cjs/{components/internal → internal}/a11y-text.compiled.css +0 -0
  315. /package/dist/cjs/{components/internal → internal}/a11y-text.js +0 -0
  316. /package/dist/cjs/{components/internal → internal}/notify-open-layer-observer.js +0 -0
  317. /package/dist/cjs/{components/internal → internal}/required-input.compiled.css +0 -0
  318. /package/dist/cjs/{components/internal → internal}/required-input.js +0 -0
  319. /package/dist/cjs/{components/internal → internal}/scroll-manager.js +0 -0
  320. /package/dist/cjs/{components/internal → internal}/use-scroll-lock.js +0 -0
  321. /package/dist/es2019/components/{internal/dummy-input.compiled.css → dummy-input.compiled.css} +0 -0
  322. /package/dist/es2019/{components/internal → internal}/a11y-text.compiled.css +0 -0
  323. /package/dist/es2019/{components/internal → internal}/a11y-text.js +0 -0
  324. /package/dist/es2019/{components/internal → internal}/notify-open-layer-observer.js +0 -0
  325. /package/dist/es2019/{components/internal → internal}/required-input.compiled.css +0 -0
  326. /package/dist/es2019/{components/internal → internal}/required-input.js +0 -0
  327. /package/dist/es2019/{components/internal → internal}/scroll-manager.js +0 -0
  328. /package/dist/es2019/{components/internal → internal}/use-scroll-lock.js +0 -0
  329. /package/dist/esm/components/{internal/dummy-input.compiled.css → dummy-input.compiled.css} +0 -0
  330. /package/dist/esm/{components/internal → internal}/a11y-text.compiled.css +0 -0
  331. /package/dist/esm/{components/internal → internal}/a11y-text.js +0 -0
  332. /package/dist/esm/{components/internal → internal}/notify-open-layer-observer.js +0 -0
  333. /package/dist/esm/{components/internal → internal}/required-input.compiled.css +0 -0
  334. /package/dist/esm/{components/internal → internal}/required-input.js +0 -0
  335. /package/dist/esm/{components/internal → internal}/scroll-manager.js +0 -0
  336. /package/dist/esm/{components/internal → internal}/use-scroll-lock.js +0 -0
  337. /package/dist/types/{components/internal → internal}/a11y-text.d.ts +0 -0
  338. /package/dist/types/{components/internal → internal}/notify-open-layer-observer.d.ts +0 -0
  339. /package/dist/types/{components/internal → internal}/required-input.d.ts +0 -0
  340. /package/dist/types/{components/internal → internal}/scroll-manager.d.ts +0 -0
  341. /package/dist/types/{components/internal → internal}/use-scroll-capture.d.ts +0 -0
  342. /package/dist/types/{components/internal → internal}/use-scroll-lock.d.ts +0 -0
  343. /package/dist/types-ts4.5/{components/internal → internal}/a11y-text.d.ts +0 -0
  344. /package/dist/types-ts4.5/{components/internal → internal}/notify-open-layer-observer.d.ts +0 -0
  345. /package/dist/types-ts4.5/{components/internal → internal}/required-input.d.ts +0 -0
  346. /package/dist/types-ts4.5/{components/internal → internal}/scroll-manager.d.ts +0 -0
  347. /package/dist/types-ts4.5/{components/internal → internal}/use-scroll-capture.d.ts +0 -0
  348. /package/dist/types-ts4.5/{components/internal → internal}/use-scroll-lock.d.ts +0 -0
@@ -0,0 +1,288 @@
1
+ import { useContext, useLayoutEffect, useRef, useState } from 'react';
2
+ import __noop from '@atlaskit/ds-lib/noop';
3
+ import { PortalPlacementContext } from '../internal/portal-placement-context';
4
+ const noop = __noop;
5
+ function getScrollParent(element) {
6
+ let style = getComputedStyle(element);
7
+ const excludeStaticParent = style.position === 'absolute';
8
+ const overflowRx = /(auto|scroll)/;
9
+ if (style.position === 'fixed') {
10
+ return document.documentElement;
11
+ }
12
+ for (let parent = element; parent = parent.parentElement;) {
13
+ style = getComputedStyle(parent);
14
+ if (excludeStaticParent && style.position === 'static') {
15
+ continue;
16
+ }
17
+ if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {
18
+ return parent;
19
+ }
20
+ }
21
+ return document.documentElement;
22
+ }
23
+ function isDocumentElement(el) {
24
+ return [document.documentElement, document.body, window].indexOf(el) > -1;
25
+ }
26
+ function normalizedHeight(el) {
27
+ if (isDocumentElement(el)) {
28
+ return window.innerHeight;
29
+ }
30
+ return el.clientHeight;
31
+ }
32
+ function scrollTo(el, top) {
33
+ // with a scroll distance, we perform scroll on the element
34
+ if (isDocumentElement(el)) {
35
+ window.scrollTo(0, top);
36
+ return;
37
+ }
38
+ el.scrollTop = top;
39
+ }
40
+ function easeOutCubic(t, b, c, d) {
41
+ return c * ((t = t / d - 1) * t * t + 1) + b;
42
+ }
43
+ function getScrollTop(el) {
44
+ if (isDocumentElement(el)) {
45
+ return window.pageYOffset;
46
+ }
47
+ return el.scrollTop;
48
+ }
49
+ function animatedScrollTo(element, to, duration = 200, callback = noop) {
50
+ const start = getScrollTop(element);
51
+ const change = to - start;
52
+ const increment = 10;
53
+ let currentTime = 0;
54
+ function animateScroll() {
55
+ currentTime += increment;
56
+ const val = easeOutCubic(currentTime, start, change, duration);
57
+ scrollTo(element, val);
58
+ if (currentTime < duration) {
59
+ window.requestAnimationFrame(animateScroll);
60
+ } else {
61
+ callback(element);
62
+ }
63
+ }
64
+ animateScroll();
65
+ }
66
+ function getMenuPlacement({
67
+ maxHeight: preferredMaxHeight,
68
+ menuEl,
69
+ minHeight,
70
+ placement: preferredPlacement,
71
+ shouldScroll,
72
+ isFixedPosition,
73
+ controlHeight
74
+ }) {
75
+ const scrollParent = getScrollParent(menuEl);
76
+ const defaultState = {
77
+ placement: 'bottom',
78
+ maxHeight: preferredMaxHeight
79
+ };
80
+
81
+ // something went wrong, return default state
82
+ if (!menuEl || !menuEl.offsetParent) {
83
+ return defaultState;
84
+ }
85
+
86
+ // we can't trust `scrollParent.scrollHeight` --> it may increase when
87
+ // the menu is rendered
88
+ const {
89
+ height: scrollHeight
90
+ } = scrollParent.getBoundingClientRect();
91
+ const {
92
+ bottom: menuBottom,
93
+ height: menuHeight,
94
+ top: menuTop
95
+ } = menuEl.getBoundingClientRect();
96
+ const {
97
+ top: containerTop
98
+ } = menuEl.offsetParent.getBoundingClientRect();
99
+ const viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent);
100
+ const scrollTop = getScrollTop(scrollParent);
101
+ const menuTopFromParent = menuTop;
102
+ const marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);
103
+ const marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);
104
+ const viewSpaceAbove = containerTop - marginTop;
105
+ const viewSpaceBelow = viewHeight - menuTopFromParent;
106
+ const scrollSpaceAbove = viewSpaceAbove + scrollTop;
107
+ const scrollSpaceBelow = scrollHeight - scrollTop - menuTopFromParent;
108
+ const scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;
109
+ const scrollUp = scrollTop + menuTop - marginTop;
110
+ const scrollDuration = 160;
111
+ switch (preferredPlacement) {
112
+ case 'auto':
113
+ case 'bottom':
114
+ // 1: the menu will fit, do nothing
115
+ if (viewSpaceBelow >= menuHeight) {
116
+ return {
117
+ placement: 'bottom',
118
+ maxHeight: preferredMaxHeight
119
+ };
120
+ }
121
+
122
+ // 2: the menu will fit, if scrolled
123
+ if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {
124
+ if (shouldScroll) {
125
+ animatedScrollTo(scrollParent, scrollDown, scrollDuration);
126
+ }
127
+ return {
128
+ placement: 'bottom',
129
+ maxHeight: preferredMaxHeight
130
+ };
131
+ }
132
+
133
+ // 3: the menu will fit, if constrained
134
+ if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {
135
+ if (shouldScroll) {
136
+ animatedScrollTo(scrollParent, scrollDown, scrollDuration);
137
+ }
138
+
139
+ // we want to provide as much of the menu as possible to the user,
140
+ // so give them whatever is available below rather than the minHeight.
141
+ const constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;
142
+ return {
143
+ placement: 'bottom',
144
+ maxHeight: constrainedHeight
145
+ };
146
+ }
147
+
148
+ // 4. Forked beviour when there isn't enough space below
149
+
150
+ // AUTO: flip the menu, render above
151
+ if (preferredPlacement === 'auto' || isFixedPosition) {
152
+ // may need to be constrained after flipping
153
+ let constrainedHeight = preferredMaxHeight;
154
+ const spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;
155
+ if (spaceAbove >= minHeight) {
156
+ constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight);
157
+ }
158
+ return {
159
+ placement: 'top',
160
+ maxHeight: constrainedHeight
161
+ };
162
+ }
163
+
164
+ // BOTTOM: allow browser to increase scrollable area and immediately set scroll
165
+ if (preferredPlacement === 'bottom') {
166
+ if (shouldScroll) {
167
+ scrollTo(scrollParent, scrollDown);
168
+ }
169
+ return {
170
+ placement: 'bottom',
171
+ maxHeight: preferredMaxHeight
172
+ };
173
+ }
174
+ break;
175
+ case 'top':
176
+ // 1: the menu will fit, do nothing
177
+ if (viewSpaceAbove >= menuHeight) {
178
+ return {
179
+ placement: 'top',
180
+ maxHeight: preferredMaxHeight
181
+ };
182
+ }
183
+
184
+ // 2: the menu will fit, if scrolled
185
+ if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {
186
+ if (shouldScroll) {
187
+ animatedScrollTo(scrollParent, scrollUp, scrollDuration);
188
+ }
189
+ return {
190
+ placement: 'top',
191
+ maxHeight: preferredMaxHeight
192
+ };
193
+ }
194
+
195
+ // 3: the menu will fit, if constrained
196
+ if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
197
+ let constrainedHeight = preferredMaxHeight;
198
+
199
+ // we want to provide as much of the menu as possible to the user,
200
+ // so give them whatever is available below rather than the minHeight.
201
+ if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
202
+ constrainedHeight = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;
203
+ }
204
+ if (shouldScroll) {
205
+ animatedScrollTo(scrollParent, scrollUp, scrollDuration);
206
+ }
207
+ return {
208
+ placement: 'top',
209
+ maxHeight: constrainedHeight
210
+ };
211
+ }
212
+
213
+ // 4. not enough space, the browser WILL NOT increase scrollable area when
214
+ // absolutely positioned element rendered above the viewport (only below).
215
+ // Flip the menu, render below
216
+ return {
217
+ placement: 'bottom',
218
+ maxHeight: preferredMaxHeight
219
+ };
220
+ default:
221
+ throw new Error(`Invalid placement provided "${preferredPlacement}".`);
222
+ }
223
+ return defaultState;
224
+ }
225
+ const coercePlacement = p => p === 'auto' ? 'bottom' : p;
226
+
227
+ // NOTE: internal only
228
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
229
+ // TODO: Fill in the component {description} and ensure links point to the correct {packageName} location.
230
+ // Remove links that the component does not have (such as usage). If there are no links remove them all.
231
+ /**
232
+ * __Menu placer__
233
+ *
234
+ * A menu placer {description}.
235
+ *
236
+ * - [Examples](https://atlassian.design/components/{packageName}/examples)
237
+ * - [Code](https://atlassian.design/components/{packageName}/code)
238
+ * - [Usage](https://atlassian.design/components/{packageName}/usage)
239
+ */
240
+ const MenuPlacer = props => {
241
+ const {
242
+ children,
243
+ minMenuHeight,
244
+ maxMenuHeight,
245
+ menuPlacement,
246
+ menuPosition,
247
+ menuShouldScrollIntoView
248
+ } = props;
249
+ const {
250
+ setPortalPlacement
251
+ } = useContext(PortalPlacementContext) || {};
252
+ const ref = useRef(null);
253
+ const [maxHeight, setMaxHeight] = useState(maxMenuHeight);
254
+ const [placement, setPlacement] = useState(null);
255
+ // The minimum height of the control
256
+ const controlHeight = 38;
257
+ useLayoutEffect(() => {
258
+ const menuEl = ref.current;
259
+ if (!menuEl) {
260
+ return;
261
+ }
262
+
263
+ // DO NOT scroll if position is fixed
264
+ const isFixedPosition = menuPosition === 'fixed';
265
+ const shouldScroll = menuShouldScrollIntoView && !isFixedPosition;
266
+ const state = getMenuPlacement({
267
+ maxHeight: maxMenuHeight,
268
+ menuEl,
269
+ minHeight: minMenuHeight,
270
+ placement: menuPlacement,
271
+ shouldScroll,
272
+ isFixedPosition,
273
+ controlHeight
274
+ });
275
+ setMaxHeight(state.maxHeight);
276
+ setPlacement(state.placement);
277
+ setPortalPlacement === null || setPortalPlacement === void 0 ? void 0 : setPortalPlacement(state.placement);
278
+ }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]);
279
+ return children({
280
+ ref,
281
+ placerProps: {
282
+ ...props,
283
+ placement: placement || coercePlacement(menuPlacement),
284
+ maxHeight
285
+ }
286
+ });
287
+ };
288
+ export default MenuPlacer;
@@ -0,0 +1,5 @@
1
+ ._152t1nmo{inset-block-start:var(--menu-top)}
2
+ ._1bsb1qxj{width:var(--menu-width)}
3
+ ._1e02a1vk{inset-inline-start:var(--menu-left)}
4
+ ._1pbykb7n{z-index:1}
5
+ ._kqswcp1v{position:var(--menu-position)}
@@ -0,0 +1,115 @@
1
+ /* menu-portal.tsx generated by @compiled/babel-plugin v0.39.1 */
2
+ import _extends from "@babel/runtime/helpers/extends";
3
+ import "./menu-portal.compiled.css";
4
+ import * as React from 'react';
5
+ import { ax, ix } from "@compiled/react/runtime";
6
+ import { useCallback, useLayoutEffect, 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 { getStyleProps } from '../get-style-props';
11
+ import { PortalPlacementContext } from '../internal/portal-placement-context';
12
+ function getBoundingClientObj(element) {
13
+ const rect = element.getBoundingClientRect();
14
+ return {
15
+ bottom: rect.bottom,
16
+ height: rect.height,
17
+ left: rect.left,
18
+ right: rect.right,
19
+ top: rect.top,
20
+ width: rect.width
21
+ };
22
+ }
23
+ const coercePlacement = p => p === 'auto' ? 'bottom' : p;
24
+ const menuPortalStyles = {
25
+ root: "_1pbykb7n _1e02a1vk _kqswcp1v _152t1nmo _1bsb1qxj"
26
+ };
27
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
28
+ export const MenuPortal = props => {
29
+ const {
30
+ appendTo,
31
+ children,
32
+ controlElement,
33
+ innerProps,
34
+ menuPlacement,
35
+ menuPosition,
36
+ xcss
37
+ } = props;
38
+ const menuPortalRef = useRef(null);
39
+ const cleanupRef = useRef(null);
40
+ const [placement, setPortalPlacement] = useState(coercePlacement(menuPlacement));
41
+ const portalPlacementContext = useMemo(() => ({
42
+ setPortalPlacement
43
+ }), []);
44
+ const [computedPosition, setComputedPosition] = useState(null);
45
+ const updateComputedPosition = useCallback(() => {
46
+ if (!controlElement) {
47
+ return;
48
+ }
49
+ const rect = getBoundingClientObj(controlElement);
50
+ const scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset;
51
+ const offset = rect[placement] + scrollDistance;
52
+ 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)) {
53
+ setComputedPosition({
54
+ offset,
55
+ rect
56
+ });
57
+ }
58
+ }, [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]);
59
+ useLayoutEffect(() => {
60
+ updateComputedPosition();
61
+ }, [updateComputedPosition]);
62
+ const runAutoUpdate = useCallback(() => {
63
+ if (typeof cleanupRef.current === 'function') {
64
+ cleanupRef.current();
65
+ cleanupRef.current = null;
66
+ }
67
+ if (controlElement && menuPortalRef.current) {
68
+ cleanupRef.current = autoUpdate(controlElement, menuPortalRef.current, updateComputedPosition, {
69
+ elementResize: 'ResizeObserver' in window
70
+ });
71
+ }
72
+ }, [controlElement, updateComputedPosition]);
73
+ useLayoutEffect(() => {
74
+ runAutoUpdate();
75
+ }, [runAutoUpdate]);
76
+ const setMenuPortalElement = useCallback(menuPortalElement => {
77
+ menuPortalRef.current = menuPortalElement;
78
+ runAutoUpdate();
79
+ }, [runAutoUpdate]);
80
+
81
+ // bail early if required elements aren't present
82
+ if (!appendTo && menuPosition !== 'fixed' || !computedPosition) {
83
+ return null;
84
+ }
85
+ const {
86
+ css,
87
+ className
88
+ } = getStyleProps({
89
+ ...props,
90
+ offset: computedPosition.offset,
91
+ position: menuPosition,
92
+ rect: computedPosition.rect
93
+ }, 'menuPortal', {
94
+ 'menu-portal': true
95
+ });
96
+
97
+ // same wrapper element whether fixed or portalled
98
+ const menuWrapper = /*#__PURE__*/React.createElement("div", _extends({
99
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/ui-styling-standard/local-cx-xcss, @compiled/local-cx-xcss
100
+ className: ax([menuPortalStyles.root, cx(className, xcss, '-MenuPortal')]),
101
+ ref: setMenuPortalElement,
102
+ style: {
103
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
104
+ '--menu-left': `${computedPosition.rect.left}px`,
105
+ '--menu-position': menuPosition,
106
+ '--menu-top': `${computedPosition.offset}px`,
107
+ '--menu-width': `${computedPosition.rect.width}px`,
108
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
109
+ ...css
110
+ }
111
+ }, innerProps), children);
112
+ return /*#__PURE__*/React.createElement(PortalPlacementContext.Provider, {
113
+ value: portalPlacementContext
114
+ }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);
115
+ };
@@ -1,23 +1,11 @@
1
1
 
2
2
  ._2rko12b0{border-radius:var(--ds-radius-small,4px)}
3
- ._2rko1mok{border-radius:var(--ds-radius-large,8px)}._152t1nmo{inset-block-start:var(--menu-top)}
4
- ._152t1osq{inset-block-start:100%}
3
+ ._2rko1mok{border-radius:var(--ds-radius-large,8px)}._152t1osq{inset-block-start:100%}
5
4
  ._16qsd0yg{box-shadow:var(--ds-shadow-overlay,0 0 0 1px rgba(0,0,0,.1),0 4px 11px rgba(0,0,0,.1))}
6
- ._18m91wug{overflow-y:auto}
7
5
  ._1bsb1osq{width:100%}
8
- ._1bsb1qxj{width:var(--menu-width)}
9
- ._1e02a1vk{inset-inline-start:var(--menu-left)}
10
6
  ._1pbykb7n{z-index:1}
11
7
  ._1pfhu2gc{margin-block-start:var(--ds-space-100,8px)}
12
- ._1q51u2gc{padding-block-start:var(--ds-space-100,8px)}
13
8
  ._6rthu2gc{margin-block-end:var(--ds-space-100,8px)}
14
- ._85i5u2gc{padding-block-end:var(--ds-space-100,8px)}
15
- ._8am5i4x0{-webkit-overflow-scrolling:touch}
16
9
  ._bfhk1bhr{background-color:var(--ds-surface-overlay,#fff)}
17
- ._bozgutpp{padding-inline-start:var(--ds-space-150,9pt)}
18
- ._kqswcp1v{position:var(--menu-position)}
19
- ._kqswh2mm{position:relative}
20
10
  ._kqswstnw{position:absolute}
21
- ._u7co1osq{inset-block-end:100%}
22
- ._y3gn1h6o{text-align:center}
23
- ._y4tiutpp{padding-inline-end:var(--ds-space-150,9pt)}
11
+ ._u7co1osq{inset-block-end:100%}