@rjsf/mui 5.0.0-beta.2 → 5.0.0-beta.20

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