@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.
- package/lib/jsonforms-core.cjs.js +82 -36
- package/lib/jsonforms-core.cjs.js.map +1 -1
- package/lib/jsonforms-core.esm.js +82 -37
- package/lib/jsonforms-core.esm.js.map +1 -1
- package/lib/util/renderer.d.ts +8 -2
- package/lib/util/util.d.ts +26 -0
- package/package.json +2 -2
- package/src/reducers/core.ts +3 -20
- package/src/reducers/reducers.ts +1 -1
- package/src/util/renderer.ts +62 -24
- package/src/util/util.ts +54 -1
- package/src/util/validator.ts +1 -0
|
@@ -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
|
-
|
|
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
|
-
?
|
|
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 =
|
|
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
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
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
|
-
|
|
1747
|
-
|
|
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;
|