@jsonforms/core 3.2.0-alpha.1 → 3.2.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -477,13 +477,6 @@ var initState = {
477
477
  validationMode: 'ValidateAndShow',
478
478
  additionalErrors: [],
479
479
  };
480
- var reuseAjvForSchema = function (ajv, schema) {
481
- if (Object.prototype.hasOwnProperty.call(schema, 'id') ||
482
- Object.prototype.hasOwnProperty.call(schema, '$id')) {
483
- ajv.removeSchema(schema);
484
- }
485
- return ajv;
486
- };
487
480
  var getOrCreateAjv = function (state, action) {
488
481
  if (action) {
489
482
  if (hasAjvOption(action.options)) {
@@ -495,12 +488,7 @@ var getOrCreateAjv = function (state, action) {
495
488
  }
496
489
  }
497
490
  }
498
- if (state.ajv) {
499
- return (action === null || action === void 0 ? void 0 : action.schema)
500
- ? reuseAjvForSchema(state.ajv, action.schema)
501
- : state.ajv;
502
- }
503
- return createAjv();
491
+ return state.ajv ? state.ajv : createAjv();
504
492
  };
505
493
  var hasAjvOption = function (option) {
506
494
  if (option) {
@@ -586,7 +574,7 @@ var coreReducer = function (state, action) {
586
574
  case SET_SCHEMA: {
587
575
  var needsNewValidator = action.schema && state.ajv && state.validationMode !== 'NoValidation';
588
576
  var v = needsNewValidator
589
- ? reuseAjvForSchema(state.ajv, action.schema).compile(action.schema)
577
+ ? state.ajv.compile(action.schema)
590
578
  : state.validator;
591
579
  var errors = validate(v, state.data);
592
580
  return __assign(__assign({}, state), { validator: v, schema: action.schema, errors: errors });
@@ -629,7 +617,7 @@ var coreReducer = function (state, action) {
629
617
  return __assign(__assign({}, state), { errors: errors, validationMode: action.validationMode });
630
618
  }
631
619
  if (state.validationMode === 'NoValidation') {
632
- var validator = reuseAjvForSchema(state.ajv, state.schema).compile(state.schema);
620
+ var validator = state.ajv.compile(state.schema);
633
621
  var errors = validate(validator, state.data);
634
622
  return __assign(__assign({}, state), { validator: validator,
635
623
  errors: errors, validationMode: action.validationMode });
@@ -1311,7 +1299,7 @@ var findUISchema = function (uischemas, schema, schemaPath, path, fallback, cont
1311
1299
  if (typeof fallback === 'function') {
1312
1300
  return fallback();
1313
1301
  }
1314
- return Generate.uiSchema(schema, fallback);
1302
+ return Generate.uiSchema(schema, fallback, undefined, rootSchema);
1315
1303
  }
1316
1304
  }
1317
1305
  else if (typeof control.options.detail === 'object') {
@@ -1626,6 +1614,19 @@ var isInherentlyEnabled = function (state, ownProps, uischema, schema, rootData,
1626
1614
  return true;
1627
1615
  };
1628
1616
 
1617
+ var convertDateToString = function (date, format) {
1618
+ var dateString = date.toISOString();
1619
+ if (format === 'date-time') {
1620
+ return dateString;
1621
+ }
1622
+ else if (format === 'date') {
1623
+ return dateString.split('T')[0];
1624
+ }
1625
+ else if (format === 'time') {
1626
+ return dateString.split('T')[1].split('.')[0];
1627
+ }
1628
+ return dateString;
1629
+ };
1629
1630
  var convertToValidClassName = function (s) {
1630
1631
  return s.replace('#', 'root').replace(new RegExp('/', 'g'), '_');
1631
1632
  };
@@ -1655,6 +1656,18 @@ var deriveTypes = function (jsonSchema) {
1655
1656
  if (!isEmpty__default["default"](jsonSchema.items)) {
1656
1657
  return ['array'];
1657
1658
  }
1659
+ if (!isEmpty__default["default"](jsonSchema.enum)) {
1660
+ var types_1 = new Set();
1661
+ jsonSchema.enum.forEach(function (enumElement) {
1662
+ if (typeof enumElement === 'string') {
1663
+ types_1.add('string');
1664
+ }
1665
+ else {
1666
+ deriveTypes(enumElement).forEach(function (type) { return types_1.add(type); });
1667
+ }
1668
+ });
1669
+ return Array.from(types_1);
1670
+ }
1658
1671
  if (!isEmpty__default["default"](jsonSchema.allOf)) {
1659
1672
  var allOfType = find__default["default"](jsonSchema.allOf, function (schema) { return deriveTypes(schema).length !== 0; });
1660
1673
  if (allOfType) {
@@ -1735,27 +1748,54 @@ var computeLabel = function (label, required, hideRequiredAsterisk) {
1735
1748
  var showAsRequired = function (required, hideRequiredAsterisk) {
1736
1749
  return required && !hideRequiredAsterisk;
1737
1750
  };
1738
- var createDefaultValue = function (schema) {
1739
- switch (schema.type) {
1740
- case 'string':
1741
- if (schema.format === 'date-time' ||
1742
- schema.format === 'date' ||
1743
- schema.format === 'time') {
1744
- return new Date();
1751
+ var createDefaultValue = function (schema, rootSchema) {
1752
+ var resolvedSchema = Resolve.schema(schema, schema.$ref, rootSchema);
1753
+ if (resolvedSchema.default !== undefined) {
1754
+ return extractDefaults(resolvedSchema, rootSchema);
1755
+ }
1756
+ if (hasType(resolvedSchema, 'string')) {
1757
+ if (resolvedSchema.format === 'date-time' ||
1758
+ resolvedSchema.format === 'date' ||
1759
+ resolvedSchema.format === 'time') {
1760
+ return convertDateToString(new Date(), resolvedSchema.format);
1761
+ }
1762
+ return '';
1763
+ }
1764
+ else if (hasType(resolvedSchema, 'integer') ||
1765
+ hasType(resolvedSchema, 'number')) {
1766
+ return 0;
1767
+ }
1768
+ else if (hasType(resolvedSchema, 'boolean')) {
1769
+ return false;
1770
+ }
1771
+ else if (hasType(resolvedSchema, 'array')) {
1772
+ return [];
1773
+ }
1774
+ else if (hasType(resolvedSchema, 'object')) {
1775
+ return extractDefaults(resolvedSchema, rootSchema);
1776
+ }
1777
+ else if (hasType(resolvedSchema, 'null')) {
1778
+ return null;
1779
+ }
1780
+ else {
1781
+ return {};
1782
+ }
1783
+ };
1784
+ var extractDefaults = function (schema, rootSchema) {
1785
+ if (hasType(schema, 'object') && schema.default === undefined) {
1786
+ var result = {};
1787
+ for (var key in schema.properties) {
1788
+ var property = schema.properties[key];
1789
+ var resolvedProperty = property.$ref
1790
+ ? Resolve.schema(rootSchema, property.$ref, rootSchema)
1791
+ : property;
1792
+ if (resolvedProperty.default !== undefined) {
1793
+ result[key] = cloneDeep__default["default"](resolvedProperty.default);
1745
1794
  }
1746
- return '';
1747
- case 'integer':
1748
- case 'number':
1749
- return 0;
1750
- case 'boolean':
1751
- return false;
1752
- case 'array':
1753
- return [];
1754
- case 'null':
1755
- return null;
1756
- default:
1757
- return {};
1795
+ }
1796
+ return result;
1758
1797
  }
1798
+ return cloneDeep__default["default"](schema.default);
1759
1799
  };
1760
1800
  var isDescriptionHidden = function (visible, description, isFocused, showUnfocusedDescription) {
1761
1801
  return (description === undefined ||
@@ -1873,6 +1913,10 @@ var mapStateToMultiEnumControlProps = function (state, ownProps) {
1873
1913
  var _a;
1874
1914
  var props = mapStateToControlProps(state, ownProps);
1875
1915
  var items = props.schema.items;
1916
+ items =
1917
+ items && items.$ref
1918
+ ? resolveSchema(props.rootSchema, items.$ref, props.rootSchema)
1919
+ : items;
1876
1920
  var options = ownProps.options ||
1877
1921
  ((items === null || items === void 0 ? void 0 : items.oneOf) &&
1878
1922
  items.oneOf.map(function (oneOfSubSchema) {
@@ -2245,7 +2289,7 @@ var iterateSchema = function (uischema, toApply) {
2245
2289
  };
2246
2290
 
2247
2291
  var createAjv = function (options) {
2248
- var ajv = new Ajv__default["default"](__assign({ allErrors: true, verbose: true, strict: false }, options));
2292
+ var ajv = new Ajv__default["default"](__assign({ allErrors: true, verbose: true, strict: false, addUsedSchema: false }, options));
2249
2293
  addFormats__default["default"](ajv);
2250
2294
  return ajv;
2251
2295
  };
@@ -2570,6 +2614,7 @@ exports.composeWithUi = composeWithUi;
2570
2614
  exports.computeLabel = computeLabel;
2571
2615
  exports.configReducer = configReducer;
2572
2616
  exports.controlDefaultProps = controlDefaultProps;
2617
+ exports.convertDateToString = convertDateToString;
2573
2618
  exports.convertToValidClassName = convertToValidClassName;
2574
2619
  exports.coreReducer = coreReducer;
2575
2620
  exports.createAjv = createAjv;
@@ -2597,6 +2642,7 @@ exports.evalVisibility = evalVisibility;
2597
2642
  exports.extractAjv = extractAjv;
2598
2643
  exports.extractData = extractData;
2599
2644
  exports.extractDefaultData = extractDefaultData;
2645
+ exports.extractDefaults = extractDefaults;
2600
2646
  exports.extractSchema = extractSchema;
2601
2647
  exports.extractUiSchema = extractUiSchema;
2602
2648
  exports.fetchErrorTranslator = fetchErrorTranslator;