@maif/react-forms 1.0.3 → 1.0.7

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.
@@ -54,6 +54,14 @@ and limitations under the License.
54
54
 
55
55
  /*! showdown v 1.9.1 - 02-11-2019 */
56
56
 
57
+ /**
58
+ * A better abstraction over CSS.
59
+ *
60
+ * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present
61
+ * @website https://github.com/cssinjs/jss
62
+ * @license MIT
63
+ */
64
+
57
65
  /** @license React v0.20.2
58
66
  * scheduler.production.min.js
59
67
  *
package/lib/form.d.ts CHANGED
@@ -1,11 +1,2 @@
1
- export function Form({ schema, flow, value, inputWrapper, onSubmit, footer, style, className, options }: {
2
- schema: any;
3
- flow: any;
4
- value: any;
5
- inputWrapper: any;
6
- onSubmit: any;
7
- footer: any;
8
- style: any;
9
- className: any;
10
- options?: {} | undefined;
11
- }): JSX.Element;
1
+ export const Form: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
2
+ import React from "react";
package/lib/form.js CHANGED
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.Form = void 0;
7
7
 
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
8
10
  var _yup = require("@hookform/resolvers/yup");
9
11
 
10
12
  var _classnames = _interopRequireDefault(require("classnames"));
11
13
 
12
- var _react = _interopRequireWildcard(require("react"));
13
-
14
14
  var _reactFeather = require("react-feather");
15
15
 
16
16
  var _reactHookForm = require("react-hook-form");
@@ -23,6 +23,8 @@ var _uuid = require("uuid");
23
23
 
24
24
  var yup = _interopRequireWildcard(require("yup"));
25
25
 
26
+ var _styleContext = require("./styleContext");
27
+
26
28
  var _type = require("./type");
27
29
 
28
30
  var _format = require("./format");
@@ -33,12 +35,12 @@ var _index2 = require("./resolvers/index");
33
35
 
34
36
  var _Option = require("./Option");
35
37
 
38
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
39
+
36
40
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
41
 
38
42
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
43
 
40
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
41
-
42
44
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
43
45
 
44
46
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
@@ -164,17 +166,21 @@ var getDefaultValues = function getDefaultValues(flow, schema) {
164
166
  }, {});
165
167
  };
166
168
 
167
- var Form = function Form(_ref2) {
169
+ var Form = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
168
170
  var schema = _ref2.schema,
169
171
  flow = _ref2.flow,
170
172
  value = _ref2.value,
171
173
  inputWrapper = _ref2.inputWrapper,
172
174
  onSubmit = _ref2.onSubmit,
175
+ _ref2$onError = _ref2.onError,
176
+ onError = _ref2$onError === void 0 ? function () {} : _ref2$onError,
173
177
  footer = _ref2.footer,
174
- style = _ref2.style,
178
+ _ref2$style = _ref2.style,
179
+ style = _ref2$style === void 0 ? {} : _ref2$style,
175
180
  className = _ref2.className,
176
181
  _ref2$options = _ref2.options,
177
182
  options = _ref2$options === void 0 ? {} : _ref2$options;
183
+ var classes = (0, _styleContext.useCustomStyle)(style);
178
184
  var formFlow = flow || Object.keys(schema);
179
185
 
180
186
  var maybeCustomHttpClient = function maybeCustomHttpClient(url, method) {
@@ -203,39 +209,63 @@ var Form = function Form(_ref2) {
203
209
  return resolver;
204
210
  };
205
211
 
206
- var cleanInputArray = function cleanInputArray(obj) {
212
+ var cleanInputArray = function cleanInputArray(obj, subSchema) {
207
213
  return Object.entries(obj).reduce(function (acc, curr) {
208
214
  var _curr = _slicedToArray(curr, 2),
209
215
  key = _curr[0],
210
216
  v = _curr[1];
211
217
 
212
218
  if (Array.isArray(v)) {
213
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v.map(function (value) {
214
- return {
215
- value: value
216
- };
217
- })));
218
- } else if (_typeof(v) === 'object') {
219
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, cleanInputArray(v)));
219
+ var isArray = (0, _Option.option)(subSchema).orElse(schema).map(function (s) {
220
+ return s[key];
221
+ }).map(function (entry) {
222
+ return !!entry.array;
223
+ }).getOrElse(false);
224
+
225
+ if (isArray) {
226
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v.map(function (value) {
227
+ return {
228
+ value: value
229
+ };
230
+ })));
231
+ }
232
+
233
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v));
234
+ } else if (!!v && _typeof(v) === 'object') {
235
+ var _schema$key;
236
+
237
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, cleanInputArray(v, ((_schema$key = schema[key]) === null || _schema$key === void 0 ? void 0 : _schema$key.schema) || {})));
220
238
  } else {
221
239
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v));
222
240
  }
223
241
  }, {});
224
242
  };
225
243
 
226
- var cleanOutputArray = function cleanOutputArray(obj) {
244
+ var cleanOutputArray = function cleanOutputArray(obj, subSchema) {
227
245
  return Object.entries(obj).reduce(function (acc, curr) {
228
246
  var _curr2 = _slicedToArray(curr, 2),
229
247
  key = _curr2[0],
230
248
  v = _curr2[1];
231
249
 
232
250
  if (Array.isArray(v)) {
233
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v.map(function (_ref3) {
234
- var value = _ref3.value;
235
- return value;
236
- })));
237
- } else if (_typeof(v) === 'object') {
238
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, cleanOutputArray(v)));
251
+ var isArray = (0, _Option.option)(subSchema).orElse(schema).map(function (s) {
252
+ return s[key];
253
+ }).map(function (entry) {
254
+ return !!entry.array;
255
+ }).getOrElse(false);
256
+
257
+ if (isArray) {
258
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v.map(function (_ref3) {
259
+ var value = _ref3.value;
260
+ return value;
261
+ })));
262
+ }
263
+
264
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v));
265
+ } else if (!!v && _typeof(v) === 'object') {
266
+ var _schema$key2;
267
+
268
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, cleanOutputArray(v, ((_schema$key2 = schema[key]) === null || _schema$key2 === void 0 ? void 0 : _schema$key2.schema) || {})));
239
269
  } else {
240
270
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v));
241
271
  }
@@ -249,7 +279,7 @@ var Form = function Form(_ref2) {
249
279
  defaultValues: cleanInputArray(value || defaultValues)
250
280
  });
251
281
  var register = methods.register,
252
- handleSubmit = methods.handleSubmit,
282
+ _handleSubmit = methods.handleSubmit,
253
283
  errors = methods.formState.errors,
254
284
  control = methods.control,
255
285
  _reset = methods.reset,
@@ -266,12 +296,14 @@ var Form = function Form(_ref2) {
266
296
  _reset(cleanInputArray(value || defaultValues));
267
297
  }, [schema]);
268
298
  var data = watch();
299
+ var prevData = usePrevious(data);
269
300
  (0, _react.useEffect)(function () {
270
301
  //todo: with debounce
271
- if (!!options.autosubmit) {
272
- handleSubmit(function (data) {
273
- return onSubmit(cleanOutputArray(data));
274
- });
302
+ if (!!options.autosubmit && JSON.stringify(data) !== JSON.stringify(prevData)) {
303
+ _handleSubmit(function (data) {
304
+ var clean = cleanOutputArray(data);
305
+ onSubmit(clean);
306
+ }, onError)();
275
307
  }
276
308
  }, [data]);
277
309
 
@@ -279,13 +311,22 @@ var Form = function Form(_ref2) {
279
311
  console.log(watch());
280
312
  }
281
313
 
314
+ (0, _react.useImperativeHandle)(ref, function () {
315
+ return {
316
+ handleSubmit: function handleSubmit() {
317
+ return _handleSubmit(function (data) {
318
+ var clean = cleanOutputArray(data);
319
+ onSubmit(clean);
320
+ }, onError)();
321
+ }
322
+ };
323
+ });
282
324
  return /*#__PURE__*/_react["default"].createElement(_reactHookForm.FormProvider, methods, /*#__PURE__*/_react["default"].createElement("form", {
283
- className: className || "col-12 section pt-2 pr-2",
284
- style: style,
285
- onSubmit: handleSubmit(function (data) {
325
+ className: className || classes.pr_15,
326
+ onSubmit: _handleSubmit(function (data) {
286
327
  var clean = cleanOutputArray(data);
287
- return onSubmit(clean);
288
- })
328
+ onSubmit(clean);
329
+ }, onError)
289
330
  }, formFlow.map(function (entry, idx) {
290
331
  if (entry && _typeof(entry) === 'object') {
291
332
  var errored = entry.flow.some(function (step) {
@@ -352,18 +393,20 @@ var Form = function Form(_ref2) {
352
393
  reset: function reset() {
353
394
  return _reset(defaultValues);
354
395
  },
355
- valid: handleSubmit(function (data) {
396
+ valid: _handleSubmit(function (data) {
356
397
  return onSubmit(cleanOutputArray(data));
357
- }),
398
+ }, onError),
358
399
  actions: options.actions
359
400
  })));
360
- };
401
+ });
361
402
 
362
403
  exports.Form = Form;
363
404
 
364
405
  var Footer = function Footer(props) {
365
406
  var _props$actions, _props$actions$submit, _props$actions2, _props$actions2$submi, _props$actions3, _props$actions3$reset, _props$actions4, _props$actions4$reset, _props$actions5, _props$actions5$submi;
366
407
 
408
+ var classes = (0, _styleContext.useCustomStyle)();
409
+
367
410
  if (props.render) {
368
411
  return props.render({
369
412
  reset: props.reset,
@@ -373,13 +416,13 @@ var Footer = function Footer(props) {
373
416
 
374
417
  var isSubmitDisplayed = ((_props$actions = props.actions) === null || _props$actions === void 0 ? void 0 : (_props$actions$submit = _props$actions.submit) === null || _props$actions$submit === void 0 ? void 0 : _props$actions$submit.display) === undefined ? true : !!((_props$actions2 = props.actions) !== null && _props$actions2 !== void 0 && (_props$actions2$submi = _props$actions2.submit) !== null && _props$actions2$submi !== void 0 && _props$actions2$submi.display);
375
418
  return /*#__PURE__*/_react["default"].createElement("div", {
376
- className: "d-flex flex-row justify-content-end mt-2"
419
+ className: "".concat(classes.flex, " ").concat(classes.jc_end, " ").concat(classes.mt_5)
377
420
  }, ((_props$actions3 = props.actions) === null || _props$actions3 === void 0 ? void 0 : (_props$actions3$reset = _props$actions3.reset) === null || _props$actions3$reset === void 0 ? void 0 : _props$actions3$reset.display) && /*#__PURE__*/_react["default"].createElement("button", {
378
- className: "btn btn-danger",
421
+ className: "".concat(classes.btn, " ").concat(classes.btn_red),
379
422
  type: "button",
380
423
  onClick: props.reset
381
424
  }, ((_props$actions4 = props.actions) === null || _props$actions4 === void 0 ? void 0 : (_props$actions4$reset = _props$actions4.reset) === null || _props$actions4$reset === void 0 ? void 0 : _props$actions4$reset.label) || 'Reset'), isSubmitDisplayed && /*#__PURE__*/_react["default"].createElement("button", {
382
- className: "btn btn-success ml-1",
425
+ className: "".concat(classes.btn, " ").concat(classes.btn_green, " ").concat(classes.ml_10),
383
426
  type: "submit"
384
427
  }, ((_props$actions5 = props.actions) === null || _props$actions5 === void 0 ? void 0 : (_props$actions5$submi = _props$actions5.submit) === null || _props$actions5$submi === void 0 ? void 0 : _props$actions5$submi.label) || 'Save'));
385
428
  };
@@ -399,6 +442,7 @@ var Step = function Step(_ref4) {
399
442
  httpClient = _ref4.httpClient,
400
443
  defaultValue = _ref4.defaultValue,
401
444
  index = _ref4.index;
445
+ var classes = (0, _styleContext.useCustomStyle)();
402
446
 
403
447
  if (step.array) {
404
448
  return /*#__PURE__*/_react["default"].createElement(ArrayStep, {
@@ -477,7 +521,7 @@ var Step = function Step(_ref4) {
477
521
  }, /*#__PURE__*/_react["default"].createElement("textarea", _extends({
478
522
  type: "text",
479
523
  id: entry,
480
- className: (0, _classnames["default"])("form-control", {
524
+ className: (0, _classnames["default"])(classes.input, {
481
525
  'is-invalid': error
482
526
  }),
483
527
  readOnly: step.disabled ? 'readOnly' : null
@@ -590,7 +634,7 @@ var Step = function Step(_ref4) {
590
634
  // {...step.props}
591
635
  type: step.format || 'text',
592
636
  id: entry,
593
- className: (0, _classnames["default"])("form-control", {
637
+ className: (0, _classnames["default"])(classes.input, {
594
638
  'is-invalid': error
595
639
  }),
596
640
  readOnly: step.disabled ? 'readOnly' : null // defaultValue={defaultValue}
@@ -617,7 +661,7 @@ var Step = function Step(_ref4) {
617
661
  }, field),
618
662
  error: error
619
663
  }, /*#__PURE__*/_react["default"].createElement(_index.SelectInput, _extends({}, step.props, {
620
- className: (0, _classnames["default"])({
664
+ className: (0, _classnames["default"])(classes.content, {
621
665
  'is-invalid': error
622
666
  }),
623
667
  readOnly: step.disabled ? 'readOnly' : null,
@@ -647,7 +691,7 @@ var Step = function Step(_ref4) {
647
691
  }, /*#__PURE__*/_react["default"].createElement("input", _extends({}, step.props, {
648
692
  type: step.format || 'number',
649
693
  id: entry,
650
- className: (0, _classnames["default"])("form-control", {
694
+ className: (0, _classnames["default"])(classes.input, {
651
695
  'is-invalid': error
652
696
  }),
653
697
  readOnly: step.disabled ? 'readOnly' : null,
@@ -846,14 +890,16 @@ var Step = function Step(_ref4) {
846
890
  },
847
891
  type: "file",
848
892
  multiple: true,
849
- className: "form-control d-none",
893
+ className: classes.d_none,
850
894
  onChange: setFiles
851
895
  }), /*#__PURE__*/_react["default"].createElement("button", {
852
896
  type: "button",
853
- className: "btn btn-outline-success pl",
897
+ className: "".concat(classes.btn, " ").concat(classes.flex, " ").concat(classes.ai_center),
854
898
  disabled: uploading,
855
899
  onClick: trigger
856
- }, uploading && /*#__PURE__*/_react["default"].createElement(_reactFeather.Loader, null), !uploading && /*#__PURE__*/_react["default"].createElement(_reactFeather.Upload, null), "Select file"));
900
+ }, uploading && /*#__PURE__*/_react["default"].createElement(_reactFeather.Loader, null), !uploading && /*#__PURE__*/_react["default"].createElement(_reactFeather.Upload, null), /*#__PURE__*/_react["default"].createElement("span", {
901
+ className: "".concat(classes.ml_5)
902
+ }, "Select file")));
857
903
  };
858
904
 
859
905
  return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
@@ -891,7 +937,7 @@ var Step = function Step(_ref4) {
891
937
  }, /*#__PURE__*/_react["default"].createElement("input", _extends({}, step.props, {
892
938
  type: "file",
893
939
  id: entry,
894
- className: (0, _classnames["default"])("form-control", {
940
+ className: (0, _classnames["default"])(classes.input, {
895
941
  'is-invalid': error
896
942
  }),
897
943
  readOnly: step.disabled ? 'readOnly' : null,
@@ -9,30 +9,27 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _reactFeather = require("react-feather");
11
11
 
12
+ var _styleContext = require("../styleContext");
13
+
12
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
15
 
14
16
  var BooleanInput = function BooleanInput(_ref) {
15
17
  var onChange = _ref.onChange,
16
18
  value = _ref.value;
17
- return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
18
- className: "form-group row"
19
- }, /*#__PURE__*/_react["default"].createElement("div", {
20
- className: "col-sm-10"
21
- }, /*#__PURE__*/_react["default"].createElement("div", {
22
- className: "row"
23
- }, /*#__PURE__*/_react["default"].createElement("div", {
24
- className: "col-sm-6 cursor-pointer"
19
+ var classes = (0, _styleContext.useCustomStyle)();
20
+ return /*#__PURE__*/_react["default"].createElement("div", {
21
+ className: classes.cursor_pointer
25
22
  }, !!value && /*#__PURE__*/_react["default"].createElement(_reactFeather.ToggleRight, {
26
- className: "input__boolean__on",
23
+ className: classes.input__boolean__on,
27
24
  onClick: function onClick() {
28
25
  return onChange(false);
29
26
  }
30
27
  }), !value && /*#__PURE__*/_react["default"].createElement(_reactFeather.ToggleLeft, {
31
- className: "input__boolean__off",
28
+ className: classes.input__boolean__off,
32
29
  onClick: function onClick() {
33
30
  return onChange(true);
34
31
  }
35
- }))))));
32
+ }));
36
33
  };
37
34
 
38
35
  exports.BooleanInput = BooleanInput;
@@ -1,6 +1,8 @@
1
- export function CodeInput({ onChange, value, className, readOnly }: {
1
+ export function CodeInput({ onChange, value, className, readOnly, theme, mode }: {
2
2
  onChange: any;
3
3
  value: any;
4
4
  className?: string | undefined;
5
5
  readOnly: any;
6
+ theme?: string | undefined;
7
+ mode?: string | undefined;
6
8
  }): JSX.Element;
@@ -15,10 +15,14 @@ require("ace-builds/src-noconflict/mode-json");
15
15
 
16
16
  require("ace-builds/src-noconflict/mode-javascript");
17
17
 
18
+ require("ace-builds/src-noconflict/mode-css");
19
+
18
20
  require("ace-builds/src-noconflict/mode-markdown");
19
21
 
20
22
  require("ace-builds/src-noconflict/theme-monokai");
21
23
 
24
+ require("ace-builds/src-noconflict/theme-tomorrow");
25
+
22
26
  require("ace-builds/src-noconflict/ext-searchbox");
23
27
 
24
28
  require("ace-builds/src-noconflict/ext-language_tools");
@@ -30,7 +34,11 @@ var CodeInput = function CodeInput(_ref) {
30
34
  value = _ref.value,
31
35
  _ref$className = _ref.className,
32
36
  className = _ref$className === void 0 ? '' : _ref$className,
33
- readOnly = _ref.readOnly;
37
+ readOnly = _ref.readOnly,
38
+ _ref$theme = _ref.theme,
39
+ theme = _ref$theme === void 0 ? 'monokai' : _ref$theme,
40
+ _ref$mode = _ref.mode,
41
+ mode = _ref$mode === void 0 ? 'javascript' : _ref$mode;
34
42
  return /*#__PURE__*/_react["default"].createElement(_reactAce["default"], {
35
43
  className: className,
36
44
  readOnly: readOnly,
@@ -38,8 +46,8 @@ var CodeInput = function CodeInput(_ref) {
38
46
  zIndex: 0,
39
47
  isolation: 'isolate'
40
48
  },
41
- mode: "javascript",
42
- theme: "monokai",
49
+ mode: mode,
50
+ theme: theme,
43
51
  onChange: onChange,
44
52
  value: value,
45
53
  name: "scriptParam",
@@ -49,7 +49,7 @@ var Collapse = function Collapse(props) {
49
49
  }, /*#__PURE__*/_react["default"].createElement("hr", null), /*#__PURE__*/_react["default"].createElement("div", {
50
50
  className: "form-group row"
51
51
  }, /*#__PURE__*/_react["default"].createElement("div", {
52
- className: "col-sm-10",
52
+ className: "col-sm-12",
53
53
  onClick: toggle,
54
54
  style: {
55
55
  cursor: 'pointer'
@@ -44,7 +44,8 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
44
44
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
45
45
 
46
46
  var valueToSelectOption = function valueToSelectOption(value) {
47
- var isMulti = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
47
+ var possibleValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
48
+ var isMulti = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
48
49
 
49
50
  if (value === null) {
50
51
  return null;
@@ -52,39 +53,51 @@ var valueToSelectOption = function valueToSelectOption(value) {
52
53
 
53
54
  if (isMulti) {
54
55
  return value.map(function (x) {
55
- return valueToSelectOption(x);
56
+ return valueToSelectOption(x, possibleValues, false);
56
57
  });
57
58
  }
58
59
 
60
+ var maybeValue = (0, _Option.option)(possibleValues.find(function (v) {
61
+ return v.value === value;
62
+ }));
59
63
  return {
60
- label: (value === null || value === void 0 ? void 0 : value.label) || value,
61
- value: (value === null || value === void 0 ? void 0 : value.value) || value
64
+ label: maybeValue.map(function (v) {
65
+ return v.label;
66
+ }).getOrElse(value),
67
+ value: maybeValue.map(function (v) {
68
+ return v.value;
69
+ }).getOrElse(value)
62
70
  };
63
71
  };
64
72
 
65
73
  var SelectInput = function SelectInput(props) {
74
+ var possibleValues = (props.possibleValues || []).map(function (v) {
75
+ return props.transformer ? props.transformer(v) : v;
76
+ }).map(function (v) {
77
+ return {
78
+ label: (v === null || v === void 0 ? void 0 : v.label) || v,
79
+ value: (v === null || v === void 0 ? void 0 : v.value) || v
80
+ };
81
+ });
82
+
66
83
  var _useState = (0, _react.useState)(false),
67
84
  _useState2 = _slicedToArray(_useState, 2),
68
85
  loading = _useState2[0],
69
86
  setLoading = _useState2[1];
70
87
 
71
- var _useState3 = (0, _react.useState)(valueToSelectOption(props.value || props.defaultValue, props.isMulti)),
88
+ var _useState3 = (0, _react.useState)(possibleValues),
72
89
  _useState4 = _slicedToArray(_useState3, 2),
73
- value = _useState4[0],
74
- setValue = _useState4[1];
90
+ values = _useState4[0],
91
+ setValues = _useState4[1];
75
92
 
76
- var _useState5 = (0, _react.useState)((props.possibleValues || []).map(function (v) {
77
- return props.transformer ? props.transformer(v) : v;
78
- }).map(function (v) {
79
- return valueToSelectOption(v);
80
- })),
93
+ var _useState5 = (0, _react.useState)(valueToSelectOption(props.value || props.defaultValue, possibleValues, props.isMulti)),
81
94
  _useState6 = _slicedToArray(_useState5, 2),
82
- values = _useState6[0],
83
- setValues = _useState6[1];
95
+ value = _useState6[0],
96
+ setValue = _useState6[1];
84
97
 
85
98
  (0, _react.useEffect)(function () {
86
- setValue(valueToSelectOption(props.value || props.defaultValue, props.isMulti));
87
- }, []);
99
+ setValue(valueToSelectOption(props.value, values, props.isMulti));
100
+ }, [props.value, values]);
88
101
  (0, _react.useEffect)(function () {
89
102
  if (props.optionsFrom) {
90
103
  var cond = (0, _Option.option)(props.fetchCondition).map(function (cond) {
@@ -125,8 +138,8 @@ var SelectInput = function SelectInput(props) {
125
138
  var createOption = function createOption(option) {
126
139
  var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
127
140
  fn(option);
128
- setValues([].concat(_toConsumableArray(values), [valueToSelectOption(option)]));
129
- onChange(valueToSelectOption(option));
141
+ setValues([].concat(_toConsumableArray(values), [valueToSelectOption(option, values)]));
142
+ onChange([].concat(_toConsumableArray(value), [valueToSelectOption(option, [].concat(_toConsumableArray(values), [valueToSelectOption(option, values)]))]));
130
143
  };
131
144
 
132
145
  if (props.createOption) {