@atlaskit/react-select 0.0.2

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 (197) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE.md +11 -0
  3. package/README.md +10 -0
  4. package/async/package.json +15 -0
  5. package/base/package.json +15 -0
  6. package/creatable/package.json +15 -0
  7. package/dist/cjs/accessibility/helpers.js +34 -0
  8. package/dist/cjs/accessibility/index.js +74 -0
  9. package/dist/cjs/async-creatable.js +27 -0
  10. package/dist/cjs/async.js +30 -0
  11. package/dist/cjs/builtins.js +18 -0
  12. package/dist/cjs/components/containers.js +100 -0
  13. package/dist/cjs/components/control.js +67 -0
  14. package/dist/cjs/components/group.js +79 -0
  15. package/dist/cjs/components/index.js +53 -0
  16. package/dist/cjs/components/indicators.js +214 -0
  17. package/dist/cjs/components/input.js +93 -0
  18. package/dist/cjs/components/internal/a11y-text.js +34 -0
  19. package/dist/cjs/components/internal/dummy-input.js +43 -0
  20. package/dist/cjs/components/internal/index.js +34 -0
  21. package/dist/cjs/components/internal/required-input.js +43 -0
  22. package/dist/cjs/components/internal/scroll-manager.js +57 -0
  23. package/dist/cjs/components/internal/use-scroll-capture.js +132 -0
  24. package/dist/cjs/components/internal/use-scroll-lock.js +149 -0
  25. package/dist/cjs/components/live-region.js +153 -0
  26. package/dist/cjs/components/menu.js +464 -0
  27. package/dist/cjs/components/multi-value.js +129 -0
  28. package/dist/cjs/components/option.js +62 -0
  29. package/dist/cjs/components/placeholder.js +39 -0
  30. package/dist/cjs/components/single-value.js +46 -0
  31. package/dist/cjs/creatable.js +30 -0
  32. package/dist/cjs/diacritics.js +274 -0
  33. package/dist/cjs/filters.js +50 -0
  34. package/dist/cjs/index.js +55 -0
  35. package/dist/cjs/nonce-provider.js +30 -0
  36. package/dist/cjs/select.js +1803 -0
  37. package/dist/cjs/state-manager.js +31 -0
  38. package/dist/cjs/styles.js +66 -0
  39. package/dist/cjs/theme.js +42 -0
  40. package/dist/cjs/types.js +5 -0
  41. package/dist/cjs/use-async.js +156 -0
  42. package/dist/cjs/use-creatable.js +114 -0
  43. package/dist/cjs/use-state-manager.js +83 -0
  44. package/dist/cjs/utils.js +357 -0
  45. package/dist/es2019/accessibility/helpers.js +24 -0
  46. package/dist/es2019/accessibility/index.js +72 -0
  47. package/dist/es2019/async-creatable.js +17 -0
  48. package/dist/es2019/async.js +16 -0
  49. package/dist/es2019/builtins.js +4 -0
  50. package/dist/es2019/components/containers.js +100 -0
  51. package/dist/es2019/components/control.js +62 -0
  52. package/dist/es2019/components/group.js +74 -0
  53. package/dist/es2019/components/index.js +41 -0
  54. package/dist/es2019/components/indicators.js +211 -0
  55. package/dist/es2019/components/input.js +88 -0
  56. package/dist/es2019/components/internal/a11y-text.js +25 -0
  57. package/dist/es2019/components/internal/dummy-input.js +36 -0
  58. package/dist/es2019/components/internal/index.js +4 -0
  59. package/dist/es2019/components/internal/required-input.js +35 -0
  60. package/dist/es2019/components/internal/scroll-manager.js +49 -0
  61. package/dist/es2019/components/internal/use-scroll-capture.js +128 -0
  62. package/dist/es2019/components/internal/use-scroll-lock.js +143 -0
  63. package/dist/es2019/components/live-region.js +151 -0
  64. package/dist/es2019/components/menu.js +466 -0
  65. package/dist/es2019/components/multi-value.js +134 -0
  66. package/dist/es2019/components/option.js +57 -0
  67. package/dist/es2019/components/placeholder.js +34 -0
  68. package/dist/es2019/components/single-value.js +41 -0
  69. package/dist/es2019/creatable.js +15 -0
  70. package/dist/es2019/diacritics.js +264 -0
  71. package/dist/es2019/filters.js +36 -0
  72. package/dist/es2019/index.js +8 -0
  73. package/dist/es2019/nonce-provider.js +19 -0
  74. package/dist/es2019/select.js +1766 -0
  75. package/dist/es2019/state-manager.js +22 -0
  76. package/dist/es2019/styles.js +56 -0
  77. package/dist/es2019/theme.js +36 -0
  78. package/dist/es2019/types.js +1 -0
  79. package/dist/es2019/use-async.js +117 -0
  80. package/dist/es2019/use-creatable.js +81 -0
  81. package/dist/es2019/use-state-manager.js +60 -0
  82. package/dist/es2019/utils.js +309 -0
  83. package/dist/esm/accessibility/helpers.js +24 -0
  84. package/dist/esm/accessibility/index.js +68 -0
  85. package/dist/esm/async-creatable.js +17 -0
  86. package/dist/esm/async.js +16 -0
  87. package/dist/esm/builtins.js +12 -0
  88. package/dist/esm/components/containers.js +96 -0
  89. package/dist/esm/components/control.js +62 -0
  90. package/dist/esm/components/group.js +74 -0
  91. package/dist/esm/components/index.js +43 -0
  92. package/dist/esm/components/indicators.js +209 -0
  93. package/dist/esm/components/input.js +88 -0
  94. package/dist/esm/components/internal/a11y-text.js +27 -0
  95. package/dist/esm/components/internal/dummy-input.js +37 -0
  96. package/dist/esm/components/internal/index.js +4 -0
  97. package/dist/esm/components/internal/required-input.js +36 -0
  98. package/dist/esm/components/internal/scroll-manager.js +49 -0
  99. package/dist/esm/components/internal/use-scroll-capture.js +126 -0
  100. package/dist/esm/components/internal/use-scroll-lock.js +143 -0
  101. package/dist/esm/components/live-region.js +148 -0
  102. package/dist/esm/components/menu.js +460 -0
  103. package/dist/esm/components/multi-value.js +122 -0
  104. package/dist/esm/components/option.js +57 -0
  105. package/dist/esm/components/placeholder.js +34 -0
  106. package/dist/esm/components/single-value.js +41 -0
  107. package/dist/esm/creatable.js +15 -0
  108. package/dist/esm/diacritics.js +268 -0
  109. package/dist/esm/filters.js +43 -0
  110. package/dist/esm/index.js +8 -0
  111. package/dist/esm/nonce-provider.js +20 -0
  112. package/dist/esm/select.js +1794 -0
  113. package/dist/esm/state-manager.js +22 -0
  114. package/dist/esm/styles.js +58 -0
  115. package/dist/esm/theme.js +36 -0
  116. package/dist/esm/types.js +1 -0
  117. package/dist/esm/use-async.js +149 -0
  118. package/dist/esm/use-creatable.js +107 -0
  119. package/dist/esm/use-state-manager.js +76 -0
  120. package/dist/esm/utils.js +328 -0
  121. package/dist/types/accessibility/helpers.d.ts +5 -0
  122. package/dist/types/accessibility/index.d.ts +125 -0
  123. package/dist/types/async-creatable.d.ts +10 -0
  124. package/dist/types/async.d.ts +9 -0
  125. package/dist/types/builtins.d.ts +5 -0
  126. package/dist/types/components/containers.d.ts +50 -0
  127. package/dist/types/components/control.d.ts +33 -0
  128. package/dist/types/components/group.d.ts +53 -0
  129. package/dist/types/components/index.d.ts +73 -0
  130. package/dist/types/components/indicators.d.ts +72 -0
  131. package/dist/types/components/input.d.ts +33 -0
  132. package/dist/types/components/internal/a11y-text.d.ts +8 -0
  133. package/dist/types/components/internal/dummy-input.d.ts +9 -0
  134. package/dist/types/components/internal/index.d.ts +4 -0
  135. package/dist/types/components/internal/required-input.d.ts +10 -0
  136. package/dist/types/components/internal/scroll-manager.d.ts +17 -0
  137. package/dist/types/components/internal/use-scroll-capture.d.ts +12 -0
  138. package/dist/types/components/internal/use-scroll-lock.d.ts +9 -0
  139. package/dist/types/components/live-region.d.ts +24 -0
  140. package/dist/types/components/menu.d.ts +130 -0
  141. package/dist/types/components/multi-value.d.ts +47 -0
  142. package/dist/types/components/option.d.ts +49 -0
  143. package/dist/types/components/placeholder.d.ts +22 -0
  144. package/dist/types/components/single-value.d.ts +28 -0
  145. package/dist/types/creatable.d.ts +10 -0
  146. package/dist/types/diacritics.d.ts +1 -0
  147. package/dist/types/filters.d.ts +15 -0
  148. package/dist/types/index.d.ts +28 -0
  149. package/dist/types/nonce-provider.d.ts +8 -0
  150. package/dist/types/select.d.ts +616 -0
  151. package/dist/types/state-manager.d.ts +17 -0
  152. package/dist/types/styles.d.ts +68 -0
  153. package/dist/types/theme.d.ts +27 -0
  154. package/dist/types/types.d.ts +134 -0
  155. package/dist/types/use-async.d.ts +31 -0
  156. package/dist/types/use-creatable.d.ts +46 -0
  157. package/dist/types/use-state-manager.d.ts +15 -0
  158. package/dist/types/utils.d.ts +44 -0
  159. package/dist/types-ts4.5/accessibility/helpers.d.ts +5 -0
  160. package/dist/types-ts4.5/accessibility/index.d.ts +125 -0
  161. package/dist/types-ts4.5/async-creatable.d.ts +10 -0
  162. package/dist/types-ts4.5/async.d.ts +9 -0
  163. package/dist/types-ts4.5/builtins.d.ts +5 -0
  164. package/dist/types-ts4.5/components/containers.d.ts +50 -0
  165. package/dist/types-ts4.5/components/control.d.ts +33 -0
  166. package/dist/types-ts4.5/components/group.d.ts +53 -0
  167. package/dist/types-ts4.5/components/index.d.ts +73 -0
  168. package/dist/types-ts4.5/components/indicators.d.ts +72 -0
  169. package/dist/types-ts4.5/components/input.d.ts +33 -0
  170. package/dist/types-ts4.5/components/internal/a11y-text.d.ts +8 -0
  171. package/dist/types-ts4.5/components/internal/dummy-input.d.ts +9 -0
  172. package/dist/types-ts4.5/components/internal/index.d.ts +4 -0
  173. package/dist/types-ts4.5/components/internal/required-input.d.ts +10 -0
  174. package/dist/types-ts4.5/components/internal/scroll-manager.d.ts +17 -0
  175. package/dist/types-ts4.5/components/internal/use-scroll-capture.d.ts +12 -0
  176. package/dist/types-ts4.5/components/internal/use-scroll-lock.d.ts +9 -0
  177. package/dist/types-ts4.5/components/live-region.d.ts +24 -0
  178. package/dist/types-ts4.5/components/menu.d.ts +130 -0
  179. package/dist/types-ts4.5/components/multi-value.d.ts +47 -0
  180. package/dist/types-ts4.5/components/option.d.ts +49 -0
  181. package/dist/types-ts4.5/components/placeholder.d.ts +22 -0
  182. package/dist/types-ts4.5/components/single-value.d.ts +28 -0
  183. package/dist/types-ts4.5/creatable.d.ts +10 -0
  184. package/dist/types-ts4.5/diacritics.d.ts +1 -0
  185. package/dist/types-ts4.5/filters.d.ts +15 -0
  186. package/dist/types-ts4.5/index.d.ts +28 -0
  187. package/dist/types-ts4.5/nonce-provider.d.ts +8 -0
  188. package/dist/types-ts4.5/select.d.ts +616 -0
  189. package/dist/types-ts4.5/state-manager.d.ts +17 -0
  190. package/dist/types-ts4.5/styles.d.ts +68 -0
  191. package/dist/types-ts4.5/theme.d.ts +27 -0
  192. package/dist/types-ts4.5/types.d.ts +134 -0
  193. package/dist/types-ts4.5/use-async.d.ts +31 -0
  194. package/dist/types-ts4.5/use-creatable.d.ts +46 -0
  195. package/dist/types-ts4.5/use-state-manager.d.ts +15 -0
  196. package/dist/types-ts4.5/utils.d.ts +44 -0
  197. package/package.json +83 -0
@@ -0,0 +1,464 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.NoOptionsMessage = exports.MenuPortal = exports.MenuPlacer = exports.MenuList = exports.LoadingMessage = void 0;
8
+ exports.getMenuPlacement = getMenuPlacement;
9
+ exports.noOptionsMessageCSS = exports.menuPortalCSS = exports.menuListCSS = exports.menuCSS = exports.loadingMessageCSS = void 0;
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _react = require("react");
15
+ var _react2 = require("@emotion/react");
16
+ var _dom = require("@floating-ui/dom");
17
+ var _reactDom = require("react-dom");
18
+ var _useIsomorphicLayoutEffect = _interopRequireDefault(require("use-isomorphic-layout-effect"));
19
+ var _utils = require("../utils");
20
+ var _excluded = ["children", "innerProps"],
21
+ _excluded2 = ["children", "innerProps"];
22
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
24
+ * @jsxRuntime classic
25
+ * @jsx jsx
26
+ */
27
+ // ==============================
28
+ // Menu
29
+ // ==============================
30
+
31
+ // Get Menu Placement
32
+ // ------------------------------
33
+
34
+ function getMenuPlacement(_ref) {
35
+ var preferredMaxHeight = _ref.maxHeight,
36
+ menuEl = _ref.menuEl,
37
+ minHeight = _ref.minHeight,
38
+ preferredPlacement = _ref.placement,
39
+ shouldScroll = _ref.shouldScroll,
40
+ isFixedPosition = _ref.isFixedPosition,
41
+ controlHeight = _ref.controlHeight;
42
+ var scrollParent = (0, _utils.getScrollParent)(menuEl);
43
+ var defaultState = {
44
+ placement: 'bottom',
45
+ maxHeight: preferredMaxHeight
46
+ };
47
+
48
+ // something went wrong, return default state
49
+ if (!menuEl || !menuEl.offsetParent) {
50
+ return defaultState;
51
+ }
52
+
53
+ // we can't trust `scrollParent.scrollHeight` --> it may increase when
54
+ // the menu is rendered
55
+ var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),
56
+ scrollHeight = _scrollParent$getBoun.height;
57
+ var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),
58
+ menuBottom = _menuEl$getBoundingCl.bottom,
59
+ menuHeight = _menuEl$getBoundingCl.height,
60
+ menuTop = _menuEl$getBoundingCl.top;
61
+ var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),
62
+ containerTop = _menuEl$offsetParent$.top;
63
+ var viewHeight = isFixedPosition ? window.innerHeight : (0, _utils.normalizedHeight)(scrollParent);
64
+ var scrollTop = (0, _utils.getScrollTop)(scrollParent);
65
+ var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);
66
+ var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);
67
+ var viewSpaceAbove = containerTop - marginTop;
68
+ var viewSpaceBelow = viewHeight - menuTop;
69
+ var scrollSpaceAbove = viewSpaceAbove + scrollTop;
70
+ var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;
71
+ var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;
72
+ var scrollUp = scrollTop + menuTop - marginTop;
73
+ var scrollDuration = 160;
74
+ switch (preferredPlacement) {
75
+ case 'auto':
76
+ case 'bottom':
77
+ // 1: the menu will fit, do nothing
78
+ if (viewSpaceBelow >= menuHeight) {
79
+ return {
80
+ placement: 'bottom',
81
+ maxHeight: preferredMaxHeight
82
+ };
83
+ }
84
+
85
+ // 2: the menu will fit, if scrolled
86
+ if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {
87
+ if (shouldScroll) {
88
+ (0, _utils.animatedScrollTo)(scrollParent, scrollDown, scrollDuration);
89
+ }
90
+ return {
91
+ placement: 'bottom',
92
+ maxHeight: preferredMaxHeight
93
+ };
94
+ }
95
+
96
+ // 3: the menu will fit, if constrained
97
+ if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {
98
+ if (shouldScroll) {
99
+ (0, _utils.animatedScrollTo)(scrollParent, scrollDown, scrollDuration);
100
+ }
101
+
102
+ // we want to provide as much of the menu as possible to the user,
103
+ // so give them whatever is available below rather than the minHeight.
104
+ var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;
105
+ return {
106
+ placement: 'bottom',
107
+ maxHeight: constrainedHeight
108
+ };
109
+ }
110
+
111
+ // 4. Forked beviour when there isn't enough space below
112
+
113
+ // AUTO: flip the menu, render above
114
+ if (preferredPlacement === 'auto' || isFixedPosition) {
115
+ // may need to be constrained after flipping
116
+ var _constrainedHeight = preferredMaxHeight;
117
+ var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;
118
+ if (spaceAbove >= minHeight) {
119
+ _constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight);
120
+ }
121
+ return {
122
+ placement: 'top',
123
+ maxHeight: _constrainedHeight
124
+ };
125
+ }
126
+
127
+ // BOTTOM: allow browser to increase scrollable area and immediately set scroll
128
+ if (preferredPlacement === 'bottom') {
129
+ if (shouldScroll) {
130
+ (0, _utils.scrollTo)(scrollParent, scrollDown);
131
+ }
132
+ return {
133
+ placement: 'bottom',
134
+ maxHeight: preferredMaxHeight
135
+ };
136
+ }
137
+ break;
138
+ case 'top':
139
+ // 1: the menu will fit, do nothing
140
+ if (viewSpaceAbove >= menuHeight) {
141
+ return {
142
+ placement: 'top',
143
+ maxHeight: preferredMaxHeight
144
+ };
145
+ }
146
+
147
+ // 2: the menu will fit, if scrolled
148
+ if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {
149
+ if (shouldScroll) {
150
+ (0, _utils.animatedScrollTo)(scrollParent, scrollUp, scrollDuration);
151
+ }
152
+ return {
153
+ placement: 'top',
154
+ maxHeight: preferredMaxHeight
155
+ };
156
+ }
157
+
158
+ // 3: the menu will fit, if constrained
159
+ if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
160
+ var _constrainedHeight2 = preferredMaxHeight;
161
+
162
+ // we want to provide as much of the menu as possible to the user,
163
+ // so give them whatever is available below rather than the minHeight.
164
+ if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
165
+ _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;
166
+ }
167
+ if (shouldScroll) {
168
+ (0, _utils.animatedScrollTo)(scrollParent, scrollUp, scrollDuration);
169
+ }
170
+ return {
171
+ placement: 'top',
172
+ maxHeight: _constrainedHeight2
173
+ };
174
+ }
175
+
176
+ // 4. not enough space, the browser WILL NOT increase scrollable area when
177
+ // absolutely positioned element rendered above the viewport (only below).
178
+ // Flip the menu, render below
179
+ return {
180
+ placement: 'bottom',
181
+ maxHeight: preferredMaxHeight
182
+ };
183
+ default:
184
+ throw new Error("Invalid placement provided \"".concat(preferredPlacement, "\"."));
185
+ }
186
+ return defaultState;
187
+ }
188
+
189
+ // Menu Component
190
+ // ------------------------------
191
+
192
+ function alignToControl(placement) {
193
+ var placementToCSSProp = {
194
+ bottom: 'top',
195
+ top: 'bottom'
196
+ };
197
+ return placement ? placementToCSSProp[placement] : 'bottom';
198
+ }
199
+ var coercePlacement = function coercePlacement(p) {
200
+ return p === 'auto' ? 'bottom' : p;
201
+ };
202
+ var menuCSS = exports.menuCSS = function menuCSS(_ref2, unstyled) {
203
+ var _objectSpread2;
204
+ var placement = _ref2.placement,
205
+ _ref2$theme = _ref2.theme,
206
+ borderRadius = _ref2$theme.borderRadius,
207
+ spacing = _ref2$theme.spacing,
208
+ colors = _ref2$theme.colors;
209
+ return _objectSpread((_objectSpread2 = {
210
+ label: 'menu'
211
+ }, (0, _defineProperty2.default)(_objectSpread2, alignToControl(placement), '100%'), (0, _defineProperty2.default)(_objectSpread2, "position", 'absolute'), (0, _defineProperty2.default)(_objectSpread2, "width", '100%'), (0, _defineProperty2.default)(_objectSpread2, "zIndex", 1), _objectSpread2), unstyled ? {} : {
212
+ backgroundColor: colors.neutral0,
213
+ borderRadius: borderRadius,
214
+ boxShadow: '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)',
215
+ marginBottom: spacing.menuGutter,
216
+ marginTop: spacing.menuGutter
217
+ });
218
+ };
219
+ var PortalPlacementContext = /*#__PURE__*/(0, _react.createContext)(null);
220
+
221
+ // NOTE: internal only
222
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
223
+ var MenuPlacer = exports.MenuPlacer = function MenuPlacer(props) {
224
+ var children = props.children,
225
+ minMenuHeight = props.minMenuHeight,
226
+ maxMenuHeight = props.maxMenuHeight,
227
+ menuPlacement = props.menuPlacement,
228
+ menuPosition = props.menuPosition,
229
+ menuShouldScrollIntoView = props.menuShouldScrollIntoView,
230
+ theme = props.theme;
231
+ var _ref3 = (0, _react.useContext)(PortalPlacementContext) || {},
232
+ setPortalPlacement = _ref3.setPortalPlacement;
233
+ var ref = (0, _react.useRef)(null);
234
+ var _useState = (0, _react.useState)(maxMenuHeight),
235
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
236
+ maxHeight = _useState2[0],
237
+ setMaxHeight = _useState2[1];
238
+ var _useState3 = (0, _react.useState)(null),
239
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
240
+ placement = _useState4[0],
241
+ setPlacement = _useState4[1];
242
+ var controlHeight = theme.spacing.controlHeight;
243
+ (0, _useIsomorphicLayoutEffect.default)(function () {
244
+ var menuEl = ref.current;
245
+ if (!menuEl) {
246
+ return;
247
+ }
248
+
249
+ // DO NOT scroll if position is fixed
250
+ var isFixedPosition = menuPosition === 'fixed';
251
+ var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;
252
+ var state = getMenuPlacement({
253
+ maxHeight: maxMenuHeight,
254
+ menuEl: menuEl,
255
+ minHeight: minMenuHeight,
256
+ placement: menuPlacement,
257
+ shouldScroll: shouldScroll,
258
+ isFixedPosition: isFixedPosition,
259
+ controlHeight: controlHeight
260
+ });
261
+ setMaxHeight(state.maxHeight);
262
+ setPlacement(state.placement);
263
+ setPortalPlacement === null || setPortalPlacement === void 0 || setPortalPlacement(state.placement);
264
+ }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]);
265
+ return children({
266
+ ref: ref,
267
+ placerProps: _objectSpread(_objectSpread({}, props), {}, {
268
+ placement: placement || coercePlacement(menuPlacement),
269
+ maxHeight: maxHeight
270
+ })
271
+ });
272
+ };
273
+ var Menu = function Menu(props) {
274
+ var children = props.children,
275
+ innerRef = props.innerRef,
276
+ innerProps = props.innerProps;
277
+ return (0, _react2.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(props, 'menu', {
278
+ menu: true
279
+ }), {
280
+ ref: innerRef
281
+ }, innerProps), children);
282
+ };
283
+
284
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
285
+ var _default = exports.default = Menu; // ==============================
286
+ // Menu List
287
+ // ==============================
288
+ var menuListCSS = exports.menuListCSS = function menuListCSS(_ref4, unstyled) {
289
+ var maxHeight = _ref4.maxHeight,
290
+ baseUnit = _ref4.theme.spacing.baseUnit;
291
+ return _objectSpread({
292
+ maxHeight: maxHeight,
293
+ overflowY: 'auto',
294
+ position: 'relative',
295
+ // required for offset[Height, Top] > keyboard scroll
296
+ WebkitOverflowScrolling: 'touch'
297
+ }, unstyled ? {} : {
298
+ paddingBottom: baseUnit,
299
+ paddingTop: baseUnit
300
+ });
301
+ };
302
+
303
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
304
+ var MenuList = exports.MenuList = function MenuList(props) {
305
+ var children = props.children,
306
+ innerProps = props.innerProps,
307
+ innerRef = props.innerRef,
308
+ isMulti = props.isMulti;
309
+ return (0, _react2.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(props, 'menuList', {
310
+ 'menu-list': true,
311
+ 'menu-list--is-multi': isMulti
312
+ }), {
313
+ //@ts-ignore
314
+ ref: innerRef
315
+ }, innerProps), children);
316
+ };
317
+
318
+ // ==============================
319
+ // Menu Notices
320
+ // ==============================
321
+
322
+ var noticeCSS = function noticeCSS(_ref5, unstyled) {
323
+ var _ref5$theme = _ref5.theme,
324
+ baseUnit = _ref5$theme.spacing.baseUnit,
325
+ colors = _ref5$theme.colors;
326
+ return _objectSpread({
327
+ textAlign: 'center'
328
+ }, unstyled ? {} : {
329
+ color: colors.neutral40,
330
+ padding: "".concat(baseUnit * 2, "px ").concat(baseUnit * 3, "px")
331
+ });
332
+ };
333
+ var noOptionsMessageCSS = exports.noOptionsMessageCSS = noticeCSS;
334
+ var loadingMessageCSS = exports.loadingMessageCSS = noticeCSS;
335
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
336
+ var NoOptionsMessage = exports.NoOptionsMessage = function NoOptionsMessage(_ref6) {
337
+ var _ref6$children = _ref6.children,
338
+ children = _ref6$children === void 0 ? 'No options' : _ref6$children,
339
+ innerProps = _ref6.innerProps,
340
+ restProps = (0, _objectWithoutProperties2.default)(_ref6, _excluded);
341
+ return (
342
+ //@ts-ignore
343
+ (0, _react2.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(_objectSpread(_objectSpread({}, restProps), {}, {
344
+ children: children,
345
+ innerProps: innerProps
346
+ }), 'noOptionsMessage', {
347
+ 'menu-notice': true,
348
+ 'menu-notice--no-options': true
349
+ }), {
350
+ // eslint-disable-next-line jsx-a11y/role-has-required-aria-props
351
+ role: "option"
352
+ }, innerProps), children)
353
+ );
354
+ };
355
+
356
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
357
+ var LoadingMessage = exports.LoadingMessage = function LoadingMessage(_ref7) {
358
+ var _ref7$children = _ref7.children,
359
+ children = _ref7$children === void 0 ? 'Loading...' : _ref7$children,
360
+ innerProps = _ref7.innerProps,
361
+ restProps = (0, _objectWithoutProperties2.default)(_ref7, _excluded2);
362
+ return (0, _react2.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(_objectSpread(_objectSpread({}, restProps), {}, {
363
+ children: children,
364
+ innerProps: innerProps
365
+ }), 'loadingMessage', {
366
+ 'menu-notice': true,
367
+ 'menu-notice--loading': true
368
+ }), innerProps), children);
369
+ };
370
+
371
+ // ==============================
372
+ // Menu Portal
373
+ // ==============================
374
+
375
+ var menuPortalCSS = exports.menuPortalCSS = function menuPortalCSS(_ref8) {
376
+ var rect = _ref8.rect,
377
+ offset = _ref8.offset,
378
+ position = _ref8.position;
379
+ return {
380
+ left: rect.left,
381
+ position: position,
382
+ top: offset,
383
+ width: rect.width,
384
+ zIndex: 1
385
+ };
386
+ };
387
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
388
+ var MenuPortal = exports.MenuPortal = function MenuPortal(props) {
389
+ var appendTo = props.appendTo,
390
+ children = props.children,
391
+ controlElement = props.controlElement,
392
+ innerProps = props.innerProps,
393
+ menuPlacement = props.menuPlacement,
394
+ menuPosition = props.menuPosition;
395
+ var menuPortalRef = (0, _react.useRef)(null);
396
+ var cleanupRef = (0, _react.useRef)(null);
397
+ var _useState5 = (0, _react.useState)(coercePlacement(menuPlacement)),
398
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
399
+ placement = _useState6[0],
400
+ setPortalPlacement = _useState6[1];
401
+ var portalPlacementContext = (0, _react.useMemo)(function () {
402
+ return {
403
+ setPortalPlacement: setPortalPlacement
404
+ };
405
+ }, []);
406
+ var _useState7 = (0, _react.useState)(null),
407
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
408
+ computedPosition = _useState8[0],
409
+ setComputedPosition = _useState8[1];
410
+ var updateComputedPosition = (0, _react.useCallback)(function () {
411
+ if (!controlElement) {
412
+ return;
413
+ }
414
+ var rect = (0, _utils.getBoundingClientObj)(controlElement);
415
+ var scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset;
416
+ var offset = rect[placement] + scrollDistance;
417
+ 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)) {
418
+ setComputedPosition({
419
+ offset: offset,
420
+ rect: rect
421
+ });
422
+ }
423
+ }, [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]);
424
+ (0, _useIsomorphicLayoutEffect.default)(function () {
425
+ updateComputedPosition();
426
+ }, [updateComputedPosition]);
427
+ var runAutoUpdate = (0, _react.useCallback)(function () {
428
+ if (typeof cleanupRef.current === 'function') {
429
+ cleanupRef.current();
430
+ cleanupRef.current = null;
431
+ }
432
+ if (controlElement && menuPortalRef.current) {
433
+ cleanupRef.current = (0, _dom.autoUpdate)(controlElement, menuPortalRef.current, updateComputedPosition, {
434
+ elementResize: 'ResizeObserver' in window
435
+ });
436
+ }
437
+ }, [controlElement, updateComputedPosition]);
438
+ (0, _useIsomorphicLayoutEffect.default)(function () {
439
+ runAutoUpdate();
440
+ }, [runAutoUpdate]);
441
+ var setMenuPortalElement = (0, _react.useCallback)(function (menuPortalElement) {
442
+ menuPortalRef.current = menuPortalElement;
443
+ runAutoUpdate();
444
+ }, [runAutoUpdate]);
445
+
446
+ // bail early if required elements aren't present
447
+ if (!appendTo && menuPosition !== 'fixed' || !computedPosition) {
448
+ return null;
449
+ }
450
+
451
+ // same wrapper element whether fixed or portalled
452
+ var menuWrapper = (0, _react2.jsx)("div", (0, _extends2.default)({
453
+ ref: setMenuPortalElement
454
+ }, (0, _utils.getStyleProps)(_objectSpread(_objectSpread({}, props), {}, {
455
+ offset: computedPosition.offset,
456
+ position: menuPosition,
457
+ rect: computedPosition.rect
458
+ }), 'menuPortal', {
459
+ 'menu-portal': true
460
+ }), innerProps), children);
461
+ return (0, _react2.jsx)(PortalPlacementContext.Provider, {
462
+ value: portalPlacementContext
463
+ }, appendTo ? /*#__PURE__*/(0, _reactDom.createPortal)(menuWrapper, appendTo) : menuWrapper);
464
+ };
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.MultiValueLabel = exports.MultiValueGeneric = exports.MultiValueContainer = void 0;
8
+ exports.MultiValueRemove = MultiValueRemove;
9
+ exports.multiValueRemoveCSS = exports.multiValueLabelCSS = exports.multiValueCSS = exports.default = void 0;
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _react = require("@emotion/react");
13
+ var _utils = require("../utils");
14
+ var _indicators = require("./indicators");
15
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
17
+ * @jsxRuntime classic
18
+ * @jsx jsx
19
+ */
20
+ var multiValueCSS = exports.multiValueCSS = function multiValueCSS(_ref, unstyled) {
21
+ var _ref$theme = _ref.theme,
22
+ spacing = _ref$theme.spacing,
23
+ borderRadius = _ref$theme.borderRadius,
24
+ colors = _ref$theme.colors;
25
+ return _objectSpread({
26
+ label: 'multiValue',
27
+ display: 'flex',
28
+ minWidth: 0
29
+ }, unstyled ? {} : {
30
+ backgroundColor: colors.neutral10,
31
+ borderRadius: borderRadius / 2,
32
+ margin: spacing.baseUnit / 2
33
+ });
34
+ };
35
+ var multiValueLabelCSS = exports.multiValueLabelCSS = function multiValueLabelCSS(_ref2, unstyled) {
36
+ var _ref2$theme = _ref2.theme,
37
+ borderRadius = _ref2$theme.borderRadius,
38
+ colors = _ref2$theme.colors,
39
+ cropWithEllipsis = _ref2.cropWithEllipsis;
40
+ return _objectSpread({
41
+ overflow: 'hidden',
42
+ textOverflow: cropWithEllipsis || cropWithEllipsis === undefined ? 'ellipsis' : undefined,
43
+ whiteSpace: 'nowrap'
44
+ }, unstyled ? {} : {
45
+ borderRadius: borderRadius / 2,
46
+ color: colors.neutral80,
47
+ fontSize: '85%',
48
+ padding: 3,
49
+ paddingLeft: 6
50
+ });
51
+ };
52
+ var multiValueRemoveCSS = exports.multiValueRemoveCSS = function multiValueRemoveCSS(_ref3, unstyled) {
53
+ var _ref3$theme = _ref3.theme,
54
+ spacing = _ref3$theme.spacing,
55
+ borderRadius = _ref3$theme.borderRadius,
56
+ colors = _ref3$theme.colors,
57
+ isFocused = _ref3.isFocused;
58
+ return _objectSpread({
59
+ alignItems: 'center',
60
+ display: 'flex'
61
+ }, unstyled ? {} : {
62
+ borderRadius: borderRadius / 2,
63
+ backgroundColor: isFocused ? colors.dangerLight : undefined,
64
+ paddingLeft: spacing.baseUnit,
65
+ paddingRight: spacing.baseUnit,
66
+ ':hover': {
67
+ backgroundColor: colors.dangerLight,
68
+ color: colors.danger
69
+ }
70
+ });
71
+ };
72
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
73
+ var MultiValueGeneric = exports.MultiValueGeneric = function MultiValueGeneric(_ref4) {
74
+ var children = _ref4.children,
75
+ innerProps = _ref4.innerProps;
76
+ return (0, _react.jsx)("div", innerProps, children);
77
+ };
78
+
79
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
80
+ var MultiValueContainer = exports.MultiValueContainer = MultiValueGeneric;
81
+
82
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
83
+ var MultiValueLabel = exports.MultiValueLabel = MultiValueGeneric;
84
+ function MultiValueRemove(_ref5) {
85
+ var children = _ref5.children,
86
+ innerProps = _ref5.innerProps;
87
+ return (0, _react.jsx)("div", (0, _extends2.default)({
88
+ role: "button"
89
+ }, innerProps), children || (0, _react.jsx)(_indicators.CrossIcon, {
90
+ size: 14
91
+ }));
92
+ }
93
+ var MultiValue = function MultiValue(props) {
94
+ var children = props.children,
95
+ components = props.components,
96
+ data = props.data,
97
+ innerProps = props.innerProps,
98
+ isDisabled = props.isDisabled,
99
+ removeProps = props.removeProps,
100
+ selectProps = props.selectProps;
101
+ var Container = components.Container,
102
+ Label = components.Label,
103
+ Remove = components.Remove;
104
+ return (0, _react.jsx)(Container, {
105
+ data: data,
106
+ innerProps: _objectSpread(_objectSpread({}, (0, _utils.getStyleProps)(props, 'multiValue', {
107
+ 'multi-value': true,
108
+ 'multi-value--is-disabled': isDisabled
109
+ })), innerProps),
110
+ selectProps: selectProps
111
+ }, (0, _react.jsx)(Label, {
112
+ data: data,
113
+ innerProps: _objectSpread({}, (0, _utils.getStyleProps)(props, 'multiValueLabel', {
114
+ 'multi-value__label': true
115
+ })),
116
+ selectProps: selectProps
117
+ }, children), (0, _react.jsx)(Remove, {
118
+ data: data,
119
+ innerProps: _objectSpread(_objectSpread({}, (0, _utils.getStyleProps)(props, 'multiValueRemove', {
120
+ 'multi-value__remove': true
121
+ })), {}, {
122
+ 'aria-label': "Remove ".concat(children || 'option')
123
+ }, removeProps),
124
+ selectProps: selectProps
125
+ }));
126
+ };
127
+
128
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
129
+ var _default = exports.default = MultiValue;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.optionCSS = exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _react = require("@emotion/react");
11
+ var _utils = require("../utils");
12
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
14
+ * @jsxRuntime classic
15
+ * @jsx jsx
16
+ */
17
+ var optionCSS = exports.optionCSS = function optionCSS(_ref, unstyled) {
18
+ var isDisabled = _ref.isDisabled,
19
+ isFocused = _ref.isFocused,
20
+ isSelected = _ref.isSelected,
21
+ _ref$theme = _ref.theme,
22
+ spacing = _ref$theme.spacing,
23
+ colors = _ref$theme.colors;
24
+ return _objectSpread({
25
+ label: 'option',
26
+ cursor: 'default',
27
+ display: 'block',
28
+ fontSize: 'inherit',
29
+ width: '100%',
30
+ userSelect: 'none',
31
+ WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)'
32
+ }, unstyled ? {} : {
33
+ backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',
34
+ color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',
35
+ padding: "".concat(spacing.baseUnit * 2, "px ").concat(spacing.baseUnit * 3, "px"),
36
+ // provide some affordance on touch devices
37
+ ':active': {
38
+ backgroundColor: !isDisabled ? isSelected ? colors.primary : colors.primary50 : undefined
39
+ }
40
+ });
41
+ };
42
+ var Option = function Option(props) {
43
+ var children = props.children,
44
+ isDisabled = props.isDisabled,
45
+ isFocused = props.isFocused,
46
+ isSelected = props.isSelected,
47
+ innerRef = props.innerRef,
48
+ innerProps = props.innerProps;
49
+ return (0, _react.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(props, 'option', {
50
+ option: true,
51
+ 'option--is-disabled': isDisabled,
52
+ 'option--is-focused': isFocused,
53
+ 'option--is-selected': isSelected
54
+ }), {
55
+ //@ts-ignore
56
+ ref: innerRef
57
+ // aria-disabled={isDisabled}
58
+ }, innerProps), children);
59
+ };
60
+
61
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
62
+ var _default = exports.default = Option;