@hyphen/hyphen-components 2.15.6 → 2.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { FC, FocusEvent, ReactNode } from 'react';
1
+ import { FocusEvent, ReactNode } from 'react';
2
2
  import { OptionsOrGroups, OnChangeValue } from 'react-select';
3
3
  import { ResponsiveProp } from '../../types';
4
4
  import { GroupBase } from 'react-select/dist/declarations/src/types';
@@ -25,10 +25,6 @@ export interface SelectInputProps {
25
25
  * Callback function to call on change event.
26
26
  */
27
27
  onChange: (event: SimulatedEventPayloadType) => void;
28
- /**
29
- * Options for dropdown list.
30
- */
31
- options: SelectInputOptions;
32
28
  /**
33
29
  * The value(s) of select.
34
30
  */
@@ -110,5 +106,35 @@ export interface SelectInputProps {
110
106
  */
111
107
  [x: string]: any;
112
108
  }
113
- export declare const SelectInput: FC<SelectInputProps>;
109
+ type AsyncOptions = (inputValue: string) => Promise<SelectInputOptions>;
110
+ type AsyncSelectInputProps = SelectInputProps & {
111
+ /**
112
+ * Load the input asynchronously.
113
+ */
114
+ isAsync: true;
115
+ /**
116
+ * Load options asynchronously.
117
+ */
118
+ options: AsyncOptions;
119
+ /**
120
+ * If cacheOptions is passed, then the loaded data will be cached.
121
+ */
122
+ cacheOptions?: boolean;
123
+ /**
124
+ * The default set of options to show before the user starts searching.
125
+ */
126
+ defaultOptions?: boolean;
127
+ };
128
+ type SyncSelectInputProps = SelectInputProps & {
129
+ /**
130
+ * Load the input synchronously.
131
+ */
132
+ isAsync?: false;
133
+ /**
134
+ * Options for dropdown list.
135
+ */
136
+ options: SelectInputOptions;
137
+ };
138
+ export declare function SelectInput(props: AsyncSelectInputProps): JSX.Element;
139
+ export declare function SelectInput(props: SyncSelectInputProps): JSX.Element;
114
140
  export {};
@@ -9,6 +9,8 @@ export declare const HelpText: () => React.JSX.Element;
9
9
  export declare const Placeholder: () => React.JSX.Element;
10
10
  export declare const HiddenLabel: () => React.JSX.Element;
11
11
  export declare const CreatableSelect: () => React.JSX.Element;
12
+ export declare const AsyncSelect: () => React.JSX.Element;
13
+ export declare const AsyncCreatableSelect: () => React.JSX.Element;
12
14
  export declare const MultiSelect: () => React.JSX.Element;
13
15
  export declare const MultiSelectAndPreSelected: () => React.JSX.Element;
14
16
  export declare const MultiSelectCreatable: () => React.JSX.Element;
@@ -18,6 +18,8 @@ var FocusLock = require('react-focus-lock');
18
18
  var reactRemoveScroll = require('react-remove-scroll');
19
19
  var formik = require('formik');
20
20
  var Select = require('react-select');
21
+ var AsyncCreatableSelect = require('react-select/async-creatable');
22
+ var AsyncSelect = require('react-select/async');
21
23
  var CreatableSelect = require('react-select/creatable');
22
24
  var uuid = require('uuid');
23
25
 
@@ -2223,48 +2225,50 @@ var FormikRadioGroup = function FormikRadioGroup(_ref) {
2223
2225
 
2224
2226
  var styles$e = {"react-select-icon":"SelectInput-module_react-select-icon__PvocB","size-sm":"SelectInput-module_size-sm__PKB-J","size-md":"SelectInput-module_size-md__n9Fj8","size-lg":"SelectInput-module_size-lg__LQ-uG","error":"SelectInput-module_error__Avf98","size-sm-tablet":"SelectInput-module_size-sm-tablet__2Dg01","size-md-tablet":"SelectInput-module_size-md-tablet__-iOSg","size-lg-tablet":"SelectInput-module_size-lg-tablet__9xmuJ","size-sm-desktop":"SelectInput-module_size-sm-desktop__tOWI4","size-md-desktop":"SelectInput-module_size-md-desktop__vo-UC","size-lg-desktop":"SelectInput-module_size-lg-desktop__nxQdj","size-sm-hd":"SelectInput-module_size-sm-hd__qamTH","size-md-hd":"SelectInput-module_size-md-hd__Cf8hk","size-lg-hd":"SelectInput-module_size-lg-hd__E4-mZ","disabled":"SelectInput-module_disabled__4ezAy","select-input-label":"SelectInput-module_select-input-label__eqEYa"};
2225
2227
 
2226
- var _excluded$k = ["id", "label", "onChange", "options", "value", "autoFocus", "className", "error", "helpText", "hideLabel", "isClearable", "isCreatable", "isDisabled", "isMulti", "isRequired", "menuPortalTarget", "name", "onFocus", "onBlur", "placeholder", "requiredIndicator", "size"];
2227
- var SelectInput = function SelectInput(_ref) {
2228
- var _ref2, _classNames;
2229
- var id = _ref.id,
2230
- label = _ref.label,
2231
- onChange = _ref.onChange,
2232
- options = _ref.options,
2233
- value = _ref.value,
2234
- _ref$autoFocus = _ref.autoFocus,
2235
- autoFocus = _ref$autoFocus === void 0 ? false : _ref$autoFocus,
2236
- _ref$className = _ref.className,
2237
- className = _ref$className === void 0 ? '' : _ref$className,
2238
- _ref$error = _ref.error,
2239
- error = _ref$error === void 0 ? false : _ref$error,
2240
- helpText = _ref.helpText,
2241
- _ref$hideLabel = _ref.hideLabel,
2242
- hideLabel = _ref$hideLabel === void 0 ? false : _ref$hideLabel,
2243
- _ref$isClearable = _ref.isClearable,
2244
- isClearable = _ref$isClearable === void 0 ? false : _ref$isClearable,
2245
- _ref$isCreatable = _ref.isCreatable,
2246
- isCreatable = _ref$isCreatable === void 0 ? false : _ref$isCreatable,
2247
- _ref$isDisabled = _ref.isDisabled,
2248
- isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
2249
- _ref$isMulti = _ref.isMulti,
2250
- isMulti = _ref$isMulti === void 0 ? false : _ref$isMulti,
2251
- _ref$isRequired = _ref.isRequired,
2252
- isRequired = _ref$isRequired === void 0 ? false : _ref$isRequired,
2253
- _ref$menuPortalTarget = _ref.menuPortalTarget,
2254
- menuPortalTarget = _ref$menuPortalTarget === void 0 ? null : _ref$menuPortalTarget,
2255
- _ref$name = _ref.name,
2256
- name = _ref$name === void 0 ? '' : _ref$name,
2257
- _ref$onFocus = _ref.onFocus,
2258
- onFocus = _ref$onFocus === void 0 ? null : _ref$onFocus,
2259
- _ref$onBlur = _ref.onBlur,
2260
- onBlur = _ref$onBlur === void 0 ? null : _ref$onBlur,
2261
- _ref$placeholder = _ref.placeholder,
2262
- placeholder = _ref$placeholder === void 0 ? undefined : _ref$placeholder,
2263
- _ref$requiredIndicato = _ref.requiredIndicator,
2264
- requiredIndicator = _ref$requiredIndicato === void 0 ? ' *' : _ref$requiredIndicato,
2265
- _ref$size = _ref.size,
2266
- size = _ref$size === void 0 ? 'md' : _ref$size,
2267
- restProps = _objectWithoutPropertiesLoose(_ref, _excluded$k);
2228
+ var _excluded$k = ["id", "label", "onChange", "options", "value", "autoFocus", "className", "error", "helpText", "hideLabel", "isClearable", "isAsync", "isCreatable", "isDisabled", "isMulti", "isRequired", "menuPortalTarget", "name", "onFocus", "onBlur", "placeholder", "requiredIndicator", "size"];
2229
+ function SelectInput(props) {
2230
+ var _ref, _classNames;
2231
+ var id = props.id,
2232
+ label = props.label,
2233
+ onChange = props.onChange,
2234
+ options = props.options,
2235
+ value = props.value,
2236
+ _props$autoFocus = props.autoFocus,
2237
+ autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,
2238
+ _props$className = props.className,
2239
+ className = _props$className === void 0 ? '' : _props$className,
2240
+ _props$error = props.error,
2241
+ error = _props$error === void 0 ? false : _props$error,
2242
+ helpText = props.helpText,
2243
+ _props$hideLabel = props.hideLabel,
2244
+ hideLabel = _props$hideLabel === void 0 ? false : _props$hideLabel,
2245
+ _props$isClearable = props.isClearable,
2246
+ isClearable = _props$isClearable === void 0 ? false : _props$isClearable,
2247
+ _props$isAsync = props.isAsync,
2248
+ isAsync = _props$isAsync === void 0 ? false : _props$isAsync,
2249
+ _props$isCreatable = props.isCreatable,
2250
+ isCreatable = _props$isCreatable === void 0 ? false : _props$isCreatable,
2251
+ _props$isDisabled = props.isDisabled,
2252
+ isDisabled = _props$isDisabled === void 0 ? false : _props$isDisabled,
2253
+ _props$isMulti = props.isMulti,
2254
+ isMulti = _props$isMulti === void 0 ? false : _props$isMulti,
2255
+ _props$isRequired = props.isRequired,
2256
+ isRequired = _props$isRequired === void 0 ? false : _props$isRequired,
2257
+ _props$menuPortalTarg = props.menuPortalTarget,
2258
+ menuPortalTarget = _props$menuPortalTarg === void 0 ? null : _props$menuPortalTarg,
2259
+ _props$name = props.name,
2260
+ name = _props$name === void 0 ? '' : _props$name,
2261
+ _props$onFocus = props.onFocus,
2262
+ onFocus = _props$onFocus === void 0 ? null : _props$onFocus,
2263
+ _props$onBlur = props.onBlur,
2264
+ onBlur = _props$onBlur === void 0 ? null : _props$onBlur,
2265
+ _props$placeholder = props.placeholder,
2266
+ placeholder = _props$placeholder === void 0 ? undefined : _props$placeholder,
2267
+ _props$requiredIndica = props.requiredIndicator,
2268
+ requiredIndicator = _props$requiredIndica === void 0 ? ' *' : _props$requiredIndica,
2269
+ _props$size = props.size,
2270
+ size = _props$size === void 0 ? 'md' : _props$size,
2271
+ restProps = _objectWithoutPropertiesLoose(props, _excluded$k);
2268
2272
  var handleChange = function handleChange(values) {
2269
2273
  var simulatedEventPayloadType = {
2270
2274
  target: {
@@ -2283,7 +2287,7 @@ var SelectInput = function SelectInput(_ref) {
2283
2287
  var responsiveClasses = generateResponsiveClasses('size', size);
2284
2288
  var wrapperClasses = classNames.apply(void 0, ['hyphen-components__variables__form-control', 'select-input-wrapper', className].concat(responsiveClasses.map(function (c) {
2285
2289
  return styles$e[c];
2286
- }), [(_ref2 = {}, _ref2[styles$e.disabled] = isDisabled, _ref2)]));
2290
+ }), [(_ref = {}, _ref[styles$e.disabled] = isDisabled, _ref)]));
2287
2291
  var inputClasses = classNames('react-select', (_classNames = {}, _classNames[styles$e.error] = error, _classNames));
2288
2292
  var labelProps = {
2289
2293
  inputId: id,
@@ -2298,11 +2302,15 @@ var SelectInput = function SelectInput(_ref) {
2298
2302
  name: "remove"
2299
2303
  }));
2300
2304
  };
2301
- var Component = isCreatable ? CreatableSelect : Select;
2305
+ var Component = isCreatable && isAsync ? AsyncCreatableSelect : isCreatable ? CreatableSelect : isAsync ? AsyncSelect : Select;
2302
2306
  return React.createElement(Box, {
2303
2307
  width: "100%",
2304
2308
  className: wrapperClasses
2305
- }, label && !hideLabel && React.createElement(FormLabel, _extends({}, labelProps), label), React.createElement(Component, _extends({}, restProps, {
2309
+ }, label && !hideLabel && React.createElement(FormLabel, _extends({}, labelProps), label), React.createElement(Component, _extends({}, restProps, isAsync ? {
2310
+ loadOptions: options
2311
+ } : {
2312
+ options: options
2313
+ }, {
2306
2314
  inputId: id,
2307
2315
  "aria-label": label,
2308
2316
  components: {
@@ -2318,7 +2326,6 @@ var SelectInput = function SelectInput(_ref) {
2318
2326
  menuPortalTarget: menuPortalTarget,
2319
2327
  name: name,
2320
2328
  autoFocus: autoFocus,
2321
- options: options,
2322
2329
  onChange: handleChange,
2323
2330
  onFocus: handleFocus,
2324
2331
  onBlur: handleBlur,
@@ -2331,7 +2338,7 @@ var SelectInput = function SelectInput(_ref) {
2331
2338
  },
2332
2339
  value: value
2333
2340
  })), error && typeof error !== 'boolean' && React.createElement(InputValidationMessage, null, error));
2334
- };
2341
+ }
2335
2342
 
2336
2343
  var _excluded$j = ["field", "form", "onChange", "id", "label", "options", "error"];
2337
2344
  var FormikSelectInput = function FormikSelectInput(_ref) {