@react-typed-forms/schemas 6.0.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  var React = require('react');
2
+ var clsx = require('clsx');
2
3
  var core = require('@react-typed-forms/core');
3
4
  var jsonata = require('jsonata');
4
- var clsx = require('clsx');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
8
8
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
9
- var jsonata__default = /*#__PURE__*/_interopDefaultLegacy(jsonata);
10
9
  var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
10
+ var jsonata__default = /*#__PURE__*/_interopDefaultLegacy(jsonata);
11
11
 
12
12
  exports.FieldType = void 0;
13
13
  (function (FieldType) {
@@ -356,13 +356,10 @@ function hasOptions(o) {
356
356
  function defaultControlForField(sf) {
357
357
  if (isCompoundField(sf)) {
358
358
  return {
359
- type: exports.ControlDefinitionType.Group,
359
+ type: exports.ControlDefinitionType.Data,
360
360
  title: sf.displayName,
361
- compoundField: sf.field,
362
- groupOptions: {
363
- type: exports.GroupRenderType.Grid,
364
- hideTitle: false
365
- },
361
+ field: sf.field,
362
+ required: sf.required,
366
363
  children: sf.children.map(defaultControlForField)
367
364
  };
368
365
  } else if (isScalarField(sf)) {
@@ -533,6 +530,15 @@ function cleanDataForSchema(v, fields) {
533
530
 
534
531
  return out;
535
532
  }
533
+ function getAllReferencedClasses(c) {
534
+ var _c$children;
535
+ var childClasses = (_c$children = c.children) == null ? void 0 : _c$children.flatMap(getAllReferencedClasses);
536
+ var tc = clsx__default["default"](c.styleClass, c.layoutClass);
537
+ if (childClasses && !tc) return childClasses;
538
+ if (!tc) return [];
539
+ if (childClasses) return [tc].concat(childClasses);
540
+ return [tc];
541
+ }
536
542
 
537
543
  function dataControl(field, title, options) {
538
544
  return _extends({
@@ -883,6 +889,7 @@ function defaultTextValue(f, value) {
883
889
  }
884
890
  }
885
891
 
892
+ var _excluded$1 = ["definition", "field", "control", "options", "elementRenderer", "style"];
886
893
  var AppendAdornmentPriority = 0;
887
894
  var WrapAdornmentPriority = 1000;
888
895
  exports.LabelType = void 0;
@@ -956,18 +963,19 @@ function useControlRenderer(definition, fields, renderer, options) {
956
963
  control = _getControlData[0],
957
964
  childContext = _getControlData[1];
958
965
  core.useControlEffect(function () {
959
- return [visibility.value, defaultValueControl.value, control, parentControl.isNull];
966
+ return [visibility.value, defaultValueControl.value, control, parentControl.isNull, isDataControlDefinition(definition) && definition.dontClearHidden];
960
967
  }, function (_ref2) {
961
968
  var vc = _ref2[0],
962
969
  dv = _ref2[1],
963
970
  cd = _ref2[2],
964
- pn = _ref2[3];
971
+ pn = _ref2[3],
972
+ dontClear = _ref2[4];
965
973
  if (pn) {
966
974
  parentControl.value = {};
967
975
  }
968
976
  if (vc && cd && vc.visible === vc.showing) {
969
977
  if (!vc.visible) {
970
- if (_options.clearHidden) cd.value = undefined;
978
+ if (_options.clearHidden && !dontClear) cd.value = undefined;
971
979
  } else if (cd.value == null) {
972
980
  cd.value = dv;
973
981
  }
@@ -1040,40 +1048,7 @@ function getControlData(schemaField, parentContext) {
1040
1048
  schemaInterface: parentContext.schemaInterface
1041
1049
  } : parentContext];
1042
1050
  }
1043
- function renderArray(renderer, noun, field, required, arrayControl, _renderChild, className, style) {
1044
- var _arrayControl$element;
1045
- var elems = (_arrayControl$element = arrayControl.elements) != null ? _arrayControl$element : [];
1046
- return renderer.renderArray({
1047
- arrayControl: arrayControl,
1048
- childCount: elems.length,
1049
- required: required,
1050
- addAction: {
1051
- actionId: "add",
1052
- actionText: "Add " + noun,
1053
- onClick: function onClick() {
1054
- return core.addElement(arrayControl, elementValueForField(field));
1055
- }
1056
- },
1057
- childKey: function childKey(i) {
1058
- return elems[i].uniqueId;
1059
- },
1060
- removeAction: function removeAction(i) {
1061
- return {
1062
- actionId: "",
1063
- actionText: "Remove",
1064
- onClick: function onClick() {
1065
- return core.removeElement(arrayControl, i);
1066
- }
1067
- };
1068
- },
1069
- renderChild: function renderChild(i) {
1070
- return _renderChild(i, elems[i]);
1071
- },
1072
- className: cc(className),
1073
- style: style
1074
- });
1075
- }
1076
- function groupProps(renderOptions, childCount, _renderChild2, control, className, style) {
1051
+ function groupProps(renderOptions, childCount, _renderChild, control, className, style) {
1077
1052
  if (renderOptions === void 0) {
1078
1053
  renderOptions = {
1079
1054
  type: "Standard"
@@ -1082,7 +1057,7 @@ function groupProps(renderOptions, childCount, _renderChild2, control, className
1082
1057
  return {
1083
1058
  childCount: childCount,
1084
1059
  renderChild: function renderChild(i) {
1085
- return _renderChild2(i, i, {
1060
+ return _renderChild(i, i, {
1086
1061
  control: control
1087
1062
  });
1088
1063
  },
@@ -1095,11 +1070,14 @@ function defaultDataProps(_ref3) {
1095
1070
  var _field$options$length, _field$options, _definition$renderOpt;
1096
1071
  var definition = _ref3.definition,
1097
1072
  field = _ref3.field,
1098
- dataContext = _ref3.dataContext,
1099
1073
  control = _ref3.control,
1100
1074
  options = _ref3.options,
1101
- style = _ref3.style;
1102
- return {
1075
+ elementRenderer = _ref3.elementRenderer,
1076
+ style = _ref3.style,
1077
+ props = _objectWithoutPropertiesLoose(_ref3, _excluded$1);
1078
+ var className = cc(definition.styleClass);
1079
+ var required = !!definition.required;
1080
+ return _extends({
1103
1081
  control: control,
1104
1082
  field: field,
1105
1083
  id: "c" + control.uniqueId,
@@ -1108,11 +1086,48 @@ function defaultDataProps(_ref3) {
1108
1086
  renderOptions: (_definition$renderOpt = definition.renderOptions) != null ? _definition$renderOpt : {
1109
1087
  type: "Standard"
1110
1088
  },
1111
- required: !!definition.required,
1089
+ required: required,
1112
1090
  hidden: !!options.hidden,
1113
- className: cc(definition.styleClass),
1114
- style: style,
1115
- dataContext: dataContext
1091
+ className: className,
1092
+ style: style
1093
+ }, props, {
1094
+ toArrayProps: elementRenderer ? function () {
1095
+ return defaultArrayProps(control, field, required, style, className, elementRenderer);
1096
+ } : undefined
1097
+ });
1098
+ }
1099
+ function defaultArrayProps(arrayControl, field, required, style, className, _renderElement) {
1100
+ var _field$displayName, _arrayControl$element;
1101
+ var noun = (_field$displayName = field.displayName) != null ? _field$displayName : field.field;
1102
+ var elems = (_arrayControl$element = arrayControl.elements) != null ? _arrayControl$element : [];
1103
+ return {
1104
+ arrayControl: arrayControl,
1105
+ elementCount: elems.length,
1106
+ required: required,
1107
+ addAction: {
1108
+ actionId: "add",
1109
+ actionText: "Add " + noun,
1110
+ onClick: function onClick() {
1111
+ return core.addElement(arrayControl, elementValueForField(field));
1112
+ }
1113
+ },
1114
+ elementKey: function elementKey(i) {
1115
+ return elems[i].uniqueId;
1116
+ },
1117
+ removeAction: function removeAction(i) {
1118
+ return {
1119
+ actionId: "",
1120
+ actionText: "Remove",
1121
+ onClick: function onClick() {
1122
+ return core.removeElement(arrayControl, i);
1123
+ }
1124
+ };
1125
+ },
1126
+ renderElement: function renderElement(i) {
1127
+ return _renderElement(elems[i]);
1128
+ },
1129
+ className: cc(className),
1130
+ style: style
1116
1131
  };
1117
1132
  }
1118
1133
  function renderControlLayout(_ref4) {
@@ -1172,44 +1187,26 @@ function renderControlLayout(_ref4) {
1172
1187
  };
1173
1188
  }
1174
1189
  return {};
1175
- function renderData(c) {
1190
+ function renderData(c, elementControl) {
1176
1191
  if (!schemaField) return {
1177
1192
  children: "No schema field for: " + c.field
1178
1193
  };
1179
- if (isCompoundField(schemaField)) {
1180
- var label = {
1181
- hide: c.hideTitle,
1182
- label: controlTitle(c.title, schemaField),
1183
- type: schemaField.collection ? exports.LabelType.Control : exports.LabelType.Group
1184
- };
1185
- if (schemaField.collection) {
1186
- return {
1187
- label: label,
1188
- children: renderArray(renderer, controlTitle(c.title, schemaField), schemaField, !!c.required, childControl, compoundRenderer, c.styleClass, style),
1189
- errorControl: childControl
1190
- };
1191
- }
1192
- return {
1193
- processLayout: renderer.renderGroup(groupProps({
1194
- type: "Standard"
1195
- }, childCount, childRenderer, childControl, c.styleClass, style)),
1196
- label: label,
1197
- errorControl: childControl
1198
- };
1199
- }
1200
1194
  var props = dataProps({
1201
1195
  definition: c,
1202
1196
  field: schemaField,
1203
1197
  dataContext: dataContext,
1204
- control: childControl,
1198
+ control: elementControl != null ? elementControl : childControl,
1205
1199
  options: dataOptions,
1206
- style: style
1200
+ style: style,
1201
+ childCount: childCount,
1202
+ renderChild: childRenderer,
1203
+ elementRenderer: elementControl == null && schemaField.collection ? function (element) {
1204
+ return renderLayoutParts(renderData(c, element), renderer).children;
1205
+ } : undefined
1207
1206
  });
1208
1207
  var labelText = !c.hideTitle ? controlTitle(c.title, schemaField) : undefined;
1209
1208
  return {
1210
- processLayout: renderer.renderData(props, schemaField.collection ? function () {
1211
- return renderArray(renderer, controlTitle(c.title, schemaField), schemaField, !!c.required, childControl, scalarRenderer(props), c.styleClass, style);
1212
- } : undefined),
1209
+ processLayout: renderer.renderData(props),
1213
1210
  label: {
1214
1211
  type: exports.LabelType.Control,
1215
1212
  label: labelText,
@@ -1220,39 +1217,6 @@ function renderControlLayout(_ref4) {
1220
1217
  errorControl: childControl
1221
1218
  };
1222
1219
  }
1223
- function compoundRenderer(i, control) {
1224
- var _renderer$renderLayou = renderer.renderLayout({
1225
- processLayout: renderer.renderGroup({
1226
- renderOptions: {
1227
- type: "Standard",
1228
- hideTitle: true
1229
- },
1230
- childCount: childCount,
1231
- renderChild: function renderChild(ci) {
1232
- return childRenderer(ci, ci, {
1233
- control: control
1234
- });
1235
- }
1236
- })
1237
- }),
1238
- className = _renderer$renderLayou.className,
1239
- style = _renderer$renderLayou.style,
1240
- children = _renderer$renderLayou.children;
1241
- return /*#__PURE__*/React__default["default"].createElement("div", {
1242
- key: control.uniqueId,
1243
- style: style,
1244
- className: cc(className)
1245
- }, children);
1246
- }
1247
- function scalarRenderer(dataProps) {
1248
- return function (i, control) {
1249
- return /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
1250
- key: control.uniqueId
1251
- }, renderer.renderData(_extends({}, dataProps, {
1252
- control: control
1253
- }), undefined)({}).children);
1254
- };
1255
- }
1256
1220
  }
1257
1221
  function appendMarkup(k, markup) {
1258
1222
  return function (layout) {
@@ -1366,7 +1330,7 @@ function createFormRenderer(customRenderers, defaultRenderers) {
1366
1330
  })) != null ? _labelRenderers$find : defaultRenderers.label;
1367
1331
  return renderer.render(props, labelStart, labelEnd, formRenderers);
1368
1332
  }
1369
- function renderData(props, asArray) {
1333
+ function renderData(props) {
1370
1334
  var _dataRegistrations$fi;
1371
1335
  var renderType = props.renderOptions.type,
1372
1336
  field = props.field;
@@ -1375,7 +1339,7 @@ function createFormRenderer(customRenderers, defaultRenderers) {
1375
1339
  var _x$collection, _field$collection, _x$options;
1376
1340
  return ((_x$collection = x.collection) != null ? _x$collection : false) === ((_field$collection = field.collection) != null ? _field$collection : false) && ((_x$options = x.options) != null ? _x$options : false) === options && isOneOf(x.schemaType, field.type) && isOneOf(x.renderType, renderType) && (!x.match || x.match(props));
1377
1341
  })) != null ? _dataRegistrations$fi : defaultRenderers.data;
1378
- var result = renderer.render(props, asArray, formRenderers);
1342
+ var result = renderer.render(props, formRenderers);
1379
1343
  if (typeof result === "function") return result;
1380
1344
  return function (l) {
1381
1345
  return _extends({}, l, {
@@ -1460,29 +1424,29 @@ function createDefaultArrayRenderer(options) {
1460
1424
  removeActionClass = _ref2.removeActionClass,
1461
1425
  addActionClass = _ref2.addActionClass;
1462
1426
  function render(_ref3, _ref4) {
1463
- var childCount = _ref3.childCount,
1464
- renderChild = _ref3.renderChild,
1427
+ var elementCount = _ref3.elementCount,
1428
+ renderElement = _ref3.renderElement,
1465
1429
  addAction = _ref3.addAction,
1466
1430
  removeAction = _ref3.removeAction,
1467
- childKey = _ref3.childKey,
1431
+ elementKey = _ref3.elementKey,
1468
1432
  required = _ref3.required;
1469
1433
  var renderAction = _ref4.renderAction;
1470
- var showRemove = !required || childCount > 1;
1434
+ var showRemove = !required || elementCount > 1;
1471
1435
  return /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("div", {
1472
1436
  className: clsx__default["default"](className, removeAction && removableClass)
1473
1437
  }, Array.from({
1474
- length: childCount
1438
+ length: elementCount
1475
1439
  }, function (_, x) {
1476
1440
  return removeAction ? /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
1477
- key: childKey(x)
1441
+ key: elementKey(x)
1478
1442
  }, /*#__PURE__*/React__default["default"].createElement("div", {
1479
1443
  className: clsx__default["default"](childClass, removableChildClass)
1480
- }, renderChild(x)), /*#__PURE__*/React__default["default"].createElement("div", {
1444
+ }, renderElement(x)), /*#__PURE__*/React__default["default"].createElement("div", {
1481
1445
  className: removeActionClass
1482
1446
  }, showRemove && renderAction(removeAction(x)))) : /*#__PURE__*/React__default["default"].createElement("div", {
1483
- key: childKey(x),
1447
+ key: elementKey(x),
1484
1448
  className: childClass
1485
- }, renderChild(x));
1449
+ }, renderElement(x));
1486
1450
  })), addAction && /*#__PURE__*/React__default["default"].createElement("div", {
1487
1451
  className: addActionClass
1488
1452
  }, renderAction(addAction)));
@@ -1618,13 +1582,33 @@ function createDefaultDataRenderer(options) {
1618
1582
  booleanOptions = _optionRenderer$boole.booleanOptions,
1619
1583
  optionRenderer = _optionRenderer$boole.optionRenderer,
1620
1584
  displayOnlyClass = _optionRenderer$boole.displayOnlyClass;
1621
- return createDataRenderer(function (props, asArray, renderers) {
1622
- if (asArray) {
1623
- return asArray();
1585
+ return createDataRenderer(function (props, renderers) {
1586
+ var fieldType = props.field.type;
1587
+ if (props.toArrayProps) {
1588
+ return function (p) {
1589
+ return _extends({}, p, {
1590
+ children: renderers.renderArray(props.toArrayProps())
1591
+ });
1592
+ };
1593
+ }
1594
+ if (fieldType === exports.FieldType.Compound) {
1595
+ return renderers.renderGroup({
1596
+ style: props.style,
1597
+ className: props.className,
1598
+ renderOptions: {
1599
+ type: "Standard",
1600
+ hideTitle: true
1601
+ },
1602
+ renderChild: function renderChild(i) {
1603
+ return props.renderChild(i, i, {
1604
+ control: props.control
1605
+ });
1606
+ },
1607
+ childCount: props.childCount
1608
+ });
1624
1609
  }
1625
1610
  var renderOptions = props.renderOptions;
1626
1611
  var renderType = renderOptions.type;
1627
- var fieldType = props.field.type;
1628
1612
  if (fieldType == exports.FieldType.Any) return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, "No control for Any");
1629
1613
  if (isDisplayOnlyRenderer(renderOptions)) return function (p) {
1630
1614
  return _extends({}, p, {
@@ -1643,14 +1627,14 @@ function createDefaultDataRenderer(options) {
1643
1627
  if (booleanOptions != null && isBool && props.options == null) {
1644
1628
  return renderers.renderData(_extends({}, props, {
1645
1629
  options: booleanOptions
1646
- }), undefined);
1630
+ }));
1647
1631
  }
1648
1632
  if (renderType === exports.DataRenderType.Standard && hasOptions(props)) {
1649
- return optionRenderer.render(props, undefined, renderers);
1633
+ return optionRenderer.render(props, renderers);
1650
1634
  }
1651
1635
  switch (renderType) {
1652
1636
  case exports.DataRenderType.Dropdown:
1653
- return selectRenderer.render(props, undefined, renderers);
1637
+ return selectRenderer.render(props, renderers);
1654
1638
  }
1655
1639
  return renderType === exports.DataRenderType.Checkbox ? /*#__PURE__*/React__default["default"].createElement(core.Fcheckbox, {
1656
1640
  style: props.style,
@@ -2098,6 +2082,7 @@ exports.createSelectConversion = createSelectConversion;
2098
2082
  exports.createSelectRenderer = createSelectRenderer;
2099
2083
  exports.createVisibilityRenderer = createVisibilityRenderer;
2100
2084
  exports.dataControl = dataControl;
2085
+ exports.defaultArrayProps = defaultArrayProps;
2101
2086
  exports.defaultCompoundField = defaultCompoundField;
2102
2087
  exports.defaultControlForField = defaultControlForField;
2103
2088
  exports.defaultDataProps = defaultDataProps;
@@ -2122,6 +2107,7 @@ exports.fieldHasTag = fieldHasTag;
2122
2107
  exports.findCompoundField = findCompoundField;
2123
2108
  exports.findField = findField;
2124
2109
  exports.findScalarField = findScalarField;
2110
+ exports.getAllReferencedClasses = getAllReferencedClasses;
2125
2111
  exports.getControlData = getControlData;
2126
2112
  exports.getDisplayOnlyOptions = getDisplayOnlyOptions;
2127
2113
  exports.getTypeField = getTypeField;