@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,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _select = _interopRequireDefault(require("./select"));
12
+ var _useStateManager = _interopRequireDefault(require("./use-state-manager"));
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ /**
16
+ * __StateManagedSelect__
17
+ *
18
+ * A state managed select {description}.
19
+ *
20
+ * - [Examples](https://atlassian.design/components/{packageName}/examples)
21
+ * - [Code](https://atlassian.design/components/{packageName}/code)
22
+ * - [Usage](https://atlassian.design/components/{packageName}/usage)
23
+ */
24
+
25
+ var StateManagedSelect = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
26
+ var baseSelectProps = (0, _useStateManager.default)(props);
27
+ return /*#__PURE__*/_react.default.createElement(_select.default, (0, _extends2.default)({
28
+ ref: ref
29
+ }, baseSelectProps));
30
+ });
31
+ var _default = exports.default = StateManagedSelect;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.defaultStyles = void 0;
8
+ exports.mergeStyles = mergeStyles;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _containers = require("./components/containers");
11
+ var _control = require("./components/control");
12
+ var _group = require("./components/group");
13
+ var _indicators = require("./components/indicators");
14
+ var _input = require("./components/input");
15
+ var _menu = require("./components/menu");
16
+ var _multiValue = require("./components/multi-value");
17
+ var _option = require("./components/option");
18
+ var _placeholder = require("./components/placeholder");
19
+ var _singleValue = require("./components/single-value");
20
+ 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; }
21
+ 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; }
22
+ var defaultStyles = exports.defaultStyles = {
23
+ clearIndicator: _indicators.clearIndicatorCSS,
24
+ container: _containers.containerCSS,
25
+ control: _control.css,
26
+ dropdownIndicator: _indicators.dropdownIndicatorCSS,
27
+ group: _group.groupCSS,
28
+ groupHeading: _group.groupHeadingCSS,
29
+ indicatorsContainer: _containers.indicatorsContainerCSS,
30
+ indicatorSeparator: _indicators.indicatorSeparatorCSS,
31
+ input: _input.inputCSS,
32
+ loadingIndicator: _indicators.loadingIndicatorCSS,
33
+ loadingMessage: _menu.loadingMessageCSS,
34
+ menu: _menu.menuCSS,
35
+ menuList: _menu.menuListCSS,
36
+ menuPortal: _menu.menuPortalCSS,
37
+ multiValue: _multiValue.multiValueCSS,
38
+ multiValueLabel: _multiValue.multiValueLabelCSS,
39
+ multiValueRemove: _multiValue.multiValueRemoveCSS,
40
+ noOptionsMessage: _menu.noOptionsMessageCSS,
41
+ option: _option.optionCSS,
42
+ placeholder: _placeholder.placeholderCSS,
43
+ singleValue: _singleValue.css,
44
+ valueContainer: _containers.valueContainerCSS
45
+ };
46
+ // Merge Utility
47
+ // Allows consumers to extend a base Select with additional styles
48
+
49
+ function mergeStyles(source) {
50
+ var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
51
+ // initialize with source styles
52
+ var styles = _objectSpread({}, source);
53
+
54
+ // massage in target styles
55
+ Object.keys(target).forEach(function (keyAsString) {
56
+ var key = keyAsString;
57
+ if (source[key]) {
58
+ styles[key] = function (rsCss, props) {
59
+ return target[key](source[key](rsCss, props), props);
60
+ };
61
+ } else {
62
+ styles[key] = target[key];
63
+ }
64
+ });
65
+ return styles;
66
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.spacing = exports.defaultTheme = exports.colors = void 0;
7
+ var colors = exports.colors = {
8
+ primary: '#2684FF',
9
+ primary75: '#4C9AFF',
10
+ primary50: '#B2D4FF',
11
+ primary25: '#DEEBFF',
12
+ danger: '#DE350B',
13
+ dangerLight: '#FFBDAD',
14
+ neutral0: 'hsl(0, 0%, 100%)',
15
+ neutral5: 'hsl(0, 0%, 95%)',
16
+ neutral10: 'hsl(0, 0%, 90%)',
17
+ neutral20: 'hsl(0, 0%, 80%)',
18
+ neutral30: 'hsl(0, 0%, 70%)',
19
+ neutral40: 'hsl(0, 0%, 60%)',
20
+ neutral50: 'hsl(0, 0%, 50%)',
21
+ neutral60: 'hsl(0, 0%, 40%)',
22
+ neutral70: 'hsl(0, 0%, 30%)',
23
+ neutral80: 'hsl(0, 0%, 20%)',
24
+ neutral90: 'hsl(0, 0%, 10%)'
25
+ };
26
+ var borderRadius = 4;
27
+ // Used to calculate consistent margin/padding on elements
28
+ var baseUnit = 4;
29
+ // The minimum height of the control
30
+ var controlHeight = 38;
31
+ // The amount of space between the control and menu */
32
+ var menuGutter = baseUnit * 2;
33
+ var spacing = exports.spacing = {
34
+ baseUnit: baseUnit,
35
+ controlHeight: controlHeight,
36
+ menuGutter: menuGutter
37
+ };
38
+ var defaultTheme = exports.defaultTheme = {
39
+ borderRadius: borderRadius,
40
+ colors: colors,
41
+ spacing: spacing
42
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = useAsync;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _react = require("react");
12
+ var _utils = require("./utils");
13
+ var _excluded = ["defaultOptions", "cacheOptions", "loadOptions", "options", "isLoading", "onInputChange", "filterOption"];
14
+ 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; }
15
+ 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; }
16
+ // TODO: Fill in the hook {description}.
17
+ /**
18
+ * {description}.
19
+ */
20
+ function useAsync(_ref) {
21
+ var _ref$defaultOptions = _ref.defaultOptions,
22
+ propsDefaultOptions = _ref$defaultOptions === void 0 ? false : _ref$defaultOptions,
23
+ _ref$cacheOptions = _ref.cacheOptions,
24
+ cacheOptions = _ref$cacheOptions === void 0 ? false : _ref$cacheOptions,
25
+ propsLoadOptions = _ref.loadOptions,
26
+ propsOptions = _ref.options,
27
+ _ref$isLoading = _ref.isLoading,
28
+ propsIsLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
29
+ propsOnInputChange = _ref.onInputChange,
30
+ _ref$filterOption = _ref.filterOption,
31
+ filterOption = _ref$filterOption === void 0 ? null : _ref$filterOption,
32
+ restSelectProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
33
+ var propsInputValue = restSelectProps.inputValue;
34
+ var lastRequest = (0, _react.useRef)(undefined);
35
+ var mounted = (0, _react.useRef)(false);
36
+ var _useState = (0, _react.useState)(Array.isArray(propsDefaultOptions) ? propsDefaultOptions : undefined),
37
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
38
+ defaultOptions = _useState2[0],
39
+ setDefaultOptions = _useState2[1];
40
+ var _useState3 = (0, _react.useState)(typeof propsInputValue !== 'undefined' ? propsInputValue : ''),
41
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
42
+ stateInputValue = _useState4[0],
43
+ setStateInputValue = _useState4[1];
44
+ var _useState5 = (0, _react.useState)(propsDefaultOptions === true),
45
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
46
+ isLoading = _useState6[0],
47
+ setIsLoading = _useState6[1];
48
+ var _useState7 = (0, _react.useState)(undefined),
49
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
50
+ loadedInputValue = _useState8[0],
51
+ setLoadedInputValue = _useState8[1];
52
+ var _useState9 = (0, _react.useState)([]),
53
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
54
+ loadedOptions = _useState10[0],
55
+ setLoadedOptions = _useState10[1];
56
+ var _useState11 = (0, _react.useState)(false),
57
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
58
+ passEmptyOptions = _useState12[0],
59
+ setPassEmptyOptions = _useState12[1];
60
+ var _useState13 = (0, _react.useState)({}),
61
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
62
+ optionsCache = _useState14[0],
63
+ setOptionsCache = _useState14[1];
64
+ var _useState15 = (0, _react.useState)(undefined),
65
+ _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
66
+ prevDefaultOptions = _useState16[0],
67
+ setPrevDefaultOptions = _useState16[1];
68
+ var _useState17 = (0, _react.useState)(undefined),
69
+ _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
70
+ prevCacheOptions = _useState18[0],
71
+ setPrevCacheOptions = _useState18[1];
72
+ if (cacheOptions !== prevCacheOptions) {
73
+ setOptionsCache({});
74
+ setPrevCacheOptions(cacheOptions);
75
+ }
76
+ if (propsDefaultOptions !== prevDefaultOptions) {
77
+ setDefaultOptions(Array.isArray(propsDefaultOptions) ? propsDefaultOptions : undefined);
78
+ setPrevDefaultOptions(propsDefaultOptions);
79
+ }
80
+ (0, _react.useEffect)(function () {
81
+ mounted.current = true;
82
+ return function () {
83
+ mounted.current = false;
84
+ };
85
+ }, []);
86
+ var loadOptions = (0, _react.useCallback)(function (inputValue, callback) {
87
+ if (!propsLoadOptions) {
88
+ return callback();
89
+ }
90
+ var loader = propsLoadOptions(inputValue, callback);
91
+ if (loader && typeof loader.then === 'function') {
92
+ loader.then(callback, function () {
93
+ return callback();
94
+ });
95
+ }
96
+ }, [propsLoadOptions]);
97
+ (0, _react.useEffect)(function () {
98
+ if (propsDefaultOptions === true) {
99
+ loadOptions(stateInputValue, function (options) {
100
+ if (!mounted.current) {
101
+ return;
102
+ }
103
+ setDefaultOptions(options || []);
104
+ setIsLoading(!!lastRequest.current);
105
+ });
106
+ }
107
+ // NOTE: this effect is designed to only run when the component mounts,
108
+ // so we don't want to include any hook dependencies
109
+ // eslint-disable-next-line react-hooks/exhaustive-deps
110
+ }, []);
111
+ var onInputChange = (0, _react.useCallback)(function (newValue, actionMeta) {
112
+ var inputValue = (0, _utils.handleInputChange)(newValue, actionMeta, propsOnInputChange);
113
+ if (!inputValue) {
114
+ lastRequest.current = undefined;
115
+ setStateInputValue('');
116
+ setLoadedInputValue('');
117
+ setLoadedOptions([]);
118
+ setIsLoading(false);
119
+ setPassEmptyOptions(false);
120
+ return;
121
+ }
122
+ if (cacheOptions && optionsCache[inputValue]) {
123
+ setStateInputValue(inputValue);
124
+ setLoadedInputValue(inputValue);
125
+ setLoadedOptions(optionsCache[inputValue]);
126
+ setIsLoading(false);
127
+ setPassEmptyOptions(false);
128
+ } else {
129
+ var request = lastRequest.current = {};
130
+ setStateInputValue(inputValue);
131
+ setIsLoading(true);
132
+ setPassEmptyOptions(!loadedInputValue);
133
+ loadOptions(inputValue, function (options) {
134
+ if (!mounted) {
135
+ return;
136
+ }
137
+ if (request !== lastRequest.current) {
138
+ return;
139
+ }
140
+ lastRequest.current = undefined;
141
+ setIsLoading(false);
142
+ setLoadedInputValue(inputValue);
143
+ setLoadedOptions(options || []);
144
+ setPassEmptyOptions(false);
145
+ setOptionsCache(options ? _objectSpread(_objectSpread({}, optionsCache), {}, (0, _defineProperty2.default)({}, inputValue, options)) : optionsCache);
146
+ });
147
+ }
148
+ }, [cacheOptions, loadOptions, loadedInputValue, optionsCache, propsOnInputChange]);
149
+ var options = passEmptyOptions ? [] : stateInputValue && loadedInputValue ? loadedOptions : defaultOptions || [];
150
+ return _objectSpread(_objectSpread({}, restSelectProps), {}, {
151
+ options: options,
152
+ isLoading: isLoading || propsIsLoading,
153
+ onInputChange: onInputChange,
154
+ filterOption: filterOption
155
+ });
156
+ }
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = useCreatable;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _react = require("react");
12
+ var _builtins = require("./builtins");
13
+ var _utils = require("./utils");
14
+ var _excluded = ["allowCreateWhileLoading", "createOptionPosition", "formatCreateLabel", "isValidNewOption", "getNewOptionData", "onCreateOption", "options", "onChange"];
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
+ var compareOption = function compareOption() {
18
+ var inputValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
19
+ var option = arguments.length > 1 ? arguments[1] : undefined;
20
+ var accessors = arguments.length > 2 ? arguments[2] : undefined;
21
+ var candidate = String(inputValue).toLowerCase();
22
+ var optionValue = String(accessors.getOptionValue(option)).toLowerCase();
23
+ var optionLabel = String(accessors.getOptionLabel(option)).toLowerCase();
24
+ return optionValue === candidate || optionLabel === candidate;
25
+ };
26
+ var builtins = {
27
+ formatCreateLabel: function formatCreateLabel(inputValue) {
28
+ return "Create \"".concat(inputValue, "\"");
29
+ },
30
+ isValidNewOption: function isValidNewOption(inputValue, selectValue, selectOptions, accessors) {
31
+ return !(!inputValue || selectValue.some(function (option) {
32
+ return compareOption(inputValue, option, accessors);
33
+ }) || selectOptions.some(function (option) {
34
+ return compareOption(inputValue, option, accessors);
35
+ }));
36
+ },
37
+ getNewOptionData: function getNewOptionData(inputValue, optionLabel) {
38
+ return {
39
+ label: optionLabel,
40
+ value: inputValue,
41
+ __isNew__: true
42
+ };
43
+ }
44
+ };
45
+
46
+ // TODO: Fill in the hook {description}.
47
+ /**
48
+ * {description}.
49
+ */
50
+ function useCreatable(_ref) {
51
+ var _ref$allowCreateWhile = _ref.allowCreateWhileLoading,
52
+ allowCreateWhileLoading = _ref$allowCreateWhile === void 0 ? false : _ref$allowCreateWhile,
53
+ _ref$createOptionPosi = _ref.createOptionPosition,
54
+ createOptionPosition = _ref$createOptionPosi === void 0 ? 'last' : _ref$createOptionPosi,
55
+ _ref$formatCreateLabe = _ref.formatCreateLabel,
56
+ formatCreateLabel = _ref$formatCreateLabe === void 0 ? builtins.formatCreateLabel : _ref$formatCreateLabe,
57
+ _ref$isValidNewOption = _ref.isValidNewOption,
58
+ isValidNewOption = _ref$isValidNewOption === void 0 ? builtins.isValidNewOption : _ref$isValidNewOption,
59
+ _ref$getNewOptionData = _ref.getNewOptionData,
60
+ getNewOptionData = _ref$getNewOptionData === void 0 ? builtins.getNewOptionData : _ref$getNewOptionData,
61
+ onCreateOption = _ref.onCreateOption,
62
+ _ref$options = _ref.options,
63
+ propsOptions = _ref$options === void 0 ? [] : _ref$options,
64
+ propsOnChange = _ref.onChange,
65
+ restSelectProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
66
+ var _restSelectProps$getO = restSelectProps.getOptionValue,
67
+ getOptionValue = _restSelectProps$getO === void 0 ? _builtins.getOptionValue : _restSelectProps$getO,
68
+ _restSelectProps$getO2 = restSelectProps.getOptionLabel,
69
+ getOptionLabel = _restSelectProps$getO2 === void 0 ? _builtins.getOptionLabel : _restSelectProps$getO2,
70
+ inputValue = restSelectProps.inputValue,
71
+ isLoading = restSelectProps.isLoading,
72
+ isMulti = restSelectProps.isMulti,
73
+ value = restSelectProps.value,
74
+ name = restSelectProps.name;
75
+ var newOption = (0, _react.useMemo)(function () {
76
+ return (
77
+ //@ts-ignore
78
+ isValidNewOption(inputValue, (0, _utils.cleanValue)(value), propsOptions, {
79
+ getOptionValue: getOptionValue,
80
+ getOptionLabel: getOptionLabel
81
+ }) ? getNewOptionData(inputValue, formatCreateLabel(inputValue)) : undefined
82
+ );
83
+ }, [formatCreateLabel, getNewOptionData, getOptionLabel, getOptionValue, inputValue, isValidNewOption, propsOptions, value]);
84
+ var options = (0, _react.useMemo)(function () {
85
+ return (allowCreateWhileLoading || !isLoading) && newOption ? createOptionPosition === 'first' ? [newOption].concat((0, _toConsumableArray2.default)(propsOptions)) : [].concat((0, _toConsumableArray2.default)(propsOptions), [newOption]) : propsOptions;
86
+ }, [allowCreateWhileLoading, createOptionPosition, isLoading, newOption, propsOptions]);
87
+ var onChange = (0, _react.useCallback)(function (newValue, actionMeta) {
88
+ if (actionMeta.action !== 'select-option') {
89
+ return propsOnChange(newValue, actionMeta);
90
+ }
91
+ var valueArray = Array.isArray(newValue) ? newValue : [newValue];
92
+ if (valueArray[valueArray.length - 1] === newOption) {
93
+ if (onCreateOption) {
94
+ onCreateOption(inputValue);
95
+ } else {
96
+ var newOptionData = getNewOptionData(inputValue, inputValue);
97
+ var newActionMeta = {
98
+ action: 'create-option',
99
+ name: name,
100
+ option: newOptionData
101
+ };
102
+ propsOnChange(
103
+ //@ts-ignore
104
+ (0, _utils.valueTernary)(isMulti, [].concat((0, _toConsumableArray2.default)((0, _utils.cleanValue)(value)), [newOptionData]), newOptionData), newActionMeta);
105
+ }
106
+ return;
107
+ }
108
+ propsOnChange(newValue, actionMeta);
109
+ }, [getNewOptionData, inputValue, isMulti, name, newOption, onCreateOption, propsOnChange, value]);
110
+ return _objectSpread(_objectSpread({}, restSelectProps), {}, {
111
+ options: options,
112
+ onChange: onChange
113
+ });
114
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = useStateManager;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _react = require("react");
12
+ var _excluded = ["defaultInputValue", "defaultMenuIsOpen", "defaultValue", "inputValue", "menuIsOpen", "onChange", "onInputChange", "onMenuClose", "onMenuOpen", "value"];
13
+ 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; }
14
+ 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; }
15
+ // TODO: Fill in the hook {description}.
16
+ /**
17
+ * {description}.
18
+ */
19
+ function useStateManager(_ref) {
20
+ var _ref$defaultInputValu = _ref.defaultInputValue,
21
+ defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,
22
+ _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,
23
+ defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,
24
+ _ref$defaultValue = _ref.defaultValue,
25
+ defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,
26
+ propsInputValue = _ref.inputValue,
27
+ propsMenuIsOpen = _ref.menuIsOpen,
28
+ propsOnChange = _ref.onChange,
29
+ propsOnInputChange = _ref.onInputChange,
30
+ propsOnMenuClose = _ref.onMenuClose,
31
+ propsOnMenuOpen = _ref.onMenuOpen,
32
+ propsValue = _ref.value,
33
+ restSelectProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
34
+ var _useState = (0, _react.useState)(propsInputValue !== undefined ? propsInputValue : defaultInputValue),
35
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
36
+ stateInputValue = _useState2[0],
37
+ setStateInputValue = _useState2[1];
38
+ var _useState3 = (0, _react.useState)(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),
39
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
40
+ stateMenuIsOpen = _useState4[0],
41
+ setStateMenuIsOpen = _useState4[1];
42
+ var _useState5 = (0, _react.useState)(propsValue !== undefined ? propsValue : defaultValue),
43
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
44
+ stateValue = _useState6[0],
45
+ setStateValue = _useState6[1];
46
+ var onChange = (0, _react.useCallback)(function (value, actionMeta) {
47
+ if (typeof propsOnChange === 'function') {
48
+ propsOnChange(value, actionMeta);
49
+ }
50
+ setStateValue(value);
51
+ }, [propsOnChange]);
52
+ var onInputChange = (0, _react.useCallback)(function (value, actionMeta) {
53
+ var newValue;
54
+ if (typeof propsOnInputChange === 'function') {
55
+ newValue = propsOnInputChange(value, actionMeta);
56
+ }
57
+ setStateInputValue(newValue !== undefined ? newValue : value);
58
+ }, [propsOnInputChange]);
59
+ var onMenuOpen = (0, _react.useCallback)(function () {
60
+ if (typeof propsOnMenuOpen === 'function') {
61
+ propsOnMenuOpen();
62
+ }
63
+ setStateMenuIsOpen(true);
64
+ }, [propsOnMenuOpen]);
65
+ var onMenuClose = (0, _react.useCallback)(function () {
66
+ if (typeof propsOnMenuClose === 'function') {
67
+ propsOnMenuClose();
68
+ }
69
+ setStateMenuIsOpen(false);
70
+ }, [propsOnMenuClose]);
71
+ var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;
72
+ var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;
73
+ var value = propsValue !== undefined ? propsValue : stateValue;
74
+ return _objectSpread(_objectSpread({}, restSelectProps), {}, {
75
+ inputValue: inputValue,
76
+ menuIsOpen: menuIsOpen,
77
+ onChange: onChange,
78
+ onInputChange: onInputChange,
79
+ onMenuClose: onMenuClose,
80
+ onMenuOpen: onMenuOpen,
81
+ value: value
82
+ });
83
+ }