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