@rjsf/mui 5.0.0-beta.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.
Files changed (62) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +137 -0
  3. package/dist/AddButton/AddButton.d.ts +4 -0
  4. package/dist/AddButton/index.d.ts +2 -0
  5. package/dist/ArrayFieldItemTemplate/ArrayFieldItemTemplate.d.ts +3 -0
  6. package/dist/ArrayFieldItemTemplate/index.d.ts +2 -0
  7. package/dist/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +3 -0
  8. package/dist/ArrayFieldTemplate/index.d.ts +2 -0
  9. package/dist/BaseInputTemplate/BaseInputTemplate.d.ts +3 -0
  10. package/dist/BaseInputTemplate/index.d.ts +2 -0
  11. package/dist/CheckboxWidget/CheckboxWidget.d.ts +3 -0
  12. package/dist/CheckboxWidget/index.d.ts +2 -0
  13. package/dist/CheckboxesWidget/CheckboxesWidget.d.ts +3 -0
  14. package/dist/CheckboxesWidget/index.d.ts +2 -0
  15. package/dist/DateTimeWidget/DateTimeWidget.d.ts +3 -0
  16. package/dist/DateTimeWidget/index.d.ts +2 -0
  17. package/dist/DateWidget/DateWidget.d.ts +3 -0
  18. package/dist/DateWidget/index.d.ts +2 -0
  19. package/dist/DescriptionField/DescriptionField.d.ts +3 -0
  20. package/dist/DescriptionField/index.d.ts +2 -0
  21. package/dist/ErrorList/ErrorList.d.ts +3 -0
  22. package/dist/ErrorList/index.d.ts +2 -0
  23. package/dist/FieldTemplate/FieldTemplate.d.ts +3 -0
  24. package/dist/FieldTemplate/WrapIfAdditional.d.ts +7 -0
  25. package/dist/FieldTemplate/index.d.ts +2 -0
  26. package/dist/IconButton/IconButton.d.ts +5 -0
  27. package/dist/IconButton/index.d.ts +2 -0
  28. package/dist/MuiForm/MuiForm.d.ts +4 -0
  29. package/dist/MuiForm/index.d.ts +2 -0
  30. package/dist/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +3 -0
  31. package/dist/ObjectFieldTemplate/index.d.ts +2 -0
  32. package/dist/RadioWidget/RadioWidget.d.ts +3 -0
  33. package/dist/RadioWidget/index.d.ts +2 -0
  34. package/dist/RangeWidget/RangeWidget.d.ts +3 -0
  35. package/dist/RangeWidget/index.d.ts +2 -0
  36. package/dist/SelectWidget/SelectWidget.d.ts +3 -0
  37. package/dist/SelectWidget/index.d.ts +2 -0
  38. package/dist/SubmitButton/SubmitButton.d.ts +4 -0
  39. package/dist/SubmitButton/index.d.ts +2 -0
  40. package/dist/Templates/Templates.d.ts +20 -0
  41. package/dist/Templates/index.d.ts +2 -0
  42. package/dist/TextareaWidget/TextareaWidget.d.ts +3 -0
  43. package/dist/TextareaWidget/index.d.ts +2 -0
  44. package/dist/Theme/Theme.d.ts +3 -0
  45. package/dist/Theme/index.d.ts +2 -0
  46. package/dist/TitleField/TitleField.d.ts +3 -0
  47. package/dist/TitleField/index.d.ts +2 -0
  48. package/dist/Widgets/Widgets.d.ts +11 -0
  49. package/dist/Widgets/index.d.ts +2 -0
  50. package/dist/index.d.ts +6 -0
  51. package/dist/index.js +8 -0
  52. package/dist/mui.cjs.development.js +1057 -0
  53. package/dist/mui.cjs.development.js.map +1 -0
  54. package/dist/mui.cjs.production.min.js +2 -0
  55. package/dist/mui.cjs.production.min.js.map +1 -0
  56. package/dist/mui.esm.js +1016 -0
  57. package/dist/mui.esm.js.map +1 -0
  58. package/dist/mui.umd.development.js +1030 -0
  59. package/dist/mui.umd.development.js.map +1 -0
  60. package/dist/mui.umd.production.min.js +2 -0
  61. package/dist/mui.umd.production.min.js.map +1 -0
  62. package/package.json +88 -0
@@ -0,0 +1,1057 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@rjsf/core');
6
+ var React = require('react');
7
+ var AddIcon = require('@mui/icons-material/Add');
8
+ var IconButton = require('@mui/material/IconButton');
9
+ var Box = require('@mui/material/Box');
10
+ var Grid = require('@mui/material/Grid');
11
+ var Paper = require('@mui/material/Paper');
12
+ var utils = require('@rjsf/utils');
13
+ var TextField = require('@mui/material/TextField');
14
+ var Typography = require('@mui/material/Typography');
15
+ var ErrorIcon = require('@mui/icons-material/Error');
16
+ var List = require('@mui/material/List');
17
+ var ListItem = require('@mui/material/ListItem');
18
+ var ListItemIcon = require('@mui/material/ListItemIcon');
19
+ var ListItemText = require('@mui/material/ListItemText');
20
+ var ArrowDownwardIcon = require('@mui/icons-material/ArrowDownward');
21
+ var ArrowUpwardIcon = require('@mui/icons-material/ArrowUpward');
22
+ var RemoveIcon = require('@mui/icons-material/Remove');
23
+ var FormControl = require('@mui/material/FormControl');
24
+ var FormHelperText = require('@mui/material/FormHelperText');
25
+ var InputLabel = require('@mui/material/InputLabel');
26
+ var Input = require('@mui/material/OutlinedInput');
27
+ var Button = require('@mui/material/Button');
28
+ var Divider = require('@mui/material/Divider');
29
+ var Checkbox = require('@mui/material/Checkbox');
30
+ var FormControlLabel = require('@mui/material/FormControlLabel');
31
+ var FormGroup = require('@mui/material/FormGroup');
32
+ var FormLabel = require('@mui/material/FormLabel');
33
+ var Radio = require('@mui/material/Radio');
34
+ var RadioGroup = require('@mui/material/RadioGroup');
35
+ var Slider = require('@mui/material/Slider');
36
+ var MenuItem = require('@mui/material/MenuItem');
37
+
38
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
39
+
40
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
41
+ var AddIcon__default = /*#__PURE__*/_interopDefaultLegacy(AddIcon);
42
+ var IconButton__default = /*#__PURE__*/_interopDefaultLegacy(IconButton);
43
+ var Box__default = /*#__PURE__*/_interopDefaultLegacy(Box);
44
+ var Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);
45
+ var Paper__default = /*#__PURE__*/_interopDefaultLegacy(Paper);
46
+ var TextField__default = /*#__PURE__*/_interopDefaultLegacy(TextField);
47
+ var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
48
+ var ErrorIcon__default = /*#__PURE__*/_interopDefaultLegacy(ErrorIcon);
49
+ var List__default = /*#__PURE__*/_interopDefaultLegacy(List);
50
+ var ListItem__default = /*#__PURE__*/_interopDefaultLegacy(ListItem);
51
+ var ListItemIcon__default = /*#__PURE__*/_interopDefaultLegacy(ListItemIcon);
52
+ var ListItemText__default = /*#__PURE__*/_interopDefaultLegacy(ListItemText);
53
+ var ArrowDownwardIcon__default = /*#__PURE__*/_interopDefaultLegacy(ArrowDownwardIcon);
54
+ var ArrowUpwardIcon__default = /*#__PURE__*/_interopDefaultLegacy(ArrowUpwardIcon);
55
+ var RemoveIcon__default = /*#__PURE__*/_interopDefaultLegacy(RemoveIcon);
56
+ var FormControl__default = /*#__PURE__*/_interopDefaultLegacy(FormControl);
57
+ var FormHelperText__default = /*#__PURE__*/_interopDefaultLegacy(FormHelperText);
58
+ var InputLabel__default = /*#__PURE__*/_interopDefaultLegacy(InputLabel);
59
+ var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
60
+ var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
61
+ var Divider__default = /*#__PURE__*/_interopDefaultLegacy(Divider);
62
+ var Checkbox__default = /*#__PURE__*/_interopDefaultLegacy(Checkbox);
63
+ var FormControlLabel__default = /*#__PURE__*/_interopDefaultLegacy(FormControlLabel);
64
+ var FormGroup__default = /*#__PURE__*/_interopDefaultLegacy(FormGroup);
65
+ var FormLabel__default = /*#__PURE__*/_interopDefaultLegacy(FormLabel);
66
+ var Radio__default = /*#__PURE__*/_interopDefaultLegacy(Radio);
67
+ var RadioGroup__default = /*#__PURE__*/_interopDefaultLegacy(RadioGroup);
68
+ var Slider__default = /*#__PURE__*/_interopDefaultLegacy(Slider);
69
+ var MenuItem__default = /*#__PURE__*/_interopDefaultLegacy(MenuItem);
70
+
71
+ const AddButton = props => {
72
+ return /*#__PURE__*/React__default["default"].createElement(IconButton__default["default"], {
73
+ title: "Add Item",
74
+ ...props,
75
+ color: "primary"
76
+ }, /*#__PURE__*/React__default["default"].createElement(AddIcon__default["default"], null));
77
+ };
78
+
79
+ const ArrayFieldItemTemplate = props => {
80
+ const {
81
+ children,
82
+ disabled,
83
+ hasToolbar,
84
+ hasMoveDown,
85
+ hasMoveUp,
86
+ hasRemove,
87
+ index,
88
+ onDropIndexClick,
89
+ onReorderClick,
90
+ readonly,
91
+ registry
92
+ } = props;
93
+ const {
94
+ MoveDownButton,
95
+ MoveUpButton,
96
+ RemoveButton
97
+ } = registry.templates.ButtonTemplates;
98
+ const btnStyle = {
99
+ flex: 1,
100
+ paddingLeft: 6,
101
+ paddingRight: 6,
102
+ fontWeight: "bold",
103
+ minWidth: 0
104
+ };
105
+ return /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
106
+ container: true,
107
+ alignItems: "center"
108
+ }, /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
109
+ item: true,
110
+ xs: true,
111
+ style: {
112
+ overflow: "auto"
113
+ }
114
+ }, /*#__PURE__*/React__default["default"].createElement(Box__default["default"], {
115
+ mb: 2
116
+ }, /*#__PURE__*/React__default["default"].createElement(Paper__default["default"], {
117
+ elevation: 2
118
+ }, /*#__PURE__*/React__default["default"].createElement(Box__default["default"], {
119
+ p: 2
120
+ }, children)))), hasToolbar && /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
121
+ item: true
122
+ }, (hasMoveUp || hasMoveDown) && /*#__PURE__*/React__default["default"].createElement(MoveUpButton, {
123
+ style: btnStyle,
124
+ disabled: disabled || readonly || !hasMoveUp,
125
+ onClick: onReorderClick(index, index - 1)
126
+ }), (hasMoveUp || hasMoveDown) && /*#__PURE__*/React__default["default"].createElement(MoveDownButton, {
127
+ style: btnStyle,
128
+ disabled: disabled || readonly || !hasMoveDown,
129
+ onClick: onReorderClick(index, index + 1)
130
+ }), hasRemove && /*#__PURE__*/React__default["default"].createElement(RemoveButton, {
131
+ style: btnStyle,
132
+ disabled: disabled || readonly,
133
+ onClick: onDropIndexClick(index)
134
+ })));
135
+ };
136
+
137
+ const ArrayFieldTemplate = props => {
138
+ const {
139
+ canAdd,
140
+ disabled,
141
+ idSchema,
142
+ uiSchema,
143
+ items,
144
+ onAddClick,
145
+ readonly,
146
+ registry,
147
+ required,
148
+ schema,
149
+ title
150
+ } = props;
151
+ const uiOptions = utils.getUiOptions(uiSchema);
152
+ const ArrayFieldDescriptionTemplate = utils.getTemplate("ArrayFieldDescriptionTemplate", registry, uiOptions);
153
+ const ArrayFieldItemTemplate = utils.getTemplate("ArrayFieldItemTemplate", registry, uiOptions);
154
+ const ArrayFieldTitleTemplate = utils.getTemplate("ArrayFieldTitleTemplate", registry, uiOptions); // Button templates are not overridden in the uiSchema
155
+
156
+ const {
157
+ ButtonTemplates: {
158
+ AddButton
159
+ }
160
+ } = registry.templates;
161
+ return /*#__PURE__*/React__default["default"].createElement(Paper__default["default"], {
162
+ elevation: 2
163
+ }, /*#__PURE__*/React__default["default"].createElement(Box__default["default"], {
164
+ p: 2
165
+ }, /*#__PURE__*/React__default["default"].createElement(ArrayFieldTitleTemplate, {
166
+ idSchema: idSchema,
167
+ title: uiOptions.title || title,
168
+ uiSchema: uiSchema,
169
+ required: required,
170
+ registry: registry
171
+ }), (uiOptions.description || schema.description) && /*#__PURE__*/React__default["default"].createElement(ArrayFieldDescriptionTemplate, {
172
+ idSchema: idSchema,
173
+ description: uiOptions.description || schema.description,
174
+ uiSchema: uiSchema,
175
+ registry: registry
176
+ }), /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
177
+ container: true,
178
+ key: "array-item-list-" + idSchema.$id
179
+ }, items && items.map(_ref => {
180
+ let {
181
+ key,
182
+ ...itemProps
183
+ } = _ref;
184
+ return /*#__PURE__*/React__default["default"].createElement(ArrayFieldItemTemplate, {
185
+ key: key,
186
+ ...itemProps
187
+ });
188
+ }), canAdd && /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
189
+ container: true,
190
+ justifyContent: "flex-end"
191
+ }, /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
192
+ item: true
193
+ }, /*#__PURE__*/React__default["default"].createElement(Box__default["default"], {
194
+ mt: 2
195
+ }, /*#__PURE__*/React__default["default"].createElement(AddButton, {
196
+ className: "array-item-add",
197
+ onClick: onAddClick,
198
+ disabled: disabled || readonly
199
+ })))))));
200
+ };
201
+
202
+ const BaseInputTemplate = _ref => {
203
+ let {
204
+ id,
205
+ placeholder,
206
+ required,
207
+ readonly,
208
+ disabled,
209
+ type,
210
+ label,
211
+ value,
212
+ onChange,
213
+ onBlur,
214
+ onFocus,
215
+ autofocus,
216
+ options,
217
+ schema,
218
+ uiSchema,
219
+ rawErrors = [],
220
+ formContext,
221
+ registry,
222
+ ...textFieldProps
223
+ } = _ref;
224
+ const inputProps = utils.getInputProps(schema, type, options); // Now we need to pull out the step, min, max into an inner `inputProps` for material-ui
225
+
226
+ const {
227
+ step,
228
+ min,
229
+ max,
230
+ ...rest
231
+ } = inputProps;
232
+ const otherProps = {
233
+ inputProps: {
234
+ step,
235
+ min,
236
+ max
237
+ },
238
+ ...rest
239
+ };
240
+
241
+ const _onChange = _ref2 => {
242
+ let {
243
+ target: {
244
+ value
245
+ }
246
+ } = _ref2;
247
+ return onChange(value === "" ? options.emptyValue : value);
248
+ };
249
+
250
+ const _onBlur = _ref3 => {
251
+ let {
252
+ target: {
253
+ value
254
+ }
255
+ } = _ref3;
256
+ return onBlur(id, value);
257
+ };
258
+
259
+ const _onFocus = _ref4 => {
260
+ let {
261
+ target: {
262
+ value
263
+ }
264
+ } = _ref4;
265
+ return onFocus(id, value);
266
+ };
267
+
268
+ const {
269
+ schemaUtils
270
+ } = registry;
271
+ const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema);
272
+ return /*#__PURE__*/React__default["default"].createElement(TextField__default["default"], {
273
+ id: id,
274
+ placeholder: placeholder,
275
+ label: displayLabel ? label || schema.title : false,
276
+ autoFocus: autofocus,
277
+ required: required,
278
+ disabled: disabled || readonly,
279
+ ...otherProps,
280
+ value: value || value === 0 ? value : "",
281
+ error: rawErrors.length > 0,
282
+ onChange: _onChange,
283
+ onBlur: _onBlur,
284
+ onFocus: _onFocus,
285
+ ...textFieldProps
286
+ });
287
+ };
288
+
289
+ const DescriptionField = _ref => {
290
+ let {
291
+ description,
292
+ id
293
+ } = _ref;
294
+
295
+ if (description) {
296
+ return /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
297
+ id: id,
298
+ variant: "subtitle2",
299
+ style: {
300
+ marginTop: "5px"
301
+ }
302
+ }, description);
303
+ }
304
+
305
+ return null;
306
+ };
307
+
308
+ const ErrorList = _ref => {
309
+ let {
310
+ errors
311
+ } = _ref;
312
+ return /*#__PURE__*/React__default["default"].createElement(Paper__default["default"], {
313
+ elevation: 2
314
+ }, /*#__PURE__*/React__default["default"].createElement(Box__default["default"], {
315
+ mb: 2,
316
+ p: 2
317
+ }, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
318
+ variant: "h6"
319
+ }, "Errors"), /*#__PURE__*/React__default["default"].createElement(List__default["default"], {
320
+ dense: true
321
+ }, errors.map((error, i) => {
322
+ return /*#__PURE__*/React__default["default"].createElement(ListItem__default["default"], {
323
+ key: i
324
+ }, /*#__PURE__*/React__default["default"].createElement(ListItemIcon__default["default"], null, /*#__PURE__*/React__default["default"].createElement(ErrorIcon__default["default"], {
325
+ color: "error"
326
+ })), /*#__PURE__*/React__default["default"].createElement(ListItemText__default["default"], {
327
+ primary: error.stack
328
+ }));
329
+ }))));
330
+ };
331
+
332
+ function MuiIconButton(props) {
333
+ const {
334
+ icon,
335
+ color,
336
+ ...otherProps
337
+ } = props;
338
+ return /*#__PURE__*/React__default["default"].createElement(IconButton__default["default"], { ...otherProps,
339
+ size: "small",
340
+ color: color
341
+ }, icon);
342
+ }
343
+ function MoveDownButton(props) {
344
+ return /*#__PURE__*/React__default["default"].createElement(MuiIconButton, {
345
+ title: "Move down",
346
+ ...props,
347
+ icon: /*#__PURE__*/React__default["default"].createElement(ArrowDownwardIcon__default["default"], {
348
+ fontSize: "small"
349
+ })
350
+ });
351
+ }
352
+ function MoveUpButton(props) {
353
+ return /*#__PURE__*/React__default["default"].createElement(MuiIconButton, {
354
+ title: "Move up",
355
+ ...props,
356
+ icon: /*#__PURE__*/React__default["default"].createElement(ArrowUpwardIcon__default["default"], {
357
+ fontSize: "small"
358
+ })
359
+ });
360
+ }
361
+ function RemoveButton(props) {
362
+ const {
363
+ iconType,
364
+ ...otherProps
365
+ } = props;
366
+ return /*#__PURE__*/React__default["default"].createElement(MuiIconButton, {
367
+ title: "Remove",
368
+ ...otherProps,
369
+ color: "error",
370
+ icon: /*#__PURE__*/React__default["default"].createElement(RemoveIcon__default["default"], {
371
+ fontSize: iconType === "default" ? undefined : "small"
372
+ })
373
+ });
374
+ }
375
+
376
+ const WrapIfAdditional = _ref => {
377
+ let {
378
+ children,
379
+ classNames,
380
+ disabled,
381
+ id,
382
+ label,
383
+ onDropPropertyClick,
384
+ onKeyChange,
385
+ readonly,
386
+ required,
387
+ schema,
388
+ registry
389
+ } = _ref;
390
+ const {
391
+ RemoveButton
392
+ } = registry.templates.ButtonTemplates;
393
+ const keyLabel = label + " Key"; // i18n ?
394
+
395
+ const additional = (utils.ADDITIONAL_PROPERTY_FLAG in schema);
396
+ const btnStyle = {
397
+ flex: 1,
398
+ paddingLeft: 6,
399
+ paddingRight: 6,
400
+ fontWeight: "bold"
401
+ };
402
+
403
+ if (!additional) {
404
+ return /*#__PURE__*/React__default["default"].createElement("div", {
405
+ className: classNames
406
+ }, children);
407
+ }
408
+
409
+ const handleBlur = _ref2 => {
410
+ let {
411
+ target
412
+ } = _ref2;
413
+ return onKeyChange(target.value);
414
+ };
415
+
416
+ return /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
417
+ container: true,
418
+ key: id + "-key",
419
+ alignItems: "center",
420
+ spacing: 2,
421
+ className: classNames
422
+ }, /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
423
+ item: true,
424
+ xs: true
425
+ }, /*#__PURE__*/React__default["default"].createElement(FormControl__default["default"], {
426
+ fullWidth: true,
427
+ required: required
428
+ }, /*#__PURE__*/React__default["default"].createElement(InputLabel__default["default"], null, keyLabel), /*#__PURE__*/React__default["default"].createElement(Input__default["default"], {
429
+ defaultValue: label,
430
+ disabled: disabled || readonly,
431
+ id: id + "-key",
432
+ name: id + "-key",
433
+ onBlur: !readonly ? handleBlur : undefined,
434
+ type: "text"
435
+ }))), /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
436
+ item: true,
437
+ xs: true
438
+ }, children), /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
439
+ item: true
440
+ }, /*#__PURE__*/React__default["default"].createElement(RemoveButton, {
441
+ iconType: "default",
442
+ style: btnStyle,
443
+ disabled: disabled || readonly,
444
+ onClick: onDropPropertyClick(label)
445
+ })));
446
+ };
447
+
448
+ const FieldTemplate = _ref => {
449
+ let {
450
+ id,
451
+ children,
452
+ classNames,
453
+ disabled,
454
+ displayLabel,
455
+ hidden,
456
+ label,
457
+ onDropPropertyClick,
458
+ onKeyChange,
459
+ readonly,
460
+ required,
461
+ rawErrors = [],
462
+ rawHelp,
463
+ rawDescription,
464
+ schema,
465
+ registry
466
+ } = _ref;
467
+
468
+ if (hidden) {
469
+ return /*#__PURE__*/React__default["default"].createElement("div", {
470
+ style: {
471
+ display: "none"
472
+ }
473
+ }, children);
474
+ }
475
+
476
+ return /*#__PURE__*/React__default["default"].createElement(WrapIfAdditional, {
477
+ classNames: classNames,
478
+ disabled: disabled,
479
+ id: id,
480
+ label: label,
481
+ onDropPropertyClick: onDropPropertyClick,
482
+ onKeyChange: onKeyChange,
483
+ readonly: readonly,
484
+ required: required,
485
+ schema: schema,
486
+ registry: registry
487
+ }, /*#__PURE__*/React__default["default"].createElement(FormControl__default["default"], {
488
+ fullWidth: true,
489
+ error: rawErrors.length ? true : false,
490
+ required: required
491
+ }, children, displayLabel && rawDescription ? /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
492
+ variant: "caption",
493
+ color: "textSecondary"
494
+ }, rawDescription) : null, rawErrors.length > 0 && /*#__PURE__*/React__default["default"].createElement(List__default["default"], {
495
+ dense: true,
496
+ disablePadding: true
497
+ }, rawErrors.map((error, i) => {
498
+ return /*#__PURE__*/React__default["default"].createElement(ListItem__default["default"], {
499
+ key: i,
500
+ disableGutters: true
501
+ }, /*#__PURE__*/React__default["default"].createElement(FormHelperText__default["default"], {
502
+ id: id
503
+ }, error));
504
+ })), rawHelp && /*#__PURE__*/React__default["default"].createElement(FormHelperText__default["default"], {
505
+ id: id
506
+ }, rawHelp)));
507
+ };
508
+
509
+ const ObjectFieldTemplate = _ref => {
510
+ let {
511
+ description,
512
+ title,
513
+ properties,
514
+ required,
515
+ disabled,
516
+ readonly,
517
+ uiSchema,
518
+ idSchema,
519
+ schema,
520
+ formData,
521
+ onAddClick,
522
+ registry
523
+ } = _ref;
524
+ const uiOptions = utils.getUiOptions(uiSchema);
525
+ const TitleFieldTemplate = utils.getTemplate("TitleFieldTemplate", registry, uiOptions);
526
+ const DescriptionFieldTemplate = utils.getTemplate("DescriptionFieldTemplate", registry, uiOptions); // Button templates are not overridden in the uiSchema
527
+
528
+ const {
529
+ ButtonTemplates: {
530
+ AddButton
531
+ }
532
+ } = registry.templates;
533
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, (uiOptions.title || title) && /*#__PURE__*/React__default["default"].createElement(TitleFieldTemplate, {
534
+ id: idSchema.$id + "-title",
535
+ title: title,
536
+ required: required,
537
+ uiSchema: uiSchema,
538
+ registry: registry
539
+ }), (uiOptions.description || description) && /*#__PURE__*/React__default["default"].createElement(DescriptionFieldTemplate, {
540
+ id: idSchema.$id + "-description",
541
+ description: uiOptions.description || description,
542
+ registry: registry
543
+ }), /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
544
+ container: true,
545
+ spacing: 2,
546
+ style: {
547
+ marginTop: "10px"
548
+ }
549
+ }, properties.map((element, index) => // Remove the <Grid> if the inner element is hidden as the <Grid>
550
+ // itself would otherwise still take up space.
551
+ element.hidden ? element.content : /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
552
+ item: true,
553
+ xs: 12,
554
+ key: index,
555
+ style: {
556
+ marginBottom: "10px"
557
+ }
558
+ }, element.content)), utils.canExpand(schema, uiSchema, formData) && /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
559
+ container: true,
560
+ justifyContent: "flex-end"
561
+ }, /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
562
+ item: true
563
+ }, /*#__PURE__*/React__default["default"].createElement(AddButton, {
564
+ className: "object-property-expand",
565
+ onClick: onAddClick(schema),
566
+ disabled: disabled || readonly
567
+ })))));
568
+ };
569
+
570
+ const SubmitButton = props => {
571
+ const {
572
+ submitText,
573
+ norender,
574
+ props: submitButtonProps
575
+ } = utils.getSubmitButtonOptions(props.uiSchema);
576
+
577
+ if (norender) {
578
+ return null;
579
+ }
580
+
581
+ return /*#__PURE__*/React__default["default"].createElement(Box__default["default"], {
582
+ marginTop: 3
583
+ }, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
584
+ type: "submit",
585
+ variant: "contained",
586
+ color: "primary",
587
+ ...submitButtonProps
588
+ }, submitText));
589
+ };
590
+
591
+ const TitleField = _ref => {
592
+ let {
593
+ id,
594
+ title
595
+ } = _ref;
596
+ return /*#__PURE__*/React__default["default"].createElement(Box__default["default"], {
597
+ id: id,
598
+ mb: 1,
599
+ mt: 1
600
+ }, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
601
+ variant: "h5"
602
+ }, title), /*#__PURE__*/React__default["default"].createElement(Divider__default["default"], null));
603
+ };
604
+
605
+ var Templates = {
606
+ ArrayFieldItemTemplate,
607
+ ArrayFieldTemplate,
608
+ BaseInputTemplate,
609
+ ButtonTemplates: {
610
+ AddButton,
611
+ MoveDownButton,
612
+ MoveUpButton,
613
+ RemoveButton,
614
+ SubmitButton
615
+ },
616
+ DescriptionFieldTemplate: DescriptionField,
617
+ ErrorListTemplate: ErrorList,
618
+ FieldTemplate,
619
+ ObjectFieldTemplate,
620
+ TitleFieldTemplate: TitleField
621
+ };
622
+
623
+ const CheckboxWidget = props => {
624
+ const {
625
+ schema,
626
+ id,
627
+ value,
628
+ disabled,
629
+ readonly,
630
+ label,
631
+ autofocus,
632
+ onChange,
633
+ onBlur,
634
+ onFocus
635
+ } = props; // Because an unchecked checkbox will cause html5 validation to fail, only add
636
+ // the "required" attribute if the field value must be "true", due to the
637
+ // "const" or "enum" keywords
638
+
639
+ const required = utils.schemaRequiresTrueValue(schema);
640
+
641
+ const _onChange = (_, checked) => onChange(checked);
642
+
643
+ const _onBlur = _ref => {
644
+ let {
645
+ target: {
646
+ value
647
+ }
648
+ } = _ref;
649
+ return onBlur(id, value);
650
+ };
651
+
652
+ const _onFocus = _ref2 => {
653
+ let {
654
+ target: {
655
+ value
656
+ }
657
+ } = _ref2;
658
+ return onFocus(id, value);
659
+ };
660
+
661
+ return /*#__PURE__*/React__default["default"].createElement(FormControlLabel__default["default"], {
662
+ control: /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], {
663
+ id: id,
664
+ checked: typeof value === "undefined" ? false : Boolean(value),
665
+ required: required,
666
+ disabled: disabled || readonly,
667
+ autoFocus: autofocus,
668
+ onChange: _onChange,
669
+ onBlur: _onBlur,
670
+ onFocus: _onFocus
671
+ }),
672
+ label: label || ""
673
+ });
674
+ };
675
+
676
+ const selectValue = (value, selected, all) => {
677
+ const at = all.indexOf(value);
678
+ const updated = selected.slice(0, at).concat(value, selected.slice(at)); // As inserting values at predefined index positions doesn't work with empty
679
+ // arrays, we need to reorder the updated selection to match the initial order
680
+
681
+ return updated.sort((a, b) => all.indexOf(a) > all.indexOf(b));
682
+ };
683
+
684
+ const deselectValue = (value, selected) => {
685
+ return selected.filter(v => v !== value);
686
+ };
687
+
688
+ const CheckboxesWidget = _ref => {
689
+ let {
690
+ schema,
691
+ label,
692
+ id,
693
+ disabled,
694
+ options,
695
+ value,
696
+ autofocus,
697
+ readonly,
698
+ required,
699
+ onChange,
700
+ onBlur,
701
+ onFocus
702
+ } = _ref;
703
+ const {
704
+ enumOptions,
705
+ enumDisabled,
706
+ inline
707
+ } = options;
708
+
709
+ const _onChange = option => _ref2 => {
710
+ let {
711
+ target: {
712
+ checked
713
+ }
714
+ } = _ref2;
715
+ const all = enumOptions.map(_ref3 => {
716
+ let {
717
+ value
718
+ } = _ref3;
719
+ return value;
720
+ });
721
+
722
+ if (checked) {
723
+ onChange(selectValue(option.value, value, all));
724
+ } else {
725
+ onChange(deselectValue(option.value, value));
726
+ }
727
+ };
728
+
729
+ const _onBlur = _ref4 => {
730
+ let {
731
+ target: {
732
+ value
733
+ }
734
+ } = _ref4;
735
+ return onBlur(id, value);
736
+ };
737
+
738
+ const _onFocus = _ref5 => {
739
+ let {
740
+ target: {
741
+ value
742
+ }
743
+ } = _ref5;
744
+ return onFocus(id, value);
745
+ };
746
+
747
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(FormLabel__default["default"], {
748
+ required: required,
749
+ htmlFor: id
750
+ }, label || schema.title), /*#__PURE__*/React__default["default"].createElement(FormGroup__default["default"], {
751
+ id: id,
752
+ row: !!inline
753
+ }, enumOptions.map((option, index) => {
754
+ const checked = value.indexOf(option.value) !== -1;
755
+ const itemDisabled = enumDisabled && enumDisabled.indexOf(option.value) != -1;
756
+ const checkbox = /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], {
757
+ id: id + "_" + index,
758
+ checked: checked,
759
+ disabled: disabled || itemDisabled || readonly,
760
+ autoFocus: autofocus && index === 0,
761
+ onChange: _onChange(option),
762
+ onBlur: _onBlur,
763
+ onFocus: _onFocus
764
+ });
765
+ return /*#__PURE__*/React__default["default"].createElement(FormControlLabel__default["default"], {
766
+ control: checkbox,
767
+ key: index,
768
+ label: option.label
769
+ });
770
+ })));
771
+ };
772
+
773
+ const DateWidget = props => {
774
+ const {
775
+ options,
776
+ registry
777
+ } = props;
778
+ const BaseInputTemplate = utils.getTemplate("BaseInputTemplate", registry, options);
779
+ return /*#__PURE__*/React__default["default"].createElement(BaseInputTemplate, {
780
+ type: "date",
781
+ InputLabelProps: {
782
+ shrink: true
783
+ },
784
+ ...props
785
+ });
786
+ };
787
+
788
+ const DateTimeWidget = props => {
789
+ const {
790
+ options,
791
+ registry
792
+ } = props;
793
+ const BaseInputTemplate = utils.getTemplate("BaseInputTemplate", registry, options);
794
+ const value = utils.utcToLocal(props.value);
795
+
796
+ const onChange = value => {
797
+ props.onChange(utils.localToUTC(value));
798
+ };
799
+
800
+ return /*#__PURE__*/React__default["default"].createElement(BaseInputTemplate, {
801
+ type: "datetime-local",
802
+ InputLabelProps: {
803
+ shrink: true
804
+ },
805
+ ...props,
806
+ value: value,
807
+ onChange: onChange
808
+ });
809
+ };
810
+
811
+ const RadioWidget = _ref => {
812
+ let {
813
+ id,
814
+ schema,
815
+ options,
816
+ value,
817
+ required,
818
+ disabled,
819
+ readonly,
820
+ label,
821
+ onChange,
822
+ onBlur,
823
+ onFocus
824
+ } = _ref;
825
+ const {
826
+ enumOptions,
827
+ enumDisabled
828
+ } = options;
829
+
830
+ const _onChange = (_, value) => onChange(schema.type == "boolean" ? value !== "false" : value);
831
+
832
+ const _onBlur = _ref2 => {
833
+ let {
834
+ target: {
835
+ value
836
+ }
837
+ } = _ref2;
838
+ return onBlur(id, value);
839
+ };
840
+
841
+ const _onFocus = _ref3 => {
842
+ let {
843
+ target: {
844
+ value
845
+ }
846
+ } = _ref3;
847
+ return onFocus(id, value);
848
+ };
849
+
850
+ const row = options ? options.inline : false;
851
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(FormLabel__default["default"], {
852
+ required: required,
853
+ htmlFor: id
854
+ }, label || schema.title), /*#__PURE__*/React__default["default"].createElement(RadioGroup__default["default"], {
855
+ id: id,
856
+ value: "" + value,
857
+ row: row,
858
+ onChange: _onChange,
859
+ onBlur: _onBlur,
860
+ onFocus: _onFocus
861
+ }, enumOptions.map((option, i) => {
862
+ const itemDisabled = enumDisabled && enumDisabled.indexOf(option.value) != -1;
863
+ const radio = /*#__PURE__*/React__default["default"].createElement(FormControlLabel__default["default"], {
864
+ control: /*#__PURE__*/React__default["default"].createElement(Radio__default["default"], {
865
+ name: id + "-" + i,
866
+ color: "primary",
867
+ key: i
868
+ }),
869
+ label: "" + option.label,
870
+ value: "" + option.value,
871
+ key: i,
872
+ disabled: disabled || itemDisabled || readonly
873
+ });
874
+ return radio;
875
+ })));
876
+ };
877
+
878
+ const RangeWidget = _ref => {
879
+ let {
880
+ value,
881
+ readonly,
882
+ disabled,
883
+ onBlur,
884
+ onFocus,
885
+ options,
886
+ schema,
887
+ onChange,
888
+ required,
889
+ label,
890
+ id
891
+ } = _ref;
892
+ const sliderProps = {
893
+ value,
894
+ label,
895
+ id,
896
+ ...utils.rangeSpec(schema)
897
+ };
898
+
899
+ const _onChange = (_, value) => {
900
+ onChange(value ? options.emptyValue : value);
901
+ };
902
+
903
+ const _onBlur = _ref2 => {
904
+ let {
905
+ target: {
906
+ value
907
+ }
908
+ } = _ref2;
909
+ return onBlur(id, value);
910
+ };
911
+
912
+ const _onFocus = _ref3 => {
913
+ let {
914
+ target: {
915
+ value
916
+ }
917
+ } = _ref3;
918
+ return onFocus(id, value);
919
+ };
920
+
921
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(FormLabel__default["default"], {
922
+ required: required,
923
+ id: id
924
+ }, label), /*#__PURE__*/React__default["default"].createElement(Slider__default["default"], {
925
+ disabled: disabled || readonly,
926
+ onChange: _onChange,
927
+ onBlur: _onBlur,
928
+ onFocus: _onFocus,
929
+ valueLabelDisplay: "auto",
930
+ ...sliderProps
931
+ }));
932
+ };
933
+
934
+ const SelectWidget = _ref => {
935
+ let {
936
+ schema,
937
+ id,
938
+ options,
939
+ label,
940
+ required,
941
+ disabled,
942
+ readonly,
943
+ value,
944
+ multiple,
945
+ autofocus,
946
+ onChange,
947
+ onBlur,
948
+ onFocus,
949
+ rawErrors = []
950
+ } = _ref;
951
+ const {
952
+ enumOptions,
953
+ enumDisabled
954
+ } = options;
955
+ const emptyValue = multiple ? [] : "";
956
+
957
+ const _onChange = _ref2 => {
958
+ let {
959
+ target: {
960
+ value
961
+ }
962
+ } = _ref2;
963
+ return onChange(utils.processSelectValue(schema, value, options));
964
+ };
965
+
966
+ const _onBlur = _ref3 => {
967
+ let {
968
+ target: {
969
+ value
970
+ }
971
+ } = _ref3;
972
+ return onBlur(id, utils.processSelectValue(schema, value, options));
973
+ };
974
+
975
+ const _onFocus = _ref4 => {
976
+ let {
977
+ target: {
978
+ value
979
+ }
980
+ } = _ref4;
981
+ return onFocus(id, utils.processSelectValue(schema, value, options));
982
+ };
983
+
984
+ return /*#__PURE__*/React__default["default"].createElement(TextField__default["default"], {
985
+ id: id,
986
+ label: label || schema.title,
987
+ select: true,
988
+ value: typeof value === "undefined" ? emptyValue : value,
989
+ required: required,
990
+ disabled: disabled || readonly,
991
+ autoFocus: autofocus,
992
+ error: rawErrors.length > 0,
993
+ onChange: _onChange,
994
+ onBlur: _onBlur,
995
+ onFocus: _onFocus,
996
+ InputLabelProps: {
997
+ shrink: true
998
+ },
999
+ SelectProps: {
1000
+ multiple: typeof multiple === "undefined" ? false : multiple
1001
+ }
1002
+ }, enumOptions.map((_ref5, i) => {
1003
+ let {
1004
+ value,
1005
+ label
1006
+ } = _ref5;
1007
+ const disabled = enumDisabled && enumDisabled.indexOf(value) != -1;
1008
+ return /*#__PURE__*/React__default["default"].createElement(MenuItem__default["default"], {
1009
+ key: i,
1010
+ value: value,
1011
+ disabled: disabled
1012
+ }, label);
1013
+ }));
1014
+ };
1015
+
1016
+ const TextareaWidget = props => {
1017
+ const {
1018
+ options,
1019
+ registry
1020
+ } = props;
1021
+ const BaseInputTemplate = utils.getTemplate("BaseInputTemplate", registry, options);
1022
+ let rows = 5;
1023
+
1024
+ if (typeof options.rows === "string" || typeof options.rows === "number") {
1025
+ rows = options.rows;
1026
+ }
1027
+
1028
+ return /*#__PURE__*/React__default["default"].createElement(BaseInputTemplate, { ...props,
1029
+ multiline: true,
1030
+ rows: rows
1031
+ });
1032
+ };
1033
+
1034
+ var Widgets = {
1035
+ CheckboxWidget,
1036
+ CheckboxesWidget,
1037
+ DateWidget,
1038
+ DateTimeWidget,
1039
+ RadioWidget,
1040
+ RangeWidget,
1041
+ SelectWidget,
1042
+ TextareaWidget
1043
+ };
1044
+
1045
+ const Theme = {
1046
+ templates: Templates,
1047
+ widgets: Widgets
1048
+ };
1049
+
1050
+ const MuiForm = /*#__PURE__*/core.withTheme(Theme);
1051
+
1052
+ exports.Form = MuiForm;
1053
+ exports.Templates = Templates;
1054
+ exports.Theme = Theme;
1055
+ exports.Widgets = Widgets;
1056
+ exports["default"] = MuiForm;
1057
+ //# sourceMappingURL=mui.cjs.development.js.map