@fagon/ngx-intellitoolx 16.0.1
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/LICENSE +5 -0
- package/README.md +959 -0
- package/esm2022/fagon-ngx-intellitoolx.mjs +5 -0
- package/esm2022/lib/directives/required-marker/required-marker.config.mjs +2 -0
- package/esm2022/lib/directives/required-marker/required-marker.defaults.mjs +9 -0
- package/esm2022/lib/directives/required-marker/required-marker.directive.mjs +79 -0
- package/esm2022/lib/directives/required-marker/required-marker.token.mjs +3 -0
- package/esm2022/lib/form-errors/form-errors.component.mjs +110 -0
- package/esm2022/lib/form-update/confirm-handler.type.mjs +2 -0
- package/esm2022/lib/form-update/form-update-message-config.interface.mjs +2 -0
- package/esm2022/lib/form-update/form-update-message.component.mjs +53 -0
- package/esm2022/lib/form-update/unsaved-changes.guard.mjs +19 -0
- package/esm2022/lib/form-validators/index.mjs +6 -0
- package/esm2022/lib/form-validators/max-amount.validator.mjs +18 -0
- package/esm2022/lib/form-validators/max-words.validator.mjs +11 -0
- package/esm2022/lib/form-validators/min-amount.validator.mjs +18 -0
- package/esm2022/lib/form-validators/password-mismatch.validator.mjs +16 -0
- package/esm2022/lib/form-validators/unique-email.validators.mjs +40 -0
- package/esm2022/lib/helpers/intellitoolx.helper.mjs +156 -0
- package/esm2022/lib/ngx-intellitoolx.component.mjs +11 -0
- package/esm2022/lib/ngx-intellitoolx.module.mjs +17 -0
- package/esm2022/lib/pipes/json-parse.pipe.mjs +18 -0
- package/esm2022/lib/regex/regex.utils.mjs +7 -0
- package/esm2022/public-api.mjs +27 -0
- package/fesm2022/fagon-ngx-intellitoolx.mjs +576 -0
- package/fesm2022/fagon-ngx-intellitoolx.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/directives/required-marker/required-marker.config.d.ts +9 -0
- package/lib/directives/required-marker/required-marker.defaults.d.ts +2 -0
- package/lib/directives/required-marker/required-marker.directive.d.ts +17 -0
- package/lib/directives/required-marker/required-marker.token.d.ts +3 -0
- package/lib/form-errors/form-errors.component.d.ts +29 -0
- package/lib/form-update/confirm-handler.type.d.ts +1 -0
- package/lib/form-update/form-update-message-config.interface.d.ts +11 -0
- package/lib/form-update/form-update-message.component.d.ts +14 -0
- package/lib/form-update/unsaved-changes.guard.d.ts +11 -0
- package/lib/form-validators/index.d.ts +5 -0
- package/lib/form-validators/max-amount.validator.d.ts +2 -0
- package/lib/form-validators/max-words.validator.d.ts +2 -0
- package/lib/form-validators/min-amount.validator.d.ts +2 -0
- package/lib/form-validators/password-mismatch.validator.d.ts +2 -0
- package/lib/form-validators/unique-email.validators.d.ts +2 -0
- package/lib/helpers/intellitoolx.helper.d.ts +16 -0
- package/lib/ngx-intellitoolx.component.d.ts +5 -0
- package/lib/ngx-intellitoolx.module.d.ts +7 -0
- package/lib/pipes/json-parse.pipe.d.ts +7 -0
- package/lib/regex/regex.utils.d.ts +6 -0
- package/package.json +29 -0
- package/public-api.d.ts +14 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFnb24tbmd4LWludGVsbGl0b29seC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWdvbi1uZ3gtaW50ZWxsaXRvb2x4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtbWFya2VyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGlyZWN0aXZlcy9yZXF1aXJlZC1tYXJrZXIvcmVxdWlyZWQtbWFya2VyLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBSZXF1aXJlZE1hcmtlckNvbmZpZyB7XG4gIHNpZ24/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBwb3NpdGlvbj86ICdiZWZvcmUnIHwgJ2FmdGVyJztcbiAgc3BhY2luZz86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaG93SWZPcHRpb25hbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVkUmVxdWlyZWRNYXJrZXJDb25maWcgPSBSZXF1aXJlZDxSZXF1aXJlZE1hcmtlckNvbmZpZz47XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const DEFAULT_REQUIRED_MARKER_CONFIG = {
|
|
2
|
+
sign: '*',
|
|
3
|
+
color: 'red',
|
|
4
|
+
position: 'after',
|
|
5
|
+
spacing: '2px',
|
|
6
|
+
className: '',
|
|
7
|
+
showIfOptional: false,
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtbWFya2VyLmRlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kaXJlY3RpdmVzL3JlcXVpcmVkLW1hcmtlci9yZXF1aXJlZC1tYXJrZXIuZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQWlDO0lBQzFFLElBQUksRUFBRSxHQUFHO0lBQ1QsS0FBSyxFQUFFLEtBQUs7SUFDWixRQUFRLEVBQUUsT0FBTztJQUNqQixPQUFPLEVBQUUsS0FBSztJQUNkLFNBQVMsRUFBRSxFQUFFO0lBQ2IsY0FBYyxFQUFFLEtBQUs7Q0FDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc29sdmVkUmVxdWlyZWRNYXJrZXJDb25maWcgfSBmcm9tICcuL3JlcXVpcmVkLW1hcmtlci5jb25maWcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9SRVFVSVJFRF9NQVJLRVJfQ09ORklHOiBSZXNvbHZlZFJlcXVpcmVkTWFya2VyQ29uZmlnID0ge1xuICBzaWduOiAnKicsXG4gIGNvbG9yOiAncmVkJyxcbiAgcG9zaXRpb246ICdhZnRlcicsXG4gIHNwYWNpbmc6ICcycHgnLFxuICBjbGFzc05hbWU6ICcnLFxuICBzaG93SWZPcHRpb25hbDogZmFsc2UsXG59O1xuIl19
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Directive, inject, } from '@angular/core';
|
|
2
|
+
import { Validators, } from '@angular/forms';
|
|
3
|
+
import { merge } from 'rxjs';
|
|
4
|
+
import { REQUIRED_MARKER_GLOBAL_CONFIG } from './required-marker.token';
|
|
5
|
+
import { DEFAULT_REQUIRED_MARKER_CONFIG } from './required-marker.defaults';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/forms";
|
|
8
|
+
export class RequiredMarkerDirective {
|
|
9
|
+
constructor(el, renderer, parentForm) {
|
|
10
|
+
this.el = el;
|
|
11
|
+
this.renderer = renderer;
|
|
12
|
+
this.parentForm = parentForm;
|
|
13
|
+
this.globalConfig = inject(REQUIRED_MARKER_GLOBAL_CONFIG, {
|
|
14
|
+
optional: true,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
resolveConfig() {
|
|
18
|
+
return {
|
|
19
|
+
...DEFAULT_REQUIRED_MARKER_CONFIG,
|
|
20
|
+
...this.globalConfig,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
ngAfterViewInit() {
|
|
24
|
+
const label = this.el.nativeElement;
|
|
25
|
+
const controlId = label.getAttribute('for');
|
|
26
|
+
if (!controlId)
|
|
27
|
+
return;
|
|
28
|
+
const control = this.parentForm.form.get(controlId);
|
|
29
|
+
if (!control)
|
|
30
|
+
return;
|
|
31
|
+
this.updateLabel(label, control);
|
|
32
|
+
this.subscription = merge(control.valueChanges, control.statusChanges).subscribe(() => this.updateLabel(label, control));
|
|
33
|
+
}
|
|
34
|
+
updateLabel(label, control) {
|
|
35
|
+
const config = this.resolveConfig();
|
|
36
|
+
const isRequired = control.hasValidator?.(Validators.required);
|
|
37
|
+
const original = label.getAttribute('data-original') || label.textContent || '';
|
|
38
|
+
if (!label.getAttribute('data-original')) {
|
|
39
|
+
label.setAttribute('data-original', original.trim());
|
|
40
|
+
}
|
|
41
|
+
const match = original.match(/^([^\(]+)(.*)$/);
|
|
42
|
+
const mainText = match ? match[1].trim() : original;
|
|
43
|
+
const extraText = match ? match[2] : '';
|
|
44
|
+
this.renderer.setProperty(label, 'textContent', '');
|
|
45
|
+
const main = this.renderer.createText(mainText);
|
|
46
|
+
const marker = this.renderer.createElement('span');
|
|
47
|
+
this.renderer.setStyle(marker, 'color', config.color);
|
|
48
|
+
this.renderer.setStyle(marker, 'margin-left', config.spacing);
|
|
49
|
+
this.renderer.appendChild(marker, this.renderer.createText(config.sign));
|
|
50
|
+
if (isRequired) {
|
|
51
|
+
if (config.position === 'before') {
|
|
52
|
+
this.renderer.appendChild(label, marker);
|
|
53
|
+
this.renderer.appendChild(label, main);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.renderer.appendChild(label, main);
|
|
57
|
+
this.renderer.appendChild(label, marker);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.renderer.appendChild(label, main);
|
|
62
|
+
}
|
|
63
|
+
const extra = this.renderer.createText(extraText);
|
|
64
|
+
this.renderer.appendChild(label, extra);
|
|
65
|
+
}
|
|
66
|
+
ngOnDestroy() {
|
|
67
|
+
this.subscription?.unsubscribe();
|
|
68
|
+
}
|
|
69
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RequiredMarkerDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
70
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RequiredMarkerDirective, isStandalone: true, selector: "label[itxRequired]", ngImport: i0 }); }
|
|
71
|
+
}
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RequiredMarkerDirective, decorators: [{
|
|
73
|
+
type: Directive,
|
|
74
|
+
args: [{
|
|
75
|
+
selector: 'label[itxRequired]',
|
|
76
|
+
standalone: true,
|
|
77
|
+
}]
|
|
78
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.FormGroupDirective }]; } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtbWFya2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGlyZWN0aXZlcy9yZXF1aXJlZC1tYXJrZXIvcmVxdWlyZWQtbWFya2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUtULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFHM0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQU01RSxNQUFNLE9BQU8sdUJBQXVCO0lBT2xDLFlBQ1UsRUFBZ0MsRUFDaEMsUUFBbUIsRUFDbkIsVUFBOEI7UUFGOUIsT0FBRSxHQUFGLEVBQUUsQ0FBOEI7UUFDaEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQVBoQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRTtZQUMzRCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztJQU1BLENBQUM7SUFFSSxhQUFhO1FBQ25CLE9BQU87WUFDTCxHQUFHLDhCQUE4QjtZQUNqQyxHQUFHLElBQUksQ0FBQyxZQUFZO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRXZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQ3ZCLE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLE9BQU8sQ0FBQyxhQUFhLENBQ3RCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUF1QixFQUFFLE9BQXdCO1FBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sUUFBUSxHQUNaLEtBQUssQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFFakUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDeEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDdEQ7UUFFRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNwRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXpFLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDeEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDMUM7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOytHQS9FVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25EZXN0cm95LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICBBYnN0cmFjdENvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUmVzb2x2ZWRSZXF1aXJlZE1hcmtlckNvbmZpZyB9IGZyb20gJy4vcmVxdWlyZWQtbWFya2VyLmNvbmZpZyc7XG5pbXBvcnQgeyBSRVFVSVJFRF9NQVJLRVJfR0xPQkFMX0NPTkZJRyB9IGZyb20gJy4vcmVxdWlyZWQtbWFya2VyLnRva2VuJztcbmltcG9ydCB7IERFRkFVTFRfUkVRVUlSRURfTUFSS0VSX0NPTkZJRyB9IGZyb20gJy4vcmVxdWlyZWQtbWFya2VyLmRlZmF1bHRzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbGFiZWxbaXR4UmVxdWlyZWRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUmVxdWlyZWRNYXJrZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIGdsb2JhbENvbmZpZyA9IGluamVjdChSRVFVSVJFRF9NQVJLRVJfR0xPQkFMX0NPTkZJRywge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmPEhUTUxMYWJlbEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHBhcmVudEZvcm06IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgKSB7fVxuXG4gIHByaXZhdGUgcmVzb2x2ZUNvbmZpZygpOiBSZXNvbHZlZFJlcXVpcmVkTWFya2VyQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uREVGQVVMVF9SRVFVSVJFRF9NQVJLRVJfQ09ORklHLFxuICAgICAgLi4udGhpcy5nbG9iYWxDb25maWcsXG4gICAgfTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBsYWJlbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBjb250cm9sSWQgPSBsYWJlbC5nZXRBdHRyaWJ1dGUoJ2ZvcicpO1xuICAgIGlmICghY29udHJvbElkKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5wYXJlbnRGb3JtLmZvcm0uZ2V0KGNvbnRyb2xJZCk7XG4gICAgaWYgKCFjb250cm9sKSByZXR1cm47XG5cbiAgICB0aGlzLnVwZGF0ZUxhYmVsKGxhYmVsLCBjb250cm9sKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbWVyZ2UoXG4gICAgICBjb250cm9sLnZhbHVlQ2hhbmdlcyxcbiAgICAgIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcyxcbiAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUxhYmVsKGxhYmVsLCBjb250cm9sKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUxhYmVsKGxhYmVsOiBIVE1MTGFiZWxFbGVtZW50LCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLnJlc29sdmVDb25maWcoKTtcbiAgICBjb25zdCBpc1JlcXVpcmVkID0gY29udHJvbC5oYXNWYWxpZGF0b3I/LihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcblxuICAgIGNvbnN0IG9yaWdpbmFsID1cbiAgICAgIGxhYmVsLmdldEF0dHJpYnV0ZSgnZGF0YS1vcmlnaW5hbCcpIHx8IGxhYmVsLnRleHRDb250ZW50IHx8ICcnO1xuXG4gICAgaWYgKCFsYWJlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtb3JpZ2luYWwnKSkge1xuICAgICAgbGFiZWwuc2V0QXR0cmlidXRlKCdkYXRhLW9yaWdpbmFsJywgb3JpZ2luYWwudHJpbSgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaCA9IG9yaWdpbmFsLm1hdGNoKC9eKFteXFwoXSspKC4qKSQvKTtcbiAgICBjb25zdCBtYWluVGV4dCA9IG1hdGNoID8gbWF0Y2hbMV0udHJpbSgpIDogb3JpZ2luYWw7XG4gICAgY29uc3QgZXh0cmFUZXh0ID0gbWF0Y2ggPyBtYXRjaFsyXSA6ICcnO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShsYWJlbCwgJ3RleHRDb250ZW50JywgJycpO1xuXG4gICAgY29uc3QgbWFpbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChtYWluVGV4dCk7XG5cbiAgICBjb25zdCBtYXJrZXIgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKG1hcmtlciwgJ2NvbG9yJywgY29uZmlnLmNvbG9yKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKG1hcmtlciwgJ21hcmdpbi1sZWZ0JywgY29uZmlnLnNwYWNpbmcpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChtYXJrZXIsIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChjb25maWcuc2lnbikpO1xuXG4gICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgIGlmIChjb25maWcucG9zaXRpb24gPT09ICdiZWZvcmUnKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobGFiZWwsIG1hcmtlcik7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobGFiZWwsIG1haW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChsYWJlbCwgbWFpbik7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobGFiZWwsIG1hcmtlcik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobGFiZWwsIG1haW4pO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dHJhID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KGV4dHJhVGV4dCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChsYWJlbCwgZXh0cmEpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const REQUIRED_MARKER_GLOBAL_CONFIG = new InjectionToken('Required Marker Global Config');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtbWFya2VyLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kaXJlY3RpdmVzL3JlcXVpcmVkLW1hcmtlci9yZXF1aXJlZC1tYXJrZXIudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FDeEMsSUFBSSxjQUFjLENBQXVCLCtCQUErQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVxdWlyZWRNYXJrZXJDb25maWcgfSBmcm9tICcuL3JlcXVpcmVkLW1hcmtlci5jb25maWcnO1xuXG5leHBvcnQgY29uc3QgUkVRVUlSRURfTUFSS0VSX0dMT0JBTF9DT05GSUcgPVxuICBuZXcgSW5qZWN0aW9uVG9rZW48UmVxdWlyZWRNYXJrZXJDb25maWc+KCdSZXF1aXJlZCBNYXJrZXIgR2xvYmFsIENvbmZpZycpO1xuIl19
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class IntellitoolxFormErrors {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.control = null;
|
|
8
|
+
this.componentValidation = {};
|
|
9
|
+
this.controlLabel = null;
|
|
10
|
+
this.errorMessages = {
|
|
11
|
+
required: 'This field is required',
|
|
12
|
+
email: 'The email entered is invalid',
|
|
13
|
+
minlength: 'You must enter at least {length} characters',
|
|
14
|
+
maxlength: 'You must not enter more than {length} characters',
|
|
15
|
+
pattern: 'Your entry must match the required pattern',
|
|
16
|
+
passwordMismatch: 'Password and confirm password do not match.',
|
|
17
|
+
futureDate: 'Future date is not allowed.',
|
|
18
|
+
exceededAllowedDateDifference: 'Date difference can only be one month.',
|
|
19
|
+
exceededLeastDateAllowed: 'Start date cannot be greater than end date',
|
|
20
|
+
duplicateEmail: 'Each email must be unique.',
|
|
21
|
+
maxWords: 'Exceeded maximum number of words.',
|
|
22
|
+
maxMonthYear: 'Date is later than allowed.',
|
|
23
|
+
minMonthYear: 'Date is earlier than allowed.',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
getErrorMessage(key, value) {
|
|
27
|
+
if (!this.control)
|
|
28
|
+
return '';
|
|
29
|
+
const customMessage = this.componentValidation?.[key]?.message;
|
|
30
|
+
if (typeof value === 'boolean') {
|
|
31
|
+
return customMessage || this.errorMessages[key] || '';
|
|
32
|
+
}
|
|
33
|
+
if (typeof value === 'string') {
|
|
34
|
+
return customMessage || value;
|
|
35
|
+
}
|
|
36
|
+
if (typeof value === 'object') {
|
|
37
|
+
switch (key) {
|
|
38
|
+
case 'pattern':
|
|
39
|
+
return (customMessage ||
|
|
40
|
+
`Please provide a valid ${this.controlLabel || 'data'}.`);
|
|
41
|
+
case 'min':
|
|
42
|
+
return customMessage
|
|
43
|
+
? customMessage
|
|
44
|
+
: this.controlLabel
|
|
45
|
+
? `${this.controlLabel} cannot be less than ${value.min}.`
|
|
46
|
+
: `Number cannot be less than ${value.min}`;
|
|
47
|
+
case 'max':
|
|
48
|
+
return customMessage
|
|
49
|
+
? customMessage
|
|
50
|
+
: this.controlLabel
|
|
51
|
+
? `${this.controlLabel} cannot be greater than ${value.max}.`
|
|
52
|
+
: `Number cannot be greater than ${value.max}`;
|
|
53
|
+
case 'minlength':
|
|
54
|
+
return (customMessage ||
|
|
55
|
+
this.errorMessages.minlength.replace('{length}', value?.requiredLength || ''));
|
|
56
|
+
case 'maxlength':
|
|
57
|
+
return (customMessage ||
|
|
58
|
+
this.errorMessages.maxlength.replace('{length}', value?.requiredLength || ''));
|
|
59
|
+
case 'customMinValue':
|
|
60
|
+
case 'customMaxValue':
|
|
61
|
+
return customMessage || value?.message || '';
|
|
62
|
+
case 'ngbDate':
|
|
63
|
+
return (customMessage ||
|
|
64
|
+
(this.control.value ? 'Invalid date format provided' : ''));
|
|
65
|
+
case 'passwordMismatch':
|
|
66
|
+
case 'futureDate':
|
|
67
|
+
case 'duplicateEmail':
|
|
68
|
+
case 'maxWords':
|
|
69
|
+
case 'maxMonthYear':
|
|
70
|
+
case 'minMonthYear':
|
|
71
|
+
case 'exceededAllowedDateDifference':
|
|
72
|
+
case 'exceededLeastDateAllowed':
|
|
73
|
+
return customMessage || this.errorMessages[key];
|
|
74
|
+
default:
|
|
75
|
+
return customMessage || '';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return '';
|
|
79
|
+
}
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IntellitoolxFormErrors, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IntellitoolxFormErrors, isStandalone: true, selector: "itx-form-errors", inputs: { control: "control", componentValidation: "componentValidation", controlLabel: "controlLabel" }, ngImport: i0, template: `
|
|
82
|
+
<ng-container *ngIf="control?.touched && control?.invalid">
|
|
83
|
+
<ng-container *ngFor="let error of control?.errors | keyvalue">
|
|
84
|
+
{{ getErrorMessage(error?.key ?? '', error?.value) }}
|
|
85
|
+
</ng-container>
|
|
86
|
+
</ng-container>
|
|
87
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }] }); }
|
|
88
|
+
}
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IntellitoolxFormErrors, decorators: [{
|
|
90
|
+
type: Component,
|
|
91
|
+
args: [{
|
|
92
|
+
selector: 'itx-form-errors',
|
|
93
|
+
standalone: true,
|
|
94
|
+
imports: [CommonModule],
|
|
95
|
+
template: `
|
|
96
|
+
<ng-container *ngIf="control?.touched && control?.invalid">
|
|
97
|
+
<ng-container *ngFor="let error of control?.errors | keyvalue">
|
|
98
|
+
{{ getErrorMessage(error?.key ?? '', error?.value) }}
|
|
99
|
+
</ng-container>
|
|
100
|
+
</ng-container>
|
|
101
|
+
`,
|
|
102
|
+
}]
|
|
103
|
+
}], propDecorators: { control: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], componentValidation: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], controlLabel: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}] } });
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtLWVycm9ycy9mb3JtLWVycm9ycy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFvQ2pELE1BQU0sT0FBTyxzQkFBc0I7SUFabkM7UUFhVyxZQUFPLEdBQ2QsSUFBSSxDQUFDO1FBQ0Usd0JBQW1CLEdBQXdDLEVBQUUsQ0FBQztRQUM5RCxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFFNUMsa0JBQWEsR0FBa0I7WUFDN0IsUUFBUSxFQUFFLHdCQUF3QjtZQUNsQyxLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLFNBQVMsRUFBRSw2Q0FBNkM7WUFDeEQsU0FBUyxFQUFFLGtEQUFrRDtZQUM3RCxPQUFPLEVBQUUsNENBQTRDO1lBQ3JELGdCQUFnQixFQUFFLDZDQUE2QztZQUMvRCxVQUFVLEVBQUUsNkJBQTZCO1lBQ3pDLDZCQUE2QixFQUFFLHdDQUF3QztZQUN2RSx3QkFBd0IsRUFBRSw0Q0FBNEM7WUFDdEUsY0FBYyxFQUFFLDRCQUE0QjtZQUM1QyxRQUFRLEVBQUUsbUNBQW1DO1lBQzdDLFlBQVksRUFBRSw2QkFBNkI7WUFDM0MsWUFBWSxFQUFFLCtCQUErQjtTQUM5QyxDQUFDO0tBMEVIO0lBeEVDLGVBQWUsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUU3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUM7UUFFL0QsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDOUIs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bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNZXNzYWdlcyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgcmVxdWlyZWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgbWlubGVuZ3RoOiBzdHJpbmc7XG4gIG1heGxlbmd0aDogc3RyaW5nO1xuICBwYXR0ZXJuOiBzdHJpbmc7XG4gIHBhc3N3b3JkTWlzbWF0Y2g6IHN0cmluZztcbiAgZnV0dXJlRGF0ZTogc3RyaW5nO1xuICBleGNlZWRlZEFsbG93ZWREYXRlRGlmZmVyZW5jZTogc3RyaW5nO1xuICBleGNlZWRlZExlYXN0RGF0ZUFsbG93ZWQ6IHN0cmluZztcbiAgZHVwbGljYXRlRW1haWw6IHN0cmluZztcbiAgbWF4V29yZHM6IHN0cmluZztcbiAgbWF4TW9udGhZZWFyOiBzdHJpbmc7XG4gIG1pbk1vbnRoWWVhcjogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpdHgtZm9ybS1lcnJvcnMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbD8udG91Y2hlZCAmJiBjb250cm9sPy5pbnZhbGlkXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvciBvZiBjb250cm9sPy5lcnJvcnMgfCBrZXl2YWx1ZVwiPlxuICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoZXJyb3I/LmtleSA/PyAnJywgZXJyb3I/LnZhbHVlKSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEludGVsbGl0b29seEZvcm1FcnJvcnMge1xuICBASW5wdXQoKSBjb250cm9sOiBGb3JtQ29udHJvbCB8IFVudHlwZWRGb3JtQ29udHJvbCB8IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPVxuICAgIG51bGw7XG4gIEBJbnB1dCgpIGNvbXBvbmVudFZhbGlkYXRpb246IFJlY29yZDxzdHJpbmcsIHsgbWVzc2FnZTogc3RyaW5nIH0+ID0ge307XG4gIEBJbnB1dCgpIGNvbnRyb2xMYWJlbDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlcyA9IHtcbiAgICByZXF1aXJlZDogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnLFxuICAgIGVtYWlsOiAnVGhlIGVtYWlsIGVudGVyZWQgaXMgaW52YWxpZCcsXG4gICAgbWlubGVuZ3RoOiAnWW91IG11c3QgZW50ZXIgYXQgbGVhc3Qge2xlbmd0aH0gY2hhcmFjdGVycycsXG4gICAgbWF4bGVuZ3RoOiAnWW91IG11c3Qgbm90IGVudGVyIG1vcmUgdGhhbiB7bGVuZ3RofSBjaGFyYWN0ZXJzJyxcbiAgICBwYXR0ZXJuOiAnWW91ciBlbnRyeSBtdXN0IG1hdGNoIHRoZSByZXF1aXJlZCBwYXR0ZXJuJyxcbiAgICBwYXNzd29yZE1pc21hdGNoOiAnUGFzc3dvcmQgYW5kIGNvbmZpcm0gcGFzc3dvcmQgZG8gbm90IG1hdGNoLicsXG4gICAgZnV0dXJlRGF0ZTogJ0Z1dHVyZSBkYXRlIGlzIG5vdCBhbGxvd2VkLicsXG4gICAgZXhjZWVkZWRBbGxvd2VkRGF0ZURpZmZlcmVuY2U6ICdEYXRlIGRpZmZlcmVuY2UgY2FuIG9ubHkgYmUgb25lIG1vbnRoLicsXG4gICAgZXhjZWVkZWRMZWFzdERhdGVBbGxvd2VkOiAnU3RhcnQgZGF0ZSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIGVuZCBkYXRlJyxcbiAgICBkdXBsaWNhdGVFbWFpbDogJ0VhY2ggZW1haWwgbXVzdCBiZSB1bmlxdWUuJyxcbiAgICBtYXhXb3JkczogJ0V4Y2VlZGVkIG1heGltdW0gbnVtYmVyIG9mIHdvcmRzLicsXG4gICAgbWF4TW9udGhZZWFyOiAnRGF0ZSBpcyBsYXRlciB0aGFuIGFsbG93ZWQuJyxcbiAgICBtaW5Nb250aFllYXI6ICdEYXRlIGlzIGVhcmxpZXIgdGhhbiBhbGxvd2VkLicsXG4gIH07XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgY3VzdG9tTWVzc2FnZSA9IHRoaXMuY29tcG9uZW50VmFsaWRhdGlvbj8uW2tleV0/Lm1lc3NhZ2U7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBjdXN0b21NZXNzYWdlIHx8IHRoaXMuZXJyb3JNZXNzYWdlc1trZXldIHx8ICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gY3VzdG9tTWVzc2FnZSB8fCB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSAncGF0dGVybic6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGN1c3RvbU1lc3NhZ2UgfHxcbiAgICAgICAgICAgIGBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkICR7dGhpcy5jb250cm9sTGFiZWwgfHwgJ2RhdGEnfS5gXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAnbWluJzpcbiAgICAgICAgICByZXR1cm4gY3VzdG9tTWVzc2FnZVxuICAgICAgICAgICAgPyBjdXN0b21NZXNzYWdlXG4gICAgICAgICAgICA6IHRoaXMuY29udHJvbExhYmVsXG4gICAgICAgICAgICAgID8gYCR7dGhpcy5jb250cm9sTGFiZWx9IGNhbm5vdCBiZSBsZXNzIHRoYW4gJHt2YWx1ZS5taW59LmBcbiAgICAgICAgICAgICAgOiBgTnVtYmVyIGNhbm5vdCBiZSBsZXNzIHRoYW4gJHt2YWx1ZS5taW59YDtcbiAgICAgICAgY2FzZSAnbWF4JzpcbiAgICAgICAgICByZXR1cm4gY3VzdG9tTWVzc2FnZVxuICAgICAgICAgICAgPyBjdXN0b21NZXNzYWdlXG4gICAgICAgICAgICA6IHRoaXMuY29udHJvbExhYmVsXG4gICAgICAgICAgICAgID8gYCR7dGhpcy5jb250cm9sTGFiZWx9IGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJHt2YWx1ZS5tYXh9LmBcbiAgICAgICAgICAgICAgOiBgTnVtYmVyIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJHt2YWx1ZS5tYXh9YDtcbiAgICAgICAgY2FzZSAnbWlubGVuZ3RoJzpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY3VzdG9tTWVzc2FnZSB8fFxuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLm1pbmxlbmd0aC5yZXBsYWNlKFxuICAgICAgICAgICAgICAne2xlbmd0aH0nLFxuICAgICAgICAgICAgICB2YWx1ZT8ucmVxdWlyZWRMZW5ndGggfHwgJycsXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAnbWF4bGVuZ3RoJzpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY3VzdG9tTWVzc2FnZSB8fFxuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLm1heGxlbmd0aC5yZXBsYWNlKFxuICAgICAgICAgICAgICAne2xlbmd0aH0nLFxuICAgICAgICAgICAgICB2YWx1ZT8ucmVxdWlyZWRMZW5ndGggfHwgJycsXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAnY3VzdG9tTWluVmFsdWUnOlxuICAgICAgICBjYXNlICdjdXN0b21NYXhWYWx1ZSc6XG4gICAgICAgICAgcmV0dXJuIGN1c3RvbU1lc3NhZ2UgfHwgdmFsdWU/Lm1lc3NhZ2UgfHwgJyc7XG4gICAgICAgIGNhc2UgJ25nYkRhdGUnOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjdXN0b21NZXNzYWdlIHx8XG4gICAgICAgICAgICAodGhpcy5jb250cm9sLnZhbHVlID8gJ0ludmFsaWQgZGF0ZSBmb3JtYXQgcHJvdmlkZWQnIDogJycpXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAncGFzc3dvcmRNaXNtYXRjaCc6XG4gICAgICAgIGNhc2UgJ2Z1dHVyZURhdGUnOlxuICAgICAgICBjYXNlICdkdXBsaWNhdGVFbWFpbCc6XG4gICAgICAgIGNhc2UgJ21heFdvcmRzJzpcbiAgICAgICAgY2FzZSAnbWF4TW9udGhZZWFyJzpcbiAgICAgICAgY2FzZSAnbWluTW9udGhZZWFyJzpcbiAgICAgICAgY2FzZSAnZXhjZWVkZWRBbGxvd2VkRGF0ZURpZmZlcmVuY2UnOlxuICAgICAgICBjYXNlICdleGNlZWRlZExlYXN0RGF0ZUFsbG93ZWQnOlxuICAgICAgICAgIHJldHVybiBjdXN0b21NZXNzYWdlIHx8IHRoaXMuZXJyb3JNZXNzYWdlc1trZXldO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBjdXN0b21NZXNzYWdlIHx8ICcnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1oYW5kbGVyLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdXBkYXRlL2NvbmZpcm0taGFuZGxlci50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDb25maXJtSGFuZGxlciA9ICgpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11cGRhdGUtbWVzc2FnZS1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtLXVwZGF0ZS9mb3JtLXVwZGF0ZS1tZXNzYWdlLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSW50ZWxsaXRvb2x4Rm9ybVVwZGF0ZU1lc3NhZ2VDb25maWcge1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIHRleHRDb2xvcj86IHN0cmluZztcbiAgYm9yZGVyQ29sb3I/OiBzdHJpbmc7XG4gIGZvbnRXZWlnaHQ/OiBudW1iZXI7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbiAgcGFkZGluZz86IHN0cmluZztcbiAgaWNvbkFuZE1lc3NhZ2VHYXA/OiBzdHJpbmc7XG4gIGljb25TaXplPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class IntellitoolxFormUpdateMessage {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.defaultMessage = 'There are no changes to save. Please modify a field to continue.';
|
|
8
|
+
}
|
|
9
|
+
get containerStyles() {
|
|
10
|
+
return {
|
|
11
|
+
padding: this.itxFormUpdateMessageConfig?.padding || '1rem',
|
|
12
|
+
gap: this.itxFormUpdateMessageConfig?.iconAndMessageGap || '0.5rem',
|
|
13
|
+
color: this.itxFormUpdateMessageConfig?.textColor || '#963C00',
|
|
14
|
+
border: '1px solid ' +
|
|
15
|
+
(this.itxFormUpdateMessageConfig?.borderColor || '#f3cd5a'),
|
|
16
|
+
'background-color': this.itxFormUpdateMessageConfig?.backgroundColor || '#fff3cd',
|
|
17
|
+
'font-weight': String(this.itxFormUpdateMessageConfig?.fontWeight || 400),
|
|
18
|
+
'border-radius': this.itxFormUpdateMessageConfig?.borderRadius || '0.5rem',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
get iconStyles() {
|
|
22
|
+
return {
|
|
23
|
+
'font-size': this.itxFormUpdateMessageConfig?.iconSize || '1rem',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IntellitoolxFormUpdateMessage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IntellitoolxFormUpdateMessage, isStandalone: true, selector: "itx-form-update-message", inputs: { itxFormUpdateMessageConfig: "itxFormUpdateMessageConfig" }, ngImport: i0, template: `
|
|
28
|
+
<div class="form-update-message" role="alert" [ngStyle]="containerStyles">
|
|
29
|
+
<span class="form-update-icon" aria-hidden="true" [ngStyle]="iconStyles"
|
|
30
|
+
>⚠</span
|
|
31
|
+
>
|
|
32
|
+
<span>
|
|
33
|
+
{{ itxFormUpdateMessageConfig?.message || defaultMessage }}
|
|
34
|
+
</span>
|
|
35
|
+
</div>
|
|
36
|
+
`, isInline: true, styles: [".form-update-message{display:flex;margin-top:.5rem}.form-update-icon{flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IntellitoolxFormUpdateMessage, decorators: [{
|
|
39
|
+
type: Component,
|
|
40
|
+
args: [{ selector: 'itx-form-update-message', standalone: true, imports: [CommonModule], template: `
|
|
41
|
+
<div class="form-update-message" role="alert" [ngStyle]="containerStyles">
|
|
42
|
+
<span class="form-update-icon" aria-hidden="true" [ngStyle]="iconStyles"
|
|
43
|
+
>⚠</span
|
|
44
|
+
>
|
|
45
|
+
<span>
|
|
46
|
+
{{ itxFormUpdateMessageConfig?.message || defaultMessage }}
|
|
47
|
+
</span>
|
|
48
|
+
</div>
|
|
49
|
+
`, styles: [".form-update-message{display:flex;margin-top:.5rem}.form-update-icon{flex-shrink:0}\n"] }]
|
|
50
|
+
}], propDecorators: { itxFormUpdateMessageConfig: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}] } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11cGRhdGUtbWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdXBkYXRlL2Zvcm0tdXBkYXRlLW1lc3NhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBa0IvQyxNQUFNLE9BQU8sNkJBQTZCO0lBaEIxQztRQWtCRSxtQkFBYyxHQUNaLGtFQUFrRSxDQUFDO0tBdUJ0RTtJQXJCQyxJQUFJLGVBQWU7UUFDakIsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsT0FBTyxJQUFJLE1BQU07WUFDM0QsR0FBRyxFQUFFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxpQkFBaUIsSUFBSSxRQUFRO1lBQ25FLEtBQUssRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsU0FBUyxJQUFJLFNBQVM7WUFDOUQsTUFBTSxFQUNKLFlBQVk7Z0JBQ1osQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxJQUFJLFNBQVMsQ0FBQztZQUM3RCxrQkFBa0IsRUFDaEIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLGVBQWUsSUFBSSxTQUFTO1lBQy9ELGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLFVBQVUsSUFBSSxHQUFHLENBQUM7WUFDekUsZUFBZSxFQUNiLElBQUksQ0FBQywwQkFBMEIsRUFBRSxZQUFZLElBQUksUUFBUTtTQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixFQUFFLFFBQVEsSUFBSSxNQUFNO1NBQ2pFLENBQUM7SUFDSixDQUFDOytHQXpCVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qix5SkFYOUI7Ozs7Ozs7OztHQVNULDhKQVhTLFlBQVk7OzRGQWFYLDZCQUE2QjtrQkFoQnpDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUViOzs7Ozs7Ozs7R0FTVDs4QkFHUSwwQkFBMEI7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnRlbGxpdG9vbHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZyB9IGZyb20gJy4vZm9ybS11cGRhdGUtbWVzc2FnZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0eC1mb3JtLXVwZGF0ZS1tZXNzYWdlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tdXBkYXRlLW1lc3NhZ2UuY29tcG9uZW50LmNzcyddLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLXVwZGF0ZS1tZXNzYWdlXCIgcm9sZT1cImFsZXJ0XCIgW25nU3R5bGVdPVwiY29udGFpbmVyU3R5bGVzXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZvcm0tdXBkYXRlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmdTdHlsZV09XCJpY29uU3R5bGVzXCJcbiAgICAgICAgPuKaoDwvc3BhblxuICAgICAgPlxuICAgICAgPHNwYW4+XG4gICAgICAgIHt7IGl0eEZvcm1VcGRhdGVNZXNzYWdlQ29uZmlnPy5tZXNzYWdlIHx8IGRlZmF1bHRNZXNzYWdlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEludGVsbGl0b29seEZvcm1VcGRhdGVNZXNzYWdlIHtcbiAgQElucHV0KCkgaXR4Rm9ybVVwZGF0ZU1lc3NhZ2VDb25maWc/OiBJbnRlbGxpdG9vbHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZztcbiAgZGVmYXVsdE1lc3NhZ2UgPVxuICAgICdUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBzYXZlLiBQbGVhc2UgbW9kaWZ5IGEgZmllbGQgdG8gY29udGludWUuJztcblxuICBnZXQgY29udGFpbmVyU3R5bGVzKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBwYWRkaW5nOiB0aGlzLml0eEZvcm1VcGRhdGVNZXNzYWdlQ29uZmlnPy5wYWRkaW5nIHx8ICcxcmVtJyxcbiAgICAgIGdhcDogdGhpcy5pdHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZz8uaWNvbkFuZE1lc3NhZ2VHYXAgfHwgJzAuNXJlbScsXG4gICAgICBjb2xvcjogdGhpcy5pdHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZz8udGV4dENvbG9yIHx8ICcjOTYzQzAwJyxcbiAgICAgIGJvcmRlcjpcbiAgICAgICAgJzFweCBzb2xpZCAnICtcbiAgICAgICAgKHRoaXMuaXR4Rm9ybVVwZGF0ZU1lc3NhZ2VDb25maWc/LmJvcmRlckNvbG9yIHx8ICcjZjNjZDVhJyksXG4gICAgICAnYmFja2dyb3VuZC1jb2xvcic6XG4gICAgICAgIHRoaXMuaXR4Rm9ybVVwZGF0ZU1lc3NhZ2VDb25maWc/LmJhY2tncm91bmRDb2xvciB8fCAnI2ZmZjNjZCcsXG4gICAgICAnZm9udC13ZWlnaHQnOiBTdHJpbmcodGhpcy5pdHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZz8uZm9udFdlaWdodCB8fCA0MDApLFxuICAgICAgJ2JvcmRlci1yYWRpdXMnOlxuICAgICAgICB0aGlzLml0eEZvcm1VcGRhdGVNZXNzYWdlQ29uZmlnPy5ib3JkZXJSYWRpdXMgfHwgJzAuNXJlbScsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBpY29uU3R5bGVzKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAnZm9udC1zaXplJzogdGhpcy5pdHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZz8uaWNvblNpemUgfHwgJzFyZW0nLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class UnsavedChangesGuard {
|
|
4
|
+
canDeactivate(component) {
|
|
5
|
+
if (!component.hasUnsavedChanges()) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
const message = component.getUnsavedMessage?.() ||
|
|
9
|
+
'You have unsaved changes. Leave without saving?';
|
|
10
|
+
return confirm(message);
|
|
11
|
+
}
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UnsavedChangesGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UnsavedChangesGuard, providedIn: 'root' }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UnsavedChangesGuard, decorators: [{
|
|
16
|
+
type: Injectable,
|
|
17
|
+
args: [{ providedIn: 'root' }]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zYXZlZC1jaGFuZ2VzLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtLXVwZGF0ZS91bnNhdmVkLWNoYW5nZXMuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTM0MsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixhQUFhLENBQUMsU0FBaUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLE9BQU8sR0FDWCxTQUFTLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUMvQixpREFBaUQsQ0FBQztRQUVwRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDOytHQVhVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBDYW5Db21wb25lbnREZWFjdGl2YXRlIHtcbiAgaGFzVW5zYXZlZENoYW5nZXM6ICgpID0+IGJvb2xlYW47XG4gIGdldFVuc2F2ZWRNZXNzYWdlPzogKCkgPT4gc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFVuc2F2ZWRDaGFuZ2VzR3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPENhbkNvbXBvbmVudERlYWN0aXZhdGU+IHtcbiAgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IENhbkNvbXBvbmVudERlYWN0aXZhdGUpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbXBvbmVudC5oYXNVbnNhdmVkQ2hhbmdlcygpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgIGNvbXBvbmVudC5nZXRVbnNhdmVkTWVzc2FnZT8uKCkgfHxcbiAgICAgICdZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMuIExlYXZlIHdpdGhvdXQgc2F2aW5nPyc7XG5cbiAgICByZXR1cm4gY29uZmlybShtZXNzYWdlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './max-amount.validator';
|
|
2
|
+
export * from './max-words.validator';
|
|
3
|
+
export * from './min-amount.validator';
|
|
4
|
+
export * from './password-mismatch.validator';
|
|
5
|
+
export * from './unique-email.validators';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21heC1hbW91bnQudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbWF4LXdvcmRzLnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL21pbi1hbW91bnQudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vcGFzc3dvcmQtbWlzbWF0Y2gudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdW5pcXVlLWVtYWlsLnZhbGlkYXRvcnMnO1xuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function customMaxAmountValidator(maxValue) {
|
|
2
|
+
return (control) => {
|
|
3
|
+
if (control.value !== null && control.value > maxValue) {
|
|
4
|
+
control.setErrors({ exceededMaximumValue: true });
|
|
5
|
+
const maxValueToFloat = maxValue.toFixed(2);
|
|
6
|
+
return {
|
|
7
|
+
customMaxValue: {
|
|
8
|
+
requiredMin: maxValue,
|
|
9
|
+
actual: control.value,
|
|
10
|
+
message: `The value must not exceed ${maxValueToFloat}`,
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
control.setErrors(null);
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LWFtb3VudC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9tYXgtYW1vdW50LnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsd0JBQXdCLENBQUMsUUFBZ0I7SUFDdkQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRTtZQUN0RCxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE9BQU87Z0JBQ0wsY0FBYyxFQUFFO29CQUNkLFdBQVcsRUFBRSxRQUFRO29CQUNyQixNQUFNLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3JCLE9BQU8sRUFBRSw2QkFBNkIsZUFBZSxFQUFFO2lCQUN4RDthQUNGLENBQUM7U0FDSDtRQUVELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tTWF4QW1vdW50VmFsaWRhdG9yKG1heFZhbHVlOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGlmIChjb250cm9sLnZhbHVlICE9PSBudWxsICYmIGNvbnRyb2wudmFsdWUgPiBtYXhWYWx1ZSkge1xuICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyBleGNlZWRlZE1heGltdW1WYWx1ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IG1heFZhbHVlVG9GbG9hdCA9IG1heFZhbHVlLnRvRml4ZWQoMik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXN0b21NYXhWYWx1ZToge1xuICAgICAgICAgIHJlcXVpcmVkTWluOiBtYXhWYWx1ZSxcbiAgICAgICAgICBhY3R1YWw6IGNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgbWVzc2FnZTogYFRoZSB2YWx1ZSBtdXN0IG5vdCBleGNlZWQgJHttYXhWYWx1ZVRvRmxvYXR9YCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function MaxWordsValidator(maxWords) {
|
|
2
|
+
return (control) => {
|
|
3
|
+
if (!control.value)
|
|
4
|
+
return null;
|
|
5
|
+
const wordCount = control.value.trim().split(/\s+/).length;
|
|
6
|
+
return wordCount > maxWords
|
|
7
|
+
? { maxWords: { actual: wordCount, max: maxWords } }
|
|
8
|
+
: null;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LXdvcmRzLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL21heC13b3Jkcy52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFFBQWdCO0lBQ2hELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMzRCxPQUFPLFNBQVMsR0FBRyxRQUFRO1lBQ3pCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gTWF4V29yZHNWYWxpZGF0b3IobWF4V29yZHM6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHdvcmRDb3VudCA9IGNvbnRyb2wudmFsdWUudHJpbSgpLnNwbGl0KC9cXHMrLykubGVuZ3RoO1xuICAgIHJldHVybiB3b3JkQ291bnQgPiBtYXhXb3Jkc1xuICAgICAgPyB7IG1heFdvcmRzOiB7IGFjdHVhbDogd29yZENvdW50LCBtYXg6IG1heFdvcmRzIH0gfVxuICAgICAgOiBudWxsO1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function customMinAmountValidator(minValue) {
|
|
2
|
+
return (control) => {
|
|
3
|
+
if (control.value !== null && control.value < minValue) {
|
|
4
|
+
control.setErrors({ exceededMinimumValue: true });
|
|
5
|
+
const minValueToFloat = minValue.toFixed(2);
|
|
6
|
+
return {
|
|
7
|
+
customMinValue: {
|
|
8
|
+
requiredMin: minValue,
|
|
9
|
+
actual: control.value,
|
|
10
|
+
message: `The value must be at least ${minValueToFloat}`,
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
control.setErrors(null);
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLWFtb3VudC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9taW4tYW1vdW50LnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsd0JBQXdCLENBQUMsUUFBZ0I7SUFDdkQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRTtZQUN0RCxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE9BQU87Z0JBQ0wsY0FBYyxFQUFFO29CQUNkLFdBQVcsRUFBRSxRQUFRO29CQUNyQixNQUFNLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3JCLE9BQU8sRUFBRSw4QkFBOEIsZUFBZSxFQUFFO2lCQUN6RDthQUNGLENBQUM7U0FDSDtRQUVELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tTWluQW1vdW50VmFsaWRhdG9yKG1pblZhbHVlOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGlmIChjb250cm9sLnZhbHVlICE9PSBudWxsICYmIGNvbnRyb2wudmFsdWUgPCBtaW5WYWx1ZSkge1xuICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyBleGNlZWRlZE1pbmltdW1WYWx1ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IG1pblZhbHVlVG9GbG9hdCA9IG1pblZhbHVlLnRvRml4ZWQoMik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXN0b21NaW5WYWx1ZToge1xuICAgICAgICAgIHJlcXVpcmVkTWluOiBtaW5WYWx1ZSxcbiAgICAgICAgICBhY3R1YWw6IGNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgbWVzc2FnZTogYFRoZSB2YWx1ZSBtdXN0IGJlIGF0IGxlYXN0ICR7bWluVmFsdWVUb0Zsb2F0fWAsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function PasswordMismatchValidator(controlName, matchingControlName) {
|
|
2
|
+
return (formGroup) => {
|
|
3
|
+
const control = formGroup.controls[controlName];
|
|
4
|
+
const matchingControl = formGroup.controls[matchingControlName];
|
|
5
|
+
if (matchingControl.errors && !matchingControl.errors['passwordMismatch']) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
if (control.value !== matchingControl.value) {
|
|
9
|
+
matchingControl.setErrors({ passwordMismatch: true });
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
matchingControl.setErrors(null);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtbWlzbWF0Y2gudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvcGFzc3dvcmQtbWlzbWF0Y2gudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsV0FBbUIsRUFDbkIsbUJBQTJCO0lBRTNCLE9BQU8sQ0FBQyxTQUEyQixFQUFFLEVBQUU7UUFDckMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDaEUsSUFBSSxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3pFLE9BQU87U0FDUjtRQUNELElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUMsS0FBSyxFQUFFO1lBQzNDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU07WUFDTCxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBQYXNzd29yZE1pc21hdGNoVmFsaWRhdG9yKFxuICBjb250cm9sTmFtZTogc3RyaW5nLFxuICBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcsXG4pIHtcbiAgcmV0dXJuIChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXTtcbiAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XG4gICAgaWYgKG1hdGNoaW5nQ29udHJvbC5lcnJvcnMgJiYgIW1hdGNoaW5nQ29udHJvbC5lcnJvcnNbJ3Bhc3N3b3JkTWlzbWF0Y2gnXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XG4gICAgICBtYXRjaGluZ0NvbnRyb2wuc2V0RXJyb3JzKHsgcGFzc3dvcmRNaXNtYXRjaDogdHJ1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { FormArray, } from '@angular/forms';
|
|
2
|
+
export function uniqueEmailsValidator() {
|
|
3
|
+
return (formArray) => {
|
|
4
|
+
if (!(formArray instanceof FormArray)) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
const controls = formArray.controls;
|
|
8
|
+
// Collect all email values safely
|
|
9
|
+
const emails = controls.map((control) => {
|
|
10
|
+
const value = control.get('email')?.value;
|
|
11
|
+
return typeof value === 'string' ? value.toLowerCase().trim() : '';
|
|
12
|
+
});
|
|
13
|
+
// Count occurrences
|
|
14
|
+
const emailCounts = {};
|
|
15
|
+
emails.forEach((email) => {
|
|
16
|
+
if (email) {
|
|
17
|
+
emailCounts[email] = (emailCounts[email] || 0) + 1;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
// Update each control's errors
|
|
21
|
+
controls.forEach((control) => {
|
|
22
|
+
const emailControl = control.get('email');
|
|
23
|
+
const email = emailControl?.value?.toLowerCase()?.trim();
|
|
24
|
+
if (emailControl) {
|
|
25
|
+
const currentErrors = emailControl.errors || {};
|
|
26
|
+
if (email && emailCounts[email] > 1) {
|
|
27
|
+
emailControl.setErrors({ ...currentErrors, duplicateEmail: true });
|
|
28
|
+
}
|
|
29
|
+
else if (currentErrors?.['duplicateEmail']) {
|
|
30
|
+
delete currentErrors['duplicateEmail'];
|
|
31
|
+
const hasOtherErrors = Object.keys(currentErrors)?.length > 0;
|
|
32
|
+
emailControl.setErrors(hasOtherErrors ? currentErrors : null);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const hasDuplicates = Object.values(emailCounts)?.some((count) => count > 1);
|
|
37
|
+
return hasDuplicates ? { duplicateEmails: true } : null;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLWVtYWlsLnZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy91bmlxdWUtZW1haWwudmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsU0FBUyxHQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxPQUFPLENBQUMsU0FBMEIsRUFBMkIsRUFBRTtRQUM3RCxJQUFJLENBQUMsQ0FBQyxTQUFTLFlBQVksU0FBUyxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUF1QixDQUFDO1FBRW5ELGtDQUFrQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBa0IsRUFBRSxFQUFFO1lBQ2pELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQzFDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUVILG9CQUFvQjtRQUNwQixNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUMvQixJQUFJLEtBQUssRUFBRTtnQkFDVCxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCwrQkFBK0I7UUFDL0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQWtCLEVBQUUsRUFBRTtZQUN0QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLE1BQU0sS0FBSyxHQUFHLFlBQVksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFFekQsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO2dCQUVoRCxJQUFJLEtBQUssSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQ3BFO3FCQUFNLElBQUksYUFBYSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtvQkFDNUMsT0FBTyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDdkMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUM5RCxZQUFZLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDL0Q7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLENBQ3BELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUNyQixDQUFDO1FBQ0YsT0FBTyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yRm4sXG4gIEZvcm1BcnJheSxcbiAgRm9ybUdyb3VwLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWVFbWFpbHNWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGZvcm1BcnJheTogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGlmICghKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xzID0gZm9ybUFycmF5LmNvbnRyb2xzIGFzIEZvcm1Hcm91cFtdO1xuXG4gICAgLy8gQ29sbGVjdCBhbGwgZW1haWwgdmFsdWVzIHNhZmVseVxuICAgIGNvbnN0IGVtYWlscyA9IGNvbnRyb2xzLm1hcCgoY29udHJvbDogRm9ybUdyb3VwKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wuZ2V0KCdlbWFpbCcpPy52YWx1ZTtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCkgOiAnJztcbiAgICB9KTtcblxuICAgIC8vIENvdW50IG9jY3VycmVuY2VzXG4gICAgY29uc3QgZW1haWxDb3VudHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgICBlbWFpbHMuZm9yRWFjaCgoZW1haWw6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGVtYWlsKSB7XG4gICAgICAgIGVtYWlsQ291bnRzW2VtYWlsXSA9IChlbWFpbENvdW50c1tlbWFpbF0gfHwgMCkgKyAxO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVXBkYXRlIGVhY2ggY29udHJvbCdzIGVycm9yc1xuICAgIGNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2w6IEZvcm1Hcm91cCkgPT4ge1xuICAgICAgY29uc3QgZW1haWxDb250cm9sID0gY29udHJvbC5nZXQoJ2VtYWlsJyk7XG4gICAgICBjb25zdCBlbWFpbCA9IGVtYWlsQ29udHJvbD8udmFsdWU/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKTtcblxuICAgICAgaWYgKGVtYWlsQ29udHJvbCkge1xuICAgICAgICBjb25zdCBjdXJyZW50RXJyb3JzID0gZW1haWxDb250cm9sLmVycm9ycyB8fCB7fTtcblxuICAgICAgICBpZiAoZW1haWwgJiYgZW1haWxDb3VudHNbZW1haWxdID4gMSkge1xuICAgICAgICAgIGVtYWlsQ29udHJvbC5zZXRFcnJvcnMoeyAuLi5jdXJyZW50RXJyb3JzLCBkdXBsaWNhdGVFbWFpbDogdHJ1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RXJyb3JzPy5bJ2R1cGxpY2F0ZUVtYWlsJ10pIHtcbiAgICAgICAgICBkZWxldGUgY3VycmVudEVycm9yc1snZHVwbGljYXRlRW1haWwnXTtcbiAgICAgICAgICBjb25zdCBoYXNPdGhlckVycm9ycyA9IE9iamVjdC5rZXlzKGN1cnJlbnRFcnJvcnMpPy5sZW5ndGggPiAwO1xuICAgICAgICAgIGVtYWlsQ29udHJvbC5zZXRFcnJvcnMoaGFzT3RoZXJFcnJvcnMgPyBjdXJyZW50RXJyb3JzIDogbnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGhhc0R1cGxpY2F0ZXMgPSBPYmplY3QudmFsdWVzKGVtYWlsQ291bnRzKT8uc29tZShcbiAgICAgIChjb3VudCkgPT4gY291bnQgPiAxLFxuICAgICk7XG4gICAgcmV0dXJuIGhhc0R1cGxpY2F0ZXMgPyB7IGR1cGxpY2F0ZUVtYWlsczogdHJ1ZSB9IDogbnVsbDtcbiAgfTtcbn1cbiJdfQ==
|