@rjsf/mui 5.2.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/mui.esm.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { withTheme } from '@rjsf/core';
2
- import React from 'react';
2
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import AddIcon from '@mui/icons-material/Add';
4
4
  import IconButton from '@mui/material/IconButton';
5
- import { TranslatableString, getUiOptions, getTemplate, getInputProps, examplesId, ariaDescribedByIds, errorId, helpId, titleId, descriptionId, canExpand, getSubmitButtonOptions, ADDITIONAL_PROPERTY_FLAG, schemaRequiresTrueValue, enumOptionsIsSelected, optionId, enumOptionsSelectValue, enumOptionsDeselectValue, enumOptionsValueForIndex, utcToLocal, localToUTC, enumOptionsIndexForValue, rangeSpec } from '@rjsf/utils';
5
+ import { TranslatableString, getUiOptions, getTemplate, getInputProps, examplesId, ariaDescribedByIds, errorId, helpId, titleId, descriptionId, canExpand, getSubmitButtonOptions, ADDITIONAL_PROPERTY_FLAG, schemaRequiresTrueValue, enumOptionsIsSelected, optionId, enumOptionsSelectValue, enumOptionsDeselectValue, enumOptionsValueForIndex, enumOptionsIndexForValue, rangeSpec } from '@rjsf/utils';
6
6
  import Box from '@mui/material/Box';
7
7
  import Grid from '@mui/material/Grid';
8
8
  import Paper from '@mui/material/Paper';
@@ -15,6 +15,7 @@ import ListItemIcon from '@mui/material/ListItemIcon';
15
15
  import ListItemText from '@mui/material/ListItemText';
16
16
  import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';
17
17
  import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';
18
+ import CopyIcon from '@mui/icons-material/ContentCopy';
18
19
  import RemoveIcon from '@mui/icons-material/Remove';
19
20
  import FormHelperText from '@mui/material/FormHelperText';
20
21
  import FormControl from '@mui/material/FormControl';
@@ -65,11 +66,12 @@ function AddButton(_ref) {
65
66
  var registry = _ref.registry,
66
67
  props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
67
68
  var translateString = registry.translateString;
68
- return /*#__PURE__*/React.createElement(IconButton, _extends({
69
+ return jsx(IconButton, _extends({
69
70
  title: translateString(TranslatableString.AddItemButton)
70
71
  }, props, {
71
- color: "primary"
72
- }), /*#__PURE__*/React.createElement(AddIcon, null));
72
+ color: 'primary',
73
+ children: jsx(AddIcon, {})
74
+ }));
73
75
  }
74
76
 
75
77
  /** The `ArrayFieldItemTemplate` component is the template used to render an items of an array.
@@ -80,16 +82,19 @@ function ArrayFieldItemTemplate(props) {
80
82
  var children = props.children,
81
83
  disabled = props.disabled,
82
84
  hasToolbar = props.hasToolbar,
85
+ hasCopy = props.hasCopy,
83
86
  hasMoveDown = props.hasMoveDown,
84
87
  hasMoveUp = props.hasMoveUp,
85
88
  hasRemove = props.hasRemove,
86
89
  index = props.index,
90
+ onCopyIndexClick = props.onCopyIndexClick,
87
91
  onDropIndexClick = props.onDropIndexClick,
88
92
  onReorderClick = props.onReorderClick,
89
93
  readonly = props.readonly,
90
94
  uiSchema = props.uiSchema,
91
95
  registry = props.registry;
92
96
  var _registry$templates$B = registry.templates.ButtonTemplates,
97
+ CopyButton = _registry$templates$B.CopyButton,
93
98
  MoveDownButton = _registry$templates$B.MoveDownButton,
94
99
  MoveUpButton = _registry$templates$B.MoveUpButton,
95
100
  RemoveButton = _registry$templates$B.RemoveButton;
@@ -97,45 +102,57 @@ function ArrayFieldItemTemplate(props) {
97
102
  flex: 1,
98
103
  paddingLeft: 6,
99
104
  paddingRight: 6,
100
- fontWeight: "bold",
105
+ fontWeight: 'bold',
101
106
  minWidth: 0
102
107
  };
103
- return /*#__PURE__*/React.createElement(Grid, {
108
+ return jsxs(Grid, {
104
109
  container: true,
105
- alignItems: "center"
106
- }, /*#__PURE__*/React.createElement(Grid, {
107
- item: true,
108
- xs: true,
109
- style: {
110
- overflow: "auto"
111
- }
112
- }, /*#__PURE__*/React.createElement(Box, {
113
- mb: 2
114
- }, /*#__PURE__*/React.createElement(Paper, {
115
- elevation: 2
116
- }, /*#__PURE__*/React.createElement(Box, {
117
- p: 2
118
- }, children)))), hasToolbar && /*#__PURE__*/React.createElement(Grid, {
119
- item: true
120
- }, (hasMoveUp || hasMoveDown) && /*#__PURE__*/React.createElement(MoveUpButton, {
121
- style: btnStyle,
122
- disabled: disabled || readonly || !hasMoveUp,
123
- onClick: onReorderClick(index, index - 1),
124
- uiSchema: uiSchema,
125
- registry: registry
126
- }), (hasMoveUp || hasMoveDown) && /*#__PURE__*/React.createElement(MoveDownButton, {
127
- style: btnStyle,
128
- disabled: disabled || readonly || !hasMoveDown,
129
- onClick: onReorderClick(index, index + 1),
130
- uiSchema: uiSchema,
131
- registry: registry
132
- }), hasRemove && /*#__PURE__*/React.createElement(RemoveButton, {
133
- style: btnStyle,
134
- disabled: disabled || readonly,
135
- onClick: onDropIndexClick(index),
136
- uiSchema: uiSchema,
137
- registry: registry
138
- })));
110
+ alignItems: 'center',
111
+ children: [jsx(Grid, {
112
+ item: true,
113
+ xs: true,
114
+ style: {
115
+ overflow: 'auto'
116
+ },
117
+ children: jsx(Box, {
118
+ mb: 2,
119
+ children: jsx(Paper, {
120
+ elevation: 2,
121
+ children: jsx(Box, {
122
+ p: 2,
123
+ children: children
124
+ })
125
+ })
126
+ })
127
+ }), hasToolbar && jsxs(Grid, {
128
+ item: true,
129
+ children: [(hasMoveUp || hasMoveDown) && jsx(MoveUpButton, {
130
+ style: btnStyle,
131
+ disabled: disabled || readonly || !hasMoveUp,
132
+ onClick: onReorderClick(index, index - 1),
133
+ uiSchema: uiSchema,
134
+ registry: registry
135
+ }), (hasMoveUp || hasMoveDown) && jsx(MoveDownButton, {
136
+ style: btnStyle,
137
+ disabled: disabled || readonly || !hasMoveDown,
138
+ onClick: onReorderClick(index, index + 1),
139
+ uiSchema: uiSchema,
140
+ registry: registry
141
+ }), hasCopy && jsx(CopyButton, {
142
+ style: btnStyle,
143
+ disabled: disabled || readonly,
144
+ onClick: onCopyIndexClick(index),
145
+ uiSchema: uiSchema,
146
+ registry: registry
147
+ }), hasRemove && jsx(RemoveButton, {
148
+ style: btnStyle,
149
+ disabled: disabled || readonly,
150
+ onClick: onDropIndexClick(index),
151
+ uiSchema: uiSchema,
152
+ registry: registry
153
+ })]
154
+ })]
155
+ });
139
156
  }
140
157
 
141
158
  var _excluded$3 = ["key"];
@@ -156,55 +173,59 @@ function ArrayFieldTemplate(props) {
156
173
  schema = props.schema,
157
174
  title = props.title;
158
175
  var uiOptions = getUiOptions(uiSchema);
159
- var ArrayFieldDescriptionTemplate = getTemplate("ArrayFieldDescriptionTemplate", registry, uiOptions);
160
- var ArrayFieldItemTemplate = getTemplate("ArrayFieldItemTemplate", registry, uiOptions);
161
- var ArrayFieldTitleTemplate = getTemplate("ArrayFieldTitleTemplate", registry, uiOptions);
176
+ var ArrayFieldDescriptionTemplate = getTemplate('ArrayFieldDescriptionTemplate', registry, uiOptions);
177
+ var ArrayFieldItemTemplate = getTemplate('ArrayFieldItemTemplate', registry, uiOptions);
178
+ var ArrayFieldTitleTemplate = getTemplate('ArrayFieldTitleTemplate', registry, uiOptions);
162
179
  // Button templates are not overridden in the uiSchema
163
180
  var AddButton = registry.templates.ButtonTemplates.AddButton;
164
- return /*#__PURE__*/React.createElement(Paper, {
165
- elevation: 2
166
- }, /*#__PURE__*/React.createElement(Box, {
167
- p: 2
168
- }, /*#__PURE__*/React.createElement(ArrayFieldTitleTemplate, {
169
- idSchema: idSchema,
170
- title: uiOptions.title || title,
171
- schema: schema,
172
- uiSchema: uiSchema,
173
- required: required,
174
- registry: registry
175
- }), /*#__PURE__*/React.createElement(ArrayFieldDescriptionTemplate, {
176
- idSchema: idSchema,
177
- description: uiOptions.description || schema.description,
178
- schema: schema,
179
- uiSchema: uiSchema,
180
- registry: registry
181
- }), /*#__PURE__*/React.createElement(Grid, {
182
- container: true,
183
- key: "array-item-list-" + idSchema.$id
184
- }, items && items.map(function (_ref) {
185
- var key = _ref.key,
186
- itemProps = _objectWithoutPropertiesLoose(_ref, _excluded$3);
187
- return /*#__PURE__*/React.createElement(ArrayFieldItemTemplate, _extends({
188
- key: key
189
- }, itemProps));
190
- }), canAdd && /*#__PURE__*/React.createElement(Grid, {
191
- container: true,
192
- justifyContent: "flex-end"
193
- }, /*#__PURE__*/React.createElement(Grid, {
194
- item: true
195
- }, /*#__PURE__*/React.createElement(Box, {
196
- mt: 2
197
- }, /*#__PURE__*/React.createElement(AddButton, {
198
- className: "array-item-add",
199
- onClick: onAddClick,
200
- disabled: disabled || readonly,
201
- uiSchema: uiSchema,
202
- registry: registry
203
- })))))));
181
+ return jsx(Paper, {
182
+ elevation: 2,
183
+ children: jsxs(Box, {
184
+ p: 2,
185
+ children: [jsx(ArrayFieldTitleTemplate, {
186
+ idSchema: idSchema,
187
+ title: uiOptions.title || title,
188
+ schema: schema,
189
+ uiSchema: uiSchema,
190
+ required: required,
191
+ registry: registry
192
+ }), jsx(ArrayFieldDescriptionTemplate, {
193
+ idSchema: idSchema,
194
+ description: uiOptions.description || schema.description,
195
+ schema: schema,
196
+ uiSchema: uiSchema,
197
+ registry: registry
198
+ }), jsxs(Grid, {
199
+ container: true,
200
+ children: [items && items.map(function (_ref) {
201
+ var key = _ref.key,
202
+ itemProps = _objectWithoutPropertiesLoose(_ref, _excluded$3);
203
+ return jsx(ArrayFieldItemTemplate, _extends({}, itemProps), key);
204
+ }), canAdd && jsx(Grid, {
205
+ container: true,
206
+ justifyContent: 'flex-end',
207
+ children: jsx(Grid, {
208
+ item: true,
209
+ children: jsx(Box, {
210
+ mt: 2,
211
+ children: jsx(AddButton, {
212
+ className: 'array-item-add',
213
+ onClick: onAddClick,
214
+ disabled: disabled || readonly,
215
+ uiSchema: uiSchema,
216
+ registry: registry
217
+ })
218
+ })
219
+ })
220
+ })]
221
+ }, "array-item-list-" + idSchema.$id)]
222
+ })
223
+ });
204
224
  }
205
225
 
206
- var _excluded$2 = ["id", "placeholder", "required", "readonly", "disabled", "type", "label", "value", "onChange", "onBlur", "onFocus", "autofocus", "options", "schema", "uiSchema", "rawErrors", "formContext", "registry"],
226
+ var _excluded$2 = ["id", "name", "placeholder", "required", "readonly", "disabled", "type", "label", "value", "onChange", "onChangeOverride", "onBlur", "onFocus", "autofocus", "options", "schema", "uiSchema", "rawErrors", "formContext", "registry", "InputLabelProps"],
207
227
  _excluded2$1 = ["step", "min", "max"];
228
+ var TYPES_THAT_SHRINK_LABEL = ['date', 'datetime-local', 'file', 'time'];
208
229
  /** The `BaseInputTemplate` is the template to use to render the basic `<input>` component for the `core` theme.
209
230
  * It is used as the template for rendering many of the <input> based widgets that differ by `type` and callbacks only.
210
231
  * It can be customized/overridden for other themes or individual implementations as needed.
@@ -221,6 +242,7 @@ function BaseInputTemplate(props) {
221
242
  label = props.label,
222
243
  value = props.value,
223
244
  onChange = props.onChange,
245
+ onChangeOverride = props.onChangeOverride,
224
246
  onBlur = props.onBlur,
225
247
  onFocus = props.onFocus,
226
248
  autofocus = props.autofocus,
@@ -230,6 +252,7 @@ function BaseInputTemplate(props) {
230
252
  _props$rawErrors = props.rawErrors,
231
253
  rawErrors = _props$rawErrors === void 0 ? [] : _props$rawErrors,
232
254
  registry = props.registry,
255
+ InputLabelProps = props.InputLabelProps,
233
256
  textFieldProps = _objectWithoutPropertiesLoose(props, _excluded$2);
234
257
  var inputProps = getInputProps(schema, type, options);
235
258
  // Now we need to pull out the step, min, max into an inner `inputProps` for material-ui
@@ -248,7 +271,7 @@ function BaseInputTemplate(props) {
248
271
  }, rest);
249
272
  var _onChange = function _onChange(_ref) {
250
273
  var value = _ref.target.value;
251
- return onChange(value === "" ? options.emptyValue : value);
274
+ return onChange(value === '' ? options.emptyValue : value);
252
275
  };
253
276
  var _onBlur = function _onBlur(_ref2) {
254
277
  var value = _ref2.target.value;
@@ -260,30 +283,36 @@ function BaseInputTemplate(props) {
260
283
  };
261
284
  var schemaUtils = registry.schemaUtils;
262
285
  var displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema);
263
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TextField, _extends({
264
- id: id,
265
- name: id,
266
- placeholder: placeholder,
267
- label: displayLabel ? label || schema.title : false,
268
- autoFocus: autofocus,
269
- required: required,
270
- disabled: disabled || readonly
271
- }, otherProps, {
272
- value: value || value === 0 ? value : "",
273
- error: rawErrors.length > 0,
274
- onChange: _onChange,
275
- onBlur: _onBlur,
276
- onFocus: _onFocus
277
- }, textFieldProps, {
278
- "aria-describedby": ariaDescribedByIds(id, !!schema.examples)
279
- })), Array.isArray(schema.examples) && /*#__PURE__*/React.createElement("datalist", {
280
- id: examplesId(id)
281
- }, schema.examples.concat(schema["default"] && !schema.examples.includes(schema["default"]) ? [schema["default"]] : []).map(function (example) {
282
- return /*#__PURE__*/React.createElement("option", {
283
- key: example,
284
- value: example
285
- });
286
- })));
286
+ var DisplayInputLabelProps = TYPES_THAT_SHRINK_LABEL.includes(type) ? _extends({}, InputLabelProps, {
287
+ shrink: true
288
+ }) : InputLabelProps;
289
+ return jsxs(Fragment, {
290
+ children: [jsx(TextField, _extends({
291
+ id: id,
292
+ name: id,
293
+ placeholder: placeholder,
294
+ label: displayLabel ? label || schema.title : false,
295
+ autoFocus: autofocus,
296
+ required: required,
297
+ disabled: disabled || readonly
298
+ }, otherProps, {
299
+ value: value || value === 0 ? value : '',
300
+ error: rawErrors.length > 0,
301
+ onChange: onChangeOverride || _onChange,
302
+ onBlur: _onBlur,
303
+ onFocus: _onFocus,
304
+ InputLabelProps: DisplayInputLabelProps
305
+ }, textFieldProps, {
306
+ "aria-describedby": ariaDescribedByIds(id, !!schema.examples)
307
+ })), Array.isArray(schema.examples) && jsx("datalist", {
308
+ id: examplesId(id),
309
+ children: schema.examples.concat(schema["default"] && !schema.examples.includes(schema["default"]) ? [schema["default"]] : []).map(function (example) {
310
+ return jsx("option", {
311
+ value: example
312
+ }, example);
313
+ })
314
+ })]
315
+ });
287
316
  }
288
317
 
289
318
  /** The `DescriptionField` is the template to use to render the description of a field
@@ -294,13 +323,14 @@ function DescriptionField(props) {
294
323
  var id = props.id,
295
324
  description = props.description;
296
325
  if (description) {
297
- return /*#__PURE__*/React.createElement(Typography, {
326
+ return jsx(Typography, {
298
327
  id: id,
299
- variant: "subtitle2",
328
+ variant: 'subtitle2',
300
329
  style: {
301
- marginTop: "5px"
302
- }
303
- }, description);
330
+ marginTop: '5px'
331
+ },
332
+ children: description
333
+ });
304
334
  }
305
335
  return null;
306
336
  }
@@ -313,24 +343,30 @@ function ErrorList(_ref) {
313
343
  var errors = _ref.errors,
314
344
  registry = _ref.registry;
315
345
  var translateString = registry.translateString;
316
- return /*#__PURE__*/React.createElement(Paper, {
317
- elevation: 2
318
- }, /*#__PURE__*/React.createElement(Box, {
319
- mb: 2,
320
- p: 2
321
- }, /*#__PURE__*/React.createElement(Typography, {
322
- variant: "h6"
323
- }, translateString(TranslatableString.ErrorsLabel)), /*#__PURE__*/React.createElement(List, {
324
- dense: true
325
- }, errors.map(function (error, i) {
326
- return /*#__PURE__*/React.createElement(ListItem, {
327
- key: i
328
- }, /*#__PURE__*/React.createElement(ListItemIcon, null, /*#__PURE__*/React.createElement(ErrorIcon, {
329
- color: "error"
330
- })), /*#__PURE__*/React.createElement(ListItemText, {
331
- primary: error.stack
332
- }));
333
- }))));
346
+ return jsx(Paper, {
347
+ elevation: 2,
348
+ children: jsxs(Box, {
349
+ mb: 2,
350
+ p: 2,
351
+ children: [jsx(Typography, {
352
+ variant: 'h6',
353
+ children: translateString(TranslatableString.ErrorsLabel)
354
+ }), jsx(List, {
355
+ dense: true,
356
+ children: errors.map(function (error, i) {
357
+ return jsxs(ListItem, {
358
+ children: [jsx(ListItemIcon, {
359
+ children: jsx(ErrorIcon, {
360
+ color: 'error'
361
+ })
362
+ }), jsx(ListItemText, {
363
+ primary: error.stack
364
+ })]
365
+ }, i);
366
+ })
367
+ })]
368
+ })
369
+ });
334
370
  }
335
371
 
336
372
  var _excluded$1 = ["icon", "color", "uiSchema", "registry"],
@@ -339,28 +375,39 @@ function MuiIconButton(props) {
339
375
  var icon = props.icon,
340
376
  color = props.color,
341
377
  otherProps = _objectWithoutPropertiesLoose(props, _excluded$1);
342
- return /*#__PURE__*/React.createElement(IconButton, _extends({}, otherProps, {
343
- size: "small",
344
- color: color
345
- }), icon);
378
+ return jsx(IconButton, _extends({}, otherProps, {
379
+ size: 'small',
380
+ color: color,
381
+ children: icon
382
+ }));
383
+ }
384
+ function CopyButton(props) {
385
+ var translateString = props.registry.translateString;
386
+ return jsx(MuiIconButton, _extends({
387
+ title: translateString(TranslatableString.CopyButton)
388
+ }, props, {
389
+ icon: jsx(CopyIcon, {
390
+ fontSize: 'small'
391
+ })
392
+ }));
346
393
  }
347
394
  function MoveDownButton(props) {
348
395
  var translateString = props.registry.translateString;
349
- return /*#__PURE__*/React.createElement(MuiIconButton, _extends({
396
+ return jsx(MuiIconButton, _extends({
350
397
  title: translateString(TranslatableString.MoveDownButton)
351
398
  }, props, {
352
- icon: /*#__PURE__*/React.createElement(ArrowDownwardIcon, {
353
- fontSize: "small"
399
+ icon: jsx(ArrowDownwardIcon, {
400
+ fontSize: 'small'
354
401
  })
355
402
  }));
356
403
  }
357
404
  function MoveUpButton(props) {
358
405
  var translateString = props.registry.translateString;
359
- return /*#__PURE__*/React.createElement(MuiIconButton, _extends({
406
+ return jsx(MuiIconButton, _extends({
360
407
  title: translateString(TranslatableString.MoveUpButton)
361
408
  }, props, {
362
- icon: /*#__PURE__*/React.createElement(ArrowUpwardIcon, {
363
- fontSize: "small"
409
+ icon: jsx(ArrowUpwardIcon, {
410
+ fontSize: 'small'
364
411
  })
365
412
  }));
366
413
  }
@@ -368,12 +415,12 @@ function RemoveButton(props) {
368
415
  var iconType = props.iconType,
369
416
  otherProps = _objectWithoutPropertiesLoose(props, _excluded2);
370
417
  var translateString = otherProps.registry.translateString;
371
- return /*#__PURE__*/React.createElement(MuiIconButton, _extends({
418
+ return jsx(MuiIconButton, _extends({
372
419
  title: translateString(TranslatableString.RemoveButton)
373
420
  }, otherProps, {
374
- color: "error",
375
- icon: /*#__PURE__*/React.createElement(RemoveIcon, {
376
- fontSize: iconType === "default" ? undefined : "small"
421
+ color: 'error',
422
+ icon: jsx(RemoveIcon, {
423
+ fontSize: iconType === 'default' ? undefined : 'small'
377
424
  })
378
425
  }));
379
426
  }
@@ -390,17 +437,19 @@ function FieldErrorTemplate(props) {
390
437
  return null;
391
438
  }
392
439
  var id = errorId(idSchema);
393
- return /*#__PURE__*/React.createElement(List, {
440
+ return jsx(List, {
394
441
  dense: true,
395
- disablePadding: true
396
- }, errors.map(function (error, i) {
397
- return /*#__PURE__*/React.createElement(ListItem, {
398
- key: i,
399
- disableGutters: true
400
- }, /*#__PURE__*/React.createElement(FormHelperText, {
401
- id: id
402
- }, error));
403
- }));
442
+ disablePadding: true,
443
+ children: errors.map(function (error, i) {
444
+ return jsx(ListItem, {
445
+ disableGutters: true,
446
+ children: jsx(FormHelperText, {
447
+ id: id,
448
+ children: error
449
+ })
450
+ }, i);
451
+ })
452
+ });
404
453
  }
405
454
 
406
455
  /** The `FieldHelpTemplate` component renders any help desired for a field
@@ -414,9 +463,10 @@ function FieldHelpTemplate(props) {
414
463
  return null;
415
464
  }
416
465
  var id = helpId(idSchema);
417
- return /*#__PURE__*/React.createElement(FormHelperText, {
418
- id: id
419
- }, help);
466
+ return jsx(FormHelperText, {
467
+ id: id,
468
+ children: help
469
+ });
420
470
  }
421
471
 
422
472
  /** The `FieldTemplate` component is the template used by `SchemaField` to render any field. It renders the field
@@ -446,15 +496,16 @@ function FieldTemplate(props) {
446
496
  uiSchema = props.uiSchema,
447
497
  registry = props.registry;
448
498
  var uiOptions = getUiOptions(uiSchema);
449
- var WrapIfAdditionalTemplate = getTemplate("WrapIfAdditionalTemplate", registry, uiOptions);
499
+ var WrapIfAdditionalTemplate = getTemplate('WrapIfAdditionalTemplate', registry, uiOptions);
450
500
  if (hidden) {
451
- return /*#__PURE__*/React.createElement("div", {
501
+ return jsx("div", {
452
502
  style: {
453
- display: "none"
454
- }
455
- }, children);
503
+ display: 'none'
504
+ },
505
+ children: children
506
+ });
456
507
  }
457
- return /*#__PURE__*/React.createElement(WrapIfAdditionalTemplate, {
508
+ return jsx(WrapIfAdditionalTemplate, {
458
509
  classNames: classNames,
459
510
  style: style,
460
511
  disabled: disabled,
@@ -466,15 +517,18 @@ function FieldTemplate(props) {
466
517
  required: required,
467
518
  schema: schema,
468
519
  uiSchema: uiSchema,
469
- registry: registry
470
- }, /*#__PURE__*/React.createElement(FormControl, {
471
- fullWidth: true,
472
- error: rawErrors.length ? true : false,
473
- required: required
474
- }, children, displayLabel && rawDescription ? /*#__PURE__*/React.createElement(Typography, {
475
- variant: "caption",
476
- color: "textSecondary"
477
- }, rawDescription) : null, errors, help));
520
+ registry: registry,
521
+ children: jsxs(FormControl, {
522
+ fullWidth: true,
523
+ error: rawErrors.length ? true : false,
524
+ required: required,
525
+ children: [children, displayLabel && rawDescription ? jsx(Typography, {
526
+ variant: 'caption',
527
+ color: 'textSecondary',
528
+ children: rawDescription
529
+ }) : null, errors, help]
530
+ })
531
+ });
478
532
  }
479
533
 
480
534
  /** The `ObjectFieldTemplate` is the template to use to render all the inner properties of an object along with the
@@ -497,54 +551,59 @@ function ObjectFieldTemplate(props) {
497
551
  onAddClick = props.onAddClick,
498
552
  registry = props.registry;
499
553
  var uiOptions = getUiOptions(uiSchema);
500
- var TitleFieldTemplate = getTemplate("TitleFieldTemplate", registry, uiOptions);
501
- var DescriptionFieldTemplate = getTemplate("DescriptionFieldTemplate", registry, uiOptions);
554
+ var TitleFieldTemplate = getTemplate('TitleFieldTemplate', registry, uiOptions);
555
+ var DescriptionFieldTemplate = getTemplate('DescriptionFieldTemplate', registry, uiOptions);
502
556
  // Button templates are not overridden in the uiSchema
503
557
  var AddButton = registry.templates.ButtonTemplates.AddButton;
504
- return /*#__PURE__*/React.createElement(React.Fragment, null, (uiOptions.title || title) && /*#__PURE__*/React.createElement(TitleFieldTemplate, {
505
- id: titleId(idSchema),
506
- title: title,
507
- required: required,
508
- schema: schema,
509
- uiSchema: uiSchema,
510
- registry: registry
511
- }), (uiOptions.description || description) && /*#__PURE__*/React.createElement(DescriptionFieldTemplate, {
512
- id: descriptionId(idSchema),
513
- description: uiOptions.description || description,
514
- schema: schema,
515
- uiSchema: uiSchema,
516
- registry: registry
517
- }), /*#__PURE__*/React.createElement(Grid, {
518
- container: true,
519
- spacing: 2,
520
- style: {
521
- marginTop: "10px"
522
- }
523
- }, properties.map(function (element, index) {
524
- return (
525
- // Remove the <Grid> if the inner element is hidden as the <Grid>
526
- // itself would otherwise still take up space.
527
- element.hidden ? element.content : /*#__PURE__*/React.createElement(Grid, {
528
- item: true,
529
- xs: 12,
530
- key: index,
531
- style: {
532
- marginBottom: "10px"
533
- }
534
- }, element.content)
535
- );
536
- }), canExpand(schema, uiSchema, formData) && /*#__PURE__*/React.createElement(Grid, {
537
- container: true,
538
- justifyContent: "flex-end"
539
- }, /*#__PURE__*/React.createElement(Grid, {
540
- item: true
541
- }, /*#__PURE__*/React.createElement(AddButton, {
542
- className: "object-property-expand",
543
- onClick: onAddClick(schema),
544
- disabled: disabled || readonly,
545
- uiSchema: uiSchema,
546
- registry: registry
547
- })))));
558
+ return jsxs(Fragment, {
559
+ children: [(uiOptions.title || title) && jsx(TitleFieldTemplate, {
560
+ id: titleId(idSchema),
561
+ title: title,
562
+ required: required,
563
+ schema: schema,
564
+ uiSchema: uiSchema,
565
+ registry: registry
566
+ }), (uiOptions.description || description) && jsx(DescriptionFieldTemplate, {
567
+ id: descriptionId(idSchema),
568
+ description: uiOptions.description || description,
569
+ schema: schema,
570
+ uiSchema: uiSchema,
571
+ registry: registry
572
+ }), jsxs(Grid, {
573
+ container: true,
574
+ spacing: 2,
575
+ style: {
576
+ marginTop: '10px'
577
+ },
578
+ children: [properties.map(function (element, index) {
579
+ return (
580
+ // Remove the <Grid> if the inner element is hidden as the <Grid>
581
+ // itself would otherwise still take up space.
582
+ element.hidden ? element.content : jsx(Grid, {
583
+ item: true,
584
+ xs: 12,
585
+ style: {
586
+ marginBottom: '10px'
587
+ },
588
+ children: element.content
589
+ }, index)
590
+ );
591
+ }), canExpand(schema, uiSchema, formData) && jsx(Grid, {
592
+ container: true,
593
+ justifyContent: 'flex-end',
594
+ children: jsx(Grid, {
595
+ item: true,
596
+ children: jsx(AddButton, {
597
+ className: 'object-property-expand',
598
+ onClick: onAddClick(schema),
599
+ disabled: disabled || readonly,
600
+ uiSchema: uiSchema,
601
+ registry: registry
602
+ })
603
+ })
604
+ })]
605
+ })]
606
+ });
548
607
  }
549
608
 
550
609
  /** The `SubmitButton` renders a button that represent the `Submit` action on a form
@@ -559,13 +618,16 @@ function SubmitButton(_ref) {
559
618
  if (norender) {
560
619
  return null;
561
620
  }
562
- return /*#__PURE__*/React.createElement(Box, {
563
- marginTop: 3
564
- }, /*#__PURE__*/React.createElement(Button, _extends({
565
- type: "submit",
566
- variant: "contained",
567
- color: "primary"
568
- }, submitButtonProps), submitText));
621
+ return jsx(Box, {
622
+ marginTop: 3,
623
+ children: jsx(Button, _extends({
624
+ type: 'submit',
625
+ variant: 'contained',
626
+ color: 'primary'
627
+ }, submitButtonProps, {
628
+ children: submitText
629
+ }))
630
+ });
569
631
  }
570
632
 
571
633
  /** The `TitleField` is the template to use to render the title of a field
@@ -575,13 +637,15 @@ function SubmitButton(_ref) {
575
637
  function TitleField(_ref) {
576
638
  var id = _ref.id,
577
639
  title = _ref.title;
578
- return /*#__PURE__*/React.createElement(Box, {
640
+ return jsxs(Box, {
579
641
  id: id,
580
642
  mb: 1,
581
- mt: 1
582
- }, /*#__PURE__*/React.createElement(Typography, {
583
- variant: "h5"
584
- }, title), /*#__PURE__*/React.createElement(Divider, null));
643
+ mt: 1,
644
+ children: [jsx(Typography, {
645
+ variant: 'h5',
646
+ children: title
647
+ }), jsx(Divider, {})]
648
+ });
585
649
  }
586
650
 
587
651
  /** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are
@@ -613,51 +677,58 @@ function WrapIfAdditionalTemplate(props) {
613
677
  flex: 1,
614
678
  paddingLeft: 6,
615
679
  paddingRight: 6,
616
- fontWeight: "bold"
680
+ fontWeight: 'bold'
617
681
  };
618
682
  if (!additional) {
619
- return /*#__PURE__*/React.createElement("div", {
683
+ return jsx("div", {
620
684
  className: classNames,
621
- style: style
622
- }, children);
685
+ style: style,
686
+ children: children
687
+ });
623
688
  }
624
689
  var handleBlur = function handleBlur(_ref) {
625
690
  var target = _ref.target;
626
691
  return onKeyChange(target.value);
627
692
  };
628
- return /*#__PURE__*/React.createElement(Grid, {
693
+ return jsxs(Grid, {
629
694
  container: true,
630
- key: id + "-key",
631
- alignItems: "center",
695
+ alignItems: 'center',
632
696
  spacing: 2,
633
697
  className: classNames,
634
- style: style
635
- }, /*#__PURE__*/React.createElement(Grid, {
636
- item: true,
637
- xs: true
638
- }, /*#__PURE__*/React.createElement(FormControl, {
639
- fullWidth: true,
640
- required: required
641
- }, /*#__PURE__*/React.createElement(InputLabel, null, keyLabel), /*#__PURE__*/React.createElement(Input, {
642
- defaultValue: label,
643
- disabled: disabled || readonly,
644
- id: id + "-key",
645
- name: id + "-key",
646
- onBlur: !readonly ? handleBlur : undefined,
647
- type: "text"
648
- }))), /*#__PURE__*/React.createElement(Grid, {
649
- item: true,
650
- xs: true
651
- }, children), /*#__PURE__*/React.createElement(Grid, {
652
- item: true
653
- }, /*#__PURE__*/React.createElement(RemoveButton, {
654
- iconType: "default",
655
- style: btnStyle,
656
- disabled: disabled || readonly,
657
- onClick: onDropPropertyClick(label),
658
- uiSchema: uiSchema,
659
- registry: registry
660
- })));
698
+ style: style,
699
+ children: [jsx(Grid, {
700
+ item: true,
701
+ xs: true,
702
+ children: jsxs(FormControl, {
703
+ fullWidth: true,
704
+ required: required,
705
+ children: [jsx(InputLabel, {
706
+ children: keyLabel
707
+ }), jsx(Input, {
708
+ defaultValue: label,
709
+ disabled: disabled || readonly,
710
+ id: id + "-key",
711
+ name: id + "-key",
712
+ onBlur: !readonly ? handleBlur : undefined,
713
+ type: 'text'
714
+ })]
715
+ })
716
+ }), jsx(Grid, {
717
+ item: true,
718
+ xs: true,
719
+ children: children
720
+ }), jsx(Grid, {
721
+ item: true,
722
+ children: jsx(RemoveButton, {
723
+ iconType: 'default',
724
+ style: btnStyle,
725
+ disabled: disabled || readonly,
726
+ onClick: onDropPropertyClick(label),
727
+ uiSchema: uiSchema,
728
+ registry: registry
729
+ })
730
+ })]
731
+ }, id + "-key");
661
732
  }
662
733
 
663
734
  function generateTemplates() {
@@ -667,6 +738,7 @@ function generateTemplates() {
667
738
  BaseInputTemplate: BaseInputTemplate,
668
739
  ButtonTemplates: {
669
740
  AddButton: AddButton,
741
+ CopyButton: CopyButton,
670
742
  MoveDownButton: MoveDownButton,
671
743
  MoveUpButton: MoveUpButton,
672
744
  RemoveButton: RemoveButton,
@@ -715,11 +787,11 @@ function CheckboxWidget(props) {
715
787
  var value = _ref2.target.value;
716
788
  return onFocus(id, value);
717
789
  };
718
- return /*#__PURE__*/React.createElement(FormControlLabel, {
719
- control: /*#__PURE__*/React.createElement(Checkbox, {
790
+ return jsx(FormControlLabel, {
791
+ control: jsx(Checkbox, {
720
792
  id: id,
721
793
  name: id,
722
- checked: typeof value === "undefined" ? false : Boolean(value),
794
+ checked: typeof value === 'undefined' ? false : Boolean(value),
723
795
  required: required,
724
796
  disabled: disabled || readonly,
725
797
  autoFocus: autofocus,
@@ -728,7 +800,7 @@ function CheckboxWidget(props) {
728
800
  onFocus: _onFocus,
729
801
  "aria-describedby": ariaDescribedByIds(id)
730
802
  }),
731
- label: label || ""
803
+ label: label || ''
732
804
  });
733
805
  }
734
806
 
@@ -773,73 +845,35 @@ function CheckboxesWidget(_ref) {
773
845
  var value = _ref4.target.value;
774
846
  return onFocus(id, enumOptionsValueForIndex(value, enumOptions, emptyValue));
775
847
  };
776
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormLabel, {
777
- required: required,
778
- htmlFor: id
779
- }, label || schema.title), /*#__PURE__*/React.createElement(FormGroup, {
780
- id: id,
781
- row: !!inline
782
- }, Array.isArray(enumOptions) && enumOptions.map(function (option, index) {
783
- var checked = enumOptionsIsSelected(option.value, checkboxesValues);
784
- var itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
785
- var checkbox = /*#__PURE__*/React.createElement(Checkbox, {
786
- id: optionId(id, index),
787
- name: id,
788
- checked: checked,
789
- disabled: disabled || itemDisabled || readonly,
790
- autoFocus: autofocus && index === 0,
791
- onChange: _onChange(index),
792
- onBlur: _onBlur,
793
- onFocus: _onFocus,
794
- "aria-describedby": ariaDescribedByIds(id)
795
- });
796
- return /*#__PURE__*/React.createElement(FormControlLabel, {
797
- control: checkbox,
798
- key: index,
799
- label: option.label
800
- });
801
- })));
802
- }
803
-
804
- /** The `DateWidget` component uses the `BaseInputTemplate` changing the type to `date` and transforms
805
- * the value to undefined when it is falsy during the `onChange` handling.
806
- *
807
- * @param props - The `WidgetProps` for this component
808
- */
809
- function DateWidget(props) {
810
- var options = props.options,
811
- registry = props.registry;
812
- var BaseInputTemplate = getTemplate("BaseInputTemplate", registry, options);
813
- return /*#__PURE__*/React.createElement(BaseInputTemplate, _extends({
814
- type: "date",
815
- InputLabelProps: {
816
- shrink: true
817
- }
818
- }, props));
819
- }
820
-
821
- /** The `DateTimeWidget` component uses the `BaseInputTemplate` changing the type to `datetime-local` and transforms
822
- * the value to/from utc using the appropriate utility functions.
823
- *
824
- * @param props - The `WidgetProps` for this component
825
- */
826
- function DateTimeWidget(props) {
827
- var options = props.options,
828
- registry = props.registry;
829
- var BaseInputTemplate = getTemplate("BaseInputTemplate", registry, options);
830
- var value = utcToLocal(props.value);
831
- var onChange = function onChange(value) {
832
- props.onChange(localToUTC(value));
833
- };
834
- return /*#__PURE__*/React.createElement(BaseInputTemplate, _extends({
835
- type: "datetime-local",
836
- InputLabelProps: {
837
- shrink: true
838
- }
839
- }, props, {
840
- value: value,
841
- onChange: onChange
842
- }));
848
+ return jsxs(Fragment, {
849
+ children: [jsx(FormLabel, {
850
+ required: required,
851
+ htmlFor: id,
852
+ children: label || schema.title
853
+ }), jsx(FormGroup, {
854
+ id: id,
855
+ row: !!inline,
856
+ children: Array.isArray(enumOptions) && enumOptions.map(function (option, index) {
857
+ var checked = enumOptionsIsSelected(option.value, checkboxesValues);
858
+ var itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
859
+ var checkbox = jsx(Checkbox, {
860
+ id: optionId(id, index),
861
+ name: id,
862
+ checked: checked,
863
+ disabled: disabled || itemDisabled || readonly,
864
+ autoFocus: autofocus && index === 0,
865
+ onChange: _onChange(index),
866
+ onBlur: _onBlur,
867
+ onFocus: _onFocus,
868
+ "aria-describedby": ariaDescribedByIds(id)
869
+ });
870
+ return jsx(FormControlLabel, {
871
+ control: checkbox,
872
+ label: option.label
873
+ }, index);
874
+ })
875
+ })]
876
+ });
843
877
  }
844
878
 
845
879
  /** The `RadioWidget` is a widget for rendering a radio group.
@@ -875,33 +909,36 @@ function RadioWidget(_ref) {
875
909
  };
876
910
  var row = options ? options.inline : false;
877
911
  var selectedIndex = enumOptionsIndexForValue(value, enumOptions);
878
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormLabel, {
879
- required: required,
880
- htmlFor: id
881
- }, label || schema.title), /*#__PURE__*/React.createElement(RadioGroup, {
882
- id: id,
883
- name: id,
884
- value: selectedIndex,
885
- row: row,
886
- onChange: _onChange,
887
- onBlur: _onBlur,
888
- onFocus: _onFocus,
889
- "aria-describedby": ariaDescribedByIds(id)
890
- }, Array.isArray(enumOptions) && enumOptions.map(function (option, index) {
891
- var itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
892
- var radio = /*#__PURE__*/React.createElement(FormControlLabel, {
893
- control: /*#__PURE__*/React.createElement(Radio, {
894
- name: id,
895
- id: optionId(id, index),
896
- color: "primary"
897
- }),
898
- label: option.label,
899
- value: String(index),
900
- key: index,
901
- disabled: disabled || itemDisabled || readonly
902
- });
903
- return radio;
904
- })));
912
+ return jsxs(Fragment, {
913
+ children: [jsx(FormLabel, {
914
+ required: required,
915
+ htmlFor: id,
916
+ children: label || schema.title
917
+ }), jsx(RadioGroup, {
918
+ id: id,
919
+ name: id,
920
+ value: selectedIndex,
921
+ row: row,
922
+ onChange: _onChange,
923
+ onBlur: _onBlur,
924
+ onFocus: _onFocus,
925
+ "aria-describedby": ariaDescribedByIds(id),
926
+ children: Array.isArray(enumOptions) && enumOptions.map(function (option, index) {
927
+ var itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
928
+ var radio = jsx(FormControlLabel, {
929
+ control: jsx(Radio, {
930
+ name: id,
931
+ id: optionId(id, index),
932
+ color: 'primary'
933
+ }),
934
+ label: option.label,
935
+ value: String(index),
936
+ disabled: disabled || itemDisabled || readonly
937
+ }, index);
938
+ return radio;
939
+ })
940
+ })]
941
+ });
905
942
  }
906
943
 
907
944
  /** The `RangeWidget` component uses the `BaseInputTemplate` changing the type to `range` and wrapping the result
@@ -938,21 +975,24 @@ function RangeWidget(props) {
938
975
  var value = _ref2.target.value;
939
976
  return onFocus(id, value);
940
977
  };
941
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormLabel, {
942
- required: required,
943
- htmlFor: id
944
- }, label || schema.title), /*#__PURE__*/React.createElement(Slider, _extends({
945
- disabled: disabled || readonly,
946
- onChange: _onChange,
947
- onBlur: _onBlur,
948
- onFocus: _onFocus,
949
- valueLabelDisplay: "auto"
950
- }, sliderProps, {
951
- "aria-describedby": ariaDescribedByIds(id)
952
- })));
978
+ return jsxs(Fragment, {
979
+ children: [jsx(FormLabel, {
980
+ required: required,
981
+ htmlFor: id,
982
+ children: label || schema.title
983
+ }), jsx(Slider, _extends({
984
+ disabled: disabled || readonly,
985
+ onChange: _onChange,
986
+ onBlur: _onBlur,
987
+ onFocus: _onFocus,
988
+ valueLabelDisplay: 'auto'
989
+ }, sliderProps, {
990
+ "aria-describedby": ariaDescribedByIds(id)
991
+ }))]
992
+ });
953
993
  }
954
994
 
955
- var _excluded = ["schema", "id", "options", "label", "required", "disabled", "placeholder", "readonly", "value", "multiple", "autofocus", "onChange", "onBlur", "onFocus", "rawErrors", "registry", "uiSchema", "hideError", "formContext"];
995
+ var _excluded = ["schema", "id", "name", "options", "label", "required", "disabled", "placeholder", "readonly", "value", "multiple", "autofocus", "onChange", "onBlur", "onFocus", "rawErrors", "registry", "uiSchema", "hideError", "formContext"];
956
996
  /** The `SelectWidget` is a widget for rendering dropdowns.
957
997
  * It is typically used with string properties constrained with enum options.
958
998
  *
@@ -979,9 +1019,9 @@ function SelectWidget(_ref) {
979
1019
  var enumOptions = options.enumOptions,
980
1020
  enumDisabled = options.enumDisabled,
981
1021
  optEmptyVal = options.emptyValue;
982
- multiple = typeof multiple === "undefined" ? false : !!multiple;
983
- var emptyValue = multiple ? [] : "";
984
- var isEmpty = typeof value === "undefined" || multiple && value.length < 1 || !multiple && value === emptyValue;
1022
+ multiple = typeof multiple === 'undefined' ? false : !!multiple;
1023
+ var emptyValue = multiple ? [] : '';
1024
+ var isEmpty = typeof value === 'undefined' || multiple && value.length < 1 || !multiple && value === emptyValue;
985
1025
  var _onChange = function _onChange(_ref2) {
986
1026
  var value = _ref2.target.value;
987
1027
  return onChange(enumOptionsValueForIndex(value, enumOptions, optEmptyVal));
@@ -995,7 +1035,7 @@ function SelectWidget(_ref) {
995
1035
  return onFocus(id, enumOptionsValueForIndex(value, enumOptions, optEmptyVal));
996
1036
  };
997
1037
  var selectedIndexes = enumOptionsIndexForValue(value, enumOptions, multiple);
998
- return /*#__PURE__*/React.createElement(TextField, _extends({
1038
+ return jsx(TextField, _extends({
999
1039
  id: id,
1000
1040
  name: id,
1001
1041
  label: label || schema.title,
@@ -1017,16 +1057,17 @@ function SelectWidget(_ref) {
1017
1057
  SelectProps: _extends({}, textFieldProps.SelectProps, {
1018
1058
  multiple: multiple
1019
1059
  }),
1020
- "aria-describedby": ariaDescribedByIds(id)
1021
- }), Array.isArray(enumOptions) && enumOptions.map(function (_ref5, i) {
1022
- var value = _ref5.value,
1023
- label = _ref5.label;
1024
- var disabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(value) !== -1;
1025
- return /*#__PURE__*/React.createElement(MenuItem, {
1026
- key: i,
1027
- value: String(i),
1028
- disabled: disabled
1029
- }, label);
1060
+ "aria-describedby": ariaDescribedByIds(id),
1061
+ children: Array.isArray(enumOptions) && enumOptions.map(function (_ref5, i) {
1062
+ var value = _ref5.value,
1063
+ label = _ref5.label;
1064
+ var disabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(value) !== -1;
1065
+ return jsx(MenuItem, {
1066
+ value: String(i),
1067
+ disabled: disabled,
1068
+ children: label
1069
+ }, i);
1070
+ })
1030
1071
  }));
1031
1072
  }
1032
1073
 
@@ -1037,12 +1078,12 @@ function SelectWidget(_ref) {
1037
1078
  function TextareaWidget(props) {
1038
1079
  var options = props.options,
1039
1080
  registry = props.registry;
1040
- var BaseInputTemplate = getTemplate("BaseInputTemplate", registry, options);
1081
+ var BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);
1041
1082
  var rows = 5;
1042
- if (typeof options.rows === "string" || typeof options.rows === "number") {
1083
+ if (typeof options.rows === 'string' || typeof options.rows === 'number') {
1043
1084
  rows = options.rows;
1044
1085
  }
1045
- return /*#__PURE__*/React.createElement(BaseInputTemplate, _extends({}, props, {
1086
+ return jsx(BaseInputTemplate, _extends({}, props, {
1046
1087
  multiline: true,
1047
1088
  rows: rows
1048
1089
  }));
@@ -1052,8 +1093,6 @@ function generateWidgets() {
1052
1093
  return {
1053
1094
  CheckboxWidget: CheckboxWidget,
1054
1095
  CheckboxesWidget: CheckboxesWidget,
1055
- DateWidget: DateWidget,
1056
- DateTimeWidget: DateTimeWidget,
1057
1096
  RadioWidget: RadioWidget,
1058
1097
  RangeWidget: RangeWidget,
1059
1098
  SelectWidget: SelectWidget,