@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
72 lines • 6.87 kB
JavaScript
import { Pipe } from '@angular/core';
import * as i0 from "@angular/core";
/**
* This pipe should be used in pair with validateArrayElements function - it allows to distribute
* errors for each position in array, from the object prepared by validateArrayElements.
*
* ```ts
* errors = {
* "INNER_ARRAY_ERROR_minlength": {
* isArrayError: true,
* originalKey: "minlength",
* entries: [
* {
* index: 0,
* errorData: {
* requiredLength: 5,
* actualLength: 4
* }
* },
* {
* index: 2,
* errorData: {
* requiredLength: 5,
* actualLength: 3
* }
* },
* ]
* },
* "minlength": {
* requiredLength: 5,
* actualLength: 3
* }
* }
* ```
*
* ```html
* <small *ngFor="let error of errors | extractArrayValidationErrors:index | keyvalue">
* {{ error.key | humanizeValidationMessage | translate: error.value }}
* </small>
* ```
*
* Above code renders only these error messages that are generated by Array entries.
*
*/
export class ExtractArrayValidationErrorsPipe {
transform(validationErrors, index) {
if (!validationErrors) {
return null;
}
const errorObject = {};
Object.keys(validationErrors).forEach(key => {
if (validationErrors[key].isArrayError) {
const unprefixedKey = validationErrors[key].originalKey;
const arrayValidationError = validationErrors[key];
const relatedError = arrayValidationError.entries.find(entry => entry.index === index);
if (relatedError) {
errorObject[unprefixedKey] = relatedError.errorData;
}
}
});
return Object.keys(errorObject).length ? errorObject : null;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExtractArrayValidationErrorsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ExtractArrayValidationErrorsPipe, name: "extractArrayValidationErrors" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExtractArrayValidationErrorsPipe, decorators: [{
type: Pipe,
args: [{
name: 'extractArrayValidationErrors'
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1hcnJheS12YWxpZGF0aW9uLWVycm9ycy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9mb3Jtcy9leHRyYWN0LWFycmF5LXZhbGlkYXRpb24tZXJyb3JzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBSXBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDRztBQUtILE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0MsU0FBUyxDQUNQLGdCQUFpRSxFQUNqRSxLQUFhO1FBRWIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDO2dCQUN4RCxNQUFNLG9CQUFvQixHQUE4QixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUUsTUFBTSxZQUFZLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQ3ZGLElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUQsQ0FBQzsrR0FyQlUsZ0NBQWdDOzZHQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBSDVDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLDhCQUE4QjtpQkFDckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXJyYXlWYWxpZGF0aW9uRXJyb3JzLCBBcnJheVZhbGlkYXRpb25FcnJvclZhbHVlIH0gZnJvbSAnLi92YWxpZGF0ZS1hcnJheS1lbGVtZW50cyc7XG5cbi8qKlxuICogVGhpcyBwaXBlIHNob3VsZCBiZSB1c2VkIGluIHBhaXIgd2l0aCB2YWxpZGF0ZUFycmF5RWxlbWVudHMgZnVuY3Rpb24gLSBpdCBhbGxvd3MgdG8gZGlzdHJpYnV0ZVxuICogZXJyb3JzIGZvciBlYWNoIHBvc2l0aW9uIGluIGFycmF5LCBmcm9tIHRoZSBvYmplY3QgcHJlcGFyZWQgYnkgdmFsaWRhdGVBcnJheUVsZW1lbnRzLlxuICpcbiAqIGBgYHRzXG4gKiBlcnJvcnMgPSB7XG4gKiAgXCJJTk5FUl9BUlJBWV9FUlJPUl9taW5sZW5ndGhcIjoge1xuICogICAgaXNBcnJheUVycm9yOiB0cnVlLFxuICogICAgb3JpZ2luYWxLZXk6IFwibWlubGVuZ3RoXCIsXG4gKiAgICBlbnRyaWVzOiBbXG4gKiAgICAgIHtcbiAqICAgICAgICBpbmRleDogMCxcbiAqICAgICAgICBlcnJvckRhdGE6IHtcbiAqICAgICAgICByZXF1aXJlZExlbmd0aDogNSxcbiAqICAgICAgICBhY3R1YWxMZW5ndGg6IDRcbiAqICAgICAgICB9XG4gKiAgICAgIH0sXG4gKiAgICAgIHtcbiAqICAgICAgICBpbmRleDogMixcbiAqICAgICAgICBlcnJvckRhdGE6IHtcbiAqICAgICAgICAgIHJlcXVpcmVkTGVuZ3RoOiA1LFxuICogICAgICAgICAgYWN0dWFsTGVuZ3RoOiAzXG4gKiAgICAgICAgfVxuICogICAgICB9LFxuICogICAgXVxuICogIH0sXG4gKiAgXCJtaW5sZW5ndGhcIjoge1xuICogICAgcmVxdWlyZWRMZW5ndGg6IDUsXG4gKiAgICBhY3R1YWxMZW5ndGg6IDNcbiAqICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBgYGBodG1sXG4gKiA8c21hbGwgKm5nRm9yPVwibGV0IGVycm9yIG9mIGVycm9ycyB8IGV4dHJhY3RBcnJheVZhbGlkYXRpb25FcnJvcnM6aW5kZXggfCBrZXl2YWx1ZVwiPlxuICogIHt7IGVycm9yLmtleSB8IGh1bWFuaXplVmFsaWRhdGlvbk1lc3NhZ2UgfCB0cmFuc2xhdGU6IGVycm9yLnZhbHVlIH19XG4gKiA8L3NtYWxsPlxuICogYGBgXG4gKlxuICogQWJvdmUgY29kZSByZW5kZXJzIG9ubHkgdGhlc2UgZXJyb3IgbWVzc2FnZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIGJ5IEFycmF5IGVudHJpZXMuXG4gKlxuICovXG5cbkBQaXBlKHtcbiAgbmFtZTogJ2V4dHJhY3RBcnJheVZhbGlkYXRpb25FcnJvcnMnXG59KVxuZXhwb3J0IGNsYXNzIEV4dHJhY3RBcnJheVZhbGlkYXRpb25FcnJvcnNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShcbiAgICB2YWxpZGF0aW9uRXJyb3JzOiBBcnJheVZhbGlkYXRpb25FcnJvcnMgfCBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCxcbiAgICBpbmRleDogbnVtYmVyXG4gICk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoIXZhbGlkYXRpb25FcnJvcnMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yT2JqZWN0ID0ge307XG4gICAgT2JqZWN0LmtleXModmFsaWRhdGlvbkVycm9ycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKHZhbGlkYXRpb25FcnJvcnNba2V5XS5pc0FycmF5RXJyb3IpIHtcbiAgICAgICAgY29uc3QgdW5wcmVmaXhlZEtleSA9IHZhbGlkYXRpb25FcnJvcnNba2V5XS5vcmlnaW5hbEtleTtcbiAgICAgICAgY29uc3QgYXJyYXlWYWxpZGF0aW9uRXJyb3I6IEFycmF5VmFsaWRhdGlvbkVycm9yVmFsdWUgPSB2YWxpZGF0aW9uRXJyb3JzW2tleV07XG4gICAgICAgIGNvbnN0IHJlbGF0ZWRFcnJvciA9IGFycmF5VmFsaWRhdGlvbkVycm9yLmVudHJpZXMuZmluZChlbnRyeSA9PiBlbnRyeS5pbmRleCA9PT0gaW5kZXgpO1xuICAgICAgICBpZiAocmVsYXRlZEVycm9yKSB7XG4gICAgICAgICAgZXJyb3JPYmplY3RbdW5wcmVmaXhlZEtleV0gPSByZWxhdGVkRXJyb3IuZXJyb3JEYXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycm9yT2JqZWN0KS5sZW5ndGggPyBlcnJvck9iamVjdCA6IG51bGw7XG4gIH1cbn1cbiJdfQ==