chrv-components 0.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/README.md +25 -0
- package/chrv-components-0.0.1.tgz +0 -0
- package/esm2020/chrv-components.mjs +5 -0
- package/esm2020/lib/chr-breadcrumb/breadcrumb.component.mjs +22 -0
- package/esm2020/lib/chr-button/chr-button.component.mjs +46 -0
- package/esm2020/lib/chr-checkbox/chr-checkbox.component.mjs +37 -0
- package/esm2020/lib/chr-components.module.mjs +117 -0
- package/esm2020/lib/chr-delete-modal/chr-delete-modal.component.mjs +22 -0
- package/esm2020/lib/chr-form/chr-form.component.mjs +132 -0
- package/esm2020/lib/chr-form/chr-validators/decimal-validator.mjs +58 -0
- package/esm2020/lib/chr-form/chr-validators/max-date-validator.mjs +54 -0
- package/esm2020/lib/chr-form/chr-validators/type-validator.mjs +52 -0
- package/esm2020/lib/chr-search-select/chr-search-select.component.mjs +136 -0
- package/esm2020/lib/chr-searchbar/chr-searchbar.component.mjs +29 -0
- package/esm2020/lib/chr-separator/chr-separator.component.mjs +11 -0
- package/esm2020/lib/chr-table/chr-table.component.mjs +58 -0
- package/esm2020/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +49 -0
- package/esm2020/public-api.mjs +18 -0
- package/fesm2015/chrv-components.mjs +774 -0
- package/fesm2015/chrv-components.mjs.map +1 -0
- package/fesm2020/chrv-components.mjs +768 -0
- package/fesm2020/chrv-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/chr-breadcrumb/breadcrumb.component.d.ts +15 -0
- package/lib/chr-button/chr-button.component.d.ts +17 -0
- package/lib/chr-checkbox/chr-checkbox.component.d.ts +13 -0
- package/lib/chr-components.module.d.ts +28 -0
- package/lib/chr-delete-modal/chr-delete-modal.component.d.ts +11 -0
- package/lib/chr-form/chr-form.component.d.ts +57 -0
- package/lib/chr-form/chr-validators/decimal-validator.d.ts +10 -0
- package/lib/chr-form/chr-validators/max-date-validator.d.ts +10 -0
- package/lib/chr-form/chr-validators/type-validator.d.ts +10 -0
- package/lib/chr-search-select/chr-search-select.component.d.ts +44 -0
- package/lib/chr-searchbar/chr-searchbar.component.d.ts +14 -0
- package/lib/chr-separator/chr-separator.component.d.ts +5 -0
- package/lib/chr-table/chr-table.component.d.ts +38 -0
- package/lib/chr-table-header-cell/chr-table-header-cell.component.d.ts +16 -0
- package/package.json +31 -0
- package/public-api.d.ts +14 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Directive, Input, Injectable } from '@angular/core';
|
|
2
|
+
import { NG_VALIDATORS, } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class DecimalValidatorDirective {
|
|
5
|
+
validate(control) {
|
|
6
|
+
return this.amount ? decimal(this.amount)(control) : null;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
DecimalValidatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DecimalValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10
|
+
DecimalValidatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: DecimalValidatorDirective, selector: "[app-decimal]", inputs: { amount: "amount" }, providers: [
|
|
11
|
+
{
|
|
12
|
+
provide: NG_VALIDATORS,
|
|
13
|
+
useExisting: DecimalValidatorDirective,
|
|
14
|
+
multi: true,
|
|
15
|
+
},
|
|
16
|
+
], ngImport: i0 });
|
|
17
|
+
DecimalValidatorDirective.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DecimalValidatorDirective, providedIn: 'root' });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DecimalValidatorDirective, decorators: [{
|
|
19
|
+
type: Injectable,
|
|
20
|
+
args: [{ providedIn: 'root' }]
|
|
21
|
+
}, {
|
|
22
|
+
type: Directive,
|
|
23
|
+
args: [{
|
|
24
|
+
selector: '[app-decimal]',
|
|
25
|
+
providers: [
|
|
26
|
+
{
|
|
27
|
+
provide: NG_VALIDATORS,
|
|
28
|
+
useExisting: DecimalValidatorDirective,
|
|
29
|
+
multi: true,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
}]
|
|
33
|
+
}], propDecorators: { amount: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}] } });
|
|
36
|
+
export function decimal(amount) {
|
|
37
|
+
return (control) => {
|
|
38
|
+
const value = control.value;
|
|
39
|
+
if (!value) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
let isTooLong = false;
|
|
43
|
+
const str = `${value}`;
|
|
44
|
+
isTooLong =
|
|
45
|
+
str.indexOf(',') != -1
|
|
46
|
+
? (str.split(',')[1] ? str.split(',')[1].length : 0) > amount
|
|
47
|
+
: str.indexOf('.') != -1
|
|
48
|
+
? (str.split('.')[1] ? str.split('.')[1].length : 0) > amount
|
|
49
|
+
: false;
|
|
50
|
+
return isTooLong
|
|
51
|
+
? {
|
|
52
|
+
decimal: true,
|
|
53
|
+
max: amount,
|
|
54
|
+
}
|
|
55
|
+
: null;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItZm9ybS9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUVMLGFBQWEsR0FJZCxNQUFNLGdCQUFnQixDQUFDOztBQWF4QixNQUFNLE9BQU8seUJBQXlCO0lBR3BDLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RCxDQUFDOzt1SEFMVSx5QkFBeUI7MkdBQXpCLHlCQUF5QixzRUFSekI7UUFDVDtZQUNFLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFdBQVcsRUFBRSx5QkFBeUI7WUFDdEMsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGOzJIQUVVLHlCQUF5QixjQVhaLE1BQU07NEZBV25CLHlCQUF5QjtrQkFYckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsMkJBQTJCOzRCQUN0QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs4QkFFVSxNQUFNO3NCQUFkLEtBQUs7O0FBT1IsTUFBTSxVQUFVLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUN2QixTQUFTO1lBQ1AsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNO2dCQUM3RCxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNO29CQUM3RCxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRVosT0FBTyxTQUFTO1lBQ2QsQ0FBQyxDQUFFO2dCQUNDLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEdBQUcsRUFBRSxNQUFNO2FBQ1M7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIElucHV0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIE5HX1ZBTElEQVRPUlMsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3IsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYXBwLWRlY2ltYWxdJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IERlY2ltYWxWYWxpZGF0b3JEaXJlY3RpdmUsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVjaW1hbFZhbGlkYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XHJcbiAgQElucHV0KCkgYW1vdW50OiBudW1iZXI7XHJcblxyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmFtb3VudCA/IGRlY2ltYWwodGhpcy5hbW91bnQpKGNvbnRyb2wpIDogbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWNpbWFsKGFtb3VudDogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGlzVG9vTG9uZyA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHN0ciA9IGAke3ZhbHVlfWA7XHJcbiAgICBpc1Rvb0xvbmcgPVxyXG4gICAgICBzdHIuaW5kZXhPZignLCcpICE9IC0xXHJcbiAgICAgICAgPyAoc3RyLnNwbGl0KCcsJylbMV0gPyBzdHIuc3BsaXQoJywnKVsxXS5sZW5ndGggOiAwKSA+IGFtb3VudFxyXG4gICAgICAgIDogc3RyLmluZGV4T2YoJy4nKSAhPSAtMVxyXG4gICAgICAgID8gKHN0ci5zcGxpdCgnLicpWzFdID8gc3RyLnNwbGl0KCcuJylbMV0ubGVuZ3RoIDogMCkgPiBhbW91bnRcclxuICAgICAgICA6IGZhbHNlO1xyXG5cclxuICAgIHJldHVybiBpc1Rvb0xvbmdcclxuICAgICAgPyAoe1xyXG4gICAgICAgICAgZGVjaW1hbDogdHJ1ZSxcclxuICAgICAgICAgIG1heDogYW1vdW50LFxyXG4gICAgICAgIH0gYXMgVmFsaWRhdGlvbkVycm9ycylcclxuICAgICAgOiBudWxsO1xyXG4gIH07XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Directive, Input, Injectable } from '@angular/core';
|
|
2
|
+
import { NG_VALIDATORS, } from '@angular/forms';
|
|
3
|
+
import * as moment from 'moment';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class MaxDateValidatorDirective {
|
|
6
|
+
validate(control) {
|
|
7
|
+
return this.date ? maxDate(this.date)(control) : null;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
MaxDateValidatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaxDateValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
11
|
+
MaxDateValidatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: MaxDateValidatorDirective, selector: "[app-max-date]", inputs: { date: "date" }, providers: [
|
|
12
|
+
{
|
|
13
|
+
provide: NG_VALIDATORS,
|
|
14
|
+
useExisting: MaxDateValidatorDirective,
|
|
15
|
+
multi: true,
|
|
16
|
+
},
|
|
17
|
+
], ngImport: i0 });
|
|
18
|
+
MaxDateValidatorDirective.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaxDateValidatorDirective, providedIn: 'root' });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaxDateValidatorDirective, decorators: [{
|
|
20
|
+
type: Injectable,
|
|
21
|
+
args: [{ providedIn: 'root' }]
|
|
22
|
+
}, {
|
|
23
|
+
type: Directive,
|
|
24
|
+
args: [{
|
|
25
|
+
selector: '[app-max-date]',
|
|
26
|
+
providers: [
|
|
27
|
+
{
|
|
28
|
+
provide: NG_VALIDATORS,
|
|
29
|
+
useExisting: MaxDateValidatorDirective,
|
|
30
|
+
multi: true,
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
}]
|
|
34
|
+
}], propDecorators: { date: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}] } });
|
|
37
|
+
export function maxDate(date) {
|
|
38
|
+
return (control) => {
|
|
39
|
+
const value = control.value;
|
|
40
|
+
if (!value) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const maxDate = moment(date);
|
|
44
|
+
const inputDate = moment(value);
|
|
45
|
+
return !(inputDate.isValid() && inputDate.isBefore(maxDate))
|
|
46
|
+
? {
|
|
47
|
+
maxdate: true,
|
|
48
|
+
max: maxDate.toDate(),
|
|
49
|
+
actual: value,
|
|
50
|
+
}
|
|
51
|
+
: null;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LWRhdGUtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLXZhbGlkYXRvcnMvbWF4LWRhdGUtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBRUwsYUFBYSxHQUlkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7O0FBYWpDLE1BQU0sT0FBTyx5QkFBeUI7SUFHcEMsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hELENBQUM7O3VIQUxVLHlCQUF5QjsyR0FBekIseUJBQXlCLG1FQVJ6QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLHlCQUF5QjtZQUN0QyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Y7MkhBRVUseUJBQXlCLGNBWFosTUFBTTs0RkFXbkIseUJBQXlCO2tCQVhyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7a0JBQ2pDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLDJCQUEyQjs0QkFDdEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OEJBRVUsSUFBSTtzQkFBWixLQUFLOztBQU9SLE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBVTtJQUNoQyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRCxDQUFDLENBQUU7Z0JBQ0MsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsR0FBRyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLE1BQU0sRUFBRSxLQUFLO2FBQ087WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIElucHV0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIE5HX1ZBTElEQVRPUlMsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3IsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcC1tYXgtZGF0ZV0nLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VFeGlzdGluZzogTWF4RGF0ZVZhbGlkYXRvckRpcmVjdGl2ZSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXhEYXRlVmFsaWRhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcclxuICBASW5wdXQoKSBkYXRlOiBEYXRlO1xyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlID8gbWF4RGF0ZSh0aGlzLmRhdGUpKGNvbnRyb2wpIDogbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXhEYXRlKGRhdGU6IERhdGUpOiBWYWxpZGF0b3JGbiB7XHJcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1heERhdGUgPSBtb21lbnQoZGF0ZSk7XHJcbiAgICBjb25zdCBpbnB1dERhdGUgPSBtb21lbnQodmFsdWUpO1xyXG5cclxuICAgIHJldHVybiAhKGlucHV0RGF0ZS5pc1ZhbGlkKCkgJiYgaW5wdXREYXRlLmlzQmVmb3JlKG1heERhdGUpKVxyXG4gICAgICA/ICh7XHJcbiAgICAgICAgICBtYXhkYXRlOiB0cnVlLFxyXG4gICAgICAgICAgbWF4OiBtYXhEYXRlLnRvRGF0ZSgpLFxyXG4gICAgICAgICAgYWN0dWFsOiB2YWx1ZSxcclxuICAgICAgICB9IGFzIFZhbGlkYXRpb25FcnJvcnMpXHJcbiAgICAgIDogbnVsbDtcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Directive, Input, Injectable } from '@angular/core';
|
|
2
|
+
import { NG_VALIDATORS, } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TypeValidatorDirective {
|
|
5
|
+
validate(control) {
|
|
6
|
+
return this.type ? type(this.type)(control) : null;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
TypeValidatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TypeValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10
|
+
TypeValidatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TypeValidatorDirective, selector: "[app-type]", inputs: { type: "type" }, providers: [
|
|
11
|
+
{
|
|
12
|
+
provide: NG_VALIDATORS,
|
|
13
|
+
useExisting: TypeValidatorDirective,
|
|
14
|
+
multi: true,
|
|
15
|
+
},
|
|
16
|
+
], ngImport: i0 });
|
|
17
|
+
TypeValidatorDirective.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TypeValidatorDirective, providedIn: 'root' });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TypeValidatorDirective, decorators: [{
|
|
19
|
+
type: Injectable,
|
|
20
|
+
args: [{ providedIn: 'root' }]
|
|
21
|
+
}, {
|
|
22
|
+
type: Directive,
|
|
23
|
+
args: [{
|
|
24
|
+
selector: '[app-type]',
|
|
25
|
+
providers: [
|
|
26
|
+
{
|
|
27
|
+
provide: NG_VALIDATORS,
|
|
28
|
+
useExisting: TypeValidatorDirective,
|
|
29
|
+
multi: true,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
}]
|
|
33
|
+
}], propDecorators: { type: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}] } });
|
|
36
|
+
export function type(type) {
|
|
37
|
+
return (control) => {
|
|
38
|
+
const value = control.value;
|
|
39
|
+
if (!value) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const isType = typeof value == type;
|
|
43
|
+
return !isType
|
|
44
|
+
? {
|
|
45
|
+
type: true,
|
|
46
|
+
requiredType: type,
|
|
47
|
+
actualType: typeof value,
|
|
48
|
+
}
|
|
49
|
+
: null;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItZm9ybS9jaHItdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUVMLGFBQWEsR0FJZCxNQUFNLGdCQUFnQixDQUFDOztBQWF4QixNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRCxDQUFDOztvSEFMVSxzQkFBc0I7d0dBQXRCLHNCQUFzQiwrREFSdEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFdBQVcsRUFBRSxzQkFBc0I7WUFDbkMsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGO3dIQUVVLHNCQUFzQixjQVhULE1BQU07NEZBV25CLHNCQUFzQjtrQkFYbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsd0JBQXdCOzRCQUNuQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs4QkFFVSxJQUFJO3NCQUFaLEtBQUs7O0FBT1IsTUFBTSxVQUFVLElBQUksQ0FBQyxJQUFZO0lBQy9CLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7UUFFcEMsT0FBTyxDQUFDLE1BQU07WUFDWixDQUFDLENBQUU7Z0JBQ0MsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFVBQVUsRUFBRSxPQUFPLEtBQUs7YUFDSjtZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSW5wdXQsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgTkdfVkFMSURBVE9SUyxcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIFZhbGlkYXRvcixcclxuICBWYWxpZGF0b3JGbixcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHAtdHlwZV0nLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VFeGlzdGluZzogVHlwZVZhbGlkYXRvckRpcmVjdGl2ZSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUeXBlVmFsaWRhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcclxuICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XHJcblxyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgPyB0eXBlKHRoaXMudHlwZSkoY29udHJvbCkgOiBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHR5cGUodHlwZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXNUeXBlID0gdHlwZW9mIHZhbHVlID09IHR5cGU7XHJcblxyXG4gICAgcmV0dXJuICFpc1R5cGVcclxuICAgICAgPyAoe1xyXG4gICAgICAgICAgdHlwZTogdHJ1ZSxcclxuICAgICAgICAgIHJlcXVpcmVkVHlwZTogdHlwZSxcclxuICAgICAgICAgIGFjdHVhbFR5cGU6IHR5cGVvZiB2YWx1ZSxcclxuICAgICAgICB9IGFzIFZhbGlkYXRpb25FcnJvcnMpXHJcbiAgICAgIDogbnVsbDtcclxuICB9O1xyXG59XHJcbiJdfQ==
|