@jsonforms/material-renderers 3.3.0-alpha.1 → 3.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/lib/jsonforms-react-material.cjs.js +144 -83
  2. package/lib/jsonforms-react-material.cjs.js.map +1 -1
  3. package/lib/jsonforms-react-material.esm.js +149 -85
  4. package/lib/jsonforms-react-material.esm.js.map +1 -1
  5. package/lib/layouts/ExpandPanelRenderer.d.ts +5 -1
  6. package/package.json +5 -5
  7. package/src/additional/ListWithDetailMasterItem.tsx +13 -6
  8. package/src/additional/MaterialLabelRenderer.tsx +5 -6
  9. package/src/additional/MaterialListWithDetailRenderer.tsx +10 -4
  10. package/src/complex/MaterialAllOfRenderer.tsx +14 -12
  11. package/src/complex/MaterialAnyOfRenderer.tsx +7 -3
  12. package/src/complex/MaterialArrayControlRenderer.tsx +6 -3
  13. package/src/complex/MaterialEnumArrayRenderer.tsx +56 -55
  14. package/src/complex/MaterialObjectRenderer.tsx +14 -12
  15. package/src/complex/MaterialOneOfRenderer.tsx +7 -3
  16. package/src/complex/MaterialTableControl.tsx +34 -33
  17. package/src/controls/MaterialBooleanControl.tsx +7 -8
  18. package/src/controls/MaterialBooleanToggleControl.tsx +7 -8
  19. package/src/controls/MaterialInputControl.tsx +32 -30
  20. package/src/controls/MaterialNativeControl.tsx +23 -21
  21. package/src/controls/MaterialRadioGroup.tsx +39 -38
  22. package/src/controls/MaterialSliderControl.tsx +44 -43
  23. package/src/layouts/ExpandPanelRenderer.tsx +48 -11
  24. package/src/layouts/MaterialArrayLayoutRenderer.tsx +6 -4
  25. package/src/layouts/MaterialCategorizationLayout.tsx +7 -3
  26. package/src/layouts/MaterialCategorizationStepperLayout.tsx +8 -3
  27. package/src/layouts/MaterialGroupLayout.tsx +17 -14
  28. package/src/mui-controls/MuiAutocomplete.tsx +6 -3
  29. package/src/util/layout.tsx +16 -18
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var material = require('@mui/material');
7
6
  var core = require('@jsonforms/core');
8
7
  var react = require('@jsonforms/react');
8
+ var material = require('@mui/material');
9
9
  var omit = require('lodash/omit');
10
10
  var isEmpty = require('lodash/isEmpty');
11
11
  var union = require('lodash/union');
@@ -21,7 +21,6 @@ var map = require('lodash/map');
21
21
  var AddIcon = require('@mui/icons-material/Add');
22
22
  var xDatePickers = require('@mui/x-date-pickers');
23
23
  var AdapterDayjs = require('@mui/x-date-pickers/AdapterDayjs');
24
- var get = require('lodash/get');
25
24
 
26
25
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
27
26
 
@@ -37,7 +36,6 @@ var customParsing__default = /*#__PURE__*/_interopDefaultLegacy(customParsing);
37
36
  var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
38
37
  var map__default = /*#__PURE__*/_interopDefaultLegacy(map);
39
38
  var AddIcon__default = /*#__PURE__*/_interopDefaultLegacy(AddIcon);
40
- var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
41
39
 
42
40
  /******************************************************************************
43
41
  Copyright (c) Microsoft Corporation.
@@ -101,12 +99,14 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
101
99
  var MaterialAllOfRenderer = function (_a) {
102
100
  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;
103
101
  var delegateUISchema = core.findMatchingUISchema(uischemas)(schema, uischema.scope, path);
102
+ if (!visible) {
103
+ return null;
104
+ }
104
105
  if (delegateUISchema) {
105
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
106
- React__default["default"].createElement(react.JsonFormsDispatch, { schema: schema, uischema: delegateUISchema, path: path, renderers: renderers, cells: cells })));
106
+ return (React__default["default"].createElement(react.JsonFormsDispatch, { schema: schema, uischema: delegateUISchema, path: path, renderers: renderers, cells: cells }));
107
107
  }
108
108
  var allOfRenderInfos = core.createCombinatorRenderInfos(schema.allOf, rootSchema, 'allOf', uischema, path, uischemas);
109
- 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 })); })));
109
+ return (React__default["default"].createElement(React__default["default"].Fragment, null, 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 })); })));
110
110
  };
111
111
  var materialAllOfControlTester = core.rankWith(3, core.isAllOfControl);
112
112
  var MaterialAllOfRenderer$1 = react.withJsonFormsAllOfProps(MaterialAllOfRenderer);
@@ -170,7 +170,10 @@ var MaterialAnyOfRenderer = function (_a) {
170
170
  }, [handleChange, core.createDefaultValue, newSelectedIndex]);
171
171
  var anyOf = 'anyOf';
172
172
  var anyOfRenderInfos = core.createCombinatorRenderInfos(schema.anyOf, rootSchema, anyOf, uischema, path, uischemas);
173
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
173
+ if (!visible) {
174
+ return null;
175
+ }
176
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
174
177
  React__default["default"].createElement(CombinatorProperties, { schema: schema, combinatorKeyword: anyOf, path: path, rootSchema: rootSchema }),
175
178
  React__default["default"].createElement(material.Tabs, { value: selectedAnyOf, onChange: handleTabChange }, anyOfRenderInfos.map(function (anyOfRenderInfo) { return (React__default["default"].createElement(material.Tab, { key: anyOfRenderInfo.label, label: anyOfRenderInfo.label })); })),
176
179
  anyOfRenderInfos.map(function (anyOfRenderInfo, anyOfIndex) {
@@ -366,15 +369,17 @@ var MaterialTableControl = (function (_super) {
366
369
  var headerCells = isObjectSchema
367
370
  ? generateCells(TableHeaderCell, schema, path, enabled, cells)
368
371
  : undefined;
369
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
370
- React__default["default"].createElement(material.Table, null,
371
- React__default["default"].createElement(material.TableHead, null,
372
- React__default["default"].createElement(TableToolbar, { errors: errors, label: label, description: description, addItem: this.addItem, numColumns: isObjectSchema ? headerCells.length : 1, path: path, uischema: controlElement, schema: schema, rootSchema: rootSchema, enabled: enabled, translations: translations }),
373
- isObjectSchema && (React__default["default"].createElement(material.TableRow, null,
374
- headerCells,
375
- enabled ? React__default["default"].createElement(material.TableCell, null) : null))),
376
- React__default["default"].createElement(material.TableBody, null,
377
- React__default["default"].createElement(TableRows, __assign({ openDeleteDialog: openDeleteDialog, translations: translations }, this.props))))));
372
+ if (!visible) {
373
+ return null;
374
+ }
375
+ return (React__default["default"].createElement(material.Table, null,
376
+ React__default["default"].createElement(material.TableHead, null,
377
+ React__default["default"].createElement(TableToolbar, { errors: errors, label: label, description: description, addItem: this.addItem, numColumns: isObjectSchema ? headerCells.length : 1, path: path, uischema: controlElement, schema: schema, rootSchema: rootSchema, enabled: enabled, translations: translations }),
378
+ isObjectSchema && (React__default["default"].createElement(material.TableRow, null,
379
+ headerCells,
380
+ enabled ? React__default["default"].createElement(material.TableCell, null) : null))),
381
+ React__default["default"].createElement(material.TableBody, null,
382
+ React__default["default"].createElement(TableRows, __assign({ openDeleteDialog: openDeleteDialog, translations: translations }, this.props)))));
378
383
  };
379
384
  return MaterialTableControl;
380
385
  }(React__default["default"].Component));
@@ -407,7 +412,10 @@ var MaterialArrayControlRenderer = function (props) {
407
412
  setOpen(false);
408
413
  }, [setOpen, path, rowData]);
409
414
  var deleteClose = React.useCallback(function () { return setOpen(false); }, [setOpen]);
410
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
415
+ if (!visible) {
416
+ return null;
417
+ }
418
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
411
419
  React__default["default"].createElement(MaterialTableControl, __assign({}, props, { openDeleteDialog: openDeleteDialog })),
412
420
  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 })));
413
421
  };
@@ -435,7 +443,10 @@ var MuiAutocomplete = function (props) {
435
443
  ? errors
436
444
  : null;
437
445
  var secondFormHelperText = showDescription && !isValid ? errors : null;
438
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
446
+ if (!visible) {
447
+ return null;
448
+ }
449
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
439
450
  React__default["default"].createElement(material.Autocomplete, { className: className, id: id, disabled: !enabled, value: findOption, onChange: function (_event, newValue) {
440
451
  handleChange(path, newValue === null || newValue === void 0 ? void 0 : newValue.value);
441
452
  }, inputValue: inputValue, onInputChange: function (_event, newInputValue) {
@@ -518,12 +529,11 @@ var renderLayoutElements = function (elements, schema, path, enabled, renderers,
518
529
  };
519
530
  var MaterialLayoutRendererComponent = function (_a) {
520
531
  var visible = _a.visible, elements = _a.elements, schema = _a.schema, path = _a.path, enabled = _a.enabled, direction = _a.direction, renderers = _a.renderers, cells = _a.cells;
521
- if (isEmpty__default["default"](elements)) {
532
+ if (isEmpty__default["default"](elements) || !visible) {
522
533
  return null;
523
534
  }
524
535
  else {
525
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
526
- React__default["default"].createElement(material.Grid, { container: true, direction: direction, spacing: direction === 'row' ? 2 : 0 }, renderLayoutElements(elements, schema, path, enabled, renderers, cells))));
536
+ return (React__default["default"].createElement(material.Grid, { container: true, direction: direction, spacing: direction === 'row' ? 2 : 0 }, renderLayoutElements(elements, schema, path, enabled, renderers, cells)));
527
537
  }
528
538
  };
529
539
  var MaterialLayoutRenderer = React__default["default"].memo(MaterialLayoutRendererComponent);
@@ -698,21 +708,23 @@ var MaterialEnumArrayRenderer = function (_a) {
698
708
  var isValid = errors.length === 0;
699
709
  var appliedUiSchemaOptions = merge__default["default"]({}, config, otherProps.uischema.options);
700
710
  var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
701
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
702
- React__default["default"].createElement(material.FormControl, { component: 'fieldset', fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur },
703
- React__default["default"].createElement(material.FormLabel, { error: !isValid, component: 'legend', required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
704
- React__default["default"].createElement(material.FormGroup, { row: true }, options.map(function (option, index) {
705
- var optionPath = core.Paths.compose(path, "".concat(index));
706
- var checkboxValue = (data === null || data === void 0 ? void 0 : data.includes(option.value))
707
- ? option.value
708
- : undefined;
709
- return (React__default["default"].createElement(material.FormControlLabel, { id: id + '-label-' + option.value, key: option.value, control: React__default["default"].createElement(MuiCheckbox, __assign({ id: id + '-' + option.value, key: 'checkbox-' + option.value, isValid: isEmpty__default["default"](errors), path: optionPath, handleChange: function (_childPath, newValue) {
710
- return newValue
711
- ? addItem(path, option.value)
712
- : removeItem(path, option.value);
713
- }, data: checkboxValue, errors: errors, schema: schema, visible: visible }, otherProps)), label: option.label }));
714
- })),
715
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, !isValid ? errors : showDescription ? description : null))));
711
+ if (!visible) {
712
+ return null;
713
+ }
714
+ return (React__default["default"].createElement(material.FormControl, { component: 'fieldset', fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur },
715
+ React__default["default"].createElement(material.FormLabel, { error: !isValid, component: 'legend', required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
716
+ React__default["default"].createElement(material.FormGroup, { row: true }, options.map(function (option, index) {
717
+ var optionPath = core.Paths.compose(path, "".concat(index));
718
+ var checkboxValue = (data === null || data === void 0 ? void 0 : data.includes(option.value))
719
+ ? option.value
720
+ : undefined;
721
+ return (React__default["default"].createElement(material.FormControlLabel, { id: id + '-label-' + option.value, key: option.value, control: React__default["default"].createElement(MuiCheckbox, __assign({ id: id + '-' + option.value, key: 'checkbox-' + option.value, isValid: isEmpty__default["default"](errors), path: optionPath, handleChange: function (_childPath, newValue) {
722
+ return newValue
723
+ ? addItem(path, option.value)
724
+ : removeItem(path, option.value);
725
+ }, data: checkboxValue, errors: errors, schema: schema, visible: visible }, otherProps)), label: option.label }));
726
+ })),
727
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid }, !isValid ? errors : showDescription ? description : null)));
716
728
  };
717
729
  var hasOneOfItems = function (schema) {
718
730
  return schema.oneOf !== undefined &&
@@ -745,8 +757,10 @@ var MaterialObjectRenderer = function (_a) {
745
757
  : __assign(__assign({}, core.Generate.uiSchema(schema, 'Group', undefined, rootSchema)), { label: label });
746
758
  }, uischema, rootSchema);
747
759
  }, [uischemas, schema, uischema.scope, path, label, uischema, rootSchema]);
748
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
749
- React__default["default"].createElement(react.JsonFormsDispatch, { visible: visible, enabled: enabled, schema: schema, uischema: detailUiSchema, path: path, renderers: renderers, cells: cells })));
760
+ if (!visible) {
761
+ return null;
762
+ }
763
+ return (React__default["default"].createElement(react.JsonFormsDispatch, { visible: visible, enabled: enabled, schema: schema, uischema: detailUiSchema, path: path, renderers: renderers, cells: cells }));
750
764
  };
751
765
  var materialObjectControlTester = core.rankWith(2, core.isObjectControl);
752
766
  var MaterialObjectRenderer$1 = react.withJsonFormsDetailProps(MaterialObjectRenderer);
@@ -778,7 +792,10 @@ var MaterialOneOfRenderer = function (_a) {
778
792
  setConfirmDialogOpen(true);
779
793
  }
780
794
  }, [setConfirmDialogOpen, setSelectedIndex, data]);
781
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
795
+ if (!visible) {
796
+ return null;
797
+ }
798
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
782
799
  React__default["default"].createElement(CombinatorProperties, { schema: schema, combinatorKeyword: 'oneOf', path: path, rootSchema: rootSchema }),
783
800
  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 })); })),
784
801
  oneOfRenderInfos.map(function (oneOfRenderInfo, oneOfIndex) {
@@ -792,8 +809,10 @@ var MaterialOneOfRenderer$1 = react.withJsonFormsOneOfProps(MaterialOneOfRendere
792
809
  var materialLabelRendererTester = core.rankWith(1, core.uiTypeIs('Label'));
793
810
  var MaterialLabelRenderer = function (_a) {
794
811
  var text = _a.text, visible = _a.visible;
795
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
796
- React__default["default"].createElement(material.Typography, { variant: 'h6' }, text)));
812
+ if (!visible) {
813
+ return null;
814
+ }
815
+ return React__default["default"].createElement(material.Typography, { variant: 'h6' }, text);
797
816
  };
798
817
  var MaterialLabelRenderer$1 = react.withJsonFormsLabelProps(MaterialLabelRenderer);
799
818
 
@@ -824,8 +843,9 @@ var ListWithDetailMasterItem = function (_a) {
824
843
  React__default["default"].createElement(material.Avatar, { "aria-label": 'Index' }, index + 1)),
825
844
  React__default["default"].createElement(material.ListItemText, { primary: childLabel }),
826
845
  enabled && (React__default["default"].createElement(material.ListItemSecondaryAction, null,
827
- React__default["default"].createElement(material.IconButton, { "aria-label": translations.removeAriaLabel, onClick: removeItem(path, index), size: 'large' },
828
- React__default["default"].createElement(iconsMaterial.Delete, null))))));
846
+ React__default["default"].createElement(material.Tooltip, { id: 'tooltip-remove', title: translations.removeTooltip, placement: 'bottom' },
847
+ React__default["default"].createElement(material.IconButton, { "aria-label": translations.removeAriaLabel, onClick: removeItem(path, index), size: 'large' },
848
+ React__default["default"].createElement(iconsMaterial.Delete, null)))))));
829
849
  };
830
850
  var ListWithDetailMasterItem$1 = react.withJsonFormsMasterListItemProps(ListWithDetailMasterItem);
831
851
 
@@ -850,11 +870,14 @@ var MaterialListWithDetailRenderer = function (_a) {
850
870
  React__default["default"].useEffect(function () {
851
871
  setSelectedIndex(undefined);
852
872
  }, [schema]);
853
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
873
+ if (!visible) {
874
+ return null;
875
+ }
876
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
854
877
  React__default["default"].createElement(ArrayLayoutToolbar, { translations: translations, label: core.computeLabel(label, required, appliedUiSchemaOptions.hideRequiredAsterisk), description: description, errors: errors, path: path, enabled: enabled, addItem: addItem, createDefault: handleCreateDefaultValue }),
855
878
  React__default["default"].createElement(material.Grid, { container: true, direction: 'row', spacing: 2 },
856
879
  React__default["default"].createElement(material.Grid, { item: true, xs: 3 },
857
- 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, enabled: enabled, handleSelect: handleListItemClick, removeItem: handleRemoveItem, selected: selectedIndex === index, key: index, translations: translations })); })) : (React__default["default"].createElement("p", null, "No data")))),
880
+ 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, enabled: enabled, handleSelect: handleListItemClick, removeItem: handleRemoveItem, selected: selectedIndex === index, key: index, uischema: foundUISchema, childLabelProp: appliedUiSchemaOptions.elementLabelProp, translations: translations })); })) : (React__default["default"].createElement("p", null, translations.noDataMessage)))),
858
881
  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, "".concat(selectedIndex)) })) : (React__default["default"].createElement(material.Typography, { variant: 'h6' }, translations.noSelection))))));
859
882
  };
860
883
  var materialListWithDetailTester = core.rankWith(4, core.and(core.uiTypeIs('ListWithDetail'), core.isObjectArray));
@@ -874,12 +897,14 @@ var MaterialInputControl = function (props) {
874
897
  : null;
875
898
  var secondFormHelperText = showDescription && !isValid ? errors : null;
876
899
  var InnerComponent = input;
877
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
878
- React__default["default"].createElement(material.FormControl, { fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur, variant: variant, id: id },
879
- React__default["default"].createElement(material.InputLabel, { htmlFor: id + '-input', error: !isValid, required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
880
- React__default["default"].createElement(InnerComponent, __assign({}, props, { id: id + '-input', isValid: isValid, visible: visible })),
881
- React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
882
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText))));
900
+ if (!visible) {
901
+ return null;
902
+ }
903
+ return (React__default["default"].createElement(material.FormControl, { fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur, variant: variant, id: id },
904
+ React__default["default"].createElement(material.InputLabel, { htmlFor: id + '-input', error: !isValid, required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
905
+ React__default["default"].createElement(InnerComponent, __assign({}, props, { id: id + '-input', isValid: isValid, visible: visible })),
906
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid && !showDescription }, firstFormHelperText),
907
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid }, secondFormHelperText)));
883
908
  };
884
909
 
885
910
  var findEnumSchema = function (schemas) {
@@ -964,7 +989,10 @@ var MaterialBooleanControl = function (_a) {
964
989
  descriptionIds.push(helpId2);
965
990
  }
966
991
  var ariaDescribedBy = descriptionIds.join(' ');
967
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
992
+ if (!visible) {
993
+ return null;
994
+ }
995
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
968
996
  React__default["default"].createElement(material.Tooltip, { id: tooltipId, title: showTooltip ? description : '' },
969
997
  React__default["default"].createElement(material.FormControlLabel, { label: label, id: id, control: React__default["default"].createElement(MuiCheckbox, { id: "".concat(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: {
970
998
  'aria-describedby': ariaDescribedBy,
@@ -1005,7 +1033,10 @@ var MaterialBooleanToggleControl = function (_a) {
1005
1033
  descriptionIds.push(helpId2);
1006
1034
  }
1007
1035
  var ariaDescribedBy = descriptionIds.join(' ');
1008
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1036
+ if (!visible) {
1037
+ return null;
1038
+ }
1039
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1009
1040
  React__default["default"].createElement(material.Tooltip, { id: tooltipId, title: showTooltip ? description : '' },
1010
1041
  React__default["default"].createElement(material.FormControlLabel, { label: label, id: id, control: React__default["default"].createElement(MuiToggle, { id: "".concat(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: {
1011
1042
  'aria-describedby': ariaDescribedBy,
@@ -1153,8 +1184,10 @@ var MaterialNativeControl = function (props) {
1153
1184
  var _c = useDebouncedChange(handleChange, '', data, path), inputValue = _c[0], onChange = _c[1];
1154
1185
  var fieldType = (_a = appliedUiSchemaOptions.format) !== null && _a !== void 0 ? _a : schema.format;
1155
1186
  var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
1156
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1157
- 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 })));
1187
+ if (!visible) {
1188
+ return null;
1189
+ }
1190
+ return (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 }));
1158
1191
  };
1159
1192
  var materialNativeControlTester = core.rankWith(2, core.or(core.isDateControl, core.isTimeControl));
1160
1193
  var MaterialNativeControl$1 = react.withJsonFormsControlProps(MaterialNativeControl);
@@ -1179,11 +1212,13 @@ var MaterialRadioGroup = function (props) {
1179
1212
  var isValid = errors.length === 0;
1180
1213
  var appliedUiSchemaOptions = merge__default["default"]({}, config, props.uischema.options);
1181
1214
  var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
1182
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1183
- React__default["default"].createElement(material.FormControl, { component: 'fieldset', fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur },
1184
- React__default["default"].createElement(material.FormLabel, { error: !isValid, component: 'legend', required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
1185
- React__default["default"].createElement(material.RadioGroup, { value: (_a = props.data) !== null && _a !== void 0 ? _a : '', 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, onChange: function () { return handleChange(path, option.value); } }), label: option.label, disabled: !enabled })); })),
1186
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, !isValid ? errors : showDescription ? description : null))));
1215
+ if (!visible) {
1216
+ return null;
1217
+ }
1218
+ return (React__default["default"].createElement(material.FormControl, { component: 'fieldset', fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur },
1219
+ React__default["default"].createElement(material.FormLabel, { error: !isValid, component: 'legend', required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) }, label),
1220
+ React__default["default"].createElement(material.RadioGroup, { value: (_a = props.data) !== null && _a !== void 0 ? _a : '', 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, onChange: function () { return handleChange(path, option.value); } }), label: option.label, disabled: !enabled })); })),
1221
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid }, !isValid ? errors : showDescription ? description : null)));
1187
1222
  };
1188
1223
 
1189
1224
  var MaterialOneOfRadioGroupControl = function (props) {
@@ -1220,15 +1255,17 @@ var MaterialSliderControl = function (props) {
1220
1255
  };
1221
1256
  var showDescription = !core.isDescriptionHidden(visible, description, focused, appliedUiSchemaOptions.showUnfocusedDescription);
1222
1257
  var onChange = React.useCallback(function (_ev, value) { return handleChange(path, Number(value)); }, [path, handleChange]);
1223
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1224
- React__default["default"].createElement(material.FormControl, { fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur, id: id },
1225
- React__default["default"].createElement(material.FormLabel, { htmlFor: id, error: !isValid, component: 'legend', required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) },
1226
- React__default["default"].createElement(material.Typography, { id: id + '-typo', style: labelStyle, variant: 'caption' }, label)),
1227
- React__default["default"].createElement("div", { style: rangeContainerStyle },
1228
- React__default["default"].createElement(material.Typography, { style: rangeItemStyle, variant: 'caption', align: 'left' }, schema.minimum),
1229
- React__default["default"].createElement(material.Typography, { style: rangeItemStyle, variant: 'caption', align: 'right' }, schema.maximum)),
1230
- React__default["default"].createElement(material.Slider, { style: sliderStyle, min: schema.minimum, max: schema.maximum, value: Number(data || schema.default), onChange: onChange, id: id + '-input', disabled: !enabled, step: schema.multipleOf || 1 }),
1231
- React__default["default"].createElement(material.FormHelperText, { error: !isValid }, !isValid ? errors : showDescription ? description : null))));
1258
+ if (!visible) {
1259
+ return null;
1260
+ }
1261
+ return (React__default["default"].createElement(material.FormControl, { fullWidth: !appliedUiSchemaOptions.trim, onFocus: onFocus, onBlur: onBlur, id: id },
1262
+ React__default["default"].createElement(material.FormLabel, { htmlFor: id, error: !isValid, component: 'legend', required: core.showAsRequired(required, appliedUiSchemaOptions.hideRequiredAsterisk) },
1263
+ React__default["default"].createElement(material.Typography, { id: id + '-typo', style: labelStyle, variant: 'caption' }, label)),
1264
+ React__default["default"].createElement("div", { style: rangeContainerStyle },
1265
+ React__default["default"].createElement(material.Typography, { style: rangeItemStyle, variant: 'caption', align: 'left' }, schema.minimum),
1266
+ React__default["default"].createElement(material.Typography, { style: rangeItemStyle, variant: 'caption', align: 'right' }, schema.maximum)),
1267
+ React__default["default"].createElement(material.Slider, { style: sliderStyle, min: schema.minimum, max: schema.maximum, value: Number(data || schema.default), onChange: onChange, id: id + '-input', disabled: !enabled, step: schema.multipleOf || 1 }),
1268
+ React__default["default"].createElement(material.FormHelperText, { error: !isValid }, !isValid ? errors : showDescription ? description : null)));
1232
1269
  };
1233
1270
  var materialSliderControlTester = core.rankWith(4, core.isRangeControl);
1234
1271
  var MaterialSliderControl$1 = react.withJsonFormsControlProps(MaterialSliderControl);
@@ -1373,12 +1410,26 @@ var withContextToExpandPanelProps = function (Component) {
1373
1410
  return function WithContextToExpandPanelProps(_a) {
1374
1411
  var ctx = _a.ctx, props = _a.props;
1375
1412
  var dispatchProps = ctxDispatchToExpandPanelProps(ctx.dispatch);
1376
- var childLabelProp = props.childLabelProp, schema = props.schema, path = props.path, index = props.index, uischemas = props.uischemas;
1413
+ var
1414
+ childLabelProp = props.childLabelProp,
1415
+ schema = props.schema,
1416
+ uischema = props.uischema,
1417
+ rootSchema = props.rootSchema,
1418
+ path = props.path,
1419
+ index = props.index,
1420
+ uischemas = props.uischemas;
1377
1421
  var childPath = core.composePaths(path, "".concat(index));
1378
- var childData = core.Resolve.data(ctx.core.data, childPath);
1379
- var childLabel = childLabelProp
1380
- ? get__default["default"](childData, childLabelProp, '')
1381
- : get__default["default"](childData, core.getFirstPrimitiveProp(schema), '');
1422
+ var childLabel = React.useMemo(function () {
1423
+ return core.computeChildLabel(ctx.core.data, childPath, childLabelProp, schema, rootSchema, ctx.i18n.translate, uischema);
1424
+ }, [
1425
+ ctx.core.data,
1426
+ childPath,
1427
+ childLabelProp,
1428
+ schema,
1429
+ rootSchema,
1430
+ ctx.i18n.translate,
1431
+ uischema,
1432
+ ]);
1382
1433
  return (React__default["default"].createElement(Component, __assign({}, props, dispatchProps, { childLabel: childLabel, childPath: childPath, uischemas: uischemas })));
1383
1434
  };
1384
1435
  };
@@ -1392,11 +1443,13 @@ var style = { marginBottom: '10px' };
1392
1443
  var GroupComponent = React__default["default"].memo(function GroupComponent(_a) {
1393
1444
  var visible = _a.visible, enabled = _a.enabled, uischema = _a.uischema, label = _a.label, props = __rest(_a, ["visible", "enabled", "uischema", "label"]);
1394
1445
  var groupLayout = uischema;
1395
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1396
- React__default["default"].createElement(material.Card, { style: style },
1397
- !isEmpty__default["default"](label) && React__default["default"].createElement(material.CardHeader, { title: label }),
1398
- React__default["default"].createElement(material.CardContent, null,
1399
- React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, props, { visible: visible, enabled: enabled, elements: groupLayout.elements }))))));
1446
+ if (!visible) {
1447
+ return null;
1448
+ }
1449
+ return (React__default["default"].createElement(material.Card, { style: style },
1450
+ !isEmpty__default["default"](label) && React__default["default"].createElement(material.CardHeader, { title: label }),
1451
+ React__default["default"].createElement(material.CardContent, null,
1452
+ React__default["default"].createElement(MaterialLayoutRenderer, __assign({}, props, { visible: visible, enabled: enabled, elements: groupLayout.elements })))));
1400
1453
  });
1401
1454
  var MaterializedGroupLayoutRenderer = function (_a) {
1402
1455
  var uischema = _a.uischema, schema = _a.schema, path = _a.path, visible = _a.visible, enabled = _a.enabled, renderers = _a.renderers, cells = _a.cells, direction = _a.direction, label = _a.label;
@@ -1478,7 +1531,10 @@ var MaterialCategorizationLayoutRenderer = function (props) {
1478
1531
  var tabLabels = React.useMemo(function () {
1479
1532
  return categories.map(function (e) { return core.deriveLabelForUISchemaElement(e, t); });
1480
1533
  }, [categories, t]);
1481
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1534
+ if (!visible) {
1535
+ return null;
1536
+ }
1537
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1482
1538
  React__default["default"].createElement(material.AppBar, { position: 'static' },
1483
1539
  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] })); }))),
1484
1540
  React__default["default"].createElement("div", { style: { marginTop: '0.5em' } },
@@ -1508,8 +1564,10 @@ var MaterialArrayLayout$1 = React__default["default"].memo(MaterialArrayLayoutCo
1508
1564
  var MaterialArrayLayoutRenderer = function (_a) {
1509
1565
  var visible = _a.visible, addItem = _a.addItem, props = __rest(_a, ["visible", "addItem"]);
1510
1566
  var addItemCb = React.useCallback(function (p, value) { return addItem(p, value); }, [addItem]);
1511
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1512
- React__default["default"].createElement(MaterialArrayLayout$1, __assign({ visible: visible, addItem: addItemCb }, props))));
1567
+ if (!visible) {
1568
+ return null;
1569
+ }
1570
+ return (React__default["default"].createElement(MaterialArrayLayout$1, __assign({ visible: visible, addItem: addItemCb }, props)));
1513
1571
  };
1514
1572
  var materialArrayLayoutTester = core.rankWith(4, core.isObjectArrayWithNesting);
1515
1573
  var MaterialArrayLayout = react.withJsonFormsArrayLayoutProps(MaterialArrayLayoutRenderer);
@@ -1615,7 +1673,10 @@ var MaterialCategorizationStepperLayoutRenderer = function (props) {
1615
1673
  var tabLabels = React.useMemo(function () {
1616
1674
  return categories.map(function (e) { return core.deriveLabelForUISchemaElement(e, t); });
1617
1675
  }, [categories, t]);
1618
- return (React__default["default"].createElement(material.Hidden, { xsUp: !visible },
1676
+ if (!visible) {
1677
+ return null;
1678
+ }
1679
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1619
1680
  React__default["default"].createElement(material.Stepper, { activeStep: activeCategory, nonLinear: true }, categories.map(function (_, idx) { return (React__default["default"].createElement(material.Step, { key: tabLabels[idx] },
1620
1681
  React__default["default"].createElement(material.StepButton, { onClick: function () { return handleStep(idx); } }, tabLabels[idx]))); })),
1621
1682
  React__default["default"].createElement("div", null,