@jsonforms/material-renderers 3.1.0-alpha.1 → 3.1.0-alpha.3

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 (123) hide show
  1. package/README.md +16 -17
  2. package/lib/additional/ListWithDetailMasterItem.d.ts +2 -0
  3. package/lib/additional/MaterialListWithDetailRenderer.d.ts +1 -1
  4. package/lib/additional/index.d.ts +2 -2
  5. package/lib/additional/unwrapped.d.ts +5 -0
  6. package/lib/cells/index.d.ts +1 -1
  7. package/lib/complex/CombinatorProperties.d.ts +1 -2
  8. package/lib/complex/DeleteDialog.d.ts +5 -1
  9. package/lib/complex/MaterialAllOfRenderer.d.ts +1 -1
  10. package/lib/complex/MaterialAnyOfRenderer.d.ts +1 -1
  11. package/lib/complex/MaterialArrayControlRenderer.d.ts +2 -1
  12. package/lib/complex/MaterialEnumArrayRenderer.d.ts +1 -1
  13. package/lib/complex/MaterialObjectRenderer.d.ts +1 -1
  14. package/lib/complex/MaterialOneOfRenderer.d.ts +1 -1
  15. package/lib/complex/MaterialTableControl.d.ts +4 -2
  16. package/lib/complex/NoBorderTableCell.d.ts +2 -2
  17. package/lib/complex/TableToolbar.d.ts +3 -2
  18. package/lib/complex/index.d.ts +11 -16
  19. package/lib/complex/unwrapped.d.ts +9 -0
  20. package/lib/controls/MaterialBooleanControl.d.ts +1 -1
  21. package/lib/controls/MaterialBooleanToggleControl.d.ts +1 -1
  22. package/lib/controls/index.d.ts +8 -26
  23. package/lib/controls/unwrapped.d.ts +19 -0
  24. package/lib/index.d.ts +34 -1
  25. package/lib/jsonforms-react-material.cjs.js +690 -599
  26. package/lib/jsonforms-react-material.cjs.js.map +1 -1
  27. package/lib/jsonforms-react-material.esm.js +620 -557
  28. package/lib/jsonforms-react-material.esm.js.map +1 -1
  29. package/lib/layouts/ArrayToolbar.d.ts +3 -1
  30. package/lib/layouts/ExpandPanelRenderer.d.ts +3 -1
  31. package/lib/layouts/MaterialGroupLayout.d.ts +1 -1
  32. package/lib/layouts/MaterialHorizontalLayout.d.ts +1 -1
  33. package/lib/layouts/MaterialVerticalLayout.d.ts +1 -1
  34. package/lib/layouts/index.d.ts +3 -1
  35. package/lib/layouts/unwrapped.d.ts +10 -0
  36. package/lib/mui-controls/MuiCheckbox.d.ts +1 -1
  37. package/lib/mui-controls/MuiInputInteger.d.ts +1 -1
  38. package/lib/mui-controls/MuiInputNumber.d.ts +1 -1
  39. package/lib/mui-controls/MuiInputNumberFormat.d.ts +1 -1
  40. package/lib/mui-controls/MuiInputText.d.ts +1 -1
  41. package/lib/mui-controls/MuiInputTime.d.ts +1 -1
  42. package/lib/mui-controls/MuiSelect.d.ts +1 -1
  43. package/lib/mui-controls/MuiToggle.d.ts +1 -1
  44. package/lib/mui-controls/index.d.ts +3 -1
  45. package/lib/util/layout.d.ts +2 -3
  46. package/package.json +16 -9
  47. package/src/additional/ListWithDetailMasterItem.tsx +31 -23
  48. package/src/additional/MaterialLabelRenderer.tsx +8 -15
  49. package/src/additional/MaterialListWithDetailRenderer.tsx +8 -5
  50. package/src/additional/index.ts +12 -4
  51. package/src/additional/unwrapped.ts +32 -0
  52. package/src/cells/MaterialBooleanCell.tsx +1 -1
  53. package/src/cells/MaterialBooleanToggleCell.tsx +2 -2
  54. package/src/cells/MaterialDateCell.tsx +4 -12
  55. package/src/cells/MaterialEnumCell.tsx +13 -6
  56. package/src/cells/MaterialIntegerCell.tsx +1 -1
  57. package/src/cells/MaterialNumberCell.tsx +1 -1
  58. package/src/cells/MaterialNumberFormatCell.tsx +1 -1
  59. package/src/cells/MaterialOneOfEnumCell.tsx +17 -7
  60. package/src/cells/MaterialTextCell.tsx +1 -1
  61. package/src/cells/MaterialTimeCell.tsx +1 -1
  62. package/src/cells/index.ts +7 -7
  63. package/src/complex/CombinatorProperties.tsx +20 -9
  64. package/src/complex/DeleteDialog.tsx +48 -37
  65. package/src/complex/MaterialAllOfRenderer.tsx +2 -2
  66. package/src/complex/MaterialAnyOfRenderer.tsx +3 -3
  67. package/src/complex/MaterialArrayControlRenderer.tsx +27 -11
  68. package/src/complex/MaterialEnumArrayRenderer.tsx +6 -8
  69. package/src/complex/MaterialObjectRenderer.tsx +6 -3
  70. package/src/complex/MaterialOneOfRenderer.tsx +105 -88
  71. package/src/complex/MaterialTableControl.tsx +145 -97
  72. package/src/complex/NoBorderTableCell.tsx +3 -5
  73. package/src/complex/TableToolbar.tsx +24 -25
  74. package/src/complex/ValidationIcon.tsx +10 -18
  75. package/src/complex/index.ts +35 -32
  76. package/src/complex/unwrapped.ts +39 -0
  77. package/src/controls/MaterialAnyOfStringOrEnumControl.tsx +19 -11
  78. package/src/controls/MaterialBooleanControl.tsx +22 -16
  79. package/src/controls/MaterialBooleanToggleControl.tsx +22 -16
  80. package/src/controls/MaterialDateControl.tsx +16 -19
  81. package/src/controls/MaterialDateTimeControl.tsx +24 -23
  82. package/src/controls/MaterialEnumControl.tsx +21 -15
  83. package/src/controls/MaterialInputControl.tsx +7 -8
  84. package/src/controls/MaterialIntegerControl.tsx +1 -1
  85. package/src/controls/MaterialNativeControl.tsx +12 -9
  86. package/src/controls/MaterialNumberControl.tsx +1 -1
  87. package/src/controls/MaterialOneOfEnumControl.tsx +21 -15
  88. package/src/controls/MaterialOneOfRadioGroupControl.tsx +5 -3
  89. package/src/controls/MaterialRadioGroup.tsx +11 -17
  90. package/src/controls/MaterialRadioGroupControl.tsx +8 -3
  91. package/src/controls/MaterialSliderControl.tsx +17 -16
  92. package/src/controls/MaterialTextControl.tsx +1 -1
  93. package/src/controls/MaterialTimeControl.tsx +19 -22
  94. package/src/controls/index.ts +36 -72
  95. package/src/controls/unwrapped.ts +57 -0
  96. package/src/index.ts +41 -22
  97. package/src/layouts/ArrayToolbar.tsx +38 -42
  98. package/src/layouts/ExpandPanelRenderer.tsx +96 -67
  99. package/src/layouts/MaterialArrayLayout.tsx +21 -16
  100. package/src/layouts/MaterialArrayLayoutRenderer.tsx +6 -9
  101. package/src/layouts/MaterialCategorizationLayout.tsx +52 -21
  102. package/src/layouts/MaterialCategorizationStepperLayout.tsx +60 -44
  103. package/src/layouts/MaterialGroupLayout.tsx +25 -6
  104. package/src/layouts/MaterialHorizontalLayout.tsx +18 -4
  105. package/src/layouts/MaterialVerticalLayout.tsx +18 -4
  106. package/src/layouts/index.ts +18 -7
  107. package/src/layouts/unwrapped.ts +41 -0
  108. package/src/mui-controls/MuiAutocomplete.tsx +51 -35
  109. package/src/mui-controls/MuiCheckbox.tsx +5 -3
  110. package/src/mui-controls/MuiInputInteger.tsx +31 -32
  111. package/src/mui-controls/MuiInputNumber.tsx +16 -16
  112. package/src/mui-controls/MuiInputNumberFormat.tsx +51 -42
  113. package/src/mui-controls/MuiInputText.tsx +30 -19
  114. package/src/mui-controls/MuiInputTime.tsx +11 -12
  115. package/src/mui-controls/MuiSelect.tsx +15 -6
  116. package/src/mui-controls/MuiToggle.tsx +5 -3
  117. package/src/mui-controls/index.ts +3 -1
  118. package/src/util/datejs.tsx +41 -20
  119. package/src/util/debounce.ts +26 -11
  120. package/src/util/focus.ts +7 -7
  121. package/src/util/i18nDefaults.ts +2 -2
  122. package/src/util/layout.tsx +47 -42
  123. package/src/util/theme.ts +2 -2
@@ -2,14 +2,15 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var core = require('@jsonforms/core');
6
5
  var React = require('react');
6
+ var material = require('@mui/material');
7
+ var core = require('@jsonforms/core');
7
8
  var react = require('@jsonforms/react');
9
+ var omit = require('lodash/omit');
8
10
  var isEmpty = require('lodash/isEmpty');
9
11
  var union = require('lodash/union');
10
12
  var startCase = require('lodash/startCase');
11
13
  var range = require('lodash/range');
12
- var material = require('@mui/material');
13
14
  var DeleteIcon = require('@mui/icons-material/Delete');
14
15
  var ArrowDownward = require('@mui/icons-material/ArrowDownward');
15
16
  var ArrowUpward = require('@mui/icons-material/ArrowUpward');
@@ -17,7 +18,6 @@ var styles$1 = require('@mui/material/styles');
17
18
  var AddIcon = require('@mui/icons-material/Add');
18
19
  var ErrorOutlineIcon = require('@mui/icons-material/ErrorOutline');
19
20
  var merge = require('lodash/merge');
20
- var omit = require('lodash/omit');
21
21
  var dayjs = require('dayjs');
22
22
  var customParsing = require('dayjs/plugin/customParseFormat');
23
23
  var debounce = require('lodash/debounce');
@@ -32,6 +32,7 @@ var Input = require('@mui/material/Input');
32
32
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
33
33
 
34
34
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
35
+ var omit__default = /*#__PURE__*/_interopDefaultLegacy(omit);
35
36
  var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
36
37
  var union__default = /*#__PURE__*/_interopDefaultLegacy(union);
37
38
  var startCase__default = /*#__PURE__*/_interopDefaultLegacy(startCase);
@@ -42,7 +43,6 @@ var ArrowUpward__default = /*#__PURE__*/_interopDefaultLegacy(ArrowUpward);
42
43
  var AddIcon__default = /*#__PURE__*/_interopDefaultLegacy(AddIcon);
43
44
  var ErrorOutlineIcon__default = /*#__PURE__*/_interopDefaultLegacy(ErrorOutlineIcon);
44
45
  var merge__default = /*#__PURE__*/_interopDefaultLegacy(merge);
45
- var omit__default = /*#__PURE__*/_interopDefaultLegacy(omit);
46
46
  var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
47
47
  var customParsing__default = /*#__PURE__*/_interopDefaultLegacy(customParsing);
48
48
  var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
@@ -106,8 +106,58 @@ function __rest(s, e) {
106
106
  return t;
107
107
  }
108
108
 
109
+ var MaterialAllOfRenderer = function (_a) {
110
+ var schema = _a.schema, rootSchema = _a.rootSchema, visible = _a.visible, renderers = _a.renderers, cells = _a.cells, path = _a.path, uischemas = _a.uischemas, uischema = _a.uischema;
111
+ var delegateUISchema = core.findMatchingUISchema(uischemas)(schema, uischema.scope, path);
112
+ if (delegateUISchema) {
113
+ return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
114
+ React__default["default"].createElement(react.JsonFormsDispatch, { schema: schema, uischema: delegateUISchema, path: path, renderers: renderers, cells: cells })));
115
+ }
116
+ var allOfRenderInfos = core.createCombinatorRenderInfos(schema.allOf, rootSchema, 'allOf', uischema, path, uischemas);
117
+ return (React__default["default"].createElement(material.Hidden, { xsUp: !visible }, allOfRenderInfos.map(function (allOfRenderInfo, allOfIndex) { return (React__default["default"].createElement(react.JsonFormsDispatch, { key: allOfIndex, schema: allOfRenderInfo.schema, uischema: allOfRenderInfo.uischema, path: path, renderers: renderers, cells: cells })); })));
118
+ };
119
+ var materialAllOfControlTester = core.rankWith(3, core.isAllOfControl);
120
+ var MaterialAllOfRenderer$1 = react.withJsonFormsAllOfProps(MaterialAllOfRenderer);
121
+
122
+ var CombinatorProperties = (function (_super) {
123
+ __extends(CombinatorProperties, _super);
124
+ function CombinatorProperties() {
125
+ return _super !== null && _super.apply(this, arguments) || this;
126
+ }
127
+ CombinatorProperties.prototype.render = function () {
128
+ var _a = this.props, schema = _a.schema, combinatorKeyword = _a.combinatorKeyword, path = _a.path;
129
+ var otherProps = omit__default["default"](schema, combinatorKeyword);
130
+ var foundUISchema = core.Generate.uiSchema(otherProps, 'VerticalLayout');
131
+ var isLayoutWithElements = false;
132
+ if (foundUISchema !== null && core.isLayout(foundUISchema)) {
133
+ isLayoutWithElements = foundUISchema.elements.length > 0;
134
+ }
135
+ if (isLayoutWithElements) {
136
+ return (React__default["default"].createElement(react.JsonFormsDispatch, { schema: otherProps, path: path, uischema: foundUISchema }));
137
+ }
138
+ return null;
139
+ };
140
+ return CombinatorProperties;
141
+ }(React__default["default"].Component));
142
+
143
+ var MaterialAnyOfRenderer = function (_a) {
144
+ var schema = _a.schema, rootSchema = _a.rootSchema, indexOfFittingSchema = _a.indexOfFittingSchema, visible = _a.visible, path = _a.path, renderers = _a.renderers, cells = _a.cells, uischema = _a.uischema, uischemas = _a.uischemas;
145
+ var _b = React.useState(indexOfFittingSchema || 0), selectedAnyOf = _b[0], setSelectedAnyOf = _b[1];
146
+ var handleChange = React.useCallback(function (_ev, value) { return setSelectedAnyOf(value); }, [setSelectedAnyOf]);
147
+ var anyOf = 'anyOf';
148
+ var anyOfRenderInfos = core.createCombinatorRenderInfos(schema.anyOf, rootSchema, anyOf, uischema, path, uischemas);
149
+ return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
150
+ React__default["default"].createElement(CombinatorProperties, { schema: schema, combinatorKeyword: anyOf, path: path }),
151
+ React__default["default"].createElement(material.Tabs, { value: selectedAnyOf, onChange: handleChange }, anyOfRenderInfos.map(function (anyOfRenderInfo) { return (React__default["default"].createElement(material.Tab, { key: anyOfRenderInfo.label, label: anyOfRenderInfo.label })); })),
152
+ anyOfRenderInfos.map(function (anyOfRenderInfo, anyOfIndex) {
153
+ return selectedAnyOf === anyOfIndex && (React__default["default"].createElement(react.JsonFormsDispatch, { key: anyOfIndex, schema: anyOfRenderInfo.schema, uischema: anyOfRenderInfo.uischema, path: path, renderers: renderers, cells: cells }));
154
+ })));
155
+ };
156
+ var materialAnyOfControlTester = core.rankWith(3, core.isAnyOfControl);
157
+ var MaterialAnyOfRenderer$1 = react.withJsonFormsAnyOfProps(MaterialAnyOfRenderer);
158
+
109
159
  var StyledTableCell = styles$1.styled(material.TableCell)({
110
- borderBottom: 'none'
160
+ borderBottom: 'none',
111
161
  });
112
162
  var NoBorderTableCell = function (_a) {
113
163
  var children = _a.children, otherProps = __rest(_a, ["children"]);
@@ -117,7 +167,7 @@ var NoBorderTableCell = function (_a) {
117
167
  var StyledBadge = material.styled(material.Badge)(function (_a) {
118
168
  var theme = _a.theme;
119
169
  return ({
120
- color: theme.palette.error.main
170
+ color: theme.palette.error.main,
121
171
  });
122
172
  });
123
173
  var ValidationIcon = function (_a) {
@@ -131,19 +181,18 @@ var fixedCellSmall = {
131
181
  paddingLeft: 0,
132
182
  paddingRight: 0,
133
183
  };
134
- var TableToolbar = React__default["default"].memo(function (_a) {
135
- var numColumns = _a.numColumns, errors = _a.errors, label = _a.label, path = _a.path, addItem = _a.addItem, schema = _a.schema, enabled = _a.enabled;
184
+ var TableToolbar = React__default["default"].memo(function TableToolbar(_a) {
185
+ var numColumns = _a.numColumns, errors = _a.errors, label = _a.label, path = _a.path, addItem = _a.addItem, schema = _a.schema, enabled = _a.enabled, translations = _a.translations;
136
186
  return (React__default["default"].createElement(material.TableRow, null,
137
187
  React__default["default"].createElement(NoBorderTableCell, { colSpan: numColumns },
138
188
  React__default["default"].createElement(material.Grid, { container: true, justifyContent: 'flex-start', alignItems: 'center', spacing: 2 },
139
189
  React__default["default"].createElement(material.Grid, { item: true },
140
190
  React__default["default"].createElement(material.Typography, { variant: 'h6' }, label)),
141
- React__default["default"].createElement(material.Grid, { item: true }, errors.length !== 0 &&
142
- React__default["default"].createElement(material.Grid, { item: true },
143
- React__default["default"].createElement(ValidationIcon, { id: 'tooltip-validation', errorMessages: errors }))))),
191
+ React__default["default"].createElement(material.Grid, { item: true }, errors.length !== 0 && (React__default["default"].createElement(material.Grid, { item: true },
192
+ React__default["default"].createElement(ValidationIcon, { id: 'tooltip-validation', errorMessages: errors })))))),
144
193
  enabled ? (React__default["default"].createElement(NoBorderTableCell, { align: 'right', style: fixedCellSmall },
145
- React__default["default"].createElement(material.Tooltip, { id: 'tooltip-add', title: "Add to " + label, placement: 'bottom' },
146
- React__default["default"].createElement(material.IconButton, { "aria-label": "Add to " + label, onClick: addItem(path, core.createDefaultValue(schema)), size: 'large' },
194
+ React__default["default"].createElement(material.Tooltip, { id: 'tooltip-add', title: translations.addTooltip, placement: 'bottom' },
195
+ React__default["default"].createElement(material.IconButton, { "aria-label": translations.addAriaLabel, onClick: addItem(path, core.createDefaultValue(schema)), size: 'large' },
147
196
  React__default["default"].createElement(AddIcon__default["default"], null))))) : null));
148
197
  });
149
198
 
@@ -153,15 +202,15 @@ var styles = {
153
202
  height: '50px',
154
203
  paddingLeft: 0,
155
204
  paddingRight: 0,
156
- textAlign: 'center'
205
+ textAlign: 'center',
157
206
  },
158
207
  fixedCellSmall: {
159
208
  width: '50px',
160
209
  height: '50px',
161
210
  paddingLeft: 0,
162
211
  paddingRight: 0,
163
- textAlign: 'center'
164
- }
212
+ textAlign: 'center',
213
+ },
165
214
  };
166
215
  var generateCells = function (Cell, schema, rowPath, enabled, cells) {
167
216
  if (schema.type === 'object') {
@@ -175,7 +224,7 @@ var generateCells = function (Cell, schema, rowPath, enabled, cells) {
175
224
  rowPath: rowPath,
176
225
  cellPath: cellPath,
177
226
  enabled: enabled,
178
- cells: cells
227
+ cells: cells,
179
228
  };
180
229
  return React__default["default"].createElement(Cell, __assign({ key: cellPath }, props));
181
230
  });
@@ -185,26 +234,27 @@ var generateCells = function (Cell, schema, rowPath, enabled, cells) {
185
234
  schema: schema,
186
235
  rowPath: rowPath,
187
236
  cellPath: rowPath,
188
- enabled: enabled
237
+ enabled: enabled,
189
238
  };
190
239
  return React__default["default"].createElement(Cell, __assign({ key: rowPath }, props));
191
240
  }
192
241
  };
193
242
  var getValidColumnProps = function (scopedSchema) {
194
- if (scopedSchema.type === 'object' && typeof scopedSchema.properties === 'object') {
243
+ if (scopedSchema.type === 'object' &&
244
+ typeof scopedSchema.properties === 'object') {
195
245
  return Object.keys(scopedSchema.properties).filter(function (prop) { return scopedSchema.properties[prop].type !== 'array'; });
196
246
  }
197
247
  return [''];
198
248
  };
199
249
  var EmptyTable = function (_a) {
200
- var numColumns = _a.numColumns;
250
+ var numColumns = _a.numColumns, translations = _a.translations;
201
251
  return (React__default["default"].createElement(material.TableRow, null,
202
252
  React__default["default"].createElement(NoBorderTableCell, { colSpan: numColumns },
203
- React__default["default"].createElement(material.Typography, { align: 'center' }, "No data"))));
253
+ React__default["default"].createElement(material.Typography, { align: 'center' }, translations.noDataMessage))));
204
254
  };
205
- var TableHeaderCell = React__default["default"].memo(function (_a) {
255
+ var TableHeaderCell = React__default["default"].memo(function TableHeaderCell(_a) {
206
256
  var title = _a.title;
207
- return (React__default["default"].createElement(material.TableCell, null, title));
257
+ return React__default["default"].createElement(material.TableCell, null, title);
208
258
  });
209
259
  var ctxToNonEmptyCellProps = function (ctx, ownProps) {
210
260
  var path = ownProps.rowPath +
@@ -219,15 +269,15 @@ var ctxToNonEmptyCellProps = function (ctx, ownProps) {
219
269
  path: path,
220
270
  enabled: ownProps.enabled,
221
271
  cells: ownProps.cells || ctx.cells,
222
- renderers: ownProps.renderers || ctx.renderers
272
+ renderers: ownProps.renderers || ctx.renderers,
223
273
  };
224
274
  };
225
275
  var controlWithoutLabel = function (scope) { return ({
226
276
  type: 'Control',
227
277
  scope: scope,
228
- label: false
278
+ label: false,
229
279
  }); };
230
- var NonEmptyCellComponent = React__default["default"].memo(function (_a) {
280
+ var NonEmptyCellComponent = React__default["default"].memo(function NonEmptyCellComponent(_a) {
231
281
  var path = _a.path, propName = _a.propName, schema = _a.schema, rootSchema = _a.rootSchema, errors = _a.errors, enabled = _a.enabled, renderers = _a.renderers, cells = _a.cells, isValid = _a.isValid;
232
282
  return (React__default["default"].createElement(NoBorderTableCell, null,
233
283
  schema.properties ? (React__default["default"].createElement(react.DispatchCell, { schema: core.Resolve.schema(schema, "#/properties/" + core.encode(propName), rootSchema), uischema: controlWithoutLabel("#/properties/" + core.encode(propName)), path: path, enabled: enabled, renderers: renderers, cells: cells })) : (React__default["default"].createElement(react.DispatchCell, { schema: schema, uischema: controlWithoutLabel('#'), path: path, enabled: enabled, renderers: renderers, cells: cells })),
@@ -240,7 +290,7 @@ var NonEmptyCell = function (ownProps) {
240
290
  return React__default["default"].createElement(NonEmptyCellComponent, __assign({}, emptyCellProps, { isValid: isValid }));
241
291
  };
242
292
  var NonEmptyRowComponent = function (_a) {
243
- var childPath = _a.childPath, schema = _a.schema, rowIndex = _a.rowIndex, openDeleteDialog = _a.openDeleteDialog, moveUpCreator = _a.moveUpCreator, moveDownCreator = _a.moveDownCreator, enableUp = _a.enableUp, enableDown = _a.enableDown, showSortButtons = _a.showSortButtons, enabled = _a.enabled, cells = _a.cells, path = _a.path;
293
+ var childPath = _a.childPath, schema = _a.schema, rowIndex = _a.rowIndex, openDeleteDialog = _a.openDeleteDialog, moveUpCreator = _a.moveUpCreator, moveDownCreator = _a.moveDownCreator, enableUp = _a.enableUp, enableDown = _a.enableDown, showSortButtons = _a.showSortButtons, enabled = _a.enabled, cells = _a.cells, path = _a.path, translations = _a.translations;
244
294
  var moveUp = React.useMemo(function () { return moveUpCreator(path, rowIndex); }, [moveUpCreator, path, rowIndex]);
245
295
  var moveDown = React.useMemo(function () { return moveDownCreator(path, rowIndex); }, [moveDownCreator, path, rowIndex]);
246
296
  return (React__default["default"].createElement(material.TableRow, { key: childPath, hover: true },
@@ -249,26 +299,27 @@ var NonEmptyRowComponent = function (_a) {
249
299
  React__default["default"].createElement(material.Grid, { container: true, direction: 'row', justifyContent: 'flex-end', alignItems: 'center' },
250
300
  showSortButtons ? (React__default["default"].createElement(React.Fragment, null,
251
301
  React__default["default"].createElement(material.Grid, { item: true },
252
- React__default["default"].createElement(material.IconButton, { "aria-label": "Move up", onClick: moveUp, disabled: !enableUp, size: 'large' },
302
+ React__default["default"].createElement(material.IconButton, { "aria-label": translations.upAriaLabel, onClick: moveUp, disabled: !enableUp, size: 'large' },
253
303
  React__default["default"].createElement(ArrowUpward__default["default"], null))),
254
304
  React__default["default"].createElement(material.Grid, { item: true },
255
- React__default["default"].createElement(material.IconButton, { "aria-label": "Move down", onClick: moveDown, disabled: !enableDown, size: 'large' },
305
+ React__default["default"].createElement(material.IconButton, { "aria-label": translations.downAriaLabel, onClick: moveDown, disabled: !enableDown, size: 'large' },
256
306
  React__default["default"].createElement(ArrowDownward__default["default"], null))))) : null,
257
307
  React__default["default"].createElement(material.Grid, { item: true },
258
- React__default["default"].createElement(material.IconButton, { "aria-label": "Delete", onClick: function () { return openDeleteDialog(childPath, rowIndex); }, size: 'large' },
308
+ React__default["default"].createElement(material.IconButton, { "aria-label": translations.removeAriaLabel, onClick: function () { return openDeleteDialog(childPath, rowIndex); }, size: 'large' },
259
309
  React__default["default"].createElement(DeleteIcon__default["default"], null)))))) : null));
260
310
  };
261
311
  var NonEmptyRow = React__default["default"].memo(NonEmptyRowComponent);
262
312
  var TableRows = function (_a) {
263
- var data = _a.data, path = _a.path, schema = _a.schema, openDeleteDialog = _a.openDeleteDialog, moveUp = _a.moveUp, moveDown = _a.moveDown, uischema = _a.uischema, config = _a.config, enabled = _a.enabled, cells = _a.cells;
313
+ var data = _a.data, path = _a.path, schema = _a.schema, openDeleteDialog = _a.openDeleteDialog, moveUp = _a.moveUp, moveDown = _a.moveDown, uischema = _a.uischema, config = _a.config, enabled = _a.enabled, cells = _a.cells, translations = _a.translations;
264
314
  var isEmptyTable = data === 0;
265
315
  if (isEmptyTable) {
266
- return React__default["default"].createElement(EmptyTable, { numColumns: getValidColumnProps(schema).length + 1 });
316
+ return (React__default["default"].createElement(EmptyTable, { numColumns: getValidColumnProps(schema).length + 1, translations: translations }));
267
317
  }
268
318
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
269
319
  return (React__default["default"].createElement(React__default["default"].Fragment, null, range__default["default"](data).map(function (index) {
270
320
  var childPath = core.Paths.compose(path, "" + index);
271
- return (React__default["default"].createElement(NonEmptyRow, { key: childPath, childPath: childPath, rowIndex: index, schema: schema, openDeleteDialog: openDeleteDialog, moveUpCreator: moveUp, moveDownCreator: moveDown, enableUp: index !== 0, enableDown: index !== data - 1, showSortButtons: appliedUiSchemaOptions.showSortButtons || appliedUiSchemaOptions.showArrayTableSortButtons, enabled: enabled, cells: cells, path: path }));
321
+ return (React__default["default"].createElement(NonEmptyRow, { key: childPath, childPath: childPath, rowIndex: index, schema: schema, openDeleteDialog: openDeleteDialog, moveUpCreator: moveUp, moveDownCreator: moveDown, enableUp: index !== 0, enableDown: index !== data - 1, showSortButtons: appliedUiSchemaOptions.showSortButtons ||
322
+ appliedUiSchemaOptions.showArrayTableSortButtons, enabled: enabled, cells: cells, path: path, translations: translations }));
272
323
  })));
273
324
  };
274
325
  var MaterialTableControl = (function (_super) {
@@ -279,7 +330,7 @@ var MaterialTableControl = (function (_super) {
279
330
  return _this;
280
331
  }
281
332
  MaterialTableControl.prototype.render = function () {
282
- var _a = this.props, label = _a.label, path = _a.path, schema = _a.schema, rootSchema = _a.rootSchema, uischema = _a.uischema, errors = _a.errors, openDeleteDialog = _a.openDeleteDialog, visible = _a.visible, enabled = _a.enabled, cells = _a.cells;
333
+ var _a = this.props, label = _a.label, path = _a.path, schema = _a.schema, rootSchema = _a.rootSchema, uischema = _a.uischema, errors = _a.errors, openDeleteDialog = _a.openDeleteDialog, visible = _a.visible, enabled = _a.enabled, cells = _a.cells, translations = _a.translations;
283
334
  var controlElement = uischema;
284
335
  var isObjectSchema = schema.type === 'object';
285
336
  var headerCells = isObjectSchema
@@ -288,25 +339,25 @@ var MaterialTableControl = (function (_super) {
288
339
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
289
340
  React__default["default"].createElement(material.Table, null,
290
341
  React__default["default"].createElement(material.TableHead, null,
291
- React__default["default"].createElement(TableToolbar, { errors: errors, label: label, addItem: this.addItem, numColumns: isObjectSchema ? headerCells.length : 1, path: path, uischema: controlElement, schema: schema, rootSchema: rootSchema, enabled: enabled }),
342
+ React__default["default"].createElement(TableToolbar, { errors: errors, label: label, addItem: this.addItem, numColumns: isObjectSchema ? headerCells.length : 1, path: path, uischema: controlElement, schema: schema, rootSchema: rootSchema, enabled: enabled, translations: translations }),
292
343
  isObjectSchema && (React__default["default"].createElement(material.TableRow, null,
293
344
  headerCells,
294
345
  enabled ? React__default["default"].createElement(material.TableCell, null) : null))),
295
346
  React__default["default"].createElement(material.TableBody, null,
296
- React__default["default"].createElement(TableRows, __assign({ openDeleteDialog: openDeleteDialog }, this.props))))));
347
+ React__default["default"].createElement(TableRows, __assign({ openDeleteDialog: openDeleteDialog, translations: translations }, this.props))))));
297
348
  };
298
349
  return MaterialTableControl;
299
350
  }(React__default["default"].Component));
300
351
 
301
- var DeleteDialog = React__default["default"].memo(function (_a) {
302
- var open = _a.open, onClose = _a.onClose, onConfirm = _a.onConfirm, onCancel = _a.onCancel;
352
+ var DeleteDialog = React__default["default"].memo(function DeleteDialog(_a) {
353
+ var open = _a.open, onClose = _a.onClose, onConfirm = _a.onConfirm, onCancel = _a.onCancel, title = _a.title, message = _a.message, acceptText = _a.acceptText, declineText = _a.declineText;
303
354
  return (React__default["default"].createElement(material.Dialog, { open: open, keepMounted: true, onClose: onClose, "aria-labelledby": 'alert-dialog-confirmdelete-title', "aria-describedby": 'alert-dialog-confirmdelete-description' },
304
- React__default["default"].createElement(material.DialogTitle, { id: 'alert-dialog-confirmdelete-title' }, 'Confirm Deletion'),
355
+ React__default["default"].createElement(material.DialogTitle, { id: 'alert-dialog-confirmdelete-title' }, title),
305
356
  React__default["default"].createElement(material.DialogContent, null,
306
- React__default["default"].createElement(material.DialogContentText, { id: 'alert-dialog-confirmdelete-description' }, "Are you sure you want to delete the selected entry?")),
357
+ React__default["default"].createElement(material.DialogContentText, { id: 'alert-dialog-confirmdelete-description' }, message)),
307
358
  React__default["default"].createElement(material.DialogActions, null,
308
- React__default["default"].createElement(material.Button, { onClick: onCancel, color: 'primary' }, "No"),
309
- React__default["default"].createElement(material.Button, { onClick: onConfirm, color: 'primary' }, "Yes"))));
359
+ React__default["default"].createElement(material.Button, { onClick: onCancel, color: 'primary' }, declineText),
360
+ React__default["default"].createElement(material.Button, { onClick: onConfirm, color: 'primary' }, acceptText))));
310
361
  });
311
362
 
312
363
  var MaterialArrayControlRenderer = function (props) {
@@ -321,142 +372,72 @@ var MaterialArrayControlRenderer = function (props) {
321
372
  }, [setOpen, setPath, setRowData]);
322
373
  var deleteCancel = React.useCallback(function () { return setOpen(false); }, [setOpen]);
323
374
  var deleteConfirm = React.useCallback(function () {
324
- var p = path.substring(0, path.lastIndexOf(('.')));
375
+ var p = path.substring(0, path.lastIndexOf('.'));
325
376
  removeItems(p, [rowData])();
326
377
  setOpen(false);
327
378
  }, [setOpen, path, rowData]);
328
379
  var deleteClose = React.useCallback(function () { return setOpen(false); }, [setOpen]);
329
380
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
330
381
  React__default["default"].createElement(MaterialTableControl, __assign({}, props, { openDeleteDialog: openDeleteDialog })),
331
- React__default["default"].createElement(DeleteDialog, { open: open, onCancel: deleteCancel, onConfirm: deleteConfirm, onClose: deleteClose })));
382
+ React__default["default"].createElement(DeleteDialog, { open: open, onCancel: deleteCancel, onConfirm: deleteConfirm, onClose: deleteClose, acceptText: props.translations.deleteDialogAccept, declineText: props.translations.deleteDialogDecline, title: props.translations.deleteDialogTitle, message: props.translations.deleteDialogMessage })));
332
383
  };
384
+ var materialArrayControlTester = core.rankWith(3, core.or(core.isObjectArrayControl, core.isPrimitiveArrayControl));
333
385
  var MaterialArrayControlRenderer$1 = react.withJsonFormsArrayLayoutProps(MaterialArrayControlRenderer);
334
386
 
335
- var MaterialObjectRenderer = function (_a) {
336
- var renderers = _a.renderers, cells = _a.cells, uischemas = _a.uischemas, schema = _a.schema, label = _a.label, path = _a.path, visible = _a.visible, enabled = _a.enabled, uischema = _a.uischema, rootSchema = _a.rootSchema;
337
- var detailUiSchema = React.useMemo(function () {
338
- return core.findUISchema(uischemas, schema, uischema.scope, path, function () { return isEmpty__default["default"](path) ? core.Generate.uiSchema(schema, 'VerticalLayout') : __assign(__assign({}, core.Generate.uiSchema(schema, 'Group')), { label: label }); }, uischema, rootSchema);
339
- }, [uischemas, schema, uischema.scope, path, label, uischema, rootSchema]);
340
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
341
- React__default["default"].createElement(react.JsonFormsDispatch, { visible: visible, enabled: enabled, schema: schema, uischema: detailUiSchema, path: path, renderers: renderers, cells: cells })));
342
- };
343
- var materialObjectControlTester = core.rankWith(2, core.isObjectControl);
344
- var MaterialObjectRenderer$1 = react.withJsonFormsDetailProps(MaterialObjectRenderer);
345
-
346
- var MaterialAllOfRenderer = function (_a) {
347
- var schema = _a.schema, rootSchema = _a.rootSchema, visible = _a.visible, renderers = _a.renderers, cells = _a.cells, path = _a.path, uischemas = _a.uischemas, uischema = _a.uischema;
348
- var delegateUISchema = core.findMatchingUISchema(uischemas)(schema, uischema.scope, path);
349
- if (delegateUISchema) {
350
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
351
- React__default["default"].createElement(react.JsonFormsDispatch, { schema: schema, uischema: delegateUISchema, path: path, renderers: renderers, cells: cells })));
352
- }
353
- var allOfRenderInfos = core.createCombinatorRenderInfos(schema.allOf, rootSchema, 'allOf', uischema, path, uischemas);
354
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible }, allOfRenderInfos.map(function (allOfRenderInfo, allOfIndex) { return (React__default["default"].createElement(react.JsonFormsDispatch, { key: allOfIndex, schema: allOfRenderInfo.schema, uischema: allOfRenderInfo.uischema, path: path, renderers: renderers, cells: cells })); })));
355
- };
356
- var materialAllOfControlTester = core.rankWith(3, core.isAllOfControl);
357
- var MaterialAllOfRenderer$1 = react.withJsonFormsAllOfProps(MaterialAllOfRenderer);
358
-
359
- var isLayout = function (uischema) {
360
- return uischema.hasOwnProperty('elements');
361
- };
362
- var CombinatorProperties = (function (_super) {
363
- __extends(CombinatorProperties, _super);
364
- function CombinatorProperties() {
365
- return _super !== null && _super.apply(this, arguments) || this;
366
- }
367
- CombinatorProperties.prototype.render = function () {
368
- var _a = this.props, schema = _a.schema, combinatorKeyword = _a.combinatorKeyword, path = _a.path;
369
- var otherProps = omit__default["default"](schema, combinatorKeyword);
370
- var foundUISchema = core.Generate.uiSchema(otherProps, 'VerticalLayout');
371
- var isLayoutWithElements = false;
372
- if (foundUISchema !== null && isLayout(foundUISchema)) {
373
- isLayoutWithElements = foundUISchema.elements.length > 0;
374
- }
375
- if (isLayoutWithElements) {
376
- return (React__default["default"].createElement(react.JsonFormsDispatch, { schema: otherProps, path: path, uischema: foundUISchema }));
377
- }
378
- return null;
379
- };
380
- return CombinatorProperties;
381
- }(React__default["default"].Component));
382
-
383
- var MaterialAnyOfRenderer = function (_a) {
384
- var schema = _a.schema, rootSchema = _a.rootSchema, indexOfFittingSchema = _a.indexOfFittingSchema, visible = _a.visible, path = _a.path, renderers = _a.renderers, cells = _a.cells, uischema = _a.uischema, uischemas = _a.uischemas;
385
- var _b = React.useState(indexOfFittingSchema || 0), selectedAnyOf = _b[0], setSelectedAnyOf = _b[1];
386
- var handleChange = React.useCallback(function (_ev, value) { return setSelectedAnyOf(value); }, [setSelectedAnyOf]);
387
- var anyOf = 'anyOf';
388
- var anyOfRenderInfos = core.createCombinatorRenderInfos(schema.anyOf, rootSchema, anyOf, uischema, path, uischemas);
389
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
390
- React__default["default"].createElement(CombinatorProperties, { schema: schema, combinatorKeyword: anyOf, path: path }),
391
- React__default["default"].createElement(material.Tabs, { value: selectedAnyOf, onChange: handleChange }, anyOfRenderInfos.map(function (anyOfRenderInfo) { return (React__default["default"].createElement(material.Tab, { key: anyOfRenderInfo.label, label: anyOfRenderInfo.label })); })),
392
- anyOfRenderInfos.map(function (anyOfRenderInfo, anyOfIndex) {
393
- return selectedAnyOf === anyOfIndex && (React__default["default"].createElement(react.JsonFormsDispatch, { key: anyOfIndex, schema: anyOfRenderInfo.schema, uischema: anyOfRenderInfo.uischema, path: path, renderers: renderers, cells: cells }));
394
- })));
387
+ var useFocus = function () {
388
+ var _a = React.useState(false), focused = _a[0], setFocused = _a[1];
389
+ var onFocus = React.useCallback(function () { return setFocused(true); }, []);
390
+ var onBlur = React.useCallback(function () { return setFocused(false); }, []);
391
+ return [focused, onFocus, onBlur];
395
392
  };
396
- var materialAnyOfControlTester = core.rankWith(3, core.isAnyOfControl);
397
- var MaterialAnyOfRenderer$1 = react.withJsonFormsAnyOfProps(MaterialAnyOfRenderer);
398
393
 
399
- var MaterialOneOfRenderer = function (_a) {
400
- var handleChange = _a.handleChange, schema = _a.schema, path = _a.path, renderers = _a.renderers, cells = _a.cells, rootSchema = _a.rootSchema, id = _a.id, visible = _a.visible, indexOfFittingSchema = _a.indexOfFittingSchema, uischema = _a.uischema, uischemas = _a.uischemas, data = _a.data;
401
- var _b = React.useState(false), open = _b[0], setOpen = _b[1];
402
- var _c = React.useState(indexOfFittingSchema || 0), selectedIndex = _c[0], setSelectedIndex = _c[1];
403
- var _d = React.useState(0), newSelectedIndex = _d[0], setNewSelectedIndex = _d[1];
404
- var handleClose = React.useCallback(function () { return setOpen(false); }, [setOpen]);
405
- var cancel = React.useCallback(function () {
406
- setOpen(false);
407
- }, [setOpen]);
408
- var oneOfRenderInfos = core.createCombinatorRenderInfos(schema.oneOf, rootSchema, 'oneOf', uischema, path, uischemas);
409
- var openNewTab = function (newIndex) {
410
- handleChange(path, core.createDefaultValue(oneOfRenderInfos[newIndex].schema));
411
- setSelectedIndex(newIndex);
412
- };
413
- var confirm = React.useCallback(function () {
414
- openNewTab(newSelectedIndex);
415
- setOpen(false);
416
- }, [handleChange, core.createDefaultValue, newSelectedIndex]);
417
- var handleTabChange = React.useCallback(function (_event, newOneOfIndex) {
418
- setNewSelectedIndex(newOneOfIndex);
419
- if (isEmpty__default["default"](data)) {
420
- openNewTab(newOneOfIndex);
421
- }
422
- else {
423
- setOpen(true);
424
- }
425
- }, [setOpen, setSelectedIndex, data]);
394
+ var MuiAutocomplete = function (props) {
395
+ var _a;
396
+ var description = props.description, errors = props.errors, visible = props.visible, required = props.required, label = props.label, data = props.data, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, path = props.path, handleChange = props.handleChange, options = props.options, config = props.config, getOptionLabel = props.getOptionLabel, renderOption = props.renderOption, filterOptions = props.filterOptions, isValid = props.isValid;
397
+ var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
398
+ var _b = React__default["default"].useState(data !== null && data !== void 0 ? data : ''), inputValue = _b[0], setInputValue = _b[1];
399
+ var _c = useFocus(), focused = _c[0], onFocus = _c[1], onBlur = _c[2];
400
+ var findOption = (_a = options.find(function (o) { return o.value === data; })) !== null && _a !== void 0 ? _a : null;
401
+ var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
402
+ var firstFormHelperText = showDescription
403
+ ? description
404
+ : !isValid
405
+ ? errors
406
+ : null;
407
+ var secondFormHelperText = showDescription && !isValid ? errors : null;
426
408
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
427
- React__default["default"].createElement(CombinatorProperties, { schema: schema, combinatorKeyword: 'oneOf', path: path }),
428
- React__default["default"].createElement(material.Tabs, { value: selectedIndex, onChange: handleTabChange }, oneOfRenderInfos.map(function (oneOfRenderInfo) { return React__default["default"].createElement(material.Tab, { key: oneOfRenderInfo.label, label: oneOfRenderInfo.label }); })),
429
- oneOfRenderInfos.map(function (oneOfRenderInfo, oneOfIndex) { return (selectedIndex === oneOfIndex && (React__default["default"].createElement(react.JsonFormsDispatch, { key: oneOfIndex, schema: oneOfRenderInfo.schema, uischema: oneOfRenderInfo.uischema, path: path, renderers: renderers, cells: cells }))); }),
430
- React__default["default"].createElement(material.Dialog, { open: open, onClose: handleClose, "aria-labelledby": 'alert-dialog-title', "aria-describedby": 'alert-dialog-description' },
431
- React__default["default"].createElement(material.DialogTitle, { id: 'alert-dialog-title' }, 'Clear form?'),
432
- React__default["default"].createElement(material.DialogContent, null,
433
- React__default["default"].createElement(material.DialogContentText, { id: 'alert-dialog-description' }, "Your data will be cleared if you navigate away from this tab. Do you want to proceed?")),
434
- React__default["default"].createElement(material.DialogActions, null,
435
- React__default["default"].createElement(material.Button, { onClick: cancel, color: 'primary' }, "No"),
436
- React__default["default"].createElement(material.Button, { onClick: confirm, color: 'primary', autoFocus: true, id: "oneOf-" + id + "-confirm-yes" }, "Yes")))));
409
+ React__default["default"].createElement(material.Autocomplete, { className: className, id: id, disabled: !enabled, value: findOption, onChange: function (_event, newValue) {
410
+ handleChange(path, newValue === null || newValue === void 0 ? void 0 : newValue.value);
411
+ }, inputValue: inputValue, onInputChange: function (_event, newInputValue) {
412
+ setInputValue(newInputValue);
413
+ }, autoHighlight: true, autoSelect: true, autoComplete: true, fullWidth: true, options: options, getOptionLabel: getOptionLabel || (function (option) { return option === null || option === void 0 ? void 0 : option.label; }), freeSolo: false, renderInput: function (params) {
414
+ return (React__default["default"].createElement(material.TextField, __assign({ label: label, variant: 'standard', type: 'text', inputProps: params.inputProps, inputRef: params.InputProps.ref, autoFocus: appliedUiSchemaOptions.focus, disabled: !enabled }, params, { id: id + '-input', required: required && !appliedUiSchemaOptions.hideRequiredAsterisk, error: !isValid, fullWidth: !appliedUiSchemaOptions.trim, InputLabelProps: data ? { shrink: true } : undefined, onFocus: onFocus, onBlur: onBlur, focused: focused })));
415
+ }, renderOption: renderOption, filterOptions: filterOptions }),
416
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
417
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText)));
437
418
  };
438
- var materialOneOfControlTester = core.rankWith(3, core.isOneOfControl);
439
- var MaterialOneOfRenderer$1 = react.withJsonFormsOneOfProps(MaterialOneOfRenderer);
440
419
 
441
- var MuiCheckbox = React__default["default"].memo(function (props) {
420
+ var MuiCheckbox = React__default["default"].memo(function MuiCheckbox(props) {
442
421
  var data = props.data, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, path = props.path, handleChange = props.handleChange, config = props.config, inputProps = props.inputProps;
443
422
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
444
423
  var inputPropsMerged = merge__default["default"]({}, inputProps, {
445
- autoFocus: !!appliedUiSchemaOptions.focus
424
+ autoFocus: !!appliedUiSchemaOptions.focus,
446
425
  });
447
426
  var checked = !!data;
448
427
  return (React__default["default"].createElement(material.Checkbox, { checked: checked, onChange: function (_ev, isChecked) { return handleChange(path, isChecked); }, className: className, id: id, disabled: !enabled, inputProps: inputPropsMerged }));
449
428
  });
450
429
 
451
430
  dayjs__default["default"].extend(customParsing__default["default"]);
452
- var createOnChangeHandler = function (path, handleChange, saveFormat) { return function (time, textInputValue) {
453
- if (!time) {
454
- handleChange(path, undefined);
455
- return;
456
- }
457
- var result = dayjs__default["default"](time).format(saveFormat);
458
- handleChange(path, result === 'Invalid Date' ? textInputValue : result);
459
- }; };
431
+ var createOnChangeHandler = function (path, handleChange, saveFormat) {
432
+ return function (time, textInputValue) {
433
+ if (!time) {
434
+ handleChange(path, undefined);
435
+ return;
436
+ }
437
+ var result = dayjs__default["default"](time).format(saveFormat);
438
+ handleChange(path, result === 'Invalid Date' ? textInputValue : result);
439
+ };
440
+ };
460
441
  var getData = function (data, saveFormat) {
461
442
  if (!data) {
462
443
  return null;
@@ -469,10 +450,18 @@ var getData = function (data, saveFormat) {
469
450
  };
470
451
  var ResettableTextField = function (_a) {
471
452
  var rawValue = _a.rawValue, dayjsValueIsValid = _a.dayjsValueIsValid, valueInInputFormat = _a.valueInInputFormat, focused = _a.focused, inputProps = _a.inputProps, props = __rest(_a, ["rawValue", "dayjsValueIsValid", "valueInInputFormat", "focused", "inputProps"]);
472
- var value = React.useRef({ lastInput: inputProps === null || inputProps === void 0 ? void 0 : inputProps.value, toShow: inputProps === null || inputProps === void 0 ? void 0 : inputProps.value });
453
+ var value = React.useRef({
454
+ lastInput: inputProps === null || inputProps === void 0 ? void 0 : inputProps.value,
455
+ toShow: inputProps === null || inputProps === void 0 ? void 0 : inputProps.value,
456
+ });
473
457
  if (!focused) {
474
458
  if (!dayjsValueIsValid) {
475
- value.current.toShow = typeof rawValue === 'string' || rawValue === null || rawValue === undefined ? rawValue : JSON.stringify(rawValue);
459
+ value.current.toShow =
460
+ typeof rawValue === 'string' ||
461
+ rawValue === null ||
462
+ rawValue === undefined
463
+ ? rawValue
464
+ : JSON.stringify(rawValue);
476
465
  }
477
466
  else {
478
467
  value.current.toShow = valueInInputFormat;
@@ -482,7 +471,7 @@ var ResettableTextField = function (_a) {
482
471
  value.current.lastInput = inputProps === null || inputProps === void 0 ? void 0 : inputProps.value;
483
472
  value.current.toShow = inputProps === null || inputProps === void 0 ? void 0 : inputProps.value;
484
473
  }
485
- return React__default["default"].createElement(material.TextField, __assign({}, props, { inputProps: __assign(__assign({}, inputProps), { value: value.current.toShow || '' }) }));
474
+ return (React__default["default"].createElement(material.TextField, __assign({}, props, { inputProps: __assign(__assign({}, inputProps), { value: value.current.toShow || '' }) })));
486
475
  };
487
476
 
488
477
  var renderLayoutElements = function (elements, schema, path, enabled, renderers, cells) {
@@ -501,10 +490,10 @@ var MaterialLayoutRendererComponent = function (_a) {
501
490
  };
502
491
  var MaterialLayoutRenderer = React__default["default"].memo(MaterialLayoutRendererComponent);
503
492
  var withAjvProps = function (Component) {
504
- return function (props) {
493
+ return function WithAjvProps(props) {
505
494
  var ctx = react.useJsonForms();
506
495
  var ajv = core.getAjv({ jsonforms: __assign({}, ctx) });
507
- return (React__default["default"].createElement(Component, __assign({}, props, { ajv: ajv })));
496
+ return React__default["default"].createElement(Component, __assign({}, props, { ajv: ajv }));
508
497
  };
509
498
  };
510
499
 
@@ -522,34 +511,22 @@ var useDebouncedChange = function (handleChange, defaultValue, data, path, event
522
511
  setInput(newValue !== null && newValue !== void 0 ? newValue : defaultValue);
523
512
  debouncedUpdate(newValue);
524
513
  }, [debouncedUpdate, eventToValueFunction]);
525
- var onClear = React.useCallback(function () { setInput(defaultValue); handleChange(path, undefined); }, [defaultValue, handleChange, path]);
514
+ var onClear = React.useCallback(function () {
515
+ setInput(defaultValue);
516
+ handleChange(path, undefined);
517
+ }, [defaultValue, handleChange, path]);
526
518
  return [input, onChange, onClear];
527
519
  };
528
520
 
529
- var useFocus = function () {
530
- var _a = React.useState(false), focused = _a[0], setFocused = _a[1];
531
- var onFocus = React.useCallback(function () { return setFocused(true); }, []);
532
- var onBlur = React.useCallback(function () { return setFocused(false); }, []);
533
- return [focused, onFocus, onBlur];
534
- };
535
-
536
521
  var i18nDefaults = {
537
- 'enum.none': 'None'
522
+ 'enum.none': 'None',
538
523
  };
539
524
 
540
- var MuiSelect = React__default["default"].memo(function (props) {
541
- var data = props.data, className = props.className, id = props.id, enabled = props.enabled, schema = props.schema, uischema = props.uischema, path = props.path, handleChange = props.handleChange, options = props.options, config = props.config, t = props.t;
542
- var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
543
- var noneOptionLabel = React.useMemo(function () { return t('enum.none', i18nDefaults['enum.none'], { schema: schema, uischema: uischema, path: path }); }, [t, schema, uischema, path]);
544
- return (React__default["default"].createElement(material.Select, { className: className, id: id, disabled: !enabled, autoFocus: appliedUiSchemaOptions.focus, value: data !== undefined ? data : '', onChange: function (ev) { return handleChange(path, ev.target.value || undefined); }, fullWidth: true, variant: 'standard' }, [React__default["default"].createElement(material.MenuItem, { value: '', key: 'jsonforms.enum.none' },
545
- React__default["default"].createElement("em", null, noneOptionLabel))].concat(options.map(function (optionValue) { return (React__default["default"].createElement(material.MenuItem, { value: optionValue.value, key: optionValue.value }, optionValue.label)); }))));
546
- });
547
-
548
525
  var toNumber$1 = function (value) {
549
526
  return value === '' ? undefined : parseInt(value, 10);
550
527
  };
551
528
  var eventToValue$2 = function (ev) { return toNumber$1(ev.target.value); };
552
- var MuiInputInteger = React__default["default"].memo(function (props) {
529
+ var MuiInputInteger = React__default["default"].memo(function MuiInputInteger(props) {
553
530
  var data = props.data, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, path = props.path, handleChange = props.handleChange, config = props.config;
554
531
  var inputProps = { step: '1' };
555
532
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
@@ -561,7 +538,7 @@ var toNumber = function (value) {
561
538
  return value === '' ? undefined : parseFloat(value);
562
539
  };
563
540
  var eventToValue$1 = function (ev) { return toNumber(ev.target.value); };
564
- var MuiInputNumber = React__default["default"].memo(function (props) {
541
+ var MuiInputNumber = React__default["default"].memo(function MuiInputNumber(props) {
565
542
  var data = props.data, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, path = props.path, handleChange = props.handleChange, config = props.config;
566
543
  var inputProps = { step: '0.1' };
567
544
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
@@ -569,7 +546,7 @@ var MuiInputNumber = React__default["default"].memo(function (props) {
569
546
  return (React__default["default"].createElement(material.Input, { type: 'number', value: inputValue, onChange: onChange, className: className, id: id, disabled: !enabled, autoFocus: appliedUiSchemaOptions.focus, inputProps: inputProps, fullWidth: true }));
570
547
  });
571
548
 
572
- var MuiInputNumberFormat = React__default["default"].memo(function (props) {
549
+ var MuiInputNumberFormat = React__default["default"].memo(function MuiInputNumberFormat(props) {
573
550
  var className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, isValid = props.isValid, path = props.path, handleChange = props.handleChange, schema = props.schema, config = props.config;
574
551
  var maxLength = schema.maxLength;
575
552
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
@@ -586,8 +563,10 @@ var MuiInputNumberFormat = React__default["default"].memo(function (props) {
586
563
  return (React__default["default"].createElement(material.Input, { type: 'text', value: inputValue, onChange: onChange, className: className, id: id, disabled: !enabled, autoFocus: appliedUiSchemaOptions.focus, multiline: appliedUiSchemaOptions.multi, fullWidth: !appliedUiSchemaOptions.trim || maxLength === undefined, inputProps: inputProps, error: !isValid }));
587
564
  });
588
565
 
589
- var eventToValue = function (ev) { return ev.target.value === '' ? undefined : ev.target.value; };
590
- var MuiInputText = React__default["default"].memo(function (props) {
566
+ var eventToValue = function (ev) {
567
+ return ev.target.value === '' ? undefined : ev.target.value;
568
+ };
569
+ var MuiInputText = React__default["default"].memo(function MuiInputText(props) {
591
570
  var _a, _b, _c;
592
571
  var _d = React.useState(false), showAdornment = _d[0], setShowAdornment = _d[1];
593
572
  var data = props.data, config = props.config, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, isValid = props.isValid, path = props.path, handleChange = props.handleChange, schema = props.schema, muiInputProps = props.muiInputProps, inputComponent = props.inputComponent;
@@ -609,25 +588,48 @@ var MuiInputText = React__default["default"].memo(function (props) {
609
588
  var onPointerLeave = function () { return setShowAdornment(false); };
610
589
  var theme = material.useTheme();
611
590
  var closeStyle = {
612
- background: ((_c = (_b = (_a = theme.jsonforms) === null || _a === void 0 ? void 0 : _a.input) === null || _b === void 0 ? void 0 : _b.delete) === null || _c === void 0 ? void 0 : _c.background) || theme.palette.background.default,
613
- borderRadius: '50%'
591
+ background: ((_c = (_b = (_a = theme.jsonforms) === null || _a === void 0 ? void 0 : _a.input) === null || _b === void 0 ? void 0 : _b.delete) === null || _c === void 0 ? void 0 : _c.background) ||
592
+ theme.palette.background.default,
593
+ borderRadius: '50%',
614
594
  };
615
595
  return (React__default["default"].createElement(material.Input, { type: appliedUiSchemaOptions.format === 'password' ? 'password' : 'text', value: inputText, onChange: onChange, className: className, id: id, disabled: !enabled, autoFocus: appliedUiSchemaOptions.focus, multiline: appliedUiSchemaOptions.multi, fullWidth: !appliedUiSchemaOptions.trim || maxLength === undefined, inputProps: inputProps, error: !isValid, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, endAdornment: React__default["default"].createElement(material.InputAdornment, { position: 'end', style: {
616
- display: !showAdornment || !enabled || data === undefined ? 'none' : 'flex',
596
+ display: !showAdornment || !enabled || data === undefined
597
+ ? 'none'
598
+ : 'flex',
617
599
  position: 'absolute',
618
- right: 0
600
+ right: 0,
619
601
  } },
620
602
  React__default["default"].createElement(material.IconButton, { "aria-label": 'Clear input field', onClick: onClear, size: 'large' },
621
603
  React__default["default"].createElement(Close__default["default"], { style: closeStyle }))), inputComponent: inputComponent }));
622
604
  });
623
605
 
624
- var MuiInputTime = React__default["default"].memo(function (props) {
606
+ var MuiInputTime = React__default["default"].memo(function MuiInputTime(props) {
625
607
  var data = props.data, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, path = props.path, handleChange = props.handleChange, config = props.config;
626
608
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
627
609
  var _a = useDebouncedChange(handleChange, '', data, path), inputValue = _a[0], onChange = _a[1];
628
610
  return (React__default["default"].createElement(material.Input, { type: 'time', value: inputValue, onChange: onChange, className: className, id: id, disabled: !enabled, autoFocus: appliedUiSchemaOptions.focus, fullWidth: true }));
629
611
  });
630
612
 
613
+ var MuiSelect = React__default["default"].memo(function MuiSelect(props) {
614
+ var data = props.data, className = props.className, id = props.id, enabled = props.enabled, schema = props.schema, uischema = props.uischema, path = props.path, handleChange = props.handleChange, options = props.options, config = props.config, t = props.t;
615
+ var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
616
+ var noneOptionLabel = React.useMemo(function () { return t('enum.none', i18nDefaults['enum.none'], { schema: schema, uischema: uischema, path: path }); }, [t, schema, uischema, path]);
617
+ return (React__default["default"].createElement(material.Select, { className: className, id: id, disabled: !enabled, autoFocus: appliedUiSchemaOptions.focus, value: data !== undefined ? data : '', onChange: function (ev) { return handleChange(path, ev.target.value || undefined); }, fullWidth: true, variant: 'standard' }, [
618
+ React__default["default"].createElement(material.MenuItem, { value: '', key: 'jsonforms.enum.none' },
619
+ React__default["default"].createElement("em", null, noneOptionLabel)),
620
+ ].concat(options.map(function (optionValue) { return (React__default["default"].createElement(material.MenuItem, { value: optionValue.value, key: optionValue.value }, optionValue.label)); }))));
621
+ });
622
+
623
+ var MuiToggle = React__default["default"].memo(function MuiToggle(props) {
624
+ var data = props.data, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, path = props.path, handleChange = props.handleChange, config = props.config, inputProps = props.inputProps;
625
+ var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
626
+ var inputPropsMerged = merge__default["default"]({}, inputProps, {
627
+ autoFocus: !!appliedUiSchemaOptions.focus,
628
+ });
629
+ var checked = !!data;
630
+ return (React__default["default"].createElement(material.Switch, { checked: checked, onChange: function (_ev, isChecked) { return handleChange(path, isChecked); }, className: className, id: id, disabled: !enabled, inputProps: inputPropsMerged }));
631
+ });
632
+
631
633
  var MaterialEnumArrayRenderer = function (_a) {
632
634
  var schema = _a.schema, visible = _a.visible, errors = _a.errors, path = _a.path, options = _a.options, data = _a.data, addItem = _a.addItem, removeItem = _a.removeItem; _a.handleChange; var otherProps = __rest(_a, ["schema", "visible", "errors", "path", "options", "data", "addItem", "removeItem", "handleChange"]);
633
635
  return (React__default["default"].createElement(material.Hidden, { xlUp: !visible },
@@ -664,50 +666,106 @@ var materialEnumArrayRendererTester = core.rankWith(5, core.and(core.uiTypeIs('C
664
666
  }))));
665
667
  var MaterialEnumArrayRenderer$1 = react.withJsonFormsMultiEnumProps(MaterialEnumArrayRenderer);
666
668
 
667
- var materialArrayControlTester = core.rankWith(3, core.or(core.isObjectArrayControl, core.isPrimitiveArrayControl));
668
-
669
- var materialLabelRendererTester = core.rankWith(1, core.uiTypeIs('Label'));
670
- var MaterialLabelRenderer = function (_a) {
671
- var text = _a.text, visible = _a.visible;
669
+ var MaterialObjectRenderer = function (_a) {
670
+ var renderers = _a.renderers, cells = _a.cells, uischemas = _a.uischemas, schema = _a.schema, label = _a.label, path = _a.path, visible = _a.visible, enabled = _a.enabled, uischema = _a.uischema, rootSchema = _a.rootSchema;
671
+ var detailUiSchema = React.useMemo(function () {
672
+ return core.findUISchema(uischemas, schema, uischema.scope, path, function () {
673
+ return isEmpty__default["default"](path)
674
+ ? core.Generate.uiSchema(schema, 'VerticalLayout')
675
+ : __assign(__assign({}, core.Generate.uiSchema(schema, 'Group')), { label: label });
676
+ }, uischema, rootSchema);
677
+ }, [uischemas, schema, uischema.scope, path, label, uischema, rootSchema]);
672
678
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
673
- React__default["default"].createElement(material.Typography, { variant: 'h6' }, text)));
674
- };
675
- var MaterialLabelRenderer$1 = react.withJsonFormsLabelProps(MaterialLabelRenderer);
676
-
677
- var ArrayLayoutToolbar = React__default["default"].memo(function (_a) {
678
- var label = _a.label, errors = _a.errors, addItem = _a.addItem, path = _a.path, createDefault = _a.createDefault;
679
- return (React__default["default"].createElement(material.Toolbar, { disableGutters: true },
680
- React__default["default"].createElement(material.Grid, { container: true, alignItems: 'center', justifyContent: 'space-between' },
681
- React__default["default"].createElement(material.Grid, { item: true },
682
- React__default["default"].createElement(material.Typography, { variant: 'h6' }, label)),
683
- errors.length !== 0 &&
684
- React__default["default"].createElement(material.Grid, { item: true },
685
- React__default["default"].createElement(ValidationIcon, { id: 'tooltip-validation', errorMessages: errors })),
686
- React__default["default"].createElement(material.Grid, { item: true },
687
- React__default["default"].createElement(material.Grid, { container: true },
688
- React__default["default"].createElement(material.Grid, { item: true },
689
- React__default["default"].createElement(material.Tooltip, { id: 'tooltip-add', title: "Add to " + label, placement: 'bottom' },
690
- React__default["default"].createElement(material.IconButton, { "aria-label": "Add to " + label, onClick: addItem(path, createDefault()), size: 'large' },
691
- React__default["default"].createElement(AddIcon__default["default"], null)))))))));
692
- });
693
-
694
- var ListWithDetailMasterItem = function (_a) {
695
- var index = _a.index, childLabel = _a.childLabel, selected = _a.selected, handleSelect = _a.handleSelect, removeItem = _a.removeItem, path = _a.path;
696
- return (React__default["default"].createElement(material.ListItem, { button: true, selected: selected, onClick: handleSelect(index) },
697
- React__default["default"].createElement(material.ListItemAvatar, null,
698
- React__default["default"].createElement(material.Avatar, { "aria-label": 'Index' }, index + 1)),
699
- React__default["default"].createElement(material.ListItemText, { primary: childLabel }),
700
- React__default["default"].createElement(material.ListItemSecondaryAction, null,
701
- React__default["default"].createElement(material.IconButton, { "aria-label": 'Delete', onClick: removeItem(path, index), size: 'large' },
702
- React__default["default"].createElement(DeleteIcon__default["default"], null)))));
679
+ React__default["default"].createElement(react.JsonFormsDispatch, { visible: visible, enabled: enabled, schema: schema, uischema: detailUiSchema, path: path, renderers: renderers, cells: cells })));
703
680
  };
704
- var ListWithDetailMasterItem$1 = react.withJsonFormsMasterListItemProps(ListWithDetailMasterItem);
681
+ var materialObjectControlTester = core.rankWith(2, core.isObjectControl);
682
+ var MaterialObjectRenderer$1 = react.withJsonFormsDetailProps(MaterialObjectRenderer);
705
683
 
706
- var MaterialListWithDetailRenderer = function (_a) {
707
- var uischemas = _a.uischemas, schema = _a.schema, uischema = _a.uischema, path = _a.path, errors = _a.errors, visible = _a.visible, label = _a.label, required = _a.required, removeItems = _a.removeItems, addItem = _a.addItem, data = _a.data, renderers = _a.renderers, cells = _a.cells, config = _a.config, rootSchema = _a.rootSchema;
708
- var _b = React.useState(undefined), selectedIndex = _b[0], setSelectedIndex = _b[1];
709
- var handleRemoveItem = React.useCallback(function (p, value) { return function () {
710
- removeItems(p, [value])();
684
+ var MaterialOneOfRenderer = function (_a) {
685
+ var handleChange = _a.handleChange, schema = _a.schema, path = _a.path, renderers = _a.renderers, cells = _a.cells, rootSchema = _a.rootSchema, id = _a.id, visible = _a.visible, indexOfFittingSchema = _a.indexOfFittingSchema, uischema = _a.uischema, uischemas = _a.uischemas, data = _a.data;
686
+ var _b = React.useState(false), open = _b[0], setOpen = _b[1];
687
+ var _c = React.useState(indexOfFittingSchema || 0), selectedIndex = _c[0], setSelectedIndex = _c[1];
688
+ var _d = React.useState(0), newSelectedIndex = _d[0], setNewSelectedIndex = _d[1];
689
+ var handleClose = React.useCallback(function () { return setOpen(false); }, [setOpen]);
690
+ var cancel = React.useCallback(function () {
691
+ setOpen(false);
692
+ }, [setOpen]);
693
+ var oneOfRenderInfos = core.createCombinatorRenderInfos(schema.oneOf, rootSchema, 'oneOf', uischema, path, uischemas);
694
+ var openNewTab = function (newIndex) {
695
+ handleChange(path, core.createDefaultValue(oneOfRenderInfos[newIndex].schema));
696
+ setSelectedIndex(newIndex);
697
+ };
698
+ var confirm = React.useCallback(function () {
699
+ openNewTab(newSelectedIndex);
700
+ setOpen(false);
701
+ }, [handleChange, core.createDefaultValue, newSelectedIndex]);
702
+ var handleTabChange = React.useCallback(function (_event, newOneOfIndex) {
703
+ setNewSelectedIndex(newOneOfIndex);
704
+ if (isEmpty__default["default"](data)) {
705
+ openNewTab(newOneOfIndex);
706
+ }
707
+ else {
708
+ setOpen(true);
709
+ }
710
+ }, [setOpen, setSelectedIndex, data]);
711
+ return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
712
+ React__default["default"].createElement(CombinatorProperties, { schema: schema, combinatorKeyword: 'oneOf', path: path }),
713
+ React__default["default"].createElement(material.Tabs, { value: selectedIndex, onChange: handleTabChange }, oneOfRenderInfos.map(function (oneOfRenderInfo) { return (React__default["default"].createElement(material.Tab, { key: oneOfRenderInfo.label, label: oneOfRenderInfo.label })); })),
714
+ oneOfRenderInfos.map(function (oneOfRenderInfo, oneOfIndex) {
715
+ return selectedIndex === oneOfIndex && (React__default["default"].createElement(react.JsonFormsDispatch, { key: oneOfIndex, schema: oneOfRenderInfo.schema, uischema: oneOfRenderInfo.uischema, path: path, renderers: renderers, cells: cells }));
716
+ }),
717
+ React__default["default"].createElement(material.Dialog, { open: open, onClose: handleClose, "aria-labelledby": 'alert-dialog-title', "aria-describedby": 'alert-dialog-description' },
718
+ React__default["default"].createElement(material.DialogTitle, { id: 'alert-dialog-title' }, 'Clear form?'),
719
+ React__default["default"].createElement(material.DialogContent, null,
720
+ React__default["default"].createElement(material.DialogContentText, { id: 'alert-dialog-description' }, "Your data will be cleared if you navigate away from this tab. Do you want to proceed?")),
721
+ React__default["default"].createElement(material.DialogActions, null,
722
+ React__default["default"].createElement(material.Button, { onClick: cancel, color: 'primary' }, "No"),
723
+ React__default["default"].createElement(material.Button, { onClick: confirm, color: 'primary', autoFocus: true, id: "oneOf-" + id + "-confirm-yes" }, "Yes")))));
724
+ };
725
+ var materialOneOfControlTester = core.rankWith(3, core.isOneOfControl);
726
+ var MaterialOneOfRenderer$1 = react.withJsonFormsOneOfProps(MaterialOneOfRenderer);
727
+
728
+ var materialLabelRendererTester = core.rankWith(1, core.uiTypeIs('Label'));
729
+ var MaterialLabelRenderer = function (_a) {
730
+ var text = _a.text, visible = _a.visible;
731
+ return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
732
+ React__default["default"].createElement(material.Typography, { variant: 'h6' }, text)));
733
+ };
734
+ var MaterialLabelRenderer$1 = react.withJsonFormsLabelProps(MaterialLabelRenderer);
735
+
736
+ var ArrayLayoutToolbar = React__default["default"].memo(function ArrayLayoutToolbar(_a) {
737
+ var label = _a.label, errors = _a.errors, addItem = _a.addItem, path = _a.path, createDefault = _a.createDefault, translations = _a.translations;
738
+ return (React__default["default"].createElement(material.Toolbar, { disableGutters: true },
739
+ React__default["default"].createElement(material.Grid, { container: true, alignItems: 'center', justifyContent: 'space-between' },
740
+ React__default["default"].createElement(material.Grid, { item: true },
741
+ React__default["default"].createElement(material.Typography, { variant: 'h6' }, label)),
742
+ errors.length !== 0 && (React__default["default"].createElement(material.Grid, { item: true },
743
+ React__default["default"].createElement(ValidationIcon, { id: 'tooltip-validation', errorMessages: errors }))),
744
+ React__default["default"].createElement(material.Grid, { item: true },
745
+ React__default["default"].createElement(material.Grid, { container: true },
746
+ React__default["default"].createElement(material.Grid, { item: true },
747
+ React__default["default"].createElement(material.Tooltip, { id: 'tooltip-add', title: translations.addTooltip, placement: 'bottom' },
748
+ React__default["default"].createElement(material.IconButton, { "aria-label": translations.addAriaLabel, onClick: addItem(path, createDefault()), size: 'large' },
749
+ React__default["default"].createElement(AddIcon__default["default"], null)))))))));
750
+ });
751
+
752
+ var ListWithDetailMasterItem = function (_a) {
753
+ var index = _a.index, childLabel = _a.childLabel, selected = _a.selected, handleSelect = _a.handleSelect, removeItem = _a.removeItem, path = _a.path, translations = _a.translations;
754
+ return (React__default["default"].createElement(material.ListItem, { button: true, selected: selected, onClick: handleSelect(index) },
755
+ React__default["default"].createElement(material.ListItemAvatar, null,
756
+ React__default["default"].createElement(material.Avatar, { "aria-label": 'Index' }, index + 1)),
757
+ React__default["default"].createElement(material.ListItemText, { primary: childLabel }),
758
+ React__default["default"].createElement(material.ListItemSecondaryAction, null,
759
+ React__default["default"].createElement(material.IconButton, { "aria-label": translations.removeAriaLabel, onClick: removeItem(path, index), size: 'large' },
760
+ React__default["default"].createElement(DeleteIcon__default["default"], null)))));
761
+ };
762
+ var ListWithDetailMasterItem$1 = react.withJsonFormsMasterListItemProps(ListWithDetailMasterItem);
763
+
764
+ var MaterialListWithDetailRenderer = function (_a) {
765
+ var uischemas = _a.uischemas, schema = _a.schema, uischema = _a.uischema, path = _a.path, errors = _a.errors, visible = _a.visible, label = _a.label, required = _a.required, removeItems = _a.removeItems, addItem = _a.addItem, data = _a.data, renderers = _a.renderers, cells = _a.cells, config = _a.config, rootSchema = _a.rootSchema, translations = _a.translations;
766
+ var _b = React.useState(undefined), selectedIndex = _b[0], setSelectedIndex = _b[1];
767
+ var handleRemoveItem = React.useCallback(function (p, value) { return function () {
768
+ removeItems(p, [value])();
711
769
  if (selectedIndex === value) {
712
770
  setSelectedIndex(undefined);
713
771
  }
@@ -725,24 +783,94 @@ var MaterialListWithDetailRenderer = function (_a) {
725
783
  setSelectedIndex(undefined);
726
784
  }, [schema]);
727
785
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
728
- React__default["default"].createElement(ArrayLayoutToolbar, { label: core.computeLabel(label, required, appliedUiSchemaOptions.hideRequiredAsterisk), errors: errors, path: path, addItem: addItem, createDefault: handleCreateDefaultValue }),
786
+ React__default["default"].createElement(ArrayLayoutToolbar, { translations: translations, label: core.computeLabel(label, required, appliedUiSchemaOptions.hideRequiredAsterisk), errors: errors, path: path, addItem: addItem, createDefault: handleCreateDefaultValue }),
729
787
  React__default["default"].createElement(material.Grid, { container: true, direction: 'row', spacing: 2 },
730
788
  React__default["default"].createElement(material.Grid, { item: true, xs: 3 },
731
- React__default["default"].createElement(material.List, null, data > 0 ? (map__default["default"](range__default["default"](data), function (index) { return (React__default["default"].createElement(ListWithDetailMasterItem$1, { index: index, path: path, schema: schema, handleSelect: handleListItemClick, removeItem: handleRemoveItem, selected: selectedIndex === index, key: index })); })) : (React__default["default"].createElement("p", null, "No data")))),
732
- React__default["default"].createElement(material.Grid, { item: true, xs: true }, selectedIndex !== undefined ? (React__default["default"].createElement(react.JsonFormsDispatch, { renderers: renderers, cells: cells, visible: visible, schema: schema, uischema: foundUISchema, path: core.composePaths(path, "" + selectedIndex) })) : (React__default["default"].createElement(material.Typography, { variant: 'h6' }, "No Selection"))))));
789
+ React__default["default"].createElement(material.List, null, data > 0 ? (map__default["default"](range__default["default"](data), function (index) { return (React__default["default"].createElement(ListWithDetailMasterItem$1, { index: index, path: path, schema: schema, handleSelect: handleListItemClick, removeItem: handleRemoveItem, selected: selectedIndex === index, key: index, translations: translations })); })) : (React__default["default"].createElement("p", null, "No data")))),
790
+ React__default["default"].createElement(material.Grid, { item: true, xs: true }, selectedIndex !== undefined ? (React__default["default"].createElement(react.JsonFormsDispatch, { renderers: renderers, cells: cells, visible: visible, schema: schema, uischema: foundUISchema, path: core.composePaths(path, "" + selectedIndex) })) : (React__default["default"].createElement(material.Typography, { variant: 'h6' }, translations.noSelection))))));
733
791
  };
734
792
  var materialListWithDetailTester = core.rankWith(4, core.and(core.uiTypeIs('ListWithDetail'), core.isObjectArray));
735
793
  var MaterialListWithDetailRenderer$1 = react.withJsonFormsArrayLayoutProps(MaterialListWithDetailRenderer);
736
794
 
795
+ var MaterialInputControl = function (props) {
796
+ var _a = useFocus(), focused = _a[0], onFocus = _a[1], onBlur = _a[2];
797
+ var id = props.id, description = props.description, errors = props.errors, label = props.label, uischema = props.uischema, visible = props.visible, required = props.required, config = props.config, input = props.input;
798
+ var isValid = errors.length === 0;
799
+ var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
800
+ var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
801
+ var firstFormHelperText = showDescription
802
+ ? description
803
+ : !isValid
804
+ ? errors
805
+ : null;
806
+ var secondFormHelperText = showDescription && !isValid ? errors : null;
807
+ var InnerComponent = input;
808
+ return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
809
+ React__default["default"].createElement(material.FormControl, { fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur, id: id, variant: 'standard' },
810
+ React__default["default"].createElement(material.InputLabel, { htmlFor: id + '-input', error: !isValid, required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
811
+ React__default["default"].createElement(InnerComponent, __assign({}, props, { id: id + '-input', isValid: isValid, visible: visible })),
812
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
813
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
814
+ };
815
+
816
+ var findEnumSchema = function (schemas) {
817
+ return schemas.find(function (s) { return s.enum !== undefined && (s.type === 'string' || s.type === undefined); });
818
+ };
819
+ var findTextSchema = function (schemas) {
820
+ return schemas.find(function (s) { return s.type === 'string' && s.enum === undefined; });
821
+ };
822
+ var MuiAutocompleteInputText = function (props) {
823
+ var data = props.data, config = props.config, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, isValid = props.isValid, path = props.path, handleChange = props.handleChange, schema = props.schema;
824
+ var enumSchema = findEnumSchema(schema.anyOf);
825
+ var stringSchema = findTextSchema(schema.anyOf);
826
+ var maxLength = stringSchema.maxLength;
827
+ var appliedUiSchemaOptions = React.useMemo(function () { return merge__default["default"]({}, config, uischema.options); }, [config, uischema.options]);
828
+ var inputProps = React.useMemo(function () {
829
+ var propMemo = {};
830
+ if (appliedUiSchemaOptions.restrict) {
831
+ propMemo = { maxLength: maxLength };
832
+ }
833
+ if (appliedUiSchemaOptions.trim && maxLength !== undefined) {
834
+ propMemo.size = maxLength;
835
+ }
836
+ propMemo.list = props.id + 'datalist';
837
+ return propMemo;
838
+ }, [appliedUiSchemaOptions, props.id]);
839
+ var _a = useDebouncedChange(handleChange, '', data, path), inputText = _a[0], onChange = _a[1];
840
+ var dataList = (React__default["default"].createElement("datalist", { id: props.id + 'datalist' }, enumSchema.enum.map(function (optionValue) { return (React__default["default"].createElement("option", { value: optionValue, key: optionValue })); })));
841
+ return (React__default["default"].createElement(material.Input, { type: 'text', value: inputText, onChange: onChange, className: className, id: id, disabled: !enabled, autoFocus: appliedUiSchemaOptions.focus, fullWidth: !appliedUiSchemaOptions.trim || maxLength === undefined, inputProps: inputProps, error: !isValid, endAdornment: dataList }));
842
+ };
843
+ var MaterialAnyOfStringOrEnumControl = (function (_super) {
844
+ __extends(MaterialAnyOfStringOrEnumControl, _super);
845
+ function MaterialAnyOfStringOrEnumControl() {
846
+ return _super !== null && _super.apply(this, arguments) || this;
847
+ }
848
+ MaterialAnyOfStringOrEnumControl.prototype.render = function () {
849
+ return (React__default["default"].createElement(MaterialInputControl, __assign({}, this.props, { input: MuiAutocompleteInputText })));
850
+ };
851
+ return MaterialAnyOfStringOrEnumControl;
852
+ }(react.Control));
853
+ var hasEnumAndText = function (schemas) {
854
+ var enumSchema = findEnumSchema(schemas);
855
+ var stringSchema = findTextSchema(schemas);
856
+ var remainingSchemas = schemas.filter(function (s) { return s !== enumSchema || s !== stringSchema; });
857
+ var wrongType = remainingSchemas.find(function (s) { return s.type && s.type !== 'string'; });
858
+ return enumSchema && stringSchema && !wrongType;
859
+ };
860
+ var simpleAnyOf = core.and(core.uiTypeIs('Control'), core.schemaMatches(function (schema) { return schema.hasOwnProperty('anyOf') && hasEnumAndText(schema.anyOf); }));
861
+ var materialAnyOfStringOrEnumControlTester = core.rankWith(5, simpleAnyOf);
862
+ var MaterialAnyOfStringOrEnumControl$1 = react.withJsonFormsControlProps(MaterialAnyOfStringOrEnumControl);
863
+
737
864
  var MaterialBooleanControl = function (_a) {
738
865
  var data = _a.data, visible = _a.visible, label = _a.label, id = _a.id, enabled = _a.enabled, uischema = _a.uischema, schema = _a.schema, rootSchema = _a.rootSchema, handleChange = _a.handleChange, errors = _a.errors, path = _a.path, config = _a.config, description = _a.description;
739
866
  var isValid = errors.length === 0;
740
867
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
741
868
  var showDescription = !core.isDescriptionHidden(visible, description,
742
869
  false, appliedUiSchemaOptions.showUnfocusedDescription);
743
- var showTooltip = !showDescription && !core.isDescriptionHidden(visible, description,
744
- true,
745
- true);
870
+ var showTooltip = !showDescription &&
871
+ !core.isDescriptionHidden(visible, description,
872
+ true,
873
+ true);
746
874
  var firstFormHelperText = showDescription
747
875
  ? description
748
876
  : !isValid
@@ -764,9 +892,9 @@ var MaterialBooleanControl = function (_a) {
764
892
  }
765
893
  var ariaDescribedBy = descriptionIds.join(' ');
766
894
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
767
- React__default["default"].createElement(material.Tooltip, { id: tooltipId, title: (showTooltip) ? description : '' },
895
+ React__default["default"].createElement(material.Tooltip, { id: tooltipId, title: showTooltip ? description : '' },
768
896
  React__default["default"].createElement(material.FormControlLabel, { label: label, id: id, control: React__default["default"].createElement(MuiCheckbox, { id: id + "-input", isValid: isEmpty__default["default"](errors), data: data, enabled: enabled, visible: visible, path: path, uischema: uischema, schema: schema, rootSchema: rootSchema, handleChange: handleChange, errors: errors, config: config, inputProps: {
769
- 'aria-describedby': ariaDescribedBy
897
+ 'aria-describedby': ariaDescribedBy,
770
898
  } }) })),
771
899
  React__default["default"].createElement(material.FormHelperText, { id: helpId1, error: !isValid && !showDescription }, firstFormHelperText),
772
900
  React__default["default"].createElement(material.FormHelperText, { id: helpId2, error: !isValid }, secondFormHelperText)));
@@ -774,25 +902,16 @@ var MaterialBooleanControl = function (_a) {
774
902
  var materialBooleanControlTester = core.rankWith(2, core.isBooleanControl);
775
903
  var MaterialBooleanControl$1 = react.withJsonFormsControlProps(MaterialBooleanControl);
776
904
 
777
- var MuiToggle = React__default["default"].memo(function (props) {
778
- var data = props.data, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, path = props.path, handleChange = props.handleChange, config = props.config, inputProps = props.inputProps;
779
- var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
780
- var inputPropsMerged = merge__default["default"]({}, inputProps, {
781
- autoFocus: !!appliedUiSchemaOptions.focus
782
- });
783
- var checked = !!data;
784
- return (React__default["default"].createElement(material.Switch, { checked: checked, onChange: function (_ev, isChecked) { return handleChange(path, isChecked); }, className: className, id: id, disabled: !enabled, inputProps: inputPropsMerged }));
785
- });
786
-
787
905
  var MaterialBooleanToggleControl = function (_a) {
788
906
  var data = _a.data, visible = _a.visible, label = _a.label, id = _a.id, enabled = _a.enabled, uischema = _a.uischema, schema = _a.schema, rootSchema = _a.rootSchema, handleChange = _a.handleChange, errors = _a.errors, path = _a.path, config = _a.config, description = _a.description;
789
907
  var isValid = errors.length === 0;
790
908
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
791
909
  var showDescription = !core.isDescriptionHidden(visible, description,
792
910
  false, appliedUiSchemaOptions.showUnfocusedDescription);
793
- var showTooltip = !showDescription && !core.isDescriptionHidden(visible, description,
794
- true,
795
- true);
911
+ var showTooltip = !showDescription &&
912
+ !core.isDescriptionHidden(visible, description,
913
+ true,
914
+ true);
796
915
  var firstFormHelperText = showDescription
797
916
  ? description
798
917
  : !isValid
@@ -814,9 +933,9 @@ var MaterialBooleanToggleControl = function (_a) {
814
933
  }
815
934
  var ariaDescribedBy = descriptionIds.join(' ');
816
935
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
817
- React__default["default"].createElement(material.Tooltip, { id: tooltipId, title: (showTooltip) ? description : '' },
936
+ React__default["default"].createElement(material.Tooltip, { id: tooltipId, title: showTooltip ? description : '' },
818
937
  React__default["default"].createElement(material.FormControlLabel, { label: label, id: id, control: React__default["default"].createElement(MuiToggle, { id: id + "-input", isValid: isEmpty__default["default"](errors), data: data, enabled: enabled, visible: visible, path: path, uischema: uischema, schema: schema, rootSchema: rootSchema, handleChange: handleChange, errors: errors, config: config, inputProps: {
819
- 'aria-describedby': ariaDescribedBy
938
+ 'aria-describedby': ariaDescribedBy,
820
939
  } }) })),
821
940
  React__default["default"].createElement(material.FormHelperText, { id: helpId1, error: !isValid && !showDescription }, firstFormHelperText),
822
941
  React__default["default"].createElement(material.FormHelperText, { id: helpId2, error: !isValid }, secondFormHelperText)));
@@ -824,79 +943,6 @@ var MaterialBooleanToggleControl = function (_a) {
824
943
  var materialBooleanToggleControlTester = core.rankWith(3, core.and(core.isBooleanControl, core.optionIs('toggle', true)));
825
944
  var MaterialBooleanToggleControl$1 = react.withJsonFormsControlProps(MaterialBooleanToggleControl);
826
945
 
827
- var MaterialInputControl = function (props) {
828
- var _a = useFocus(), focused = _a[0], onFocus = _a[1], onBlur = _a[2];
829
- var id = props.id, description = props.description, errors = props.errors, label = props.label, uischema = props.uischema, visible = props.visible, required = props.required, config = props.config, input = props.input;
830
- var isValid = errors.length === 0;
831
- var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
832
- var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
833
- var firstFormHelperText = showDescription
834
- ? description
835
- : !isValid
836
- ? errors
837
- : null;
838
- var secondFormHelperText = showDescription && !isValid ? errors : null;
839
- var InnerComponent = input;
840
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
841
- React__default["default"].createElement(material.FormControl, { fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur, id: id, variant: 'standard' },
842
- React__default["default"].createElement(material.InputLabel, { htmlFor: id + '-input', error: !isValid, required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
843
- React__default["default"].createElement(InnerComponent, __assign({}, props, { id: id + '-input', isValid: isValid, visible: visible })),
844
- React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
845
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
846
- };
847
-
848
- var MuiAutocomplete = function (props) {
849
- var _a;
850
- var description = props.description, errors = props.errors, visible = props.visible, required = props.required, label = props.label, data = props.data, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, path = props.path, handleChange = props.handleChange, options = props.options, config = props.config, getOptionLabel = props.getOptionLabel, renderOption = props.renderOption, filterOptions = props.filterOptions, isValid = props.isValid;
851
- var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
852
- var _b = React__default["default"].useState(data !== null && data !== void 0 ? data : ''), inputValue = _b[0], setInputValue = _b[1];
853
- var _c = useFocus(), focused = _c[0], onFocus = _c[1], onBlur = _c[2];
854
- var findOption = (_a = options.find(function (o) { return o.value === data; })) !== null && _a !== void 0 ? _a : null;
855
- var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
856
- var firstFormHelperText = showDescription
857
- ? description
858
- : !isValid
859
- ? errors
860
- : null;
861
- var secondFormHelperText = showDescription && !isValid ? errors : null;
862
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
863
- React__default["default"].createElement(material.Autocomplete, { className: className, id: id, disabled: !enabled, value: findOption, onChange: function (_event, newValue) {
864
- handleChange(path, newValue === null || newValue === void 0 ? void 0 : newValue.value);
865
- }, inputValue: inputValue, onInputChange: function (_event, newInputValue) {
866
- setInputValue(newInputValue);
867
- }, autoHighlight: true, autoSelect: true, autoComplete: true, fullWidth: true, options: options, getOptionLabel: getOptionLabel || (function (option) { return option === null || option === void 0 ? void 0 : option.label; }), freeSolo: false, renderInput: function (params) {
868
- return (React__default["default"].createElement(material.TextField, __assign({ label: label, variant: 'standard', type: 'text', inputProps: params.inputProps, inputRef: params.InputProps.ref, autoFocus: appliedUiSchemaOptions.focus, disabled: !enabled }, params, { id: id + '-input', required: required && !appliedUiSchemaOptions.hideRequiredAsterisk, error: !isValid, fullWidth: !appliedUiSchemaOptions.trim, InputLabelProps: data ? { shrink: true } : undefined, onFocus: onFocus, onBlur: onBlur, focused: focused })));
869
- }, renderOption: renderOption, filterOptions: filterOptions }),
870
- React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
871
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText)));
872
- };
873
-
874
- var MaterialEnumControl = function (props) {
875
- var config = props.config, uischema = props.uischema, errors = props.errors;
876
- var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
877
- var isValid = errors.length === 0;
878
- return (appliedUiSchemaOptions.autocomplete === false ?
879
- React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiSelect })) :
880
- React__default["default"].createElement(MuiAutocomplete, __assign({}, props, { isValid: isValid })));
881
- };
882
- var materialEnumControlTester = core.rankWith(2, core.isEnumControl);
883
- var MaterialEnumControl$1 = react.withJsonFormsEnumProps(react.withTranslateProps(React__default["default"].memo(MaterialEnumControl)), false);
884
-
885
- var MaterialNativeControl = function (props) {
886
- var _a;
887
- var _b = useFocus(), focused = _b[0], onFocus = _b[1], onBlur = _b[2];
888
- var id = props.id, errors = props.errors, label = props.label, schema = props.schema, description = props.description, enabled = props.enabled, visible = props.visible, required = props.required, path = props.path, handleChange = props.handleChange, data = props.data, config = props.config;
889
- var isValid = errors.length === 0;
890
- var appliedUiSchemaOptions = merge__default["default"]({}, config, props.uischema.options);
891
- var _c = useDebouncedChange(handleChange, '', data, path), inputValue = _c[0], onChange = _c[1];
892
- var fieldType = (_a = appliedUiSchemaOptions.format) !== null && _a !== void 0 ? _a : schema.format;
893
- var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
894
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
895
- React__default["default"].createElement(material.TextField, { required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk), id: id + '-input', label: label, type: fieldType, error: !isValid, disabled: !enabled, fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur, helperText: !isValid ? errors : showDescription ? description : null, InputLabelProps: { shrink: true }, value: inputValue, onChange: onChange })));
896
- };
897
- var materialNativeControlTester = core.rankWith(2, core.or(core.isDateControl, core.isTimeControl));
898
- var MaterialNativeControl$1 = react.withJsonFormsControlProps(MaterialNativeControl);
899
-
900
946
  var MaterialDateControl = function (props) {
901
947
  var _a, _b, _c;
902
948
  var _d = useFocus(), focused = _d[0], onFocus = _d[1], onBlur = _d[2];
@@ -920,8 +966,10 @@ var MaterialDateControl = function (props) {
920
966
  React__default["default"].createElement(xDatePickers.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs },
921
967
  React__default["default"].createElement(xDatePickers.DatePicker, { label: label, value: value, onChange: onChange, inputFormat: format, disableMaskedInput: true, views: views, disabled: !enabled, componentsProps: {
922
968
  actionBar: {
923
- actions: function (variant) { return (variant === 'desktop' ? [] : ['clear', 'cancel', 'accept']); }
924
- }
969
+ actions: function (variant) {
970
+ return variant === 'desktop' ? [] : ['clear', 'cancel', 'accept'];
971
+ },
972
+ },
925
973
  }, renderInput: function (params) { return (React__default["default"].createElement(ResettableTextField, __assign({}, params, { rawValue: data, dayjsValueIsValid: value !== null, valueInInputFormat: valueInInputFormat, focused: focused, id: id + '-input', required: required && !appliedUiSchemaOptions.hideRequiredAsterisk, autoFocus: appliedUiSchemaOptions.focus, error: !isValid, fullWidth: !appliedUiSchemaOptions.trim, inputProps: __assign(__assign({}, params.inputProps), { type: 'text' }), InputLabelProps: data ? { shrink: true } : undefined, onFocus: onFocus, onBlur: onBlur, variant: 'standard' }))); } }),
926
974
  React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
927
975
  React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
@@ -938,7 +986,12 @@ var MaterialDateTimeControl = function (props) {
938
986
  var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
939
987
  var format = (_a = appliedUiSchemaOptions.dateTimeFormat) !== null && _a !== void 0 ? _a : 'YYYY-MM-DD HH:mm';
940
988
  var saveFormat = (_b = appliedUiSchemaOptions.dateTimeSaveFormat) !== null && _b !== void 0 ? _b : undefined;
941
- var views = (_c = appliedUiSchemaOptions.views) !== null && _c !== void 0 ? _c : ['year', 'day', 'hours', 'minutes'];
989
+ var views = (_c = appliedUiSchemaOptions.views) !== null && _c !== void 0 ? _c : [
990
+ 'year',
991
+ 'day',
992
+ 'hours',
993
+ 'minutes',
994
+ ];
942
995
  var firstFormHelperText = showDescription
943
996
  ? description
944
997
  : !isValid
@@ -952,8 +1005,10 @@ var MaterialDateTimeControl = function (props) {
952
1005
  React__default["default"].createElement(xDatePickers.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs },
953
1006
  React__default["default"].createElement(xDatePickers.DateTimePicker, { label: label, value: value, onChange: onChange, inputFormat: format, disableMaskedInput: true, ampm: !!appliedUiSchemaOptions.ampm, views: views, disabled: !enabled, componentsProps: {
954
1007
  actionBar: {
955
- actions: function (variant) { return (variant === 'desktop' ? [] : ['clear', 'cancel', 'accept']); }
956
- }
1008
+ actions: function (variant) {
1009
+ return variant === 'desktop' ? [] : ['clear', 'cancel', 'accept'];
1010
+ },
1011
+ },
957
1012
  }, renderInput: function (params) { return (React__default["default"].createElement(ResettableTextField, __assign({}, params, { rawValue: data, dayjsValueIsValid: value !== null, valueInInputFormat: valueInInputFormat, focused: focused, id: id + '-input', required: required && !appliedUiSchemaOptions.hideRequiredAsterisk, autoFocus: appliedUiSchemaOptions.focus, error: !isValid, fullWidth: !appliedUiSchemaOptions.trim, inputProps: __assign(__assign({}, params.inputProps), { type: 'text' }), InputLabelProps: data ? { shrink: true } : undefined, onFocus: onFocus, onBlur: onBlur, variant: 'standard' }))); } }),
958
1013
  React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
959
1014
  React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
@@ -961,37 +1016,73 @@ var MaterialDateTimeControl = function (props) {
961
1016
  var materialDateTimeControlTester = core.rankWith(2, core.isDateTimeControl);
962
1017
  var MaterialDateTimeControl$1 = react.withJsonFormsControlProps(MaterialDateTimeControl);
963
1018
 
964
- var MaterialTimeControl = function (props) {
965
- var _a, _b, _c;
966
- var _d = useFocus(), focused = _d[0], onFocus = _d[1], onBlur = _d[2];
967
- var id = props.id, description = props.description, errors = props.errors, label = props.label, uischema = props.uischema, visible = props.visible, enabled = props.enabled, required = props.required, path = props.path, handleChange = props.handleChange, data = props.data, config = props.config;
1019
+ var MaterialEnumControl = function (props) {
1020
+ var config = props.config, uischema = props.uischema, errors = props.errors;
968
1021
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
969
1022
  var isValid = errors.length === 0;
1023
+ return appliedUiSchemaOptions.autocomplete === false ? (React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiSelect }))) : (React__default["default"].createElement(MuiAutocomplete, __assign({}, props, { isValid: isValid })));
1024
+ };
1025
+ var materialEnumControlTester = core.rankWith(2, core.isEnumControl);
1026
+ var MaterialEnumControl$1 = react.withJsonFormsEnumProps(react.withTranslateProps(React__default["default"].memo(MaterialEnumControl)), false);
1027
+
1028
+ var MaterialIntegerControl = function (props) { return (React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiInputInteger }))); };
1029
+ var materialIntegerControlTester = core.rankWith(2, core.isIntegerControl);
1030
+ var MaterialIntegerControl$1 = react.withJsonFormsControlProps(MaterialIntegerControl);
1031
+
1032
+ var MaterialNativeControl = function (props) {
1033
+ var _a;
1034
+ var _b = useFocus(), focused = _b[0], onFocus = _b[1], onBlur = _b[2];
1035
+ var id = props.id, errors = props.errors, label = props.label, schema = props.schema, description = props.description, enabled = props.enabled, visible = props.visible, required = props.required, path = props.path, handleChange = props.handleChange, data = props.data, config = props.config;
1036
+ var isValid = errors.length === 0;
1037
+ var appliedUiSchemaOptions = merge__default["default"]({}, config, props.uischema.options);
1038
+ var _c = useDebouncedChange(handleChange, '', data, path), inputValue = _c[0], onChange = _c[1];
1039
+ var fieldType = (_a = appliedUiSchemaOptions.format) !== null && _a !== void 0 ? _a : schema.format;
970
1040
  var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
971
- var format = (_a = appliedUiSchemaOptions.timeFormat) !== null && _a !== void 0 ? _a : 'HH:mm';
972
- var saveFormat = (_b = appliedUiSchemaOptions.timeSaveFormat) !== null && _b !== void 0 ? _b : 'HH:mm:ss';
973
- var views = (_c = appliedUiSchemaOptions.views) !== null && _c !== void 0 ? _c : ['hours', 'minutes'];
974
- var firstFormHelperText = showDescription
975
- ? description
976
- : !isValid
977
- ? errors
978
- : null;
979
- var secondFormHelperText = showDescription && !isValid ? errors : null;
980
- var onChange = React.useMemo(function () { return createOnChangeHandler(path, handleChange, saveFormat); }, [path, handleChange, saveFormat]);
981
- var value = getData(data, saveFormat);
982
- var valueInInputFormat = value ? value.format(format) : '';
983
1041
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
984
- React__default["default"].createElement(xDatePickers.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs },
985
- React__default["default"].createElement(xDatePickers.TimePicker, { label: label, value: value, onChange: onChange, inputFormat: format, disableMaskedInput: true, ampm: !!appliedUiSchemaOptions.ampm, views: views, disabled: !enabled, componentsProps: {
986
- actionBar: {
987
- actions: function (variant) { return (variant === 'desktop' ? [] : ['clear', 'cancel', 'accept']); }
988
- }
989
- }, renderInput: function (params) { return (React__default["default"].createElement(ResettableTextField, __assign({}, params, { rawValue: data, dayjsValueIsValid: value !== null, valueInInputFormat: valueInInputFormat, focused: focused, id: id + '-input', required: required && !appliedUiSchemaOptions.hideRequiredAsterisk, autoFocus: appliedUiSchemaOptions.focus, error: !isValid, fullWidth: !appliedUiSchemaOptions.trim, inputProps: __assign(__assign({}, params.inputProps), { type: 'text' }), InputLabelProps: data ? { shrink: true } : undefined, onFocus: onFocus, onBlur: onBlur, variant: 'standard' }))); } }),
990
- React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
991
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
1042
+ React__default["default"].createElement(material.TextField, { required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk), id: id + '-input', label: label, type: fieldType, error: !isValid, disabled: !enabled, fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur, helperText: !isValid ? errors : showDescription ? description : null, InputLabelProps: { shrink: true }, value: inputValue, onChange: onChange })));
1043
+ };
1044
+ var materialNativeControlTester = core.rankWith(2, core.or(core.isDateControl, core.isTimeControl));
1045
+ var MaterialNativeControl$1 = react.withJsonFormsControlProps(MaterialNativeControl);
1046
+
1047
+ var MaterialNumberControl = function (props) { return (React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiInputNumber }))); };
1048
+ var materialNumberControlTester = core.rankWith(2, core.isNumberControl);
1049
+ var MaterialNumberControl$1 = react.withJsonFormsControlProps(MaterialNumberControl);
1050
+
1051
+ var MaterialOneOfEnumControl = function (props) {
1052
+ var config = props.config, uischema = props.uischema, errors = props.errors;
1053
+ var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
1054
+ var isValid = errors.length === 0;
1055
+ return appliedUiSchemaOptions.autocomplete === false ? (React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiSelect }))) : (React__default["default"].createElement(MuiAutocomplete, __assign({}, props, { isValid: isValid })));
1056
+ };
1057
+ var materialOneOfEnumControlTester = core.rankWith(5, core.isOneOfEnumControl);
1058
+ var MaterialOneOfEnumControl$1 = react.withJsonFormsOneOfEnumProps(react.withTranslateProps(React__default["default"].memo(MaterialOneOfEnumControl)), false);
1059
+
1060
+ var MaterialRadioGroup = function (props) {
1061
+ var _a;
1062
+ var _b = useFocus(), focused = _b[0], onFocus = _b[1], onBlur = _b[2];
1063
+ var config = props.config, id = props.id, label = props.label, required = props.required, description = props.description, errors = props.errors, data = props.data, visible = props.visible, options = props.options, handleChange = props.handleChange, path = props.path, enabled = props.enabled;
1064
+ var isValid = errors.length === 0;
1065
+ var appliedUiSchemaOptions = merge__default["default"]({}, config, props.uischema.options);
1066
+ var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
1067
+ var onChange = function (_ev, value) { return handleChange(path, value); };
1068
+ return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1069
+ React__default["default"].createElement(material.FormControl, { component: 'fieldset', fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur },
1070
+ React__default["default"].createElement(material.FormLabel, { htmlFor: id, error: !isValid, component: 'legend', required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
1071
+ React__default["default"].createElement(material.RadioGroup, { value: (_a = props.data) !== null && _a !== void 0 ? _a : '', onChange: onChange, row: true }, options.map(function (option) { return (React__default["default"].createElement(material.FormControlLabel, { value: option.value, key: option.label, control: React__default["default"].createElement(material.Radio, { checked: data === option.value }), label: option.label, disabled: !enabled })); })),
1072
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid }, !isValid ? errors : showDescription ? description : null))));
1073
+ };
1074
+
1075
+ var MaterialOneOfRadioGroupControl = function (props) {
1076
+ return React__default["default"].createElement(MaterialRadioGroup, __assign({}, props));
1077
+ };
1078
+ var materialOneOfRadioGroupControlTester = core.rankWith(20, core.and(core.isOneOfEnumControl, core.optionIs('format', 'radio')));
1079
+ var MaterialOneOfRadioGroupControl$1 = react.withJsonFormsOneOfEnumProps(MaterialOneOfRadioGroupControl);
1080
+
1081
+ var MaterialRadioGroupControl = function (props) {
1082
+ return React__default["default"].createElement(MaterialRadioGroup, __assign({}, props));
992
1083
  };
993
- var materialTimeControlTester = core.rankWith(4, core.isTimeControl);
994
- var MaterialTimeControl$1 = react.withJsonFormsControlProps(MaterialTimeControl);
1084
+ var materialRadioGroupControlTester = core.rankWith(20, core.and(core.isEnumControl, core.optionIs('format', 'radio')));
1085
+ var MaterialRadioGroupControl$1 = react.withJsonFormsEnumProps(MaterialRadioGroupControl);
995
1086
 
996
1087
  var MaterialSliderControl = function (props) {
997
1088
  var _a = useFocus(), focused = _a[0], onFocus = _a[1], onBlur = _a[2];
@@ -1002,16 +1093,16 @@ var MaterialSliderControl = function (props) {
1002
1093
  whiteSpace: 'nowrap',
1003
1094
  overflow: 'hidden',
1004
1095
  textOverflow: 'ellipsis',
1005
- width: '100%'
1096
+ width: '100%',
1006
1097
  };
1007
1098
  var rangeContainerStyle = {
1008
- display: 'flex'
1099
+ display: 'flex',
1009
1100
  };
1010
1101
  var rangeItemStyle = {
1011
- flexGrow: '1'
1102
+ flexGrow: '1',
1012
1103
  };
1013
1104
  var sliderStyle = {
1014
- marginTop: '7px'
1105
+ marginTop: '7px',
1015
1106
  };
1016
1107
  var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
1017
1108
  var onChange = React.useCallback(function (_ev, value) { return handleChange(path, Number(value)); }, [path, handleChange]);
@@ -1028,130 +1119,144 @@ var MaterialSliderControl = function (props) {
1028
1119
  var materialSliderControlTester = core.rankWith(4, core.isRangeControl);
1029
1120
  var MaterialSliderControl$1 = react.withJsonFormsControlProps(MaterialSliderControl);
1030
1121
 
1031
- var MaterialRadioGroup = function (props) {
1032
- var _a;
1033
- var _b = useFocus(), focused = _b[0], onFocus = _b[1], onBlur = _b[2];
1034
- var config = props.config, id = props.id, label = props.label, required = props.required, description = props.description, errors = props.errors, data = props.data, visible = props.visible, options = props.options, handleChange = props.handleChange, path = props.path, enabled = props.enabled;
1035
- var isValid = errors.length === 0;
1036
- var appliedUiSchemaOptions = merge__default["default"]({}, config, props.uischema.options);
1037
- var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
1038
- var onChange = function (_ev, value) { return handleChange(path, value); };
1039
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1040
- React__default["default"].createElement(material.FormControl, { component: 'fieldset', fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur },
1041
- React__default["default"].createElement(material.FormLabel, { htmlFor: id, error: !isValid, component: 'legend', required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
1042
- React__default["default"].createElement(material.RadioGroup, { value: (_a = props.data) !== null && _a !== void 0 ? _a : '', onChange: onChange, row: true }, options.map(function (option) { return (React__default["default"].createElement(material.FormControlLabel, { value: option.value, key: option.label, control: React__default["default"].createElement(material.Radio, { checked: data === option.value }), label: option.label, disabled: !enabled })); })),
1043
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, !isValid ? errors : showDescription ? description : null))));
1044
- };
1045
-
1046
- var MaterialRadioGroupControl = function (props) {
1047
- return React__default["default"].createElement(MaterialRadioGroup, __assign({}, props));
1048
- };
1049
- var materialRadioGroupControlTester = core.rankWith(20, core.and(core.isEnumControl, core.optionIs('format', 'radio')));
1050
- var MaterialRadioGroupControl$1 = react.withJsonFormsEnumProps(MaterialRadioGroupControl);
1051
-
1052
- var MaterialIntegerControl = function (props) { return (React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiInputInteger }))); };
1053
- var materialIntegerControlTester = core.rankWith(2, core.isIntegerControl);
1054
- var MaterialIntegerControl$1 = react.withJsonFormsControlProps(MaterialIntegerControl);
1055
-
1056
- var MaterialNumberControl = function (props) { return (React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiInputNumber }))); };
1057
- var materialNumberControlTester = core.rankWith(2, core.isNumberControl);
1058
- var MaterialNumberControl$1 = react.withJsonFormsControlProps(MaterialNumberControl);
1059
-
1060
1122
  var MaterialTextControl = function (props) { return (React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiInputText }))); };
1061
1123
  var materialTextControlTester = core.rankWith(1, core.isStringControl);
1062
1124
  var MaterialTextControl$1 = react.withJsonFormsControlProps(MaterialTextControl);
1063
1125
 
1064
- var findEnumSchema = function (schemas) {
1065
- return schemas.find(function (s) { return s.enum !== undefined && (s.type === 'string' || s.type === undefined); });
1066
- };
1067
- var findTextSchema = function (schemas) {
1068
- return schemas.find(function (s) { return s.type === 'string' && s.enum === undefined; });
1069
- };
1070
- var MuiAutocompleteInputText = function (props) {
1071
- var data = props.data, config = props.config, className = props.className, id = props.id, enabled = props.enabled, uischema = props.uischema, isValid = props.isValid, path = props.path, handleChange = props.handleChange, schema = props.schema;
1072
- var enumSchema = findEnumSchema(schema.anyOf);
1073
- var stringSchema = findTextSchema(schema.anyOf);
1074
- var maxLength = stringSchema.maxLength;
1075
- var appliedUiSchemaOptions = React.useMemo(function () { return merge__default["default"]({}, config, uischema.options); }, [config, uischema.options]);
1076
- var inputProps = React.useMemo(function () {
1077
- var propMemo = {};
1078
- if (appliedUiSchemaOptions.restrict) {
1079
- propMemo = { maxLength: maxLength };
1080
- }
1081
- if (appliedUiSchemaOptions.trim && maxLength !== undefined) {
1082
- propMemo.size = maxLength;
1083
- }
1084
- propMemo.list = props.id + 'datalist';
1085
- return propMemo;
1086
- }, [appliedUiSchemaOptions, props.id]);
1087
- var _a = useDebouncedChange(handleChange, '', data, path), inputText = _a[0], onChange = _a[1];
1088
- var dataList = (React__default["default"].createElement("datalist", { id: props.id + 'datalist' }, enumSchema.enum.map(function (optionValue) { return (React__default["default"].createElement("option", { value: optionValue, key: optionValue })); })));
1089
- return (React__default["default"].createElement(material.Input, { type: 'text', value: inputText, onChange: onChange, className: className, id: id, disabled: !enabled, autoFocus: appliedUiSchemaOptions.focus, fullWidth: !appliedUiSchemaOptions.trim || maxLength === undefined, inputProps: inputProps, error: !isValid, endAdornment: dataList }));
1090
- };
1091
- var MaterialAnyOfStringOrEnumControl = (function (_super) {
1092
- __extends(MaterialAnyOfStringOrEnumControl, _super);
1093
- function MaterialAnyOfStringOrEnumControl() {
1094
- return _super !== null && _super.apply(this, arguments) || this;
1095
- }
1096
- MaterialAnyOfStringOrEnumControl.prototype.render = function () {
1097
- return (React__default["default"].createElement(MaterialInputControl, __assign({}, this.props, { input: MuiAutocompleteInputText })));
1098
- };
1099
- return MaterialAnyOfStringOrEnumControl;
1100
- }(react.Control));
1101
- var hasEnumAndText = function (schemas) {
1102
- var enumSchema = findEnumSchema(schemas);
1103
- var stringSchema = findTextSchema(schemas);
1104
- var remainingSchemas = schemas.filter(function (s) { return s !== enumSchema || s !== stringSchema; });
1105
- var wrongType = remainingSchemas.find(function (s) { return s.type && s.type !== 'string'; });
1106
- return enumSchema && stringSchema && !wrongType;
1107
- };
1108
- var simpleAnyOf = core.and(core.uiTypeIs('Control'), core.schemaMatches(function (schema) { return schema.hasOwnProperty('anyOf') && hasEnumAndText(schema.anyOf); }));
1109
- var materialAnyOfStringOrEnumControlTester = core.rankWith(5, simpleAnyOf);
1110
- var MaterialAnyOfStringOrEnumControl$1 = react.withJsonFormsControlProps(MaterialAnyOfStringOrEnumControl);
1111
-
1112
- var MaterialOneOfEnumControl = function (props) {
1113
- var config = props.config, uischema = props.uischema, errors = props.errors;
1126
+ var MaterialTimeControl = function (props) {
1127
+ var _a, _b, _c;
1128
+ var _d = useFocus(), focused = _d[0], onFocus = _d[1], onBlur = _d[2];
1129
+ var id = props.id, description = props.description, errors = props.errors, label = props.label, uischema = props.uischema, visible = props.visible, enabled = props.enabled, required = props.required, path = props.path, handleChange = props.handleChange, data = props.data, config = props.config;
1114
1130
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
1115
1131
  var isValid = errors.length === 0;
1116
- return (appliedUiSchemaOptions.autocomplete === false ?
1117
- React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiSelect })) :
1118
- React__default["default"].createElement(MuiAutocomplete, __assign({}, props, { isValid: isValid })));
1132
+ var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
1133
+ var format = (_a = appliedUiSchemaOptions.timeFormat) !== null && _a !== void 0 ? _a : 'HH:mm';
1134
+ var saveFormat = (_b = appliedUiSchemaOptions.timeSaveFormat) !== null && _b !== void 0 ? _b : 'HH:mm:ss';
1135
+ var views = (_c = appliedUiSchemaOptions.views) !== null && _c !== void 0 ? _c : ['hours', 'minutes'];
1136
+ var firstFormHelperText = showDescription
1137
+ ? description
1138
+ : !isValid
1139
+ ? errors
1140
+ : null;
1141
+ var secondFormHelperText = showDescription && !isValid ? errors : null;
1142
+ var onChange = React.useMemo(function () { return createOnChangeHandler(path, handleChange, saveFormat); }, [path, handleChange, saveFormat]);
1143
+ var value = getData(data, saveFormat);
1144
+ var valueInInputFormat = value ? value.format(format) : '';
1145
+ return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1146
+ React__default["default"].createElement(xDatePickers.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs },
1147
+ React__default["default"].createElement(xDatePickers.TimePicker, { label: label, value: value, onChange: onChange, inputFormat: format, disableMaskedInput: true, ampm: !!appliedUiSchemaOptions.ampm, views: views, disabled: !enabled, componentsProps: {
1148
+ actionBar: {
1149
+ actions: function (variant) {
1150
+ return variant === 'desktop' ? [] : ['clear', 'cancel', 'accept'];
1151
+ },
1152
+ },
1153
+ }, renderInput: function (params) { return (React__default["default"].createElement(ResettableTextField, __assign({}, params, { rawValue: data, dayjsValueIsValid: value !== null, valueInInputFormat: valueInInputFormat, focused: focused, id: id + '-input', required: required && !appliedUiSchemaOptions.hideRequiredAsterisk, autoFocus: appliedUiSchemaOptions.focus, error: !isValid, fullWidth: !appliedUiSchemaOptions.trim, inputProps: __assign(__assign({}, params.inputProps), { type: 'text' }), InputLabelProps: data ? { shrink: true } : undefined, onFocus: onFocus, onBlur: onBlur, variant: 'standard' }))); } }),
1154
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
1155
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
1119
1156
  };
1120
- var materialOneOfEnumControlTester = core.rankWith(5, core.isOneOfEnumControl);
1121
- var MaterialOneOfEnumControl$1 = react.withJsonFormsOneOfEnumProps(react.withTranslateProps(React__default["default"].memo(MaterialOneOfEnumControl)), false);
1157
+ var materialTimeControlTester = core.rankWith(4, core.isTimeControl);
1158
+ var MaterialTimeControl$1 = react.withJsonFormsControlProps(MaterialTimeControl);
1122
1159
 
1123
- var MaterialOneOfRadioGroupControl = function (props) {
1124
- return React__default["default"].createElement(MaterialRadioGroup, __assign({}, props));
1160
+ var iconStyle = { float: 'right' };
1161
+ var ExpandPanelRendererComponent = function (props) {
1162
+ var labelHtmlId = React.useState(core.createId('expand-panel'))[0];
1163
+ React.useEffect(function () {
1164
+ return function () {
1165
+ core.removeId(labelHtmlId);
1166
+ };
1167
+ }, [labelHtmlId]);
1168
+ var enabled = props.enabled, childLabel = props.childLabel, childPath = props.childPath, index = props.index, expanded = props.expanded, moveDown = props.moveDown, moveUp = props.moveUp, enableMoveDown = props.enableMoveDown, enableMoveUp = props.enableMoveUp, handleExpansion = props.handleExpansion, removeItems = props.removeItems, path = props.path, rootSchema = props.rootSchema, schema = props.schema, uischema = props.uischema, uischemas = props.uischemas, renderers = props.renderers, cells = props.cells, config = props.config, translations = props.translations;
1169
+ var foundUISchema = React.useMemo(function () {
1170
+ return core.findUISchema(uischemas, schema, uischema.scope, path, undefined, uischema, rootSchema);
1171
+ }, [uischemas, schema, uischema.scope, path, uischema, rootSchema]);
1172
+ var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
1173
+ var showSortButtons = appliedUiSchemaOptions.showSortButtons ||
1174
+ appliedUiSchemaOptions.showArrayLayoutSortButtons;
1175
+ return (React__default["default"].createElement(material.Accordion, { "aria-labelledby": labelHtmlId, expanded: expanded, onChange: handleExpansion(childPath) },
1176
+ React__default["default"].createElement(material.AccordionSummary, { expandIcon: React__default["default"].createElement(ExpandMoreIcon__default["default"], null) },
1177
+ React__default["default"].createElement(material.Grid, { container: true, alignItems: 'center' },
1178
+ React__default["default"].createElement(material.Grid, { item: true, xs: 7, md: 9 },
1179
+ React__default["default"].createElement(material.Grid, { container: true, alignItems: 'center' },
1180
+ React__default["default"].createElement(material.Grid, { item: true, xs: 2, md: 1 },
1181
+ React__default["default"].createElement(material.Avatar, { "aria-label": 'Index' }, index + 1)),
1182
+ React__default["default"].createElement(material.Grid, { item: true, xs: 10, md: 11 },
1183
+ React__default["default"].createElement("span", { id: labelHtmlId }, childLabel)))),
1184
+ React__default["default"].createElement(material.Grid, { item: true, xs: 5, md: 3 },
1185
+ React__default["default"].createElement(material.Grid, { container: true, justifyContent: 'flex-end' },
1186
+ React__default["default"].createElement(material.Grid, { item: true },
1187
+ React__default["default"].createElement(material.Grid, { container: true, direction: 'row', justifyContent: 'center', alignItems: 'center' },
1188
+ showSortButtons ? (React__default["default"].createElement(React.Fragment, null,
1189
+ React__default["default"].createElement(material.Grid, { item: true },
1190
+ React__default["default"].createElement(material.IconButton, { onClick: moveUp(path, index), style: iconStyle, disabled: !enableMoveUp, "aria-label": translations.upAriaLabel, size: 'large' },
1191
+ React__default["default"].createElement(ArrowUpward__default["default"], null))),
1192
+ React__default["default"].createElement(material.Grid, { item: true },
1193
+ React__default["default"].createElement(material.IconButton, { onClick: moveDown(path, index), style: iconStyle, disabled: !enableMoveDown, "aria-label": translations.downAriaLabel, size: 'large' },
1194
+ React__default["default"].createElement(ArrowDownward__default["default"], null))))) : (''),
1195
+ React__default["default"].createElement(material.Grid, { item: true },
1196
+ React__default["default"].createElement(material.IconButton, { onClick: removeItems(path, [index]), style: iconStyle, "aria-label": translations.removeAriaLabel, size: 'large' },
1197
+ React__default["default"].createElement(DeleteIcon__default["default"], null))))))))),
1198
+ React__default["default"].createElement(material.AccordionDetails, null,
1199
+ React__default["default"].createElement(react.JsonFormsDispatch, { enabled: enabled, schema: schema, uischema: foundUISchema, path: childPath, key: childPath, renderers: renderers, cells: cells }))));
1125
1200
  };
1126
- var materialOneOfRadioGroupControlTester = core.rankWith(20, core.and(core.isOneOfEnumControl, core.optionIs('format', 'radio')));
1127
- var MaterialOneOfRadioGroupControl$1 = react.withJsonFormsOneOfEnumProps(MaterialOneOfRadioGroupControl);
1128
-
1129
- var Unwrapped = {
1130
- MaterialBooleanControl: MaterialBooleanControl,
1131
- MaterialBooleanToggleControl: MaterialBooleanToggleControl,
1132
- MaterialEnumControl: MaterialEnumControl,
1133
- MaterialNativeControl: MaterialNativeControl,
1134
- MaterialDateControl: MaterialDateControl,
1135
- MaterialDateTimeControl: MaterialDateTimeControl,
1136
- MaterialTimeControl: MaterialTimeControl,
1137
- MaterialSliderControl: MaterialSliderControl,
1138
- MaterialRadioGroupControl: MaterialRadioGroupControl,
1139
- MaterialIntegerControl: MaterialIntegerControl,
1140
- MaterialNumberControl: MaterialNumberControl,
1141
- MaterialTextControl: MaterialTextControl,
1142
- MaterialAnyOfStringOrEnumControl: MaterialAnyOfStringOrEnumControl,
1143
- MaterialOneOfEnumControl: MaterialOneOfEnumControl,
1144
- MaterialOneOfRadioGroupControl: MaterialOneOfRadioGroupControl
1201
+ var ExpandPanelRenderer = React__default["default"].memo(ExpandPanelRendererComponent);
1202
+ var ctxDispatchToExpandPanelProps = function (dispatch) { return ({
1203
+ removeItems: React.useCallback(function (path, toDelete) {
1204
+ return function (event) {
1205
+ event.stopPropagation();
1206
+ dispatch(core.update(path, function (array) {
1207
+ toDelete
1208
+ .sort()
1209
+ .reverse()
1210
+ .forEach(function (s) { return array.splice(s, 1); });
1211
+ return array;
1212
+ }));
1213
+ };
1214
+ }, [dispatch]),
1215
+ moveUp: React.useCallback(function (path, toMove) {
1216
+ return function (event) {
1217
+ event.stopPropagation();
1218
+ dispatch(core.update(path, function (array) {
1219
+ core.moveUp(array, toMove);
1220
+ return array;
1221
+ }));
1222
+ };
1223
+ }, [dispatch]),
1224
+ moveDown: React.useCallback(function (path, toMove) {
1225
+ return function (event) {
1226
+ event.stopPropagation();
1227
+ dispatch(core.update(path, function (array) {
1228
+ core.moveDown(array, toMove);
1229
+ return array;
1230
+ }));
1231
+ };
1232
+ }, [dispatch]),
1233
+ }); };
1234
+ var withContextToExpandPanelProps = function (Component) {
1235
+ return function WithContextToExpandPanelProps(_a) {
1236
+ var ctx = _a.ctx, props = _a.props;
1237
+ var dispatchProps = ctxDispatchToExpandPanelProps(ctx.dispatch);
1238
+ var childLabelProp = props.childLabelProp, schema = props.schema, path = props.path, index = props.index, uischemas = props.uischemas;
1239
+ var childPath = core.composePaths(path, "" + index);
1240
+ var childData = core.Resolve.data(ctx.core.data, childPath);
1241
+ var childLabel = childLabelProp
1242
+ ? get__default["default"](childData, childLabelProp, '')
1243
+ : get__default["default"](childData, core.getFirstPrimitiveProp(schema), '');
1244
+ return (React__default["default"].createElement(Component, __assign({}, props, dispatchProps, { childLabel: childLabel, childPath: childPath, uischemas: uischemas })));
1245
+ };
1246
+ };
1247
+ var withJsonFormsExpandPanelProps = function (Component) {
1248
+ return react.withJsonFormsContext(withContextToExpandPanelProps(Component));
1145
1249
  };
1250
+ var ExpandPanelRenderer$1 = withJsonFormsExpandPanelProps(ExpandPanelRenderer);
1146
1251
 
1147
1252
  var groupTester = core.rankWith(1, core.uiTypeIs('Group'));
1148
1253
  var style = { marginBottom: '10px' };
1149
- var GroupComponent = React__default["default"].memo(function (_a) {
1254
+ var GroupComponent = React__default["default"].memo(function GroupComponent(_a) {
1150
1255
  var visible = _a.visible, enabled = _a.enabled, uischema = _a.uischema, label = _a.label, props = __rest(_a, ["visible", "enabled", "uischema", "label"]);
1151
1256
  var groupLayout = uischema;
1152
1257
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1153
1258
  React__default["default"].createElement(material.Card, { style: style },
1154
- !isEmpty__default["default"](label) && (React__default["default"].createElement(material.CardHeader, { title: label })),
1259
+ !isEmpty__default["default"](label) && React__default["default"].createElement(material.CardHeader, { title: label }),
1155
1260
  React__default["default"].createElement(material.CardContent, null,
1156
1261
  React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, props, { visible: visible, enabled: enabled, elements: groupLayout.elements }))))));
1157
1262
  });
@@ -1173,9 +1278,9 @@ var MaterialHorizontalLayoutRenderer = function (_a) {
1173
1278
  path: path,
1174
1279
  enabled: enabled,
1175
1280
  direction: 'row',
1176
- visible: visible
1281
+ visible: visible,
1177
1282
  };
1178
- return React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, childProps, { renderers: renderers, cells: cells }));
1283
+ return (React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, childProps, { renderers: renderers, cells: cells })));
1179
1284
  };
1180
1285
  var MaterialHorizontalLayout = react.withJsonFormsLayoutProps(MaterialHorizontalLayoutRenderer);
1181
1286
 
@@ -1189,9 +1294,9 @@ var MaterialVerticalLayoutRenderer = function (_a) {
1189
1294
  path: path,
1190
1295
  enabled: enabled,
1191
1296
  direction: 'column',
1192
- visible: visible
1297
+ visible: visible,
1193
1298
  };
1194
- return React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, childProps, { renderers: renderers, cells: cells }));
1299
+ return (React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, childProps, { renderers: renderers, cells: cells })));
1195
1300
  };
1196
1301
  var MaterialVerticalLayout = react.withJsonFormsLayoutProps(MaterialVerticalLayoutRenderer);
1197
1302
 
@@ -1204,122 +1309,45 @@ var materialCategorizationTester = core.rankWith(1, isSingleLevelCategorization)
1204
1309
  var MaterialCategorizationLayoutRenderer = function (props) {
1205
1310
  var data = props.data, path = props.path, renderers = props.renderers, cells = props.cells, schema = props.schema, uischema = props.uischema, visible = props.visible, enabled = props.enabled, selected = props.selected, onChange = props.onChange, ajv = props.ajv, t = props.t;
1206
1311
  var categorization = uischema;
1207
- var _a = React.useState(selected !== null && selected !== void 0 ? selected : 0), activeCategory = _a[0], setActiveCategory = _a[1];
1208
- var categories = React.useMemo(function () { return categorization.elements.filter(function (category) {
1209
- return core.isVisible(category, data, undefined, ajv);
1210
- }); }, [categorization, data, ajv]);
1312
+ var _a = React.useState(uischema), previousCategorization = _a[0], setPreviousCategorization = _a[1];
1313
+ var _b = React.useState(selected !== null && selected !== void 0 ? selected : 0), activeCategory = _b[0], setActiveCategory = _b[1];
1314
+ var categories = React.useMemo(function () {
1315
+ return categorization.elements.filter(function (category) {
1316
+ return core.isVisible(category, data, undefined, ajv);
1317
+ });
1318
+ }, [categorization, data, ajv]);
1319
+ if (categorization !== previousCategorization) {
1320
+ setActiveCategory(0);
1321
+ setPreviousCategorization(categorization);
1322
+ }
1323
+ var safeCategory = activeCategory >= categorization.elements.length ? 0 : activeCategory;
1211
1324
  var childProps = {
1212
- elements: categories[activeCategory].elements,
1325
+ elements: categories[safeCategory] ? categories[safeCategory].elements : [],
1213
1326
  schema: schema,
1214
1327
  path: path,
1215
1328
  direction: 'column',
1216
1329
  enabled: enabled,
1217
1330
  visible: visible,
1218
1331
  renderers: renderers,
1219
- cells: cells
1332
+ cells: cells,
1220
1333
  };
1221
1334
  var onTabChange = function (_event, value) {
1222
1335
  if (onChange) {
1223
- onChange(value, activeCategory);
1336
+ onChange(value, safeCategory);
1224
1337
  }
1225
1338
  setActiveCategory(value);
1226
1339
  };
1227
1340
  var tabLabels = React.useMemo(function () {
1228
- return categories.map(function (e) {
1229
- return core.deriveLabelForUISchemaElement(e, t);
1230
- });
1341
+ return categories.map(function (e) { return core.deriveLabelForUISchemaElement(e, t); });
1231
1342
  }, [categories, t]);
1232
1343
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1233
1344
  React__default["default"].createElement(material.AppBar, { position: 'static' },
1234
- React__default["default"].createElement(material.Tabs, { value: activeCategory, onChange: onTabChange, textColor: 'inherit', indicatorColor: 'secondary', variant: 'scrollable' }, categories.map(function (_, idx) { return (React__default["default"].createElement(material.Tab, { key: idx, label: tabLabels[idx] })); }))),
1345
+ React__default["default"].createElement(material.Tabs, { value: safeCategory, onChange: onTabChange, textColor: 'inherit', indicatorColor: 'secondary', variant: 'scrollable' }, categories.map(function (_, idx) { return (React__default["default"].createElement(material.Tab, { key: idx, label: tabLabels[idx] })); }))),
1235
1346
  React__default["default"].createElement("div", { style: { marginTop: '0.5em' } },
1236
- React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, childProps)))));
1347
+ React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, childProps, { key: safeCategory })))));
1237
1348
  };
1238
1349
  var MaterialCategorizationLayout = withAjvProps(react.withTranslateProps(react.withJsonFormsLayoutProps(MaterialCategorizationLayoutRenderer)));
1239
1350
 
1240
- var iconStyle = { float: 'right' };
1241
- var ExpandPanelRendererComponent = function (props) {
1242
- var labelHtmlId = React.useState(core.createId('expand-panel'))[0];
1243
- React.useEffect(function () {
1244
- return function () {
1245
- core.removeId(labelHtmlId);
1246
- };
1247
- }, [labelHtmlId]);
1248
- var enabled = props.enabled, childLabel = props.childLabel, childPath = props.childPath, index = props.index, expanded = props.expanded, moveDown = props.moveDown, moveUp = props.moveUp, enableMoveDown = props.enableMoveDown, enableMoveUp = props.enableMoveUp, handleExpansion = props.handleExpansion, removeItems = props.removeItems, path = props.path, rootSchema = props.rootSchema, schema = props.schema, uischema = props.uischema, uischemas = props.uischemas, renderers = props.renderers, cells = props.cells, config = props.config;
1249
- var foundUISchema = React.useMemo(function () {
1250
- return core.findUISchema(uischemas, schema, uischema.scope, path, undefined, uischema, rootSchema);
1251
- }, [uischemas, schema, uischema.scope, path, uischema, rootSchema]);
1252
- var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
1253
- var showSortButtons = appliedUiSchemaOptions.showSortButtons || appliedUiSchemaOptions.showArrayLayoutSortButtons;
1254
- return (React__default["default"].createElement(material.Accordion, { "aria-labelledby": labelHtmlId, expanded: expanded, onChange: handleExpansion(childPath) },
1255
- React__default["default"].createElement(material.AccordionSummary, { expandIcon: React__default["default"].createElement(ExpandMoreIcon__default["default"], null) },
1256
- React__default["default"].createElement(material.Grid, { container: true, alignItems: 'center' },
1257
- React__default["default"].createElement(material.Grid, { item: true, xs: 7, md: 9 },
1258
- React__default["default"].createElement(material.Grid, { container: true, alignItems: 'center' },
1259
- React__default["default"].createElement(material.Grid, { item: true, xs: 2, md: 1 },
1260
- React__default["default"].createElement(material.Avatar, { "aria-label": 'Index' }, index + 1)),
1261
- React__default["default"].createElement(material.Grid, { item: true, xs: 10, md: 11 },
1262
- React__default["default"].createElement("span", { id: labelHtmlId }, childLabel)))),
1263
- React__default["default"].createElement(material.Grid, { item: true, xs: 5, md: 3 },
1264
- React__default["default"].createElement(material.Grid, { container: true, justifyContent: 'flex-end' },
1265
- React__default["default"].createElement(material.Grid, { item: true },
1266
- React__default["default"].createElement(material.Grid, { container: true, direction: 'row', justifyContent: 'center', alignItems: 'center' },
1267
- showSortButtons ? (React__default["default"].createElement(React.Fragment, null,
1268
- React__default["default"].createElement(material.Grid, { item: true },
1269
- React__default["default"].createElement(material.IconButton, { onClick: moveUp(path, index), style: iconStyle, disabled: !enableMoveUp, "aria-label": "Move up", size: 'large' },
1270
- React__default["default"].createElement(ArrowUpward__default["default"], null))),
1271
- React__default["default"].createElement(material.Grid, { item: true },
1272
- React__default["default"].createElement(material.IconButton, { onClick: moveDown(path, index), style: iconStyle, disabled: !enableMoveDown, "aria-label": "Move down", size: 'large' },
1273
- React__default["default"].createElement(ArrowDownward__default["default"], null))))) : (''),
1274
- React__default["default"].createElement(material.Grid, { item: true },
1275
- React__default["default"].createElement(material.IconButton, { onClick: removeItems(path, [index]), style: iconStyle, "aria-label": "Delete", size: 'large' },
1276
- React__default["default"].createElement(DeleteIcon__default["default"], null))))))))),
1277
- React__default["default"].createElement(material.AccordionDetails, null,
1278
- React__default["default"].createElement(react.JsonFormsDispatch, { enabled: enabled, schema: schema, uischema: foundUISchema, path: childPath, key: childPath, renderers: renderers, cells: cells }))));
1279
- };
1280
- var ExpandPanelRenderer = React__default["default"].memo(ExpandPanelRendererComponent);
1281
- var ctxDispatchToExpandPanelProps = function (dispatch) { return ({
1282
- removeItems: React.useCallback(function (path, toDelete) { return function (event) {
1283
- event.stopPropagation();
1284
- dispatch(core.update(path, function (array) {
1285
- toDelete
1286
- .sort()
1287
- .reverse()
1288
- .forEach(function (s) { return array.splice(s, 1); });
1289
- return array;
1290
- }));
1291
- }; }, [dispatch]),
1292
- moveUp: React.useCallback(function (path, toMove) { return function (event) {
1293
- event.stopPropagation();
1294
- dispatch(core.update(path, function (array) {
1295
- core.moveUp(array, toMove);
1296
- return array;
1297
- }));
1298
- }; }, [dispatch]),
1299
- moveDown: React.useCallback(function (path, toMove) { return function (event) {
1300
- event.stopPropagation();
1301
- dispatch(core.update(path, function (array) {
1302
- core.moveDown(array, toMove);
1303
- return array;
1304
- }));
1305
- }; }, [dispatch])
1306
- }); };
1307
- var withContextToExpandPanelProps = function (Component) { return function (_a) {
1308
- var ctx = _a.ctx, props = _a.props;
1309
- var dispatchProps = ctxDispatchToExpandPanelProps(ctx.dispatch);
1310
- var childLabelProp = props.childLabelProp, schema = props.schema, path = props.path, index = props.index, uischemas = props.uischemas;
1311
- var childPath = core.composePaths(path, "" + index);
1312
- var childData = core.Resolve.data(ctx.core.data, childPath);
1313
- var childLabel = childLabelProp
1314
- ? get__default["default"](childData, childLabelProp, '')
1315
- : get__default["default"](childData, core.getFirstPrimitiveProp(schema), '');
1316
- return (React__default["default"].createElement(Component, __assign({}, props, dispatchProps, { childLabel: childLabel, childPath: childPath, uischemas: uischemas })));
1317
- }; };
1318
- var withJsonFormsExpandPanelProps = function (Component) {
1319
- return react.withJsonFormsContext(withContextToExpandPanelProps(Component));
1320
- };
1321
- var ExpandPanelRenderer$1 = withJsonFormsExpandPanelProps(ExpandPanelRenderer);
1322
-
1323
1351
  var MaterialArrayLayoutComponent = function (props) {
1324
1352
  var _a = React.useState(false), expanded = _a[0], setExpanded = _a[1];
1325
1353
  var innerCreateDefaultValue = React.useCallback(function () { return core.createDefaultValue(props.schema); }, [props.schema]);
@@ -1329,21 +1357,19 @@ var MaterialArrayLayoutComponent = function (props) {
1329
1357
  var isExpanded = function (index) {
1330
1358
  return expanded === core.composePaths(props.path, "" + index);
1331
1359
  };
1332
- var enabled = props.enabled, data = props.data, path = props.path, schema = props.schema, uischema = props.uischema, errors = props.errors, addItem = props.addItem, renderers = props.renderers, cells = props.cells, label = props.label, required = props.required, rootSchema = props.rootSchema, config = props.config, uischemas = props.uischemas;
1360
+ var enabled = props.enabled, data = props.data, path = props.path, schema = props.schema, uischema = props.uischema, errors = props.errors, addItem = props.addItem, renderers = props.renderers, cells = props.cells, label = props.label, required = props.required, rootSchema = props.rootSchema, config = props.config, uischemas = props.uischemas, translations = props.translations;
1333
1361
  var appliedUiSchemaOptions = merge__default["default"]({}, config, props.uischema.options);
1334
1362
  return (React__default["default"].createElement("div", null,
1335
- React__default["default"].createElement(ArrayLayoutToolbar, { label: core.computeLabel(label, required, appliedUiSchemaOptions.hideRequiredAsterisk), errors: errors, path: path, addItem: addItem, createDefault: innerCreateDefaultValue }),
1363
+ React__default["default"].createElement(ArrayLayoutToolbar, { translations: translations, label: core.computeLabel(label, required, appliedUiSchemaOptions.hideRequiredAsterisk), errors: errors, path: path, addItem: addItem, createDefault: innerCreateDefaultValue }),
1336
1364
  React__default["default"].createElement("div", null, data > 0 ? (map__default["default"](range__default["default"](data), function (index) {
1337
- return (React__default["default"].createElement(ExpandPanelRenderer$1, { enabled: enabled, index: index, expanded: isExpanded(index), schema: schema, path: path, handleExpansion: handleChange, uischema: uischema, renderers: renderers, cells: cells, key: index, rootSchema: rootSchema, enableMoveUp: index != 0, enableMoveDown: index < data - 1, config: config, childLabelProp: appliedUiSchemaOptions.elementLabelProp, uischemas: uischemas }));
1365
+ return (React__default["default"].createElement(ExpandPanelRenderer$1, { enabled: enabled, index: index, expanded: isExpanded(index), schema: schema, path: path, handleExpansion: handleChange, uischema: uischema, renderers: renderers, cells: cells, key: index, rootSchema: rootSchema, enableMoveUp: index != 0, enableMoveDown: index < data - 1, config: config, childLabelProp: appliedUiSchemaOptions.elementLabelProp, uischemas: uischemas, translations: translations }));
1338
1366
  })) : (React__default["default"].createElement("p", null, "No data")))));
1339
1367
  };
1340
1368
  var MaterialArrayLayout$1 = React__default["default"].memo(MaterialArrayLayoutComponent);
1341
1369
 
1342
1370
  var MaterialArrayLayoutRenderer = function (_a) {
1343
1371
  var visible = _a.visible, addItem = _a.addItem, props = __rest(_a, ["visible", "addItem"]);
1344
- var addItemCb = React.useCallback(function (p, value) { return addItem(p, value); }, [
1345
- addItem
1346
- ]);
1372
+ var addItemCb = React.useCallback(function (p, value) { return addItem(p, value); }, [addItem]);
1347
1373
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1348
1374
  React__default["default"].createElement(MaterialArrayLayout$1, __assign({ visible: visible, addItem: addItemCb }, props))));
1349
1375
  };
@@ -1370,7 +1396,7 @@ var MaterialDateCell = function (props) {
1370
1396
  var materialDateCellTester = core.rankWith(2, core.isDateControl);
1371
1397
  var MaterialDateCell$1 = react.withJsonFormsCellProps(MaterialDateCell);
1372
1398
 
1373
- var MaterialEnumCell = function (props) { return (React__default["default"].createElement(MuiSelect, __assign({}, props))); };
1399
+ var MaterialEnumCell = function (props) { return React__default["default"].createElement(MuiSelect, __assign({}, props)); };
1374
1400
  var materialEnumCellTester = core.rankWith(2, core.isEnumControl);
1375
1401
  var MaterialEnumCell$1 = react.withJsonFormsEnumCellProps(react.withTranslateProps(React__default["default"].memo(MaterialEnumCell)), false);
1376
1402
 
@@ -1386,7 +1412,7 @@ var MaterialNumberFormatCell = function (props) { return React__default["default
1386
1412
  var materialNumberFormatCellTester = core.rankWith(4, core.isNumberFormatControl);
1387
1413
  var MaterialNumberFormatCell$1 = react.withJsonFormsCellProps(MaterialNumberFormatCell);
1388
1414
 
1389
- var MaterialOneOfEnumCell = function (props) { return (React__default["default"].createElement(MuiSelect, __assign({}, props))); };
1415
+ var MaterialOneOfEnumCell = function (props) { return React__default["default"].createElement(MuiSelect, __assign({}, props)); };
1390
1416
  var materialOneOfEnumCellTester = core.rankWith(2, core.isOneOfEnumControl);
1391
1417
  var MaterialOneOfEnumCell$1 = react.withJsonFormsOneOfEnumCellProps(react.withTranslateProps(React__default["default"].memo(MaterialOneOfEnumCell)), false);
1392
1418
 
@@ -1423,17 +1449,19 @@ var MaterialCategorizationStepperLayoutRenderer = function (props) {
1423
1449
  var buttonWrapperStyle = {
1424
1450
  textAlign: 'right',
1425
1451
  width: '100%',
1426
- margin: '1em auto'
1452
+ margin: '1em auto',
1427
1453
  };
1428
1454
  var buttonNextStyle = {
1429
- float: 'right'
1455
+ float: 'right',
1430
1456
  };
1431
1457
  var buttonStyle = {
1432
- marginRight: '1em'
1458
+ marginRight: '1em',
1433
1459
  };
1434
- var categories = React.useMemo(function () { return categorization.elements.filter(function (category) {
1435
- return core.isVisible(category, data, undefined, ajv);
1436
- }); }, [categorization, data, ajv]);
1460
+ var categories = React.useMemo(function () {
1461
+ return categorization.elements.filter(function (category) {
1462
+ return core.isVisible(category, data, undefined, ajv);
1463
+ });
1464
+ }, [categorization, data, ajv]);
1437
1465
  var childProps = {
1438
1466
  elements: categories[activeCategory].elements,
1439
1467
  schema: schema,
@@ -1441,31 +1469,73 @@ var MaterialCategorizationStepperLayoutRenderer = function (props) {
1441
1469
  direction: 'column',
1442
1470
  visible: visible,
1443
1471
  renderers: renderers,
1444
- cells: cells
1472
+ cells: cells,
1445
1473
  };
1446
1474
  var tabLabels = React.useMemo(function () {
1447
- return categories.map(function (e) {
1448
- return core.deriveLabelForUISchemaElement(e, t);
1449
- });
1475
+ return categories.map(function (e) { return core.deriveLabelForUISchemaElement(e, t); });
1450
1476
  }, [categories, t]);
1451
1477
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1452
1478
  React__default["default"].createElement(material.Stepper, { activeStep: activeCategory, nonLinear: true }, categories.map(function (_, idx) { return (React__default["default"].createElement(material.Step, { key: tabLabels[idx] },
1453
1479
  React__default["default"].createElement(material.StepButton, { onClick: function () { return handleStep(idx); } }, tabLabels[idx]))); })),
1454
1480
  React__default["default"].createElement("div", null,
1455
1481
  React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, childProps))),
1456
- !!appliedUiSchemaOptions.showNavButtons ? (React__default["default"].createElement("div", { style: buttonWrapperStyle },
1457
- React__default["default"].createElement(material.Button, { style: buttonNextStyle, variant: "contained", color: "primary", disabled: activeCategory >= categories.length - 1, onClick: function () { return handleStep(activeCategory + 1); } }, "Next"),
1458
- React__default["default"].createElement(material.Button, { style: buttonStyle, color: "secondary", variant: "contained", disabled: activeCategory <= 0, onClick: function () { return handleStep(activeCategory - 1); } }, "Previous"))) : (React__default["default"].createElement(React__default["default"].Fragment, null))));
1482
+ appliedUiSchemaOptions.showNavButtons ? (React__default["default"].createElement("div", { style: buttonWrapperStyle },
1483
+ React__default["default"].createElement(material.Button, { style: buttonNextStyle, variant: 'contained', color: 'primary', disabled: activeCategory >= categories.length - 1, onClick: function () { return handleStep(activeCategory + 1); } }, "Next"),
1484
+ React__default["default"].createElement(material.Button, { style: buttonStyle, color: 'secondary', variant: 'contained', disabled: activeCategory <= 0, onClick: function () { return handleStep(activeCategory - 1); } }, "Previous"))) : (React__default["default"].createElement(React__default["default"].Fragment, null))));
1459
1485
  };
1460
1486
  var MaterialCategorizationStepperLayout = withAjvProps(react.withTranslateProps(react.withJsonFormsLayoutProps(MaterialCategorizationStepperLayoutRenderer)));
1461
1487
 
1488
+ var UnwrappedAdditional = {
1489
+ MaterialLabelRenderer: MaterialLabelRenderer,
1490
+ MaterialListWithDetailRenderer: MaterialListWithDetailRenderer,
1491
+ };
1492
+
1493
+ var UnwrappedComplex = {
1494
+ MaterialAllOfRenderer: MaterialAllOfRenderer,
1495
+ MaterialAnyOfRenderer: MaterialAnyOfRenderer,
1496
+ MaterialArrayControlRenderer: MaterialArrayControlRenderer,
1497
+ MaterialEnumArrayRenderer: MaterialEnumArrayRenderer,
1498
+ MaterialObjectRenderer: MaterialObjectRenderer,
1499
+ MaterialOneOfRenderer: MaterialOneOfRenderer,
1500
+ };
1501
+
1502
+ var UnwrappedControls = {
1503
+ MaterialAnyOfStringOrEnumControl: MaterialAnyOfStringOrEnumControl,
1504
+ MaterialBooleanControl: MaterialBooleanControl,
1505
+ MaterialBooleanToggleControl: MaterialBooleanToggleControl,
1506
+ MaterialDateControl: MaterialDateControl,
1507
+ MaterialDateTimeControl: MaterialDateTimeControl,
1508
+ MaterialEnumControl: MaterialEnumControl,
1509
+ MaterialIntegerControl: MaterialIntegerControl,
1510
+ MaterialNativeControl: MaterialNativeControl,
1511
+ MaterialNumberControl: MaterialNumberControl,
1512
+ MaterialOneOfEnumControl: MaterialOneOfEnumControl,
1513
+ MaterialOneOfRadioGroupControl: MaterialOneOfRadioGroupControl,
1514
+ MaterialSliderControl: MaterialSliderControl,
1515
+ MaterialRadioGroupControl: MaterialRadioGroupControl,
1516
+ MaterialTextControl: MaterialTextControl,
1517
+ MaterialTimeControl: MaterialTimeControl,
1518
+ };
1519
+
1520
+ var UnwrappedLayouts = {
1521
+ ExpandPanelRenderer: ExpandPanelRenderer,
1522
+ MaterialArrayLayout: MaterialArrayLayoutRenderer,
1523
+ MaterialCategorizationLayout: MaterialCategorizationLayoutRenderer,
1524
+ MaterialGroupLayout: MaterializedGroupLayoutRenderer,
1525
+ MaterialHorizontalLayout: MaterialHorizontalLayoutRenderer,
1526
+ MaterialVerticalLayout: MaterialVerticalLayoutRenderer,
1527
+ };
1528
+
1462
1529
  var materialRenderers = [
1463
1530
  {
1464
1531
  tester: materialArrayControlTester,
1465
- renderer: MaterialArrayControlRenderer$1
1532
+ renderer: MaterialArrayControlRenderer$1,
1466
1533
  },
1467
1534
  { tester: materialBooleanControlTester, renderer: MaterialBooleanControl$1 },
1468
- { tester: materialBooleanToggleControlTester, renderer: MaterialBooleanToggleControl$1 },
1535
+ {
1536
+ tester: materialBooleanToggleControlTester,
1537
+ renderer: MaterialBooleanToggleControl$1,
1538
+ },
1469
1539
  { tester: materialNativeControlTester, renderer: MaterialNativeControl$1 },
1470
1540
  { tester: materialEnumControlTester, renderer: MaterialEnumControl$1 },
1471
1541
  { tester: materialIntegerControlTester, renderer: MaterialIntegerControl$1 },
@@ -1481,41 +1551,44 @@ var materialRenderers = [
1481
1551
  { tester: materialOneOfControlTester, renderer: MaterialOneOfRenderer$1 },
1482
1552
  {
1483
1553
  tester: materialRadioGroupControlTester,
1484
- renderer: MaterialRadioGroupControl$1
1554
+ renderer: MaterialRadioGroupControl$1,
1485
1555
  },
1486
1556
  {
1487
1557
  tester: materialOneOfRadioGroupControlTester,
1488
- renderer: MaterialOneOfRadioGroupControl$1
1558
+ renderer: MaterialOneOfRadioGroupControl$1,
1559
+ },
1560
+ {
1561
+ tester: materialOneOfEnumControlTester,
1562
+ renderer: MaterialOneOfEnumControl$1,
1489
1563
  },
1490
- { tester: materialOneOfEnumControlTester, renderer: MaterialOneOfEnumControl$1 },
1491
1564
  { tester: materialGroupTester, renderer: MaterialGroupLayout },
1492
1565
  {
1493
1566
  tester: materialHorizontalLayoutTester,
1494
- renderer: MaterialHorizontalLayout
1567
+ renderer: MaterialHorizontalLayout,
1495
1568
  },
1496
1569
  { tester: materialVerticalLayoutTester, renderer: MaterialVerticalLayout },
1497
1570
  {
1498
1571
  tester: materialCategorizationTester,
1499
- renderer: MaterialCategorizationLayout
1572
+ renderer: MaterialCategorizationLayout,
1500
1573
  },
1501
1574
  {
1502
1575
  tester: materialCategorizationStepperTester,
1503
- renderer: MaterialCategorizationStepperLayout
1576
+ renderer: MaterialCategorizationStepperLayout,
1504
1577
  },
1505
1578
  { tester: materialArrayLayoutTester, renderer: MaterialArrayLayout },
1506
1579
  { tester: materialLabelRendererTester, renderer: MaterialLabelRenderer$1 },
1507
1580
  {
1508
1581
  tester: materialListWithDetailTester,
1509
- renderer: MaterialListWithDetailRenderer$1
1582
+ renderer: MaterialListWithDetailRenderer$1,
1510
1583
  },
1511
1584
  {
1512
1585
  tester: materialAnyOfStringOrEnumControlTester,
1513
- renderer: MaterialAnyOfStringOrEnumControl$1
1586
+ renderer: MaterialAnyOfStringOrEnumControl$1,
1514
1587
  },
1515
1588
  {
1516
1589
  tester: materialEnumArrayRendererTester,
1517
- renderer: MaterialEnumArrayRenderer$1
1518
- }
1590
+ renderer: MaterialEnumArrayRenderer$1,
1591
+ },
1519
1592
  ];
1520
1593
  var materialCells = [
1521
1594
  { tester: materialBooleanCellTester, cell: MaterialBooleanCell$1 },
@@ -1527,10 +1600,16 @@ var materialCells = [
1527
1600
  { tester: materialNumberFormatCellTester, cell: MaterialNumberFormatCell$1 },
1528
1601
  { tester: materialOneOfEnumCellTester, cell: MaterialOneOfEnumCell$1 },
1529
1602
  { tester: materialTextCellTester, cell: MaterialTextCell$1 },
1530
- { tester: materialTimeCellTester, cell: MaterialTimeCell$1 }
1603
+ { tester: materialTimeCellTester, cell: MaterialTimeCell$1 },
1531
1604
  ];
1605
+ var Unwrapped = __assign(__assign(__assign(__assign({}, UnwrappedAdditional), UnwrappedComplex), UnwrappedControls), UnwrappedLayouts);
1532
1606
 
1607
+ exports.ArrayLayoutToolbar = ArrayLayoutToolbar;
1608
+ exports.CombinatorProperties = CombinatorProperties;
1533
1609
  exports.Customizable = CustomizableCells;
1610
+ exports.DeleteDialog = DeleteDialog;
1611
+ exports.ExpandPanelRenderer = ExpandPanelRenderer$1;
1612
+ exports.ListWithDetailMasterItem = ListWithDetailMasterItem;
1534
1613
  exports.MaterialAllOfRenderer = MaterialAllOfRenderer$1;
1535
1614
  exports.MaterialAnyOfRenderer = MaterialAnyOfRenderer$1;
1536
1615
  exports.MaterialAnyOfStringOrEnumControl = MaterialAnyOfStringOrEnumControl$1;
@@ -1552,7 +1631,9 @@ exports.MaterialHorizontalLayout = MaterialHorizontalLayout;
1552
1631
  exports.MaterialInputControl = MaterialInputControl;
1553
1632
  exports.MaterialIntegerCell = MaterialIntegerCell$1;
1554
1633
  exports.MaterialIntegerControl = MaterialIntegerControl$1;
1634
+ exports.MaterialLabelRenderer = MaterialLabelRenderer$1;
1555
1635
  exports.MaterialLayoutRenderer = MaterialLayoutRenderer;
1636
+ exports.MaterialListWithDetailRenderer = MaterialListWithDetailRenderer$1;
1556
1637
  exports.MaterialNativeControl = MaterialNativeControl$1;
1557
1638
  exports.MaterialNumberCell = MaterialNumberCell$1;
1558
1639
  exports.MaterialNumberControl = MaterialNumberControl$1;
@@ -1564,11 +1645,13 @@ exports.MaterialOneOfRadioGroupControl = MaterialOneOfRadioGroupControl$1;
1564
1645
  exports.MaterialOneOfRenderer = MaterialOneOfRenderer$1;
1565
1646
  exports.MaterialRadioGroupControl = MaterialRadioGroupControl$1;
1566
1647
  exports.MaterialSliderControl = MaterialSliderControl$1;
1648
+ exports.MaterialTableControl = MaterialTableControl;
1567
1649
  exports.MaterialTextCell = MaterialTextCell$1;
1568
1650
  exports.MaterialTextControl = MaterialTextControl$1;
1569
1651
  exports.MaterialTimeCell = MaterialTimeCell$1;
1570
1652
  exports.MaterialTimeControl = MaterialTimeControl$1;
1571
1653
  exports.MaterialVerticalLayout = MaterialVerticalLayout;
1654
+ exports.MuiAutocomplete = MuiAutocomplete;
1572
1655
  exports.MuiCheckbox = MuiCheckbox;
1573
1656
  exports.MuiInputInteger = MuiInputInteger;
1574
1657
  exports.MuiInputNumber = MuiInputNumber;
@@ -1576,9 +1659,13 @@ exports.MuiInputNumberFormat = MuiInputNumberFormat;
1576
1659
  exports.MuiInputText = MuiInputText;
1577
1660
  exports.MuiInputTime = MuiInputTime;
1578
1661
  exports.MuiSelect = MuiSelect;
1662
+ exports.MuiToggle = MuiToggle;
1663
+ exports.NoBorderTableCell = NoBorderTableCell;
1664
+ exports.NonEmptyRow = NonEmptyRow;
1579
1665
  exports.ResettableTextField = ResettableTextField;
1580
1666
  exports.Unwrapped = Unwrapped;
1581
1667
  exports.createOnChangeHandler = createOnChangeHandler;
1668
+ exports.ctxDispatchToExpandPanelProps = ctxDispatchToExpandPanelProps;
1582
1669
  exports.getData = getData;
1583
1670
  exports.i18nDefaults = i18nDefaults;
1584
1671
  exports.materialAllOfControlTester = materialAllOfControlTester;
@@ -1602,6 +1689,8 @@ exports.materialGroupTester = materialGroupTester;
1602
1689
  exports.materialHorizontalLayoutTester = materialHorizontalLayoutTester;
1603
1690
  exports.materialIntegerCellTester = materialIntegerCellTester;
1604
1691
  exports.materialIntegerControlTester = materialIntegerControlTester;
1692
+ exports.materialLabelRendererTester = materialLabelRendererTester;
1693
+ exports.materialListWithDetailTester = materialListWithDetailTester;
1605
1694
  exports.materialNativeControlTester = materialNativeControlTester;
1606
1695
  exports.materialNumberCellTester = materialNumberCellTester;
1607
1696
  exports.materialNumberControlTester = materialNumberControlTester;
@@ -1623,4 +1712,6 @@ exports.renderLayoutElements = renderLayoutElements;
1623
1712
  exports.useDebouncedChange = useDebouncedChange;
1624
1713
  exports.useFocus = useFocus;
1625
1714
  exports.withAjvProps = withAjvProps;
1715
+ exports.withContextToExpandPanelProps = withContextToExpandPanelProps;
1716
+ exports.withJsonFormsExpandPanelProps = withJsonFormsExpandPanelProps;
1626
1717
  //# sourceMappingURL=jsonforms-react-material.cjs.js.map