@rjsf/chakra-ui 4.0.0

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 (71) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +161 -0
  3. package/dist/AddButton/AddButton.d.ts +5 -0
  4. package/dist/AddButton/index.d.ts +2 -0
  5. package/dist/AltDateTimeWidget/AltDateTimeWidget.d.ts +15 -0
  6. package/dist/AltDateTimeWidget/index.d.ts +2 -0
  7. package/dist/AltDateWidget/AltDateWidget.d.ts +14 -0
  8. package/dist/AltDateWidget/index.d.ts +2 -0
  9. package/dist/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +4 -0
  10. package/dist/ArrayFieldTemplate/index.d.ts +2 -0
  11. package/dist/ChakraFrameProvider.d.ts +2 -0
  12. package/dist/CheckboxWidget/CheckboxWidget.d.ts +4 -0
  13. package/dist/CheckboxWidget/index.d.ts +2 -0
  14. package/dist/CheckboxesWidget/CheckboxesWidget.d.ts +4 -0
  15. package/dist/CheckboxesWidget/index.d.ts +2 -0
  16. package/dist/ColorWidget/ColorWidget.d.ts +4 -0
  17. package/dist/ColorWidget/index.d.ts +2 -0
  18. package/dist/CssReset.d.ts +24 -0
  19. package/dist/DateTimeWidget/DateTimeWidget.d.ts +4 -0
  20. package/dist/DateTimeWidget/index.d.ts +2 -0
  21. package/dist/DateWidget/DateWidget.d.ts +4 -0
  22. package/dist/DateWidget/index.d.ts +2 -0
  23. package/dist/DescriptionField/DescriptionField.d.ts +4 -0
  24. package/dist/DescriptionField/index.d.ts +2 -0
  25. package/dist/EmailWidget/EmailWidget.d.ts +4 -0
  26. package/dist/EmailWidget/index.d.ts +2 -0
  27. package/dist/ErrorList/ErrorList.d.ts +4 -0
  28. package/dist/ErrorList/index.d.ts +2 -0
  29. package/dist/FieldTemplate/FieldTemplate.d.ts +4 -0
  30. package/dist/FieldTemplate/WrapIfAdditional.d.ts +16 -0
  31. package/dist/FieldTemplate/index.d.ts +2 -0
  32. package/dist/Fields/Fields.d.ts +7 -0
  33. package/dist/Fields/index.d.ts +2 -0
  34. package/dist/Form/Form.d.ts +4 -0
  35. package/dist/Form/index.d.ts +2 -0
  36. package/dist/IconButton/IconButton.d.ts +17 -0
  37. package/dist/IconButton/index.d.ts +2 -0
  38. package/dist/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +4 -0
  39. package/dist/ObjectFieldTemplate/index.d.ts +2 -0
  40. package/dist/PasswordWidget/PasswordWidget.d.ts +4 -0
  41. package/dist/PasswordWidget/index.d.ts +2 -0
  42. package/dist/RadioWidget/RadioWidget.d.ts +4 -0
  43. package/dist/RadioWidget/index.d.ts +2 -0
  44. package/dist/RangeWidget/RangeWidget.d.ts +4 -0
  45. package/dist/RangeWidget/index.d.ts +2 -0
  46. package/dist/SelectWidget/SelectWidget.d.ts +4 -0
  47. package/dist/SelectWidget/index.d.ts +2 -0
  48. package/dist/TextWidget/TextWidget.d.ts +4 -0
  49. package/dist/TextWidget/index.d.ts +2 -0
  50. package/dist/TextareaWidget/TextareaWidget.d.ts +4 -0
  51. package/dist/TextareaWidget/index.d.ts +2 -0
  52. package/dist/Theme/Theme.d.ts +3 -0
  53. package/dist/Theme/index.d.ts +2 -0
  54. package/dist/TitleField/TitleField.d.ts +4 -0
  55. package/dist/TitleField/index.d.ts +2 -0
  56. package/dist/URLWidget/URLWidget.d.ts +4 -0
  57. package/dist/URLWidget/index.d.ts +2 -0
  58. package/dist/UpDownWidget/UpDownWidget.d.ts +4 -0
  59. package/dist/UpDownWidget/index.d.ts +2 -0
  60. package/dist/Widgets/Widgets.d.ts +43 -0
  61. package/dist/Widgets/index.d.ts +2 -0
  62. package/dist/chakra-ui.cjs.development.js +1337 -0
  63. package/dist/chakra-ui.cjs.development.js.map +1 -0
  64. package/dist/chakra-ui.cjs.production.min.js +2 -0
  65. package/dist/chakra-ui.cjs.production.min.js.map +1 -0
  66. package/dist/chakra-ui.esm.js +1323 -0
  67. package/dist/chakra-ui.esm.js.map +1 -0
  68. package/dist/index.d.ts +11 -0
  69. package/dist/index.js +8 -0
  70. package/dist/utils.d.ts +16 -0
  71. package/package.json +71 -0
@@ -0,0 +1,1323 @@
1
+ import { utils, withTheme } from '@rjsf/core';
2
+ import React__default, { createElement, Fragment, useState, useEffect } from 'react';
3
+ import { Button, IconButton, Box, Grid, GridItem, HStack, ButtonGroup, Alert, AlertTitle, List, ListItem, ListIcon, Heading, Divider, Text, FormControl, FormLabel, Input, FormErrorMessage, FormHelperText, shouldForwardProp, Checkbox, CheckboxGroup, Stack, RadioGroup, Radio, Slider, SliderTrack, SliderFilledTrack, SliderThumb, Select as Select$1, Textarea, NumberInput, NumberInputField, NumberInputStepper, NumberIncrementStepper, NumberDecrementStepper, ChakraProvider } from '@chakra-ui/react';
4
+ import { AddIcon, DeleteIcon, ArrowUpIcon, ArrowDownIcon, WarningIcon } from '@chakra-ui/icons';
5
+ import { Select } from 'chakra-react-select';
6
+ import { Global, CacheProvider } from '@emotion/react';
7
+ import createCache from '@emotion/cache';
8
+ import weakMemoize from '@emotion/weak-memoize';
9
+
10
+ function _extends() {
11
+ _extends = Object.assign || function (target) {
12
+ for (var i = 1; i < arguments.length; i++) {
13
+ var source = arguments[i];
14
+
15
+ for (var key in source) {
16
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
17
+ target[key] = source[key];
18
+ }
19
+ }
20
+ }
21
+
22
+ return target;
23
+ };
24
+
25
+ return _extends.apply(this, arguments);
26
+ }
27
+
28
+ function _objectWithoutPropertiesLoose(source, excluded) {
29
+ if (source == null) return {};
30
+ var target = {};
31
+ var sourceKeys = Object.keys(source);
32
+ var key, i;
33
+
34
+ for (i = 0; i < sourceKeys.length; i++) {
35
+ key = sourceKeys[i];
36
+ if (excluded.indexOf(key) >= 0) continue;
37
+ target[key] = source[key];
38
+ }
39
+
40
+ return target;
41
+ }
42
+
43
+ var AddButton = function AddButton(props) {
44
+ return React__default.createElement(Button, Object.assign({
45
+ leftIcon: React__default.createElement(AddIcon, null)
46
+ }, props), "Add Item");
47
+ };
48
+
49
+ var _excluded = ["icon"];
50
+ var mappings = {
51
+ remove: /*#__PURE__*/React__default.createElement(DeleteIcon, null),
52
+ plus: /*#__PURE__*/React__default.createElement(AddIcon, null),
53
+ "arrow-up": /*#__PURE__*/React__default.createElement(ArrowUpIcon, null),
54
+ "arrow-down": /*#__PURE__*/React__default.createElement(ArrowDownIcon, null)
55
+ };
56
+ /**
57
+ * props used in Template:
58
+ * icon, tabIndex, disabled, onClick
59
+ */
60
+
61
+ var ChakraIconButton = function ChakraIconButton(props) {
62
+ var icon = props.icon,
63
+ otherProps = _objectWithoutPropertiesLoose(props, _excluded);
64
+
65
+ return React__default.createElement(IconButton, Object.assign({}, otherProps, {
66
+ icon: mappings[icon],
67
+ "aria-label": icon
68
+ }));
69
+ };
70
+
71
+ var isMultiSelect = utils.isMultiSelect,
72
+ getDefaultRegistry = utils.getDefaultRegistry;
73
+
74
+ var ArrayFieldTemplate = function ArrayFieldTemplate(props) {
75
+ var schema = props.schema,
76
+ _props$registry = props.registry,
77
+ registry = _props$registry === void 0 ? getDefaultRegistry() : _props$registry;
78
+
79
+ if (isMultiSelect(schema, registry.rootSchema)) {
80
+ return React__default.createElement(DefaultFixedArrayFieldTemplate, Object.assign({}, props));
81
+ } else {
82
+ return React__default.createElement(DefaultNormalArrayFieldTemplate, Object.assign({}, props));
83
+ }
84
+ };
85
+
86
+ var ArrayFieldTitle = function ArrayFieldTitle(_ref) {
87
+ var TitleField = _ref.TitleField,
88
+ idSchema = _ref.idSchema,
89
+ title = _ref.title,
90
+ required = _ref.required;
91
+
92
+ if (!title) {
93
+ return null;
94
+ }
95
+
96
+ var id = idSchema.$id + "__title";
97
+ return React__default.createElement(TitleField, {
98
+ id: id,
99
+ title: title,
100
+ required: required
101
+ });
102
+ };
103
+
104
+ var ArrayFieldDescription = function ArrayFieldDescription(_ref2) {
105
+ var DescriptionField = _ref2.DescriptionField,
106
+ idSchema = _ref2.idSchema,
107
+ description = _ref2.description;
108
+
109
+ if (!description) {
110
+ return null;
111
+ }
112
+
113
+ var id = idSchema.$id + "__description";
114
+ return React__default.createElement(DescriptionField, {
115
+ id: id,
116
+ description: description
117
+ });
118
+ }; // Used in the two templates
119
+
120
+
121
+ var DefaultArrayItem = function DefaultArrayItem(props) {
122
+ return React__default.createElement(HStack, {
123
+ key: props.key,
124
+ alignItems: "flex-end",
125
+ py: 1
126
+ }, React__default.createElement(Box, {
127
+ w: "100%"
128
+ }, props.children), props.hasToolbar && React__default.createElement(Box, null, React__default.createElement(ButtonGroup, {
129
+ isAttached: true,
130
+ mb: 1
131
+ }, (props.hasMoveUp || props.hasMoveDown) && React__default.createElement(ChakraIconButton, {
132
+ icon: "arrow-up",
133
+ tabIndex: -1,
134
+ disabled: props.disabled || props.readonly || !props.hasMoveUp,
135
+ onClick: props.onReorderClick(props.index, props.index - 1)
136
+ }), (props.hasMoveUp || props.hasMoveDown) && React__default.createElement(ChakraIconButton, {
137
+ icon: "arrow-down",
138
+ tabIndex: -1,
139
+ disabled: props.disabled || props.readonly || !props.hasMoveDown,
140
+ onClick: props.onReorderClick(props.index, props.index + 1)
141
+ }), props.hasRemove && React__default.createElement(ChakraIconButton, {
142
+ icon: "remove",
143
+ tabIndex: -1,
144
+ disabled: props.disabled || props.readonly,
145
+ onClick: props.onDropIndexClick(props.index)
146
+ }))));
147
+ };
148
+
149
+ var DefaultFixedArrayFieldTemplate = function DefaultFixedArrayFieldTemplate(props) {
150
+ return React__default.createElement("fieldset", {
151
+ className: props.className
152
+ }, React__default.createElement(ArrayFieldTitle, {
153
+ key: "array-field-title-" + props.idSchema.$id,
154
+ TitleField: props.TitleField,
155
+ idSchema: props.idSchema,
156
+ title: props.uiSchema["ui:title"] || props.title,
157
+ required: props.required
158
+ }), (props.uiSchema["ui:description"] || props.schema.description) && // Use DescriptionField if possible
159
+ React__default.createElement("div", {
160
+ className: "field-description",
161
+ key: "field-description-" + props.idSchema.$id
162
+ }, props.uiSchema["ui:description"] || props.schema.description), React__default.createElement("div", {
163
+ className: "row array-item-list",
164
+ key: "array-item-list-" + props.idSchema.$id
165
+ }, props.items && props.items.map(DefaultArrayItem)), props.canAdd && React__default.createElement(AddButton, {
166
+ justifySelf: "flex-end",
167
+ className: "array-item-add",
168
+ onClick: props.onAddClick,
169
+ disabled: props.disabled || props.readonly
170
+ }));
171
+ };
172
+
173
+ var DefaultNormalArrayFieldTemplate = function DefaultNormalArrayFieldTemplate(props) {
174
+ return React__default.createElement(Box, null, React__default.createElement(ArrayFieldTitle, {
175
+ key: "array-field-title-" + props.idSchema.$id,
176
+ TitleField: props.TitleField,
177
+ idSchema: props.idSchema,
178
+ title: props.uiSchema["ui:title"] || props.title,
179
+ required: props.required
180
+ }), (props.uiSchema["ui:description"] || props.schema.description) && React__default.createElement(ArrayFieldDescription, {
181
+ key: "array-field-description-" + props.idSchema.$id,
182
+ DescriptionField: props.DescriptionField,
183
+ idSchema: props.idSchema,
184
+ description: props.uiSchema["ui:description"] || props.schema.description
185
+ }), React__default.createElement(Grid, {
186
+ key: "array-item-list-" + props.idSchema.$id
187
+ }, React__default.createElement(GridItem, null, props.items.length > 0 && props.items.map(function (p) {
188
+ return DefaultArrayItem(p);
189
+ })), props.canAdd && React__default.createElement(GridItem, {
190
+ justifySelf: "flex-end"
191
+ }, React__default.createElement(Box, {
192
+ mt: 2
193
+ }, React__default.createElement(AddButton, {
194
+ className: "array-item-add",
195
+ onClick: props.onAddClick,
196
+ disabled: props.disabled || props.readonly
197
+ })))));
198
+ };
199
+
200
+ var ErrorList = function ErrorList(_ref) {
201
+ var errors = _ref.errors;
202
+ return React__default.createElement(Alert, {
203
+ flexDirection: "column",
204
+ alignItems: "flex-start",
205
+ gap: 3,
206
+ status: "error"
207
+ }, React__default.createElement(AlertTitle, null, "Errors"), React__default.createElement(List, null, errors.map(function (error, i) {
208
+ return React__default.createElement(ListItem, {
209
+ key: i
210
+ }, React__default.createElement(ListIcon, {
211
+ as: WarningIcon,
212
+ color: "red.500"
213
+ }), error.stack);
214
+ })));
215
+ };
216
+
217
+ var TitleField = function TitleField(_ref) {
218
+ var title = _ref.title;
219
+ return React__default.createElement(Box, {
220
+ mt: 1,
221
+ mb: 4
222
+ }, React__default.createElement(Heading, {
223
+ as: "h5"
224
+ }, title), React__default.createElement(Divider, null));
225
+ };
226
+
227
+ var DescriptionField = function DescriptionField(_ref) {
228
+ var description = _ref.description,
229
+ id = _ref.id;
230
+ if (!description) return null;
231
+
232
+ if (typeof description === "string") {
233
+ return React__default.createElement(Text, {
234
+ id: id,
235
+ mt: 2,
236
+ mb: 4
237
+ }, description);
238
+ }
239
+
240
+ return React__default.createElement(React__default.Fragment, null, description);
241
+ };
242
+
243
+ var Fields = {
244
+ TitleField: TitleField,
245
+ DescriptionField: DescriptionField
246
+ };
247
+
248
+ var ADDITIONAL_PROPERTY_FLAG = utils.ADDITIONAL_PROPERTY_FLAG;
249
+
250
+ var WrapIfAdditional = function WrapIfAdditional(props) {
251
+ var children = props.children,
252
+ disabled = props.disabled,
253
+ id = props.id,
254
+ label = props.label,
255
+ onDropPropertyClick = props.onDropPropertyClick,
256
+ onKeyChange = props.onKeyChange,
257
+ readonly = props.readonly,
258
+ required = props.required,
259
+ schema = props.schema;
260
+ var additional = schema.hasOwnProperty(ADDITIONAL_PROPERTY_FLAG);
261
+
262
+ if (!additional) {
263
+ return createElement(Fragment, null, children);
264
+ }
265
+
266
+ var keyLabel = label + " Key";
267
+
268
+ var handleBlur = function handleBlur(_ref) {
269
+ var target = _ref.target;
270
+ return onKeyChange(target.value);
271
+ };
272
+
273
+ return createElement(Grid, {
274
+ key: id + "-key",
275
+ alignItems: "center",
276
+ gap: 2
277
+ }, createElement(GridItem, null, createElement(FormControl, {
278
+ isRequired: required
279
+ }, createElement(FormLabel, {
280
+ htmlFor: id + "-key"
281
+ }, keyLabel), createElement(Input, {
282
+ defaultValue: label,
283
+ disabled: disabled || readonly,
284
+ id: id + "-key",
285
+ name: id + "-key",
286
+ onBlur: !readonly ? handleBlur : undefined,
287
+ type: "text",
288
+ mb: 1
289
+ }))), createElement(GridItem, null, children), createElement(GridItem, null, createElement(ChakraIconButton, {
290
+ icon: "remove",
291
+ tabIndex: -1,
292
+ disabled: disabled || readonly,
293
+ onClick: onDropPropertyClick(label)
294
+ })));
295
+ };
296
+
297
+ var FieldTemplate = function FieldTemplate(props) {
298
+ var id = props.id,
299
+ children = props.children,
300
+ classNames = props.classNames,
301
+ disabled = props.disabled,
302
+ displayLabel = props.displayLabel,
303
+ hidden = props.hidden,
304
+ label = props.label,
305
+ onDropPropertyClick = props.onDropPropertyClick,
306
+ onKeyChange = props.onKeyChange,
307
+ readonly = props.readonly,
308
+ required = props.required,
309
+ _props$rawErrors = props.rawErrors,
310
+ rawErrors = _props$rawErrors === void 0 ? [] : _props$rawErrors,
311
+ rawHelp = props.rawHelp,
312
+ rawDescription = props.rawDescription,
313
+ schema = props.schema;
314
+
315
+ if (hidden) {
316
+ return React__default.createElement(React__default.Fragment, null, children);
317
+ }
318
+
319
+ return React__default.createElement(WrapIfAdditional, {
320
+ classNames: classNames,
321
+ disabled: disabled,
322
+ id: id,
323
+ label: label,
324
+ onDropPropertyClick: onDropPropertyClick,
325
+ onKeyChange: onKeyChange,
326
+ readonly: readonly,
327
+ required: required,
328
+ schema: schema
329
+ }, React__default.createElement(FormControl, {
330
+ isRequired: required,
331
+ isInvalid: rawErrors && rawErrors.length > 0
332
+ }, children, displayLabel && rawDescription ? React__default.createElement(Text, {
333
+ mt: 2
334
+ }, rawDescription) : null, rawErrors && rawErrors.length > 0 && React__default.createElement(List, null, rawErrors.map(function (error, i) {
335
+ return React__default.createElement(ListItem, {
336
+ key: i
337
+ }, React__default.createElement(FormErrorMessage, {
338
+ id: id
339
+ }, error));
340
+ })), rawHelp && React__default.createElement(FormHelperText, {
341
+ id: id
342
+ }, rawHelp)));
343
+ };
344
+
345
+ var canExpand = utils.canExpand;
346
+
347
+ var ObjectFieldTemplate = function ObjectFieldTemplate(props) {
348
+ var DescriptionField = props.DescriptionField,
349
+ description = props.description,
350
+ TitleField = props.TitleField,
351
+ title = props.title,
352
+ properties = props.properties,
353
+ required = props.required,
354
+ disabled = props.disabled,
355
+ readonly = props.readonly,
356
+ uiSchema = props.uiSchema,
357
+ idSchema = props.idSchema,
358
+ schema = props.schema,
359
+ formData = props.formData,
360
+ onAddClick = props.onAddClick;
361
+ return createElement(Fragment, null, (uiSchema["ui:title"] || title) && createElement(TitleField, {
362
+ id: idSchema.$id + "-title",
363
+ title: title,
364
+ required: required
365
+ }), description && createElement(DescriptionField, {
366
+ id: idSchema.$id + "-description",
367
+ description: description
368
+ }), createElement(Grid, {
369
+ gap: description ? 2 : 6,
370
+ mb: 4
371
+ }, properties.map(function (element, index) {
372
+ return element.hidden ? element.content : createElement(GridItem, {
373
+ key: idSchema.$id + "-" + element.name + "-" + index
374
+ }, element.content);
375
+ }), canExpand(schema, uiSchema, formData) && createElement(GridItem, {
376
+ justifySelf: "flex-end"
377
+ }, createElement(AddButton, {
378
+ className: "object-property-expand",
379
+ onClick: onAddClick(schema),
380
+ disabled: disabled || readonly
381
+ }))));
382
+ };
383
+
384
+ var pad = utils.pad,
385
+ parseDateString = utils.parseDateString,
386
+ toDateString = utils.toDateString;
387
+
388
+ var rangeOptions = function rangeOptions(start, stop) {
389
+ var options = [];
390
+
391
+ for (var i = start; i <= stop; i++) {
392
+ options.push({
393
+ value: i,
394
+ label: pad(i, 2)
395
+ });
396
+ }
397
+
398
+ return options;
399
+ };
400
+
401
+ var readyForChange = function readyForChange(state) {
402
+ return Object.keys(state).every(function (key) {
403
+ return typeof state[key] !== "undefined" && state[key] !== -1;
404
+ });
405
+ };
406
+
407
+ var AltDateWidget = function AltDateWidget(props) {
408
+ var autofocus = props.autofocus,
409
+ disabled = props.disabled,
410
+ id = props.id,
411
+ onBlur = props.onBlur,
412
+ onChange = props.onChange,
413
+ onFocus = props.onFocus,
414
+ options = props.options,
415
+ readonly = props.readonly,
416
+ registry = props.registry,
417
+ showTime = props.showTime,
418
+ value = props.value;
419
+ var SelectWidget = registry.widgets.SelectWidget;
420
+
421
+ var _useState = useState(parseDateString(value, showTime)),
422
+ state = _useState[0],
423
+ setState = _useState[1];
424
+
425
+ useEffect(function () {
426
+ setState(parseDateString(value, showTime));
427
+ }, [showTime, value]);
428
+
429
+ var handleChange = function handleChange(property, nextValue) {
430
+ var _extends2;
431
+
432
+ var nextState = _extends({}, state, (_extends2 = {}, _extends2[property] = typeof nextValue === "undefined" ? -1 : nextValue, _extends2));
433
+
434
+ if (readyForChange(nextState)) {
435
+ onChange(toDateString(nextState, showTime));
436
+ } else {
437
+ setState(nextState);
438
+ }
439
+ };
440
+
441
+ var handleNow = function handleNow(event) {
442
+ event.preventDefault();
443
+
444
+ if (disabled || readonly) {
445
+ return;
446
+ }
447
+
448
+ var nextState = parseDateString(new Date().toJSON(), showTime);
449
+ onChange(toDateString(nextState, showTime));
450
+ };
451
+
452
+ var handleClear = function handleClear(event) {
453
+ event.preventDefault();
454
+
455
+ if (disabled || readonly) {
456
+ return;
457
+ }
458
+
459
+ onChange(undefined);
460
+ };
461
+
462
+ var dateElementProps = function dateElementProps() {
463
+ var year = state.year,
464
+ month = state.month,
465
+ day = state.day,
466
+ hour = state.hour,
467
+ minute = state.minute,
468
+ second = state.second;
469
+ var data = [{
470
+ type: "year",
471
+ range: options.yearsRange,
472
+ value: year
473
+ }, {
474
+ type: "month",
475
+ range: [1, 12],
476
+ value: month
477
+ }, {
478
+ type: "day",
479
+ range: [1, 31],
480
+ value: day
481
+ }];
482
+
483
+ if (showTime) {
484
+ data.push({
485
+ type: "hour",
486
+ range: [0, 23],
487
+ value: hour
488
+ }, {
489
+ type: "minute",
490
+ range: [0, 59],
491
+ value: minute
492
+ }, {
493
+ type: "second",
494
+ range: [0, 59],
495
+ value: second
496
+ });
497
+ }
498
+
499
+ return data;
500
+ };
501
+
502
+ var renderDateElement = function renderDateElement(elemProps) {
503
+ var value = Boolean(elemProps.value) ? elemProps.value : undefined;
504
+ return React__default.createElement(SelectWidget, Object.assign({}, elemProps, {
505
+ label: undefined,
506
+ className: "form-control",
507
+ onChange: function onChange(elemValue) {
508
+ return elemProps.select(elemProps.type, elemValue);
509
+ },
510
+ options: {
511
+ enumOptions: rangeOptions(elemProps.range[0], elemProps.range[1])
512
+ },
513
+ placeholder: elemProps.type,
514
+ schema: {
515
+ type: "integer"
516
+ },
517
+ value: value
518
+ }));
519
+ };
520
+
521
+ return React__default.createElement(Box, null, React__default.createElement(Box, {
522
+ display: "flex",
523
+ flexWrap: "wrap",
524
+ alignItems: "center",
525
+ justify: "center"
526
+ }, dateElementProps().map(function (elemProps, i) {
527
+ var elemId = id + "_" + elemProps.type;
528
+ return React__default.createElement(Box, {
529
+ key: elemId,
530
+ mr: "2",
531
+ mb: "2"
532
+ }, renderDateElement(_extends({}, props, elemProps, {
533
+ autofocus: autofocus && i === 0,
534
+ disabled: disabled,
535
+ id: elemId,
536
+ onBlur: onBlur,
537
+ onFocus: onFocus,
538
+ readonly: readonly,
539
+ registry: registry,
540
+ select: handleChange,
541
+ value: elemProps.value < 0 ? "" : elemProps.value
542
+ })));
543
+ })), React__default.createElement(Box, {
544
+ display: "flex"
545
+ }, !options.hideNowButton && React__default.createElement(Button, {
546
+ onClick: function onClick(e) {
547
+ return handleNow(e);
548
+ },
549
+ mr: "2"
550
+ }, "Now"), !options.hideClearButton && React__default.createElement(Button, {
551
+ onClick: function onClick(e) {
552
+ return handleClear(e);
553
+ }
554
+ }, "Clear")));
555
+ };
556
+
557
+ AltDateWidget.defaultProps = {
558
+ autofocus: false,
559
+ disabled: false,
560
+ readonly: false,
561
+ showTime: false,
562
+ options: {
563
+ yearsRange: [1900, /*#__PURE__*/new Date().getFullYear() + 2]
564
+ }
565
+ };
566
+
567
+ var AltDateTimeWidget = function AltDateTimeWidget(props) {
568
+ var AltDateWidget = props.registry.widgets.AltDateWidget;
569
+ return React__default.createElement(AltDateWidget, Object.assign({}, props, {
570
+ showTime: true
571
+ }));
572
+ };
573
+
574
+ AltDateTimeWidget.defaultProps = /*#__PURE__*/_extends({}, AltDateWidget.defaultProps, {
575
+ showTime: true
576
+ });
577
+
578
+ function getChakra(_ref) {
579
+ var _ref$uiSchema = _ref.uiSchema,
580
+ uiSchema = _ref$uiSchema === void 0 ? {} : _ref$uiSchema;
581
+ var chakraProps = uiSchema["ui:options"] && uiSchema["ui:options"].chakra || {};
582
+ Object.keys(chakraProps).forEach(function (key) {
583
+ /**
584
+ * Leveraging `shouldForwardProp` to remove props
585
+ *
586
+ * This is a utility function that's used in `@chakra-ui/react`'s factory function.
587
+ * Normally, it prevents ChakraProps from being passed to the DOM.
588
+ * In this case we just want to delete the unknown props. So we flip the boolean.
589
+ */
590
+ if (shouldForwardProp(key)) {
591
+ // @ts-ignore - How to type this?!... 😬
592
+ delete chakraProps[key];
593
+ }
594
+ });
595
+ return chakraProps;
596
+ }
597
+
598
+ var CheckboxWidget = function CheckboxWidget(props) {
599
+ var id = props.id,
600
+ value = props.value,
601
+ disabled = props.disabled,
602
+ readonly = props.readonly,
603
+ onChange = props.onChange,
604
+ onBlur = props.onBlur,
605
+ onFocus = props.onFocus,
606
+ required = props.required,
607
+ label = props.label,
608
+ uiSchema = props.uiSchema;
609
+ var chakraProps = getChakra({
610
+ uiSchema: uiSchema
611
+ });
612
+
613
+ var _onChange = function _onChange(_ref) {
614
+ var checked = _ref.target.checked;
615
+ return onChange(checked);
616
+ };
617
+
618
+ var _onBlur = function _onBlur(_ref2) {
619
+ var value = _ref2.target.value;
620
+ return onBlur(id, value);
621
+ };
622
+
623
+ var _onFocus = function _onFocus(_ref3) {
624
+ var value = _ref3.target.value;
625
+ return onFocus(id, value);
626
+ };
627
+
628
+ return React__default.createElement(FormControl, Object.assign({
629
+ mb: 1
630
+ }, chakraProps, {
631
+ isRequired: required
632
+ }), React__default.createElement(Checkbox, {
633
+ id: id,
634
+ name: id,
635
+ isChecked: typeof value === "undefined" ? false : value,
636
+ isDisabled: disabled || readonly,
637
+ onChange: _onChange,
638
+ onBlur: _onBlur,
639
+ onFocus: _onFocus
640
+ }, label && React__default.createElement(Text, null, label)));
641
+ };
642
+
643
+ // const at = all.indexOf(value);
644
+ // const updated = selected.slice(0, at).concat(value, selected.slice(at));
645
+ // // As inserting values at predefined index positions doesn't work with empty
646
+ // // arrays, we need to reorder the updated selection to match the initial order
647
+ // return updated.sort((a, b) => all.indexOf(a) > all.indexOf(b));
648
+ // };
649
+ // const deselectValue = (value, selected) => {
650
+ // return selected.filter((v) => v !== value);
651
+ // };
652
+
653
+ var CheckboxesWidget = function CheckboxesWidget(props) {
654
+ var id = props.id,
655
+ disabled = props.disabled,
656
+ options = props.options,
657
+ value = props.value,
658
+ readonly = props.readonly,
659
+ _onChange = props.onChange,
660
+ onBlur = props.onBlur,
661
+ onFocus = props.onFocus,
662
+ required = props.required,
663
+ label = props.label,
664
+ uiSchema = props.uiSchema,
665
+ _props$rawErrors = props.rawErrors,
666
+ rawErrors = _props$rawErrors === void 0 ? [] : _props$rawErrors,
667
+ schema = props.schema;
668
+ var enumOptions = options.enumOptions,
669
+ enumDisabled = options.enumDisabled;
670
+ var chakraProps = getChakra({
671
+ uiSchema: uiSchema
672
+ }); // const _onChange = option => ({ target: { checked } }) => {
673
+ // const all = enumOptions.map(({ value }) => value)
674
+ // if (checked) {
675
+ // onChange(selectValue(option.value, value, all))
676
+ // } else {
677
+ // onChange(deselectValue(option.value, value))
678
+ // }
679
+ // }
680
+
681
+ var _onBlur = function _onBlur(_ref) {
682
+ var value = _ref.target.value;
683
+ return onBlur(id, value);
684
+ };
685
+
686
+ var _onFocus = function _onFocus(_ref2) {
687
+ var value = _ref2.target.value;
688
+ return onFocus(id, value);
689
+ };
690
+
691
+ var row = options ? options.inline : false;
692
+ return React__default.createElement(FormControl, Object.assign({
693
+ mb: 1
694
+ }, chakraProps, {
695
+ isDisabled: disabled || readonly,
696
+ isRequired: required,
697
+ isReadOnly: readonly,
698
+ isInvalid: rawErrors && rawErrors.length > 0
699
+ }), React__default.createElement(FormLabel, {
700
+ htmlFor: id
701
+ }, label || schema.title), React__default.createElement(CheckboxGroup, {
702
+ onChange: function onChange(option) {
703
+ return _onChange(option);
704
+ },
705
+ defaultValue: value
706
+ }, React__default.createElement(Stack, {
707
+ direction: row ? "row" : "column"
708
+ }, enumOptions.map(function (option, index) {
709
+ var checked = value.indexOf(option.value) !== -1;
710
+ var itemDisabled = enumDisabled && enumDisabled.indexOf(option.value) !== -1;
711
+ return React__default.createElement(Checkbox, {
712
+ key: id + "_" + index,
713
+ id: id + "_" + index,
714
+ value: option.value,
715
+ isChecked: checked,
716
+ isDisabled: disabled || itemDisabled || readonly,
717
+ onBlur: _onBlur,
718
+ onFocus: _onFocus
719
+ }, option.label && React__default.createElement(Text, null, option.label));
720
+ }))));
721
+ };
722
+
723
+ var ColorWidget = function ColorWidget(props) {
724
+ var registry = props.registry;
725
+ var TextWidget = registry.widgets.TextWidget;
726
+ return React__default.createElement(TextWidget, Object.assign({
727
+ type: "color"
728
+ }, props));
729
+ };
730
+
731
+ var DateWidget = function DateWidget(props) {
732
+ var registry = props.registry;
733
+ var TextWidget = registry.widgets.TextWidget;
734
+ return React__default.createElement(TextWidget, Object.assign({}, props, {
735
+ type: "date"
736
+ }));
737
+ };
738
+
739
+ var localToUTC = utils.localToUTC,
740
+ utcToLocal = utils.utcToLocal;
741
+
742
+ var DateTimeWidget = function DateTimeWidget(props) {
743
+ var registry = props.registry;
744
+ var TextWidget = registry.widgets.TextWidget;
745
+ var value = utcToLocal(props.value);
746
+
747
+ var onChange = function onChange(value) {
748
+ props.onChange(localToUTC(value));
749
+ };
750
+
751
+ return React__default.createElement(TextWidget, Object.assign({
752
+ type: "datetime-local"
753
+ }, props, {
754
+ value: value,
755
+ onChange: onChange
756
+ }));
757
+ };
758
+
759
+ var EmailWidget = function EmailWidget(props) {
760
+ var registry = props.registry;
761
+ var TextWidget = registry.widgets.TextWidget;
762
+ return React__default.createElement(TextWidget, Object.assign({}, props, {
763
+ type: "email"
764
+ }));
765
+ };
766
+
767
+ var PasswordWidget = function PasswordWidget(props) {
768
+ var registry = props.registry;
769
+ var TextWidget = registry.widgets.TextWidget;
770
+ return React__default.createElement(TextWidget, Object.assign({
771
+ type: "password"
772
+ }, props));
773
+ };
774
+
775
+ var RadioWidget = function RadioWidget(_ref) {
776
+ var id = _ref.id,
777
+ schema = _ref.schema,
778
+ options = _ref.options,
779
+ value = _ref.value,
780
+ required = _ref.required,
781
+ disabled = _ref.disabled,
782
+ readonly = _ref.readonly,
783
+ label = _ref.label,
784
+ onChange = _ref.onChange,
785
+ onBlur = _ref.onBlur,
786
+ onFocus = _ref.onFocus,
787
+ uiSchema = _ref.uiSchema;
788
+ var enumOptions = options.enumOptions,
789
+ enumDisabled = options.enumDisabled;
790
+ var chakraProps = getChakra({
791
+ uiSchema: uiSchema
792
+ });
793
+
794
+ var _onBlur = function _onBlur(_ref2) {
795
+ var value = _ref2.target.value;
796
+ return onBlur(id, value);
797
+ };
798
+
799
+ var _onFocus = function _onFocus(_ref3) {
800
+ var value = _ref3.target.value;
801
+ return onFocus(id, value);
802
+ };
803
+
804
+ var row = options ? options.inline : false;
805
+ return React__default.createElement(FormControl, Object.assign({
806
+ mb: 1
807
+ }, chakraProps, {
808
+ isDisabled: disabled || readonly,
809
+ isRequired: required,
810
+ isReadOnly: readonly
811
+ }), React__default.createElement(FormLabel, {
812
+ htmlFor: id
813
+ }, label || schema.title), React__default.createElement(RadioGroup, {
814
+ onChange: onChange,
815
+ onBlur: _onBlur,
816
+ onFocus: _onFocus,
817
+ value: "" + value,
818
+ name: id
819
+ }, React__default.createElement(Stack, {
820
+ direction: row ? "row" : "column"
821
+ }, enumOptions.map(function (option, i) {
822
+ var itemDisabled = Boolean(enumDisabled && enumDisabled.indexOf(option.value) != -1);
823
+ return React__default.createElement(Radio, {
824
+ value: "" + option.value,
825
+ key: i,
826
+ disabled: disabled || itemDisabled || readonly
827
+ }, "" + option.label);
828
+ }))));
829
+ };
830
+
831
+ var rangeSpec = utils.rangeSpec,
832
+ getDisplayLabel = utils.getDisplayLabel;
833
+
834
+ var RangeWidget = function RangeWidget(_ref) {
835
+ var value = _ref.value,
836
+ readonly = _ref.readonly,
837
+ disabled = _ref.disabled,
838
+ onBlur = _ref.onBlur,
839
+ onFocus = _ref.onFocus,
840
+ options = _ref.options,
841
+ schema = _ref.schema,
842
+ uiSchema = _ref.uiSchema,
843
+ onChange = _ref.onChange,
844
+ label = _ref.label,
845
+ id = _ref.id;
846
+ var chakraProps = getChakra({
847
+ uiSchema: uiSchema
848
+ });
849
+
850
+ var sliderWidgetProps = _extends({
851
+ value: value,
852
+ label: label,
853
+ id: id
854
+ }, rangeSpec(schema));
855
+
856
+ var displayLabel = getDisplayLabel(schema, uiSchema) && (!!label || !!schema.title);
857
+
858
+ var _onChange = function _onChange(value) {
859
+ return onChange(value === undefined ? options.emptyValue : value);
860
+ };
861
+
862
+ var _onBlur = function _onBlur(_ref2) {
863
+ var value = _ref2.target.value;
864
+ return onBlur(id, value);
865
+ };
866
+
867
+ var _onFocus = function _onFocus(_ref3) {
868
+ var value = _ref3.target.value;
869
+ return onFocus(id, value);
870
+ };
871
+
872
+ return React__default.createElement(FormControl, Object.assign({
873
+ mb: 1
874
+ }, chakraProps), displayLabel ? React__default.createElement(FormLabel, {
875
+ htmlFor: id
876
+ }, label || schema.title) : null, React__default.createElement(Slider, Object.assign({}, sliderWidgetProps, {
877
+ id: id,
878
+ name: id,
879
+ isDisabled: disabled || readonly,
880
+ onChange: _onChange,
881
+ onBlur: _onBlur,
882
+ onFocus: _onFocus
883
+ }), React__default.createElement(SliderTrack, null, React__default.createElement(SliderFilledTrack, null)), React__default.createElement(SliderThumb, null)));
884
+ };
885
+
886
+ var asNumber = utils.asNumber,
887
+ guessType = utils.guessType;
888
+ var nums = /*#__PURE__*/new Set(["number", "integer"]);
889
+ /**
890
+ * This is a silly limitation in the DOM where option change event values are
891
+ * always retrieved as strings.
892
+ */
893
+
894
+ var processValue = function processValue(schema, value) {
895
+ // "enum" is a reserved word, so only "type" and "items" can be destructured
896
+ var type = schema.type,
897
+ items = schema.items;
898
+
899
+ if (value === "") {
900
+ return undefined;
901
+ } else if (type === "array" && items && nums.has(items.type)) {
902
+ return value.map(asNumber);
903
+ } else if (type === "boolean") {
904
+ return value === "true";
905
+ } else if (type === "number") {
906
+ return asNumber(value);
907
+ } // If type is undefined, but an enum is present, try and infer the type from
908
+ // the enum values
909
+
910
+
911
+ if (schema["enum"]) {
912
+ if (schema["enum"].every(function (x) {
913
+ return guessType(x) === "number";
914
+ })) {
915
+ return asNumber(value);
916
+ } else if (schema["enum"].every(function (x) {
917
+ return guessType(x) === "boolean";
918
+ })) {
919
+ return value === "true";
920
+ }
921
+ }
922
+
923
+ return value;
924
+ };
925
+
926
+ var SelectWidget = function SelectWidget(props) {
927
+ var schema = props.schema,
928
+ id = props.id,
929
+ options = props.options,
930
+ label = props.label,
931
+ placeholder = props.placeholder,
932
+ multiple = props.multiple,
933
+ required = props.required,
934
+ disabled = props.disabled,
935
+ readonly = props.readonly,
936
+ value = props.value,
937
+ autofocus = props.autofocus,
938
+ onChange = props.onChange,
939
+ onBlur = props.onBlur,
940
+ onFocus = props.onFocus,
941
+ _props$rawErrors = props.rawErrors,
942
+ rawErrors = _props$rawErrors === void 0 ? [] : _props$rawErrors,
943
+ uiSchema = props.uiSchema;
944
+ var enumOptions = options.enumOptions,
945
+ enumDisabled = options.enumDisabled;
946
+ var chakraProps = getChakra({
947
+ uiSchema: uiSchema
948
+ }); // TODO: Default emptyValue should be string when multi select is implemented
949
+ // const emptyValue = multiple ? [] : "";
950
+
951
+ var emptyValue = "";
952
+
953
+ var _onMultiChange = function _onMultiChange(e) {
954
+ return onChange(processValue(schema, e.map(function (v) {
955
+ return v.value;
956
+ })));
957
+ };
958
+
959
+ var _onChange = function _onChange(_ref) {
960
+ var value = _ref.target.value;
961
+ return onChange(processValue(schema, value));
962
+ };
963
+
964
+ var _onBlur = function _onBlur(_ref2) {
965
+ var value = _ref2.target.value;
966
+ return onBlur(id, processValue(schema, value));
967
+ };
968
+
969
+ var _onFocus = function _onFocus(_ref3) {
970
+ var value = _ref3.target.value;
971
+ return onFocus(id, processValue(schema, value));
972
+ };
973
+
974
+ return React__default.createElement(FormControl, Object.assign({
975
+ mb: 1
976
+ }, chakraProps, {
977
+ isDisabled: disabled || readonly,
978
+ isRequired: required,
979
+ isReadOnly: readonly,
980
+ isInvalid: rawErrors && rawErrors.length > 0
981
+ }), (label || schema.title) && React__default.createElement(FormLabel, {
982
+ htmlFor: typeof multiple !== "undefined" && enumOptions ? undefined : id
983
+ }, label || schema.title), typeof multiple !== "undefined" && enumOptions ? React__default.createElement(Select, {
984
+ inputId: id,
985
+ name: id,
986
+ isMulti: true,
987
+ options: enumOptions,
988
+ placeholder: placeholder,
989
+ closeMenuOnSelect: false,
990
+ onChange: _onMultiChange,
991
+ value: value.map(function (v) {
992
+ return {
993
+ label: v,
994
+ value: v
995
+ };
996
+ })
997
+ }) : React__default.createElement(Select$1, {
998
+ id: id,
999
+ name: id,
1000
+ placeholder: placeholder !== "" ? placeholder : " ",
1001
+ value: typeof value === "undefined" ? emptyValue : value.toString(),
1002
+ autoFocus: autofocus,
1003
+ onBlur: _onBlur,
1004
+ onChange: _onChange,
1005
+ onFocus: _onFocus
1006
+ }, enumOptions.map(function (_ref4, i) {
1007
+ var value = _ref4.value,
1008
+ label = _ref4.label;
1009
+ var disabled = enumDisabled && enumDisabled.indexOf(value) != -1;
1010
+ return React__default.createElement("option", {
1011
+ key: i,
1012
+ value: value,
1013
+ disabled: disabled
1014
+ }, label);
1015
+ })));
1016
+ };
1017
+
1018
+ var getDisplayLabel$1 = utils.getDisplayLabel;
1019
+
1020
+ var TextareaWidget = function TextareaWidget(_ref) {
1021
+ var id = _ref.id,
1022
+ placeholder = _ref.placeholder,
1023
+ value = _ref.value,
1024
+ label = _ref.label,
1025
+ disabled = _ref.disabled,
1026
+ autofocus = _ref.autofocus,
1027
+ readonly = _ref.readonly,
1028
+ onBlur = _ref.onBlur,
1029
+ onFocus = _ref.onFocus,
1030
+ onChange = _ref.onChange,
1031
+ options = _ref.options,
1032
+ schema = _ref.schema,
1033
+ uiSchema = _ref.uiSchema,
1034
+ required = _ref.required,
1035
+ rawErrors = _ref.rawErrors;
1036
+ var chakraProps = getChakra({
1037
+ uiSchema: uiSchema
1038
+ });
1039
+ var displayLabel = getDisplayLabel$1(schema, uiSchema) && (!!label || !!schema.title);
1040
+
1041
+ var _onChange = function _onChange(_ref2) {
1042
+ var value = _ref2.target.value;
1043
+ return onChange(value === "" ? options.emptyValue : value);
1044
+ };
1045
+
1046
+ var _onBlur = function _onBlur(_ref3) {
1047
+ var value = _ref3.target.value;
1048
+ return onBlur(id, value);
1049
+ };
1050
+
1051
+ var _onFocus = function _onFocus(_ref4) {
1052
+ var value = _ref4.target.value;
1053
+ return onFocus(id, value);
1054
+ };
1055
+
1056
+ return React__default.createElement(FormControl, Object.assign({
1057
+ mb: 1
1058
+ }, chakraProps, {
1059
+ isDisabled: disabled || readonly,
1060
+ isRequired: required,
1061
+ isReadOnly: readonly,
1062
+ isInvalid: rawErrors && rawErrors.length > 0
1063
+ }), displayLabel ? React__default.createElement(FormLabel, {
1064
+ htmlFor: id
1065
+ }, label || schema.title) : null, React__default.createElement(Textarea, {
1066
+ id: id,
1067
+ name: id,
1068
+ value: value != null ? value : "",
1069
+ placeholder: placeholder,
1070
+ autoFocus: autofocus,
1071
+ onChange: _onChange,
1072
+ onBlur: _onBlur,
1073
+ onFocus: _onFocus
1074
+ }));
1075
+ };
1076
+
1077
+ var getDisplayLabel$2 = utils.getDisplayLabel;
1078
+
1079
+ var TextWidget = function TextWidget(props) {
1080
+ var id = props.id,
1081
+ type = props.type,
1082
+ value = props.value,
1083
+ label = props.label,
1084
+ schema = props.schema,
1085
+ uiSchema = props.uiSchema,
1086
+ onChange = props.onChange,
1087
+ onBlur = props.onBlur,
1088
+ onFocus = props.onFocus,
1089
+ options = props.options,
1090
+ required = props.required,
1091
+ readonly = props.readonly,
1092
+ rawErrors = props.rawErrors,
1093
+ autofocus = props.autofocus,
1094
+ placeholder = props.placeholder,
1095
+ disabled = props.disabled;
1096
+ var chakraProps = getChakra({
1097
+ uiSchema: uiSchema
1098
+ });
1099
+
1100
+ var _onChange = function _onChange(_ref) {
1101
+ var value = _ref.target.value;
1102
+ return onChange(value === "" ? options.emptyValue : value);
1103
+ };
1104
+
1105
+ var _onBlur = function _onBlur(_ref2) {
1106
+ var value = _ref2.target.value;
1107
+ return onBlur(id, value);
1108
+ };
1109
+
1110
+ var _onFocus = function _onFocus(_ref3) {
1111
+ var value = _ref3.target.value;
1112
+ return onFocus(id, value);
1113
+ };
1114
+
1115
+ var displayLabel = getDisplayLabel$2(schema, uiSchema) && (!!label || !!schema.title);
1116
+ var inputType = (type || schema.type) === "string" ? "text" : "" + (type || schema.type);
1117
+ return createElement(FormControl, Object.assign({
1118
+ mb: 1
1119
+ }, chakraProps, {
1120
+ isDisabled: disabled || readonly,
1121
+ isRequired: required,
1122
+ isReadOnly: readonly,
1123
+ isInvalid: rawErrors && rawErrors.length > 0
1124
+ }), displayLabel ? createElement(FormLabel, {
1125
+ htmlFor: id,
1126
+ id: id + "-label"
1127
+ }, label || schema.title) : null, createElement(Input, {
1128
+ id: id,
1129
+ name: id,
1130
+ value: value || value === 0 ? value : "",
1131
+ onChange: _onChange,
1132
+ onBlur: _onBlur,
1133
+ onFocus: _onFocus,
1134
+ autoFocus: autofocus,
1135
+ placeholder: placeholder,
1136
+ type: inputType,
1137
+ list: schema.examples ? "examples_" + id : undefined
1138
+ }), schema.examples ? createElement("datalist", {
1139
+ id: "examples_" + id
1140
+ }, schema.examples.concat(schema["default"] ? [schema["default"]] : []).map(function (example) {
1141
+ return createElement("option", {
1142
+ key: example,
1143
+ value: example
1144
+ });
1145
+ })) : null);
1146
+ };
1147
+
1148
+ var getDisplayLabel$3 = utils.getDisplayLabel;
1149
+
1150
+ var UpDownWidget = function UpDownWidget(props) {
1151
+ var id = props.id,
1152
+ schema = props.schema,
1153
+ uiSchema = props.uiSchema,
1154
+ readonly = props.readonly,
1155
+ disabled = props.disabled,
1156
+ label = props.label,
1157
+ value = props.value,
1158
+ onChange = props.onChange,
1159
+ onBlur = props.onBlur,
1160
+ onFocus = props.onFocus,
1161
+ rawErrors = props.rawErrors,
1162
+ required = props.required;
1163
+ var displayLabel = getDisplayLabel$3(schema, uiSchema) && (!!label || !!schema.title);
1164
+ var chakraProps = getChakra({
1165
+ uiSchema: uiSchema
1166
+ });
1167
+
1168
+ var _onChange = function _onChange(value) {
1169
+ return onChange(value);
1170
+ };
1171
+
1172
+ var _onBlur = function _onBlur(_ref) {
1173
+ var value = _ref.target.value;
1174
+ return onBlur(id, value);
1175
+ };
1176
+
1177
+ var _onFocus = function _onFocus(_ref2) {
1178
+ var value = _ref2.target.value;
1179
+ return onFocus(id, value);
1180
+ };
1181
+
1182
+ return React__default.createElement(FormControl, Object.assign({
1183
+ mb: 1
1184
+ }, chakraProps, {
1185
+ isDisabled: disabled || readonly,
1186
+ isRequired: required,
1187
+ isReadOnly: readonly,
1188
+ isInvalid: rawErrors && rawErrors.length > 0
1189
+ }), displayLabel ? React__default.createElement(FormLabel, {
1190
+ htmlFor: id
1191
+ }, label || schema.title) : null, React__default.createElement(NumberInput, {
1192
+ value: value != null ? value : "",
1193
+ onChange: _onChange,
1194
+ onBlur: _onBlur,
1195
+ onFocus: _onFocus
1196
+ }, React__default.createElement(NumberInputField, {
1197
+ id: id,
1198
+ name: id
1199
+ }), React__default.createElement(NumberInputStepper, null, React__default.createElement(NumberIncrementStepper, null), React__default.createElement(NumberDecrementStepper, null))));
1200
+ };
1201
+
1202
+ var URLWidget = function URLWidget(props) {
1203
+ var registry = props.registry;
1204
+ var TextWidget = registry.widgets.TextWidget;
1205
+ return React__default.createElement(TextWidget, Object.assign({
1206
+ type: "url"
1207
+ }, props));
1208
+ };
1209
+
1210
+ var widgets = {
1211
+ AltDateTimeWidget: AltDateTimeWidget,
1212
+ AltDateWidget: AltDateWidget,
1213
+ CheckboxWidget: CheckboxWidget,
1214
+ CheckboxesWidget: CheckboxesWidget,
1215
+ ColorWidget: ColorWidget,
1216
+ DateWidget: DateWidget,
1217
+ DateTimeWidget: DateTimeWidget,
1218
+ EmailWidget: EmailWidget,
1219
+ PasswordWidget: PasswordWidget,
1220
+ RadioWidget: RadioWidget,
1221
+ RangeWidget: RangeWidget,
1222
+ SelectWidget: SelectWidget,
1223
+ TextareaWidget: TextareaWidget,
1224
+ TextWidget: TextWidget,
1225
+ UpDownWidget: UpDownWidget,
1226
+ URLWidget: URLWidget
1227
+ };
1228
+
1229
+ var getDefaultRegistry$1 = utils.getDefaultRegistry;
1230
+
1231
+ var _getDefaultRegistry = /*#__PURE__*/getDefaultRegistry$1(),
1232
+ fields = _getDefaultRegistry.fields,
1233
+ widgets$1 = _getDefaultRegistry.widgets;
1234
+
1235
+ var SubmitButton = function SubmitButton() {
1236
+ return React__default.createElement(Box, {
1237
+ marginTop: 3
1238
+ }, React__default.createElement(Button, {
1239
+ type: "submit",
1240
+ variant: "solid"
1241
+ }, "Submit"));
1242
+ };
1243
+
1244
+ var Theme = {
1245
+ children: /*#__PURE__*/React__default.createElement(SubmitButton, null),
1246
+ ArrayFieldTemplate: ArrayFieldTemplate,
1247
+ FieldTemplate: FieldTemplate,
1248
+ ObjectFieldTemplate: ObjectFieldTemplate,
1249
+ ErrorList: ErrorList,
1250
+ fields: /*#__PURE__*/_extends({}, fields, Fields),
1251
+ widgets: /*#__PURE__*/_extends({}, widgets$1, widgets)
1252
+ };
1253
+
1254
+ var Form = /*#__PURE__*/withTheme(Theme);
1255
+
1256
+ /**
1257
+ *
1258
+ * The reason we need this is for ChakraProvider styling in Playground.
1259
+ * The User Developer would be responsible for styling with ChakraProvider in their app.
1260
+ *
1261
+ * Exact duplicate of `@chakra-ui/react`'s `CSSReset` component. Except for the following:
1262
+ *
1263
+ ```css
1264
+ input {
1265
+ border-width: revert;
1266
+ border-color: revert;
1267
+ border-style: revert;
1268
+ }
1269
+ .array-item > hr {
1270
+ margin-top: 16px;
1271
+ margin-bottom: 16px;
1272
+ }
1273
+ ```
1274
+
1275
+ It is located at the bottom of the styles string.
1276
+ */
1277
+
1278
+ var CSSReset = function CSSReset() {
1279
+ return createElement(Global, {
1280
+ styles: "\n html {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n font-family: system-ui, sans-serif;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n touch-action: manipulation;\n }\n body {\n position: relative;\n min-height: 100%;\n font-feature-settings: 'kern';\n }\n *,\n *::before,\n *::after {\n border-width: 0;\n border-style: solid;\n box-sizing: border-box;\n }\n main {\n display: block;\n }\n hr {\n border-top-width: 1px;\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n }\n pre,\n code,\n kbd,\n samp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 1em;\n }\n a {\n background-color: transparent;\n color: inherit;\n text-decoration: inherit;\n }\n abbr[title] {\n border-bottom: none;\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n b,\n strong {\n font-weight: bold;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n img {\n border-style: none;\n }\n button,\n input,\n optgroup,\n select,\n textarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n }\n button,\n input {\n overflow: visible;\n }\n button,\n select {\n text-transform: none;\n }\n button::-moz-focus-inner,\n [type=\"button\"]::-moz-focus-inner,\n [type=\"reset\"]::-moz-focus-inner,\n [type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n }\n fieldset {\n padding: 0.35em 0.75em 0.625em;\n }\n legend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n }\n progress {\n vertical-align: baseline;\n }\n textarea {\n overflow: auto;\n }\n [type=\"checkbox\"],\n [type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n }\n [type=\"number\"]::-webkit-inner-spin-button,\n [type=\"number\"]::-webkit-outer-spin-button {\n -webkit-appearance: none !important;\n }\n input[type=\"number\"] {\n -moz-appearance: textfield;\n }\n [type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n }\n [type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none !important;\n }\n ::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n }\n details {\n display: block;\n }\n summary {\n display: list-item;\n }\n template {\n display: none;\n }\n [hidden] {\n display: none !important;\n }\n body,\n blockquote,\n dl,\n dd,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n hr,\n figure,\n p,\n pre {\n margin: 0;\n }\n button {\n background: transparent;\n padding: 0;\n }\n fieldset {\n margin: 0;\n padding: 0;\n }\n ol,\n ul {\n margin: 0;\n padding: 0;\n }\n textarea {\n resize: vertical;\n }\n button,\n [role=\"button\"] {\n cursor: pointer;\n }\n button::-moz-focus-inner {\n border: 0 !important;\n }\n table {\n border-collapse: collapse;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n button,\n input,\n optgroup,\n select,\n textarea {\n padding: 0;\n line-height: inherit;\n color: inherit;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n display: block;\n }\n img,\n video {\n max-width: 100%;\n height: auto;\n }\n [data-js-focus-visible] :focus:not([data-focus-visible-added]) {\n outline: none;\n box-shadow: none;\n }\n select::-ms-expand {\n display: none;\n }\n input {\n border-width: revert;\n border-color: revert;\n border-style: revert;\n }\n .array-item > hr {\n margin-top: 16px;\n margin-bottom: 16px;\n }\n "
1281
+ });
1282
+ };
1283
+
1284
+ /**
1285
+ * __createChakraFrameProvider is used to ensure that <Global> emotion components
1286
+ * can be rendered within an iframe without changing the styles of the parent page.
1287
+ * Required for using Chakra UI in the playground.
1288
+ *
1289
+ * We have to define ChakraFrameProvider in this library, as opposed to the playground,
1290
+ * in order to avoid conflicting versions of emotion, which breaks the styling.
1291
+ *
1292
+ * NOTE: This is an internal component only used by @rjsf/playground (no
1293
+ * backwards compatibility guarantees!)
1294
+ *
1295
+ * From: https://codesandbox.io/s/p98y9o7jz0?file=/src/frame-provider.js:0-650
1296
+ * Also see: https://github.com/emotion-js/emotion/issues/760#issuecomment-404353706
1297
+ */
1298
+
1299
+ var memoizedCreateCacheWithContainer = /*#__PURE__*/weakMemoize(function (container) {
1300
+ var newCache = createCache({
1301
+ container: container,
1302
+ key: "rjsf"
1303
+ });
1304
+ return newCache;
1305
+ });
1306
+ var __createChakraFrameProvider = function __createChakraFrameProvider(props) {
1307
+ return function (_ref) {
1308
+ var document = _ref.document;
1309
+ return createElement("div", {
1310
+ style: {
1311
+ margin: 2
1312
+ }
1313
+ }, createElement(CacheProvider, {
1314
+ value: memoizedCreateCacheWithContainer(document.head)
1315
+ }, createElement(ChakraProvider, {
1316
+ resetCSS: false
1317
+ }, createElement(CSSReset, null), props.children)));
1318
+ };
1319
+ };
1320
+
1321
+ export default Form;
1322
+ export { ArrayFieldTemplate, FieldTemplate, Fields, Form, ObjectFieldTemplate, Theme, widgets as Widgets, __createChakraFrameProvider };
1323
+ //# sourceMappingURL=chakra-ui.esm.js.map