@jsonforms/material-renderers 3.1.0-alpha.0 → 3.1.0-alpha.2

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 (205) 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 +731 -572
  26. package/lib/jsonforms-react-material.cjs.js.map +1 -1
  27. package/lib/jsonforms-react-material.esm.js +648 -517
  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 +6 -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 +6 -1
  44. package/lib/mui-controls/index.d.ts +3 -1
  45. package/lib/util/layout.d.ts +2 -3
  46. package/package.json +33 -15
  47. package/src/additional/ListWithDetailMasterItem.tsx +32 -24
  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/{example/index.ts → src/additional/unwrapped.ts} +7 -6
  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/{test/renderers/MatchMediaMock.ts → src/complex/unwrapped.ts} +19 -16
  77. package/src/controls/MaterialAnyOfStringOrEnumControl.tsx +19 -11
  78. package/src/controls/MaterialBooleanControl.tsx +90 -23
  79. package/src/controls/MaterialBooleanToggleControl.tsx +90 -23
  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/{test/renderers/util.ts → src/layouts/unwrapped.ts} +19 -28
  108. package/src/mui-controls/MuiAutocomplete.tsx +51 -35
  109. package/src/mui-controls/MuiCheckbox.tsx +14 -5
  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 +14 -5
  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
  124. package/docs/assets/css/main.css +0 -1
  125. package/docs/assets/images/icons.png +0 -0
  126. package/docs/assets/images/icons@2x.png +0 -0
  127. package/docs/assets/images/widgets.png +0 -0
  128. package/docs/assets/images/widgets@2x.png +0 -0
  129. package/docs/assets/js/main.js +0 -51
  130. package/docs/assets/js/search.json +0 -1
  131. package/docs/classes/combinatorproperties.html +0 -957
  132. package/docs/classes/materialanyofstringorenumcontrol.html +0 -822
  133. package/docs/classes/materialtablecontrol.html +0 -999
  134. package/docs/globals.html +0 -4492
  135. package/docs/index.html +0 -753
  136. package/docs/interfaces/ajvprops.html +0 -162
  137. package/docs/interfaces/arraylayouttoolbarprops.html +0 -253
  138. package/docs/interfaces/categorizationstate.html +0 -154
  139. package/docs/interfaces/categorizationstepperstate.html +0 -154
  140. package/docs/interfaces/combinatorpropertiesprops.html +0 -182
  141. package/docs/interfaces/deletedialogprops.html +0 -225
  142. package/docs/interfaces/dispatchpropsofexpandpanel.html +0 -296
  143. package/docs/interfaces/emptytableprops.html +0 -154
  144. package/docs/interfaces/expandpanelprops.html +0 -594
  145. package/docs/interfaces/inputref.html +0 -168
  146. package/docs/interfaces/jsonformstheme.html +0 -352
  147. package/docs/interfaces/materialcategorizationlayoutrendererprops.html +0 -460
  148. package/docs/interfaces/materialcategorizationstepperlayoutrendererprops.html +0 -394
  149. package/docs/interfaces/materiallabelablelayoutrendererprops.html +0 -328
  150. package/docs/interfaces/materiallayoutrendererprops.html +0 -317
  151. package/docs/interfaces/materialtabletoolbarprops.html +0 -302
  152. package/docs/interfaces/muitextinputprops.html +0 -168
  153. package/docs/interfaces/nonemptycellcomponentprops.html +0 -266
  154. package/docs/interfaces/nonemptycellprops.html +0 -277
  155. package/docs/interfaces/nonemptyrowprops.html +0 -366
  156. package/docs/interfaces/ownoneofprops.html +0 -308
  157. package/docs/interfaces/ownpropsofexpandpanel.html +0 -397
  158. package/docs/interfaces/ownpropsofnonemptycell.html +0 -229
  159. package/docs/interfaces/statepropsofexpandpanel.html +0 -445
  160. package/docs/interfaces/tableheadercellprops.html +0 -154
  161. package/docs/interfaces/tablerowsprop.html +0 -330
  162. package/docs/interfaces/validationprops.html +0 -168
  163. package/docs/interfaces/withdeletedialogsupport.html +0 -170
  164. package/docs/interfaces/withinput.html +0 -154
  165. package/docs/interfaces/withoptionlabel.html +0 -230
  166. package/example/index.html +0 -16
  167. package/rollup.config.js +0 -51
  168. package/stats.html +0 -3279
  169. package/test/renderers/MaterialAllOfRenderer.test.tsx +0 -114
  170. package/test/renderers/MaterialAnyOfRenderer.test.tsx +0 -310
  171. package/test/renderers/MaterialAnyOfStringOrEnumControl.test.tsx +0 -126
  172. package/test/renderers/MaterialArrayControl.test.tsx +0 -633
  173. package/test/renderers/MaterialArrayLayout.test.tsx +0 -528
  174. package/test/renderers/MaterialBooleanCell.test.tsx +0 -374
  175. package/test/renderers/MaterialBooleanToggleCell.test.tsx +0 -466
  176. package/test/renderers/MaterialBooleanToggleControl.test.tsx +0 -469
  177. package/test/renderers/MaterialCategorizationLayout.test.tsx +0 -458
  178. package/test/renderers/MaterialCategorizationStepperLayout.test.tsx +0 -647
  179. package/test/renderers/MaterialDateCell.test.tsx +0 -303
  180. package/test/renderers/MaterialDateControl.test.tsx +0 -411
  181. package/test/renderers/MaterialDateTimeControl.test.tsx +0 -417
  182. package/test/renderers/MaterialEnumArrayRenderer.test.tsx +0 -207
  183. package/test/renderers/MaterialEnumCell.test.tsx +0 -88
  184. package/test/renderers/MaterialEnumControl.test.tsx +0 -75
  185. package/test/renderers/MaterialGroupLayout.test.tsx +0 -90
  186. package/test/renderers/MaterialInputControl.test.tsx +0 -370
  187. package/test/renderers/MaterialIntegerCell.test.tsx +0 -333
  188. package/test/renderers/MaterialLabelRenderer.test.tsx +0 -114
  189. package/test/renderers/MaterialLayouts.test.tsx +0 -542
  190. package/test/renderers/MaterialListWithDetailRenderer.test.tsx +0 -279
  191. package/test/renderers/MaterialNativeControl.test.tsx +0 -81
  192. package/test/renderers/MaterialNumberCell.test.tsx +0 -382
  193. package/test/renderers/MaterialObjectControl.test.tsx +0 -186
  194. package/test/renderers/MaterialOneOfEnumCell.test.tsx +0 -94
  195. package/test/renderers/MaterialOneOfRadioGroupControl.test.tsx +0 -108
  196. package/test/renderers/MaterialOneOfRenderer.test.tsx +0 -603
  197. package/test/renderers/MaterialRadioGroupControl.test.tsx +0 -125
  198. package/test/renderers/MaterialSliderControl.test.tsx +0 -438
  199. package/test/renderers/MaterialTextCell.test.tsx +0 -541
  200. package/test/renderers/MaterialTextControl.test.tsx +0 -115
  201. package/test/renderers/MaterialTimeCell.test.tsx +0 -331
  202. package/test/renderers/MaterialTimeControl.test.tsx +0 -411
  203. package/tsconfig.json +0 -13
  204. package/tsconfig.test.json +0 -7
  205. package/webpack/webpack.dev.js +0 -11
@@ -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);
@@ -52,7 +52,7 @@ var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
52
52
  var ExpandMoreIcon__default = /*#__PURE__*/_interopDefaultLegacy(ExpandMoreIcon);
53
53
  var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
54
54
 
55
- /*! *****************************************************************************
55
+ /******************************************************************************
56
56
  Copyright (c) Microsoft Corporation.
57
57
 
58
58
  Permission to use, copy, modify, and/or distribute this software for any
@@ -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,140 +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) {
442
- 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;
420
+ var MuiCheckbox = React__default["default"].memo(function MuiCheckbox(props) {
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
- var inputProps = { autoFocus: !!appliedUiSchemaOptions.focus };
423
+ var inputPropsMerged = merge__default["default"]({}, inputProps, {
424
+ autoFocus: !!appliedUiSchemaOptions.focus,
425
+ });
445
426
  var checked = !!data;
446
- return (React__default["default"].createElement(material.Checkbox, { checked: checked, onChange: function (_ev, isChecked) { return handleChange(path, isChecked); }, className: className, id: id, disabled: !enabled, inputProps: inputProps }));
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 }));
447
428
  });
448
429
 
449
430
  dayjs__default["default"].extend(customParsing__default["default"]);
450
- var createOnChangeHandler = function (path, handleChange, saveFormat) { return function (time, textInputValue) {
451
- if (!time) {
452
- handleChange(path, undefined);
453
- return;
454
- }
455
- var result = dayjs__default["default"](time).format(saveFormat);
456
- handleChange(path, result === 'Invalid Date' ? textInputValue : result);
457
- }; };
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
+ };
458
441
  var getData = function (data, saveFormat) {
459
442
  if (!data) {
460
443
  return null;
@@ -467,10 +450,18 @@ var getData = function (data, saveFormat) {
467
450
  };
468
451
  var ResettableTextField = function (_a) {
469
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"]);
470
- 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
+ });
471
457
  if (!focused) {
472
458
  if (!dayjsValueIsValid) {
473
- 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);
474
465
  }
475
466
  else {
476
467
  value.current.toShow = valueInInputFormat;
@@ -480,7 +471,7 @@ var ResettableTextField = function (_a) {
480
471
  value.current.lastInput = inputProps === null || inputProps === void 0 ? void 0 : inputProps.value;
481
472
  value.current.toShow = inputProps === null || inputProps === void 0 ? void 0 : inputProps.value;
482
473
  }
483
- 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 || '' }) })));
484
475
  };
485
476
 
486
477
  var renderLayoutElements = function (elements, schema, path, enabled, renderers, cells) {
@@ -499,10 +490,10 @@ var MaterialLayoutRendererComponent = function (_a) {
499
490
  };
500
491
  var MaterialLayoutRenderer = React__default["default"].memo(MaterialLayoutRendererComponent);
501
492
  var withAjvProps = function (Component) {
502
- return function (props) {
493
+ return function WithAjvProps(props) {
503
494
  var ctx = react.useJsonForms();
504
495
  var ajv = core.getAjv({ jsonforms: __assign({}, ctx) });
505
- return (React__default["default"].createElement(Component, __assign({}, props, { ajv: ajv })));
496
+ return React__default["default"].createElement(Component, __assign({}, props, { ajv: ajv }));
506
497
  };
507
498
  };
508
499
 
@@ -520,34 +511,22 @@ var useDebouncedChange = function (handleChange, defaultValue, data, path, event
520
511
  setInput(newValue !== null && newValue !== void 0 ? newValue : defaultValue);
521
512
  debouncedUpdate(newValue);
522
513
  }, [debouncedUpdate, eventToValueFunction]);
523
- 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]);
524
518
  return [input, onChange, onClear];
525
519
  };
526
520
 
527
- var useFocus = function () {
528
- var _a = React.useState(false), focused = _a[0], setFocused = _a[1];
529
- var onFocus = React.useCallback(function () { return setFocused(true); }, []);
530
- var onBlur = React.useCallback(function () { return setFocused(false); }, []);
531
- return [focused, onFocus, onBlur];
532
- };
533
-
534
521
  var i18nDefaults = {
535
- 'enum.none': 'None'
522
+ 'enum.none': 'None',
536
523
  };
537
524
 
538
- var MuiSelect = React__default["default"].memo(function (props) {
539
- 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;
540
- var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
541
- var noneOptionLabel = React.useMemo(function () { return t('enum.none', i18nDefaults['enum.none'], { schema: schema, uischema: uischema, path: path }); }, [t, schema, uischema, path]);
542
- 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' },
543
- 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)); }))));
544
- });
545
-
546
525
  var toNumber$1 = function (value) {
547
526
  return value === '' ? undefined : parseInt(value, 10);
548
527
  };
549
528
  var eventToValue$2 = function (ev) { return toNumber$1(ev.target.value); };
550
- var MuiInputInteger = React__default["default"].memo(function (props) {
529
+ var MuiInputInteger = React__default["default"].memo(function MuiInputInteger(props) {
551
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;
552
531
  var inputProps = { step: '1' };
553
532
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
@@ -559,7 +538,7 @@ var toNumber = function (value) {
559
538
  return value === '' ? undefined : parseFloat(value);
560
539
  };
561
540
  var eventToValue$1 = function (ev) { return toNumber(ev.target.value); };
562
- var MuiInputNumber = React__default["default"].memo(function (props) {
541
+ var MuiInputNumber = React__default["default"].memo(function MuiInputNumber(props) {
563
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;
564
543
  var inputProps = { step: '0.1' };
565
544
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
@@ -567,7 +546,7 @@ var MuiInputNumber = React__default["default"].memo(function (props) {
567
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 }));
568
547
  });
569
548
 
570
- var MuiInputNumberFormat = React__default["default"].memo(function (props) {
549
+ var MuiInputNumberFormat = React__default["default"].memo(function MuiInputNumberFormat(props) {
571
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;
572
551
  var maxLength = schema.maxLength;
573
552
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
@@ -584,8 +563,10 @@ var MuiInputNumberFormat = React__default["default"].memo(function (props) {
584
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 }));
585
564
  });
586
565
 
587
- var eventToValue = function (ev) { return ev.target.value === '' ? undefined : ev.target.value; };
588
- 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) {
589
570
  var _a, _b, _c;
590
571
  var _d = React.useState(false), showAdornment = _d[0], setShowAdornment = _d[1];
591
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;
@@ -607,25 +588,48 @@ var MuiInputText = React__default["default"].memo(function (props) {
607
588
  var onPointerLeave = function () { return setShowAdornment(false); };
608
589
  var theme = material.useTheme();
609
590
  var closeStyle = {
610
- 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,
611
- 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%',
612
594
  };
613
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: {
614
- display: !showAdornment || !enabled || data === undefined ? 'none' : 'flex',
596
+ display: !showAdornment || !enabled || data === undefined
597
+ ? 'none'
598
+ : 'flex',
615
599
  position: 'absolute',
616
- right: 0
600
+ right: 0,
617
601
  } },
618
602
  React__default["default"].createElement(material.IconButton, { "aria-label": 'Clear input field', onClick: onClear, size: 'large' },
619
603
  React__default["default"].createElement(Close__default["default"], { style: closeStyle }))), inputComponent: inputComponent }));
620
604
  });
621
605
 
622
- var MuiInputTime = React__default["default"].memo(function (props) {
606
+ var MuiInputTime = React__default["default"].memo(function MuiInputTime(props) {
623
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;
624
608
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
625
609
  var _a = useDebouncedChange(handleChange, '', data, path), inputValue = _a[0], onChange = _a[1];
626
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 }));
627
611
  });
628
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
+
629
633
  var MaterialEnumArrayRenderer = function (_a) {
630
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"]);
631
635
  return (React__default["default"].createElement(material.Hidden, { xlUp: !visible },
@@ -662,51 +666,107 @@ var materialEnumArrayRendererTester = core.rankWith(5, core.and(core.uiTypeIs('C
662
666
  }))));
663
667
  var MaterialEnumArrayRenderer$1 = react.withJsonFormsMultiEnumProps(MaterialEnumArrayRenderer);
664
668
 
665
- var materialArrayControlTester = core.rankWith(3, core.or(core.isObjectArrayControl, core.isPrimitiveArrayControl));
666
-
667
- var materialLabelRendererTester = core.rankWith(1, core.uiTypeIs('Label'));
668
- var MaterialLabelRenderer = function (_a) {
669
- 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]);
670
678
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
671
- React__default["default"].createElement(material.Typography, { variant: 'h6' }, text)));
672
- };
673
- var MaterialLabelRenderer$1 = react.withJsonFormsLabelProps(MaterialLabelRenderer);
674
-
675
- var ArrayLayoutToolbar = React__default["default"].memo(function (_a) {
676
- var label = _a.label, errors = _a.errors, addItem = _a.addItem, path = _a.path, createDefault = _a.createDefault;
677
- return (React__default["default"].createElement(material.Toolbar, { disableGutters: true },
678
- React__default["default"].createElement(material.Grid, { container: true, alignItems: 'center', justifyContent: 'space-between' },
679
- React__default["default"].createElement(material.Grid, { item: true },
680
- React__default["default"].createElement(material.Typography, { variant: 'h6' }, label)),
681
- errors.length !== 0 &&
682
- React__default["default"].createElement(material.Grid, { item: true },
683
- React__default["default"].createElement(ValidationIcon, { id: 'tooltip-validation', errorMessages: errors })),
684
- React__default["default"].createElement(material.Grid, { item: true },
685
- React__default["default"].createElement(material.Grid, { container: true },
686
- React__default["default"].createElement(material.Grid, { item: true },
687
- React__default["default"].createElement(material.Tooltip, { id: 'tooltip-add', title: "Add to " + label, placement: 'bottom' },
688
- React__default["default"].createElement(material.IconButton, { "aria-label": "Add to " + label, onClick: addItem(path, createDefault()), size: 'large' },
689
- React__default["default"].createElement(AddIcon__default["default"], null)))))))));
690
- });
691
-
692
- var ListWithDetailMasterItem = function (_a) {
693
- var index = _a.index, childLabel = _a.childLabel, selected = _a.selected, handleSelect = _a.handleSelect, removeItem = _a.removeItem, path = _a.path;
694
- return (React__default["default"].createElement(material.ListItem, { button: true, selected: selected, onClick: handleSelect(index) },
695
- React__default["default"].createElement(material.ListItemAvatar, null,
696
- React__default["default"].createElement(material.Avatar, { "aria-label": 'Index' }, index + 1)),
697
- React__default["default"].createElement(material.ListItemText, { primary: childLabel }),
698
- React__default["default"].createElement(material.ListItemSecondaryAction, null,
699
- React__default["default"].createElement(material.IconButton, { "aria-label": 'Delete', onClick: removeItem(path, index), size: 'large' },
700
- 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 })));
701
680
  };
702
- var ListWithDetailMasterItem$1 = react.withJsonFormsMasterListItemProps(ListWithDetailMasterItem);
681
+ var materialObjectControlTester = core.rankWith(2, core.isObjectControl);
682
+ var MaterialObjectRenderer$1 = react.withJsonFormsDetailProps(MaterialObjectRenderer);
703
683
 
704
- var MaterialListWithDetailRenderer = function (_a) {
705
- 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;
706
- var _b = React.useState(undefined), selectedIndex = _b[0], setSelectedIndex = _b[1];
707
- var handleRemoveItem = React.useCallback(function (p, value) { return function () {
708
- removeItems(p, [value])();
709
- if (selectedIndex === 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])();
769
+ if (selectedIndex === value) {
710
770
  setSelectedIndex(undefined);
711
771
  }
712
772
  else if (selectedIndex > value) {
@@ -723,39 +783,15 @@ var MaterialListWithDetailRenderer = function (_a) {
723
783
  setSelectedIndex(undefined);
724
784
  }, [schema]);
725
785
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
726
- 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 }),
727
787
  React__default["default"].createElement(material.Grid, { container: true, direction: 'row', spacing: 2 },
728
788
  React__default["default"].createElement(material.Grid, { item: true, xs: 3 },
729
- 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")))),
730
- 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))))));
731
791
  };
732
792
  var materialListWithDetailTester = core.rankWith(4, core.and(core.uiTypeIs('ListWithDetail'), core.isObjectArray));
733
793
  var MaterialListWithDetailRenderer$1 = react.withJsonFormsArrayLayoutProps(MaterialListWithDetailRenderer);
734
794
 
735
- var MaterialBooleanControl = function (_a) {
736
- 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;
737
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
738
- 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 }) })));
739
- };
740
- var materialBooleanControlTester = core.rankWith(2, core.isBooleanControl);
741
- var MaterialBooleanControl$1 = react.withJsonFormsControlProps(MaterialBooleanControl);
742
-
743
- var MuiToggle = React__default["default"].memo(function (props) {
744
- 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;
745
- var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
746
- var inputProps = { autoFocus: !!appliedUiSchemaOptions.focus };
747
- var checked = !!data;
748
- return (React__default["default"].createElement(material.Switch, { checked: checked, onChange: function (_ev, isChecked) { return handleChange(path, isChecked); }, className: className, id: id, disabled: !enabled, inputProps: inputProps }));
749
- });
750
-
751
- var MaterialBooleanToggleControl = function (_a) {
752
- 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;
753
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
754
- 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 }) })));
755
- };
756
- var materialBooleanToggleControlTester = core.rankWith(3, core.and(core.isBooleanControl, core.optionIs('toggle', true)));
757
- var MaterialBooleanToggleControl$1 = react.withJsonFormsControlProps(MaterialBooleanToggleControl);
758
-
759
795
  var MaterialInputControl = function (props) {
760
796
  var _a = useFocus(), focused = _a[0], onFocus = _a[1], onBlur = _a[2];
761
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;
@@ -777,57 +813,135 @@ var MaterialInputControl = function (props) {
777
813
  React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
778
814
  };
779
815
 
780
- var MuiAutocomplete = function (props) {
781
- var _a;
782
- 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;
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
+
864
+ var MaterialBooleanControl = function (_a) {
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;
866
+ var isValid = errors.length === 0;
783
867
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
784
- var _b = React__default["default"].useState(data !== null && data !== void 0 ? data : ''), inputValue = _b[0], setInputValue = _b[1];
785
- var _c = useFocus(), focused = _c[0], onFocus = _c[1], onBlur = _c[2];
786
- var findOption = (_a = options.find(function (o) { return o.value === data; })) !== null && _a !== void 0 ? _a : null;
787
- var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
868
+ var showDescription = !core.isDescriptionHidden(visible, description,
869
+ false, appliedUiSchemaOptions.showUnfocusedDescription);
870
+ var showTooltip = !showDescription &&
871
+ !core.isDescriptionHidden(visible, description,
872
+ true,
873
+ true);
788
874
  var firstFormHelperText = showDescription
789
875
  ? description
790
876
  : !isValid
791
877
  ? errors
792
878
  : null;
793
879
  var secondFormHelperText = showDescription && !isValid ? errors : null;
880
+ var descriptionIds = [];
881
+ var tooltipId = id + "-tip";
882
+ var helpId1 = id + "-help1";
883
+ var helpId2 = id + "-help2";
884
+ if (showTooltip) {
885
+ descriptionIds.push(tooltipId);
886
+ }
887
+ if (firstFormHelperText) {
888
+ descriptionIds.push(helpId1);
889
+ }
890
+ if (secondFormHelperText) {
891
+ descriptionIds.push(helpId2);
892
+ }
893
+ var ariaDescribedBy = descriptionIds.join(' ');
794
894
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
795
- React__default["default"].createElement(material.Autocomplete, { className: className, id: id, disabled: !enabled, value: findOption, onChange: function (_event, newValue) {
796
- handleChange(path, newValue === null || newValue === void 0 ? void 0 : newValue.value);
797
- }, inputValue: inputValue, onInputChange: function (_event, newInputValue) {
798
- setInputValue(newInputValue);
799
- }, 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) {
800
- 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 })));
801
- }, renderOption: renderOption, filterOptions: filterOptions }),
802
- React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
803
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText)));
895
+ React__default["default"].createElement(material.Tooltip, { id: tooltipId, title: showTooltip ? description : '' },
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: {
897
+ 'aria-describedby': ariaDescribedBy,
898
+ } }) })),
899
+ React__default["default"].createElement(material.FormHelperText, { id: helpId1, error: !isValid && !showDescription }, firstFormHelperText),
900
+ React__default["default"].createElement(material.FormHelperText, { id: helpId2, error: !isValid }, secondFormHelperText)));
804
901
  };
902
+ var materialBooleanControlTester = core.rankWith(2, core.isBooleanControl);
903
+ var MaterialBooleanControl$1 = react.withJsonFormsControlProps(MaterialBooleanControl);
805
904
 
806
- var MaterialEnumControl = function (props) {
807
- var config = props.config, uischema = props.uischema, errors = props.errors;
808
- var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
809
- var isValid = errors.length === 0;
810
- return (appliedUiSchemaOptions.autocomplete === false ?
811
- React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiSelect })) :
812
- React__default["default"].createElement(MuiAutocomplete, __assign({}, props, { isValid: isValid })));
813
- };
814
- var materialEnumControlTester = core.rankWith(2, core.isEnumControl);
815
- var MaterialEnumControl$1 = react.withJsonFormsEnumProps(react.withTranslateProps(React__default["default"].memo(MaterialEnumControl)), false);
816
-
817
- var MaterialNativeControl = function (props) {
818
- var _a;
819
- var _b = useFocus(), focused = _b[0], onFocus = _b[1], onBlur = _b[2];
820
- 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;
905
+ var MaterialBooleanToggleControl = function (_a) {
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;
821
907
  var isValid = errors.length === 0;
822
- var appliedUiSchemaOptions = merge__default["default"]({}, config, props.uischema.options);
823
- var _c = useDebouncedChange(handleChange, '', data, path), inputValue = _c[0], onChange = _c[1];
824
- var fieldType = (_a = appliedUiSchemaOptions.format) !== null && _a !== void 0 ? _a : schema.format;
825
- var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
908
+ var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
909
+ var showDescription = !core.isDescriptionHidden(visible, description,
910
+ false, appliedUiSchemaOptions.showUnfocusedDescription);
911
+ var showTooltip = !showDescription &&
912
+ !core.isDescriptionHidden(visible, description,
913
+ true,
914
+ true);
915
+ var firstFormHelperText = showDescription
916
+ ? description
917
+ : !isValid
918
+ ? errors
919
+ : null;
920
+ var secondFormHelperText = showDescription && !isValid ? errors : null;
921
+ var descriptionIds = [];
922
+ var tooltipId = id + "-tip";
923
+ var helpId1 = id + "-help1";
924
+ var helpId2 = id + "-help2";
925
+ if (showTooltip) {
926
+ descriptionIds.push(tooltipId);
927
+ }
928
+ if (firstFormHelperText) {
929
+ descriptionIds.push(helpId1);
930
+ }
931
+ if (secondFormHelperText) {
932
+ descriptionIds.push(helpId2);
933
+ }
934
+ var ariaDescribedBy = descriptionIds.join(' ');
826
935
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
827
- 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 })));
936
+ React__default["default"].createElement(material.Tooltip, { id: tooltipId, title: showTooltip ? description : '' },
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: {
938
+ 'aria-describedby': ariaDescribedBy,
939
+ } }) })),
940
+ React__default["default"].createElement(material.FormHelperText, { id: helpId1, error: !isValid && !showDescription }, firstFormHelperText),
941
+ React__default["default"].createElement(material.FormHelperText, { id: helpId2, error: !isValid }, secondFormHelperText)));
828
942
  };
829
- var materialNativeControlTester = core.rankWith(2, core.or(core.isDateControl, core.isTimeControl));
830
- var MaterialNativeControl$1 = react.withJsonFormsControlProps(MaterialNativeControl);
943
+ var materialBooleanToggleControlTester = core.rankWith(3, core.and(core.isBooleanControl, core.optionIs('toggle', true)));
944
+ var MaterialBooleanToggleControl$1 = react.withJsonFormsControlProps(MaterialBooleanToggleControl);
831
945
 
832
946
  var MaterialDateControl = function (props) {
833
947
  var _a, _b, _c;
@@ -852,8 +966,10 @@ var MaterialDateControl = function (props) {
852
966
  React__default["default"].createElement(xDatePickers.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs },
853
967
  React__default["default"].createElement(xDatePickers.DatePicker, { label: label, value: value, onChange: onChange, inputFormat: format, disableMaskedInput: true, views: views, disabled: !enabled, componentsProps: {
854
968
  actionBar: {
855
- actions: function (variant) { return (variant === 'desktop' ? [] : ['clear', 'cancel', 'accept']); }
856
- }
969
+ actions: function (variant) {
970
+ return variant === 'desktop' ? [] : ['clear', 'cancel', 'accept'];
971
+ },
972
+ },
857
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' }))); } }),
858
974
  React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
859
975
  React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
@@ -870,7 +986,12 @@ var MaterialDateTimeControl = function (props) {
870
986
  var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
871
987
  var format = (_a = appliedUiSchemaOptions.dateTimeFormat) !== null && _a !== void 0 ? _a : 'YYYY-MM-DD HH:mm';
872
988
  var saveFormat = (_b = appliedUiSchemaOptions.dateTimeSaveFormat) !== null && _b !== void 0 ? _b : undefined;
873
- 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
+ ];
874
995
  var firstFormHelperText = showDescription
875
996
  ? description
876
997
  : !isValid
@@ -884,8 +1005,10 @@ var MaterialDateTimeControl = function (props) {
884
1005
  React__default["default"].createElement(xDatePickers.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs },
885
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: {
886
1007
  actionBar: {
887
- actions: function (variant) { return (variant === 'desktop' ? [] : ['clear', 'cancel', 'accept']); }
888
- }
1008
+ actions: function (variant) {
1009
+ return variant === 'desktop' ? [] : ['clear', 'cancel', 'accept'];
1010
+ },
1011
+ },
889
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' }))); } }),
890
1013
  React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
891
1014
  React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
@@ -893,37 +1016,73 @@ var MaterialDateTimeControl = function (props) {
893
1016
  var materialDateTimeControlTester = core.rankWith(2, core.isDateTimeControl);
894
1017
  var MaterialDateTimeControl$1 = react.withJsonFormsControlProps(MaterialDateTimeControl);
895
1018
 
896
- var MaterialTimeControl = function (props) {
897
- var _a, _b, _c;
898
- var _d = useFocus(), focused = _d[0], onFocus = _d[1], onBlur = _d[2];
899
- 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;
1021
+ var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
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;
1040
+ var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
1041
+ return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
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;
900
1053
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
901
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);
902
1066
  var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
903
- var format = (_a = appliedUiSchemaOptions.timeFormat) !== null && _a !== void 0 ? _a : 'HH:mm';
904
- var saveFormat = (_b = appliedUiSchemaOptions.timeSaveFormat) !== null && _b !== void 0 ? _b : 'HH:mm:ss';
905
- var views = (_c = appliedUiSchemaOptions.views) !== null && _c !== void 0 ? _c : ['hours', 'minutes'];
906
- var firstFormHelperText = showDescription
907
- ? description
908
- : !isValid
909
- ? errors
910
- : null;
911
- var secondFormHelperText = showDescription && !isValid ? errors : null;
912
- var onChange = React.useMemo(function () { return createOnChangeHandler(path, handleChange, saveFormat); }, [path, handleChange, saveFormat]);
913
- var value = getData(data, saveFormat);
914
- var valueInInputFormat = value ? value.format(format) : '';
1067
+ var onChange = function (_ev, value) { return handleChange(path, value); };
915
1068
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
916
- React__default["default"].createElement(xDatePickers.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs },
917
- React__default["default"].createElement(xDatePickers.TimePicker, { label: label, value: value, onChange: onChange, inputFormat: format, disableMaskedInput: true, ampm: !!appliedUiSchemaOptions.ampm, views: views, disabled: !enabled, componentsProps: {
918
- actionBar: {
919
- actions: function (variant) { return (variant === 'desktop' ? [] : ['clear', 'cancel', 'accept']); }
920
- }
921
- }, 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' }))); } }),
922
- React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
923
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
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));
924
1083
  };
925
- var materialTimeControlTester = core.rankWith(4, core.isTimeControl);
926
- 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);
927
1086
 
928
1087
  var MaterialSliderControl = function (props) {
929
1088
  var _a = useFocus(), focused = _a[0], onFocus = _a[1], onBlur = _a[2];
@@ -934,16 +1093,16 @@ var MaterialSliderControl = function (props) {
934
1093
  whiteSpace: 'nowrap',
935
1094
  overflow: 'hidden',
936
1095
  textOverflow: 'ellipsis',
937
- width: '100%'
1096
+ width: '100%',
938
1097
  };
939
1098
  var rangeContainerStyle = {
940
- display: 'flex'
1099
+ display: 'flex',
941
1100
  };
942
1101
  var rangeItemStyle = {
943
- flexGrow: '1'
1102
+ flexGrow: '1',
944
1103
  };
945
1104
  var sliderStyle = {
946
- marginTop: '7px'
1105
+ marginTop: '7px',
947
1106
  };
948
1107
  var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
949
1108
  var onChange = React.useCallback(function (_ev, value) { return handleChange(path, Number(value)); }, [path, handleChange]);
@@ -960,130 +1119,144 @@ var MaterialSliderControl = function (props) {
960
1119
  var materialSliderControlTester = core.rankWith(4, core.isRangeControl);
961
1120
  var MaterialSliderControl$1 = react.withJsonFormsControlProps(MaterialSliderControl);
962
1121
 
963
- var MaterialRadioGroup = function (props) {
964
- var _a;
965
- var _b = useFocus(), focused = _b[0], onFocus = _b[1], onBlur = _b[2];
966
- 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;
967
- var isValid = errors.length === 0;
968
- var appliedUiSchemaOptions = merge__default["default"]({}, config, props.uischema.options);
969
- var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
970
- var onChange = function (_ev, value) { return handleChange(path, value); };
971
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
972
- React__default["default"].createElement(material.FormControl, { component: 'fieldset', fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur },
973
- React__default["default"].createElement(material.FormLabel, { htmlFor: id, error: !isValid, component: 'legend', required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
974
- 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 })); })),
975
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, !isValid ? errors : showDescription ? description : null))));
976
- };
977
-
978
- var MaterialRadioGroupControl = function (props) {
979
- return React__default["default"].createElement(MaterialRadioGroup, __assign({}, props));
980
- };
981
- var materialRadioGroupControlTester = core.rankWith(20, core.and(core.isEnumControl, core.optionIs('format', 'radio')));
982
- var MaterialRadioGroupControl$1 = react.withJsonFormsEnumProps(MaterialRadioGroupControl);
983
-
984
- var MaterialIntegerControl = function (props) { return (React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiInputInteger }))); };
985
- var materialIntegerControlTester = core.rankWith(2, core.isIntegerControl);
986
- var MaterialIntegerControl$1 = react.withJsonFormsControlProps(MaterialIntegerControl);
987
-
988
- var MaterialNumberControl = function (props) { return (React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiInputNumber }))); };
989
- var materialNumberControlTester = core.rankWith(2, core.isNumberControl);
990
- var MaterialNumberControl$1 = react.withJsonFormsControlProps(MaterialNumberControl);
991
-
992
1122
  var MaterialTextControl = function (props) { return (React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiInputText }))); };
993
1123
  var materialTextControlTester = core.rankWith(1, core.isStringControl);
994
1124
  var MaterialTextControl$1 = react.withJsonFormsControlProps(MaterialTextControl);
995
1125
 
996
- var findEnumSchema = function (schemas) {
997
- return schemas.find(function (s) { return s.enum !== undefined && (s.type === 'string' || s.type === undefined); });
998
- };
999
- var findTextSchema = function (schemas) {
1000
- return schemas.find(function (s) { return s.type === 'string' && s.enum === undefined; });
1001
- };
1002
- var MuiAutocompleteInputText = function (props) {
1003
- 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;
1004
- var enumSchema = findEnumSchema(schema.anyOf);
1005
- var stringSchema = findTextSchema(schema.anyOf);
1006
- var maxLength = stringSchema.maxLength;
1007
- var appliedUiSchemaOptions = React.useMemo(function () { return merge__default["default"]({}, config, uischema.options); }, [config, uischema.options]);
1008
- var inputProps = React.useMemo(function () {
1009
- var propMemo = {};
1010
- if (appliedUiSchemaOptions.restrict) {
1011
- propMemo = { maxLength: maxLength };
1012
- }
1013
- if (appliedUiSchemaOptions.trim && maxLength !== undefined) {
1014
- propMemo.size = maxLength;
1015
- }
1016
- propMemo.list = props.id + 'datalist';
1017
- return propMemo;
1018
- }, [appliedUiSchemaOptions, props.id]);
1019
- var _a = useDebouncedChange(handleChange, '', data, path), inputText = _a[0], onChange = _a[1];
1020
- 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 })); })));
1021
- 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 }));
1022
- };
1023
- var MaterialAnyOfStringOrEnumControl = (function (_super) {
1024
- __extends(MaterialAnyOfStringOrEnumControl, _super);
1025
- function MaterialAnyOfStringOrEnumControl() {
1026
- return _super !== null && _super.apply(this, arguments) || this;
1027
- }
1028
- MaterialAnyOfStringOrEnumControl.prototype.render = function () {
1029
- return (React__default["default"].createElement(MaterialInputControl, __assign({}, this.props, { input: MuiAutocompleteInputText })));
1030
- };
1031
- return MaterialAnyOfStringOrEnumControl;
1032
- }(react.Control));
1033
- var hasEnumAndText = function (schemas) {
1034
- var enumSchema = findEnumSchema(schemas);
1035
- var stringSchema = findTextSchema(schemas);
1036
- var remainingSchemas = schemas.filter(function (s) { return s !== enumSchema || s !== stringSchema; });
1037
- var wrongType = remainingSchemas.find(function (s) { return s.type && s.type !== 'string'; });
1038
- return enumSchema && stringSchema && !wrongType;
1039
- };
1040
- var simpleAnyOf = core.and(core.uiTypeIs('Control'), core.schemaMatches(function (schema) { return schema.hasOwnProperty('anyOf') && hasEnumAndText(schema.anyOf); }));
1041
- var materialAnyOfStringOrEnumControlTester = core.rankWith(5, simpleAnyOf);
1042
- var MaterialAnyOfStringOrEnumControl$1 = react.withJsonFormsControlProps(MaterialAnyOfStringOrEnumControl);
1043
-
1044
- var MaterialOneOfEnumControl = function (props) {
1045
- 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;
1046
1130
  var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
1047
1131
  var isValid = errors.length === 0;
1048
- return (appliedUiSchemaOptions.autocomplete === false ?
1049
- React__default["default"].createElement(MaterialInputControl, __assign({}, props, { input: MuiSelect })) :
1050
- 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))));
1051
1156
  };
1052
- var materialOneOfEnumControlTester = core.rankWith(5, core.isOneOfEnumControl);
1053
- 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);
1054
1159
 
1055
- var MaterialOneOfRadioGroupControl = function (props) {
1056
- 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 }))));
1057
1200
  };
1058
- var materialOneOfRadioGroupControlTester = core.rankWith(20, core.and(core.isOneOfEnumControl, core.optionIs('format', 'radio')));
1059
- var MaterialOneOfRadioGroupControl$1 = react.withJsonFormsOneOfEnumProps(MaterialOneOfRadioGroupControl);
1060
-
1061
- var Unwrapped = {
1062
- MaterialBooleanControl: MaterialBooleanControl,
1063
- MaterialBooleanToggleControl: MaterialBooleanToggleControl,
1064
- MaterialEnumControl: MaterialEnumControl,
1065
- MaterialNativeControl: MaterialNativeControl,
1066
- MaterialDateControl: MaterialDateControl,
1067
- MaterialDateTimeControl: MaterialDateTimeControl,
1068
- MaterialTimeControl: MaterialTimeControl,
1069
- MaterialSliderControl: MaterialSliderControl,
1070
- MaterialRadioGroupControl: MaterialRadioGroupControl,
1071
- MaterialIntegerControl: MaterialIntegerControl,
1072
- MaterialNumberControl: MaterialNumberControl,
1073
- MaterialTextControl: MaterialTextControl,
1074
- MaterialAnyOfStringOrEnumControl: MaterialAnyOfStringOrEnumControl,
1075
- MaterialOneOfEnumControl: MaterialOneOfEnumControl,
1076
- 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));
1077
1249
  };
1250
+ var ExpandPanelRenderer$1 = withJsonFormsExpandPanelProps(ExpandPanelRenderer);
1078
1251
 
1079
1252
  var groupTester = core.rankWith(1, core.uiTypeIs('Group'));
1080
1253
  var style = { marginBottom: '10px' };
1081
- var GroupComponent = React__default["default"].memo(function (_a) {
1254
+ var GroupComponent = React__default["default"].memo(function GroupComponent(_a) {
1082
1255
  var visible = _a.visible, enabled = _a.enabled, uischema = _a.uischema, label = _a.label, props = __rest(_a, ["visible", "enabled", "uischema", "label"]);
1083
1256
  var groupLayout = uischema;
1084
1257
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1085
1258
  React__default["default"].createElement(material.Card, { style: style },
1086
- !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 }),
1087
1260
  React__default["default"].createElement(material.CardContent, null,
1088
1261
  React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, props, { visible: visible, enabled: enabled, elements: groupLayout.elements }))))));
1089
1262
  });
@@ -1105,9 +1278,9 @@ var MaterialHorizontalLayoutRenderer = function (_a) {
1105
1278
  path: path,
1106
1279
  enabled: enabled,
1107
1280
  direction: 'row',
1108
- visible: visible
1281
+ visible: visible,
1109
1282
  };
1110
- 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 })));
1111
1284
  };
1112
1285
  var MaterialHorizontalLayout = react.withJsonFormsLayoutProps(MaterialHorizontalLayoutRenderer);
1113
1286
 
@@ -1121,9 +1294,9 @@ var MaterialVerticalLayoutRenderer = function (_a) {
1121
1294
  path: path,
1122
1295
  enabled: enabled,
1123
1296
  direction: 'column',
1124
- visible: visible
1297
+ visible: visible,
1125
1298
  };
1126
- 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 })));
1127
1300
  };
1128
1301
  var MaterialVerticalLayout = react.withJsonFormsLayoutProps(MaterialVerticalLayoutRenderer);
1129
1302
 
@@ -1136,122 +1309,45 @@ var materialCategorizationTester = core.rankWith(1, isSingleLevelCategorization)
1136
1309
  var MaterialCategorizationLayoutRenderer = function (props) {
1137
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;
1138
1311
  var categorization = uischema;
1139
- var _a = React.useState(selected !== null && selected !== void 0 ? selected : 0), activeCategory = _a[0], setActiveCategory = _a[1];
1140
- var categories = React.useMemo(function () { return categorization.elements.filter(function (category) {
1141
- return core.isVisible(category, data, undefined, ajv);
1142
- }); }, [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;
1143
1324
  var childProps = {
1144
- elements: categories[activeCategory].elements,
1325
+ elements: categories[safeCategory] ? categories[safeCategory].elements : [],
1145
1326
  schema: schema,
1146
1327
  path: path,
1147
1328
  direction: 'column',
1148
1329
  enabled: enabled,
1149
1330
  visible: visible,
1150
1331
  renderers: renderers,
1151
- cells: cells
1332
+ cells: cells,
1152
1333
  };
1153
1334
  var onTabChange = function (_event, value) {
1154
1335
  if (onChange) {
1155
- onChange(value, activeCategory);
1336
+ onChange(value, safeCategory);
1156
1337
  }
1157
1338
  setActiveCategory(value);
1158
1339
  };
1159
1340
  var tabLabels = React.useMemo(function () {
1160
- return categories.map(function (e) {
1161
- return core.deriveLabelForUISchemaElement(e, t);
1162
- });
1341
+ return categories.map(function (e) { return core.deriveLabelForUISchemaElement(e, t); });
1163
1342
  }, [categories, t]);
1164
1343
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1165
1344
  React__default["default"].createElement(material.AppBar, { position: 'static' },
1166
- 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] })); }))),
1167
1346
  React__default["default"].createElement("div", { style: { marginTop: '0.5em' } },
1168
- React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, childProps)))));
1347
+ React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, childProps, { key: safeCategory })))));
1169
1348
  };
1170
1349
  var MaterialCategorizationLayout = withAjvProps(react.withTranslateProps(react.withJsonFormsLayoutProps(MaterialCategorizationLayoutRenderer)));
1171
1350
 
1172
- var iconStyle = { float: 'right' };
1173
- var ExpandPanelRendererComponent = function (props) {
1174
- var labelHtmlId = React.useState(core.createId('expand-panel'))[0];
1175
- React.useEffect(function () {
1176
- return function () {
1177
- core.removeId(labelHtmlId);
1178
- };
1179
- }, [labelHtmlId]);
1180
- 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;
1181
- var foundUISchema = React.useMemo(function () {
1182
- return core.findUISchema(uischemas, schema, uischema.scope, path, undefined, uischema, rootSchema);
1183
- }, [uischemas, schema, uischema.scope, path, uischema, rootSchema]);
1184
- var appliedUiSchemaOptions = merge__default["default"]({}, config, uischema.options);
1185
- var showSortButtons = appliedUiSchemaOptions.showSortButtons || appliedUiSchemaOptions.showArrayLayoutSortButtons;
1186
- return (React__default["default"].createElement(material.Accordion, { "aria-labelledby": labelHtmlId, expanded: expanded, onChange: handleExpansion(childPath) },
1187
- React__default["default"].createElement(material.AccordionSummary, { expandIcon: React__default["default"].createElement(ExpandMoreIcon__default["default"], null) },
1188
- React__default["default"].createElement(material.Grid, { container: true, alignItems: 'center' },
1189
- React__default["default"].createElement(material.Grid, { item: true, xs: 7, md: 9 },
1190
- React__default["default"].createElement(material.Grid, { container: true, alignItems: 'center' },
1191
- React__default["default"].createElement(material.Grid, { item: true, xs: 2, md: 1 },
1192
- React__default["default"].createElement(material.Avatar, { "aria-label": 'Index' }, index + 1)),
1193
- React__default["default"].createElement(material.Grid, { item: true, xs: 10, md: 11 },
1194
- React__default["default"].createElement("span", { id: labelHtmlId }, childLabel)))),
1195
- React__default["default"].createElement(material.Grid, { item: true, xs: 5, md: 3 },
1196
- React__default["default"].createElement(material.Grid, { container: true, justifyContent: 'flex-end' },
1197
- React__default["default"].createElement(material.Grid, { item: true },
1198
- React__default["default"].createElement(material.Grid, { container: true, direction: 'row', justifyContent: 'center', alignItems: 'center' },
1199
- showSortButtons ? (React__default["default"].createElement(React.Fragment, null,
1200
- React__default["default"].createElement(material.Grid, { item: true },
1201
- React__default["default"].createElement(material.IconButton, { onClick: moveUp(path, index), style: iconStyle, disabled: !enableMoveUp, "aria-label": "Move up", size: 'large' },
1202
- React__default["default"].createElement(ArrowUpward__default["default"], null))),
1203
- React__default["default"].createElement(material.Grid, { item: true },
1204
- React__default["default"].createElement(material.IconButton, { onClick: moveDown(path, index), style: iconStyle, disabled: !enableMoveDown, "aria-label": "Move down", size: 'large' },
1205
- React__default["default"].createElement(ArrowDownward__default["default"], null))))) : (''),
1206
- React__default["default"].createElement(material.Grid, { item: true },
1207
- React__default["default"].createElement(material.IconButton, { onClick: removeItems(path, [index]), style: iconStyle, "aria-label": "Delete", size: 'large' },
1208
- React__default["default"].createElement(DeleteIcon__default["default"], null))))))))),
1209
- React__default["default"].createElement(material.AccordionDetails, null,
1210
- React__default["default"].createElement(react.JsonFormsDispatch, { enabled: enabled, schema: schema, uischema: foundUISchema, path: childPath, key: childPath, renderers: renderers, cells: cells }))));
1211
- };
1212
- var ExpandPanelRenderer = React__default["default"].memo(ExpandPanelRendererComponent);
1213
- var ctxDispatchToExpandPanelProps = function (dispatch) { return ({
1214
- removeItems: React.useCallback(function (path, toDelete) { return function (event) {
1215
- event.stopPropagation();
1216
- dispatch(core.update(path, function (array) {
1217
- toDelete
1218
- .sort()
1219
- .reverse()
1220
- .forEach(function (s) { return array.splice(s, 1); });
1221
- return array;
1222
- }));
1223
- }; }, [dispatch]),
1224
- moveUp: React.useCallback(function (path, toMove) { return function (event) {
1225
- event.stopPropagation();
1226
- dispatch(core.update(path, function (array) {
1227
- core.moveUp(array, toMove);
1228
- return array;
1229
- }));
1230
- }; }, [dispatch]),
1231
- moveDown: React.useCallback(function (path, toMove) { return function (event) {
1232
- event.stopPropagation();
1233
- dispatch(core.update(path, function (array) {
1234
- core.moveDown(array, toMove);
1235
- return array;
1236
- }));
1237
- }; }, [dispatch])
1238
- }); };
1239
- var withContextToExpandPanelProps = function (Component) { return function (_a) {
1240
- var ctx = _a.ctx, props = _a.props;
1241
- var dispatchProps = ctxDispatchToExpandPanelProps(ctx.dispatch);
1242
- var childLabelProp = props.childLabelProp, schema = props.schema, path = props.path, index = props.index, uischemas = props.uischemas;
1243
- var childPath = core.composePaths(path, "" + index);
1244
- var childData = core.Resolve.data(ctx.core.data, childPath);
1245
- var childLabel = childLabelProp
1246
- ? get__default["default"](childData, childLabelProp, '')
1247
- : get__default["default"](childData, core.getFirstPrimitiveProp(schema), '');
1248
- return (React__default["default"].createElement(Component, __assign({}, props, dispatchProps, { childLabel: childLabel, childPath: childPath, uischemas: uischemas })));
1249
- }; };
1250
- var withJsonFormsExpandPanelProps = function (Component) {
1251
- return react.withJsonFormsContext(withContextToExpandPanelProps(Component));
1252
- };
1253
- var ExpandPanelRenderer$1 = withJsonFormsExpandPanelProps(ExpandPanelRenderer);
1254
-
1255
1351
  var MaterialArrayLayoutComponent = function (props) {
1256
1352
  var _a = React.useState(false), expanded = _a[0], setExpanded = _a[1];
1257
1353
  var innerCreateDefaultValue = React.useCallback(function () { return core.createDefaultValue(props.schema); }, [props.schema]);
@@ -1261,21 +1357,19 @@ var MaterialArrayLayoutComponent = function (props) {
1261
1357
  var isExpanded = function (index) {
1262
1358
  return expanded === core.composePaths(props.path, "" + index);
1263
1359
  };
1264
- 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;
1265
1361
  var appliedUiSchemaOptions = merge__default["default"]({}, config, props.uischema.options);
1266
1362
  return (React__default["default"].createElement("div", null,
1267
- 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 }),
1268
1364
  React__default["default"].createElement("div", null, data > 0 ? (map__default["default"](range__default["default"](data), function (index) {
1269
- 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 }));
1270
1366
  })) : (React__default["default"].createElement("p", null, "No data")))));
1271
1367
  };
1272
1368
  var MaterialArrayLayout$1 = React__default["default"].memo(MaterialArrayLayoutComponent);
1273
1369
 
1274
1370
  var MaterialArrayLayoutRenderer = function (_a) {
1275
1371
  var visible = _a.visible, addItem = _a.addItem, props = __rest(_a, ["visible", "addItem"]);
1276
- var addItemCb = React.useCallback(function (p, value) { return addItem(p, value); }, [
1277
- addItem
1278
- ]);
1372
+ var addItemCb = React.useCallback(function (p, value) { return addItem(p, value); }, [addItem]);
1279
1373
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1280
1374
  React__default["default"].createElement(MaterialArrayLayout$1, __assign({ visible: visible, addItem: addItemCb }, props))));
1281
1375
  };
@@ -1302,7 +1396,7 @@ var MaterialDateCell = function (props) {
1302
1396
  var materialDateCellTester = core.rankWith(2, core.isDateControl);
1303
1397
  var MaterialDateCell$1 = react.withJsonFormsCellProps(MaterialDateCell);
1304
1398
 
1305
- 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)); };
1306
1400
  var materialEnumCellTester = core.rankWith(2, core.isEnumControl);
1307
1401
  var MaterialEnumCell$1 = react.withJsonFormsEnumCellProps(react.withTranslateProps(React__default["default"].memo(MaterialEnumCell)), false);
1308
1402
 
@@ -1318,7 +1412,7 @@ var MaterialNumberFormatCell = function (props) { return React__default["default
1318
1412
  var materialNumberFormatCellTester = core.rankWith(4, core.isNumberFormatControl);
1319
1413
  var MaterialNumberFormatCell$1 = react.withJsonFormsCellProps(MaterialNumberFormatCell);
1320
1414
 
1321
- 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)); };
1322
1416
  var materialOneOfEnumCellTester = core.rankWith(2, core.isOneOfEnumControl);
1323
1417
  var MaterialOneOfEnumCell$1 = react.withJsonFormsOneOfEnumCellProps(react.withTranslateProps(React__default["default"].memo(MaterialOneOfEnumCell)), false);
1324
1418
 
@@ -1355,17 +1449,19 @@ var MaterialCategorizationStepperLayoutRenderer = function (props) {
1355
1449
  var buttonWrapperStyle = {
1356
1450
  textAlign: 'right',
1357
1451
  width: '100%',
1358
- margin: '1em auto'
1452
+ margin: '1em auto',
1359
1453
  };
1360
1454
  var buttonNextStyle = {
1361
- float: 'right'
1455
+ float: 'right',
1362
1456
  };
1363
1457
  var buttonStyle = {
1364
- marginRight: '1em'
1458
+ marginRight: '1em',
1365
1459
  };
1366
- var categories = React.useMemo(function () { return categorization.elements.filter(function (category) {
1367
- return core.isVisible(category, data, undefined, ajv);
1368
- }); }, [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]);
1369
1465
  var childProps = {
1370
1466
  elements: categories[activeCategory].elements,
1371
1467
  schema: schema,
@@ -1373,31 +1469,73 @@ var MaterialCategorizationStepperLayoutRenderer = function (props) {
1373
1469
  direction: 'column',
1374
1470
  visible: visible,
1375
1471
  renderers: renderers,
1376
- cells: cells
1472
+ cells: cells,
1377
1473
  };
1378
1474
  var tabLabels = React.useMemo(function () {
1379
- return categories.map(function (e) {
1380
- return core.deriveLabelForUISchemaElement(e, t);
1381
- });
1475
+ return categories.map(function (e) { return core.deriveLabelForUISchemaElement(e, t); });
1382
1476
  }, [categories, t]);
1383
1477
  return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1384
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] },
1385
1479
  React__default["default"].createElement(material.StepButton, { onClick: function () { return handleStep(idx); } }, tabLabels[idx]))); })),
1386
1480
  React__default["default"].createElement("div", null,
1387
1481
  React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, childProps))),
1388
- !!appliedUiSchemaOptions.showNavButtons ? (React__default["default"].createElement("div", { style: buttonWrapperStyle },
1389
- React__default["default"].createElement(material.Button, { style: buttonNextStyle, variant: "contained", color: "primary", disabled: activeCategory >= categories.length - 1, onClick: function () { return handleStep(activeCategory + 1); } }, "Next"),
1390
- 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))));
1391
1485
  };
1392
1486
  var MaterialCategorizationStepperLayout = withAjvProps(react.withTranslateProps(react.withJsonFormsLayoutProps(MaterialCategorizationStepperLayoutRenderer)));
1393
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
+
1394
1529
  var materialRenderers = [
1395
1530
  {
1396
1531
  tester: materialArrayControlTester,
1397
- renderer: MaterialArrayControlRenderer$1
1532
+ renderer: MaterialArrayControlRenderer$1,
1398
1533
  },
1399
1534
  { tester: materialBooleanControlTester, renderer: MaterialBooleanControl$1 },
1400
- { tester: materialBooleanToggleControlTester, renderer: MaterialBooleanToggleControl$1 },
1535
+ {
1536
+ tester: materialBooleanToggleControlTester,
1537
+ renderer: MaterialBooleanToggleControl$1,
1538
+ },
1401
1539
  { tester: materialNativeControlTester, renderer: MaterialNativeControl$1 },
1402
1540
  { tester: materialEnumControlTester, renderer: MaterialEnumControl$1 },
1403
1541
  { tester: materialIntegerControlTester, renderer: MaterialIntegerControl$1 },
@@ -1413,41 +1551,44 @@ var materialRenderers = [
1413
1551
  { tester: materialOneOfControlTester, renderer: MaterialOneOfRenderer$1 },
1414
1552
  {
1415
1553
  tester: materialRadioGroupControlTester,
1416
- renderer: MaterialRadioGroupControl$1
1554
+ renderer: MaterialRadioGroupControl$1,
1417
1555
  },
1418
1556
  {
1419
1557
  tester: materialOneOfRadioGroupControlTester,
1420
- renderer: MaterialOneOfRadioGroupControl$1
1558
+ renderer: MaterialOneOfRadioGroupControl$1,
1559
+ },
1560
+ {
1561
+ tester: materialOneOfEnumControlTester,
1562
+ renderer: MaterialOneOfEnumControl$1,
1421
1563
  },
1422
- { tester: materialOneOfEnumControlTester, renderer: MaterialOneOfEnumControl$1 },
1423
1564
  { tester: materialGroupTester, renderer: MaterialGroupLayout },
1424
1565
  {
1425
1566
  tester: materialHorizontalLayoutTester,
1426
- renderer: MaterialHorizontalLayout
1567
+ renderer: MaterialHorizontalLayout,
1427
1568
  },
1428
1569
  { tester: materialVerticalLayoutTester, renderer: MaterialVerticalLayout },
1429
1570
  {
1430
1571
  tester: materialCategorizationTester,
1431
- renderer: MaterialCategorizationLayout
1572
+ renderer: MaterialCategorizationLayout,
1432
1573
  },
1433
1574
  {
1434
1575
  tester: materialCategorizationStepperTester,
1435
- renderer: MaterialCategorizationStepperLayout
1576
+ renderer: MaterialCategorizationStepperLayout,
1436
1577
  },
1437
1578
  { tester: materialArrayLayoutTester, renderer: MaterialArrayLayout },
1438
1579
  { tester: materialLabelRendererTester, renderer: MaterialLabelRenderer$1 },
1439
1580
  {
1440
1581
  tester: materialListWithDetailTester,
1441
- renderer: MaterialListWithDetailRenderer$1
1582
+ renderer: MaterialListWithDetailRenderer$1,
1442
1583
  },
1443
1584
  {
1444
1585
  tester: materialAnyOfStringOrEnumControlTester,
1445
- renderer: MaterialAnyOfStringOrEnumControl$1
1586
+ renderer: MaterialAnyOfStringOrEnumControl$1,
1446
1587
  },
1447
1588
  {
1448
1589
  tester: materialEnumArrayRendererTester,
1449
- renderer: MaterialEnumArrayRenderer$1
1450
- }
1590
+ renderer: MaterialEnumArrayRenderer$1,
1591
+ },
1451
1592
  ];
1452
1593
  var materialCells = [
1453
1594
  { tester: materialBooleanCellTester, cell: MaterialBooleanCell$1 },
@@ -1459,10 +1600,16 @@ var materialCells = [
1459
1600
  { tester: materialNumberFormatCellTester, cell: MaterialNumberFormatCell$1 },
1460
1601
  { tester: materialOneOfEnumCellTester, cell: MaterialOneOfEnumCell$1 },
1461
1602
  { tester: materialTextCellTester, cell: MaterialTextCell$1 },
1462
- { tester: materialTimeCellTester, cell: MaterialTimeCell$1 }
1603
+ { tester: materialTimeCellTester, cell: MaterialTimeCell$1 },
1463
1604
  ];
1605
+ var Unwrapped = __assign(__assign(__assign(__assign({}, UnwrappedAdditional), UnwrappedComplex), UnwrappedControls), UnwrappedLayouts);
1464
1606
 
1607
+ exports.ArrayLayoutToolbar = ArrayLayoutToolbar;
1608
+ exports.CombinatorProperties = CombinatorProperties;
1465
1609
  exports.Customizable = CustomizableCells;
1610
+ exports.DeleteDialog = DeleteDialog;
1611
+ exports.ExpandPanelRenderer = ExpandPanelRenderer$1;
1612
+ exports.ListWithDetailMasterItem = ListWithDetailMasterItem;
1466
1613
  exports.MaterialAllOfRenderer = MaterialAllOfRenderer$1;
1467
1614
  exports.MaterialAnyOfRenderer = MaterialAnyOfRenderer$1;
1468
1615
  exports.MaterialAnyOfStringOrEnumControl = MaterialAnyOfStringOrEnumControl$1;
@@ -1484,7 +1631,9 @@ exports.MaterialHorizontalLayout = MaterialHorizontalLayout;
1484
1631
  exports.MaterialInputControl = MaterialInputControl;
1485
1632
  exports.MaterialIntegerCell = MaterialIntegerCell$1;
1486
1633
  exports.MaterialIntegerControl = MaterialIntegerControl$1;
1634
+ exports.MaterialLabelRenderer = MaterialLabelRenderer$1;
1487
1635
  exports.MaterialLayoutRenderer = MaterialLayoutRenderer;
1636
+ exports.MaterialListWithDetailRenderer = MaterialListWithDetailRenderer$1;
1488
1637
  exports.MaterialNativeControl = MaterialNativeControl$1;
1489
1638
  exports.MaterialNumberCell = MaterialNumberCell$1;
1490
1639
  exports.MaterialNumberControl = MaterialNumberControl$1;
@@ -1496,11 +1645,13 @@ exports.MaterialOneOfRadioGroupControl = MaterialOneOfRadioGroupControl$1;
1496
1645
  exports.MaterialOneOfRenderer = MaterialOneOfRenderer$1;
1497
1646
  exports.MaterialRadioGroupControl = MaterialRadioGroupControl$1;
1498
1647
  exports.MaterialSliderControl = MaterialSliderControl$1;
1648
+ exports.MaterialTableControl = MaterialTableControl;
1499
1649
  exports.MaterialTextCell = MaterialTextCell$1;
1500
1650
  exports.MaterialTextControl = MaterialTextControl$1;
1501
1651
  exports.MaterialTimeCell = MaterialTimeCell$1;
1502
1652
  exports.MaterialTimeControl = MaterialTimeControl$1;
1503
1653
  exports.MaterialVerticalLayout = MaterialVerticalLayout;
1654
+ exports.MuiAutocomplete = MuiAutocomplete;
1504
1655
  exports.MuiCheckbox = MuiCheckbox;
1505
1656
  exports.MuiInputInteger = MuiInputInteger;
1506
1657
  exports.MuiInputNumber = MuiInputNumber;
@@ -1508,9 +1659,13 @@ exports.MuiInputNumberFormat = MuiInputNumberFormat;
1508
1659
  exports.MuiInputText = MuiInputText;
1509
1660
  exports.MuiInputTime = MuiInputTime;
1510
1661
  exports.MuiSelect = MuiSelect;
1662
+ exports.MuiToggle = MuiToggle;
1663
+ exports.NoBorderTableCell = NoBorderTableCell;
1664
+ exports.NonEmptyRow = NonEmptyRow;
1511
1665
  exports.ResettableTextField = ResettableTextField;
1512
1666
  exports.Unwrapped = Unwrapped;
1513
1667
  exports.createOnChangeHandler = createOnChangeHandler;
1668
+ exports.ctxDispatchToExpandPanelProps = ctxDispatchToExpandPanelProps;
1514
1669
  exports.getData = getData;
1515
1670
  exports.i18nDefaults = i18nDefaults;
1516
1671
  exports.materialAllOfControlTester = materialAllOfControlTester;
@@ -1534,6 +1689,8 @@ exports.materialGroupTester = materialGroupTester;
1534
1689
  exports.materialHorizontalLayoutTester = materialHorizontalLayoutTester;
1535
1690
  exports.materialIntegerCellTester = materialIntegerCellTester;
1536
1691
  exports.materialIntegerControlTester = materialIntegerControlTester;
1692
+ exports.materialLabelRendererTester = materialLabelRendererTester;
1693
+ exports.materialListWithDetailTester = materialListWithDetailTester;
1537
1694
  exports.materialNativeControlTester = materialNativeControlTester;
1538
1695
  exports.materialNumberCellTester = materialNumberCellTester;
1539
1696
  exports.materialNumberControlTester = materialNumberControlTester;
@@ -1555,4 +1712,6 @@ exports.renderLayoutElements = renderLayoutElements;
1555
1712
  exports.useDebouncedChange = useDebouncedChange;
1556
1713
  exports.useFocus = useFocus;
1557
1714
  exports.withAjvProps = withAjvProps;
1715
+ exports.withContextToExpandPanelProps = withContextToExpandPanelProps;
1716
+ exports.withJsonFormsExpandPanelProps = withJsonFormsExpandPanelProps;
1558
1717
  //# sourceMappingURL=jsonforms-react-material.cjs.js.map