@firestitch/form 15.0.0 → 17.0.0
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/app/components/form-dialog-actions/form-dialog-actions.component.d.ts +1 -1
- package/app/components/form-template/form-template.component.d.ts +1 -1
- package/app/components/form-template-outlet/form-template-outlet.component.d.ts +1 -1
- package/app/directives/button.directive.d.ts +1 -1
- package/app/directives/form/form.directive.d.ts +1 -1
- package/app/directives/form-dialog-close.directive.d.ts +1 -1
- package/app/directives/validators/compare.directive.d.ts +1 -1
- package/app/directives/validators/control.directive.d.ts +1 -1
- package/app/directives/validators/daterange.directive.d.ts +1 -1
- package/app/directives/validators/email.directive.d.ts +1 -1
- package/app/directives/validators/emails.directive.d.ts +1 -1
- package/app/directives/validators/function.directive.d.ts +1 -1
- package/app/directives/validators/greater-equal.directive.d.ts +1 -1
- package/app/directives/validators/greater.directive.d.ts +1 -1
- package/app/directives/validators/integer.directive.d.ts +1 -1
- package/app/directives/validators/lesser-equal.directive.d.ts +1 -1
- package/app/directives/validators/lesser.directive.d.ts +1 -1
- package/app/directives/validators/max.directive.d.ts +1 -1
- package/app/directives/validators/maxlength.directive.d.ts +1 -1
- package/app/directives/validators/min.directive.d.ts +1 -1
- package/app/directives/validators/minlength.directive.d.ts +1 -1
- package/app/directives/validators/numeric.directive.d.ts +1 -1
- package/app/directives/validators/pattern.directive.d.ts +1 -1
- package/app/directives/validators/phone.directive.d.ts +1 -1
- package/app/directives/validators/required.directive.d.ts +1 -1
- package/app/directives/validators/url.directive.d.ts +1 -1
- package/app/directives/validators/validate.directive.d.ts +1 -1
- package/app/guards/form-deactivate.guard.d.ts +2 -2
- package/esm2022/app/components/confirm-unsaved/confirm-unsaved.component.mjs +51 -0
- package/esm2022/app/components/form-dialog-actions/form-dialog-actions.component.mjs +79 -0
- package/esm2022/app/components/form-template/form-template.component.mjs +34 -0
- package/{esm2020 → esm2022}/app/components/form-template/index.mjs +1 -1
- package/esm2022/app/components/form-template-outlet/form-template-outlet.component.mjs +32 -0
- package/{esm2020 → esm2022}/app/components/form-template-outlet/index.mjs +1 -1
- package/esm2022/app/directives/button.directive.mjs +172 -0
- package/esm2022/app/directives/form/form.directive.mjs +703 -0
- package/esm2022/app/directives/form-dialog-close.directive.mjs +57 -0
- package/esm2022/app/directives/form-template.directive.mjs +21 -0
- package/{esm2020 → esm2022}/app/directives/submit-button.directive.mjs +4 -4
- package/esm2022/app/directives/validators/compare.directive.mjs +48 -0
- package/esm2022/app/directives/validators/control.directive.mjs +269 -0
- package/esm2022/app/directives/validators/daterange.directive.mjs +42 -0
- package/esm2022/app/directives/validators/email.directive.mjs +42 -0
- package/esm2022/app/directives/validators/emails.directive.mjs +42 -0
- package/esm2022/app/directives/validators/function.directive.mjs +40 -0
- package/esm2022/app/directives/validators/greater-equal.directive.mjs +41 -0
- package/esm2022/app/directives/validators/greater.directive.mjs +41 -0
- package/esm2022/app/directives/validators/integer.directive.mjs +40 -0
- package/esm2022/app/directives/validators/lesser-equal.directive.mjs +41 -0
- package/esm2022/app/directives/validators/lesser.directive.mjs +41 -0
- package/esm2022/app/directives/validators/max.directive.mjs +37 -0
- package/esm2022/app/directives/validators/maxlength.directive.mjs +36 -0
- package/esm2022/app/directives/validators/min.directive.mjs +37 -0
- package/esm2022/app/directives/validators/minlength.directive.mjs +36 -0
- package/esm2022/app/directives/validators/no-fs-validators.directive.mjs +53 -0
- package/esm2022/app/directives/validators/numeric.directive.mjs +42 -0
- package/esm2022/app/directives/validators/pattern.directive.mjs +36 -0
- package/esm2022/app/directives/validators/phone.directive.mjs +42 -0
- package/esm2022/app/directives/validators/required.directive.mjs +66 -0
- package/esm2022/app/directives/validators/url.directive.mjs +43 -0
- package/esm2022/app/directives/validators/validate.directive.mjs +42 -0
- package/esm2022/app/fs-form.module.mjs +209 -0
- package/esm2022/app/guards/form-deactivate.guard.mjs +44 -0
- package/{esm2020 → esm2022}/app/helpers/get-active-route.mjs +1 -1
- package/esm2022/app/helpers/get-form-errors.mjs +25 -0
- package/esm2022/app/services/fsform.service.mjs +94 -0
- package/esm2022/app/validators/validators.mjs +93 -0
- package/{fesm2020 → fesm2022}/firestitch-form.mjs +383 -319
- package/fesm2022/firestitch-form.mjs.map +1 -0
- package/package.json +5 -11
- package/esm2020/app/components/confirm-unsaved/confirm-unsaved.component.mjs +0 -44
- package/esm2020/app/components/form-dialog-actions/form-dialog-actions.component.mjs +0 -75
- package/esm2020/app/components/form-template/form-template.component.mjs +0 -31
- package/esm2020/app/components/form-template-outlet/form-template-outlet.component.mjs +0 -30
- package/esm2020/app/directives/button.directive.mjs +0 -166
- package/esm2020/app/directives/form/form.directive.mjs +0 -689
- package/esm2020/app/directives/form-dialog-close.directive.mjs +0 -54
- package/esm2020/app/directives/form-template.directive.mjs +0 -20
- package/esm2020/app/directives/validators/compare.directive.mjs +0 -47
- package/esm2020/app/directives/validators/control.directive.mjs +0 -258
- package/esm2020/app/directives/validators/daterange.directive.mjs +0 -41
- package/esm2020/app/directives/validators/email.directive.mjs +0 -41
- package/esm2020/app/directives/validators/emails.directive.mjs +0 -41
- package/esm2020/app/directives/validators/function.directive.mjs +0 -41
- package/esm2020/app/directives/validators/greater-equal.directive.mjs +0 -40
- package/esm2020/app/directives/validators/greater.directive.mjs +0 -40
- package/esm2020/app/directives/validators/integer.directive.mjs +0 -39
- package/esm2020/app/directives/validators/lesser-equal.directive.mjs +0 -40
- package/esm2020/app/directives/validators/lesser.directive.mjs +0 -40
- package/esm2020/app/directives/validators/max.directive.mjs +0 -36
- package/esm2020/app/directives/validators/maxlength.directive.mjs +0 -35
- package/esm2020/app/directives/validators/min.directive.mjs +0 -36
- package/esm2020/app/directives/validators/minlength.directive.mjs +0 -35
- package/esm2020/app/directives/validators/no-fs-validators.directive.mjs +0 -53
- package/esm2020/app/directives/validators/numeric.directive.mjs +0 -41
- package/esm2020/app/directives/validators/pattern.directive.mjs +0 -35
- package/esm2020/app/directives/validators/phone.directive.mjs +0 -41
- package/esm2020/app/directives/validators/required.directive.mjs +0 -69
- package/esm2020/app/directives/validators/url.directive.mjs +0 -45
- package/esm2020/app/directives/validators/validate.directive.mjs +0 -43
- package/esm2020/app/fs-form.module.mjs +0 -209
- package/esm2020/app/guards/form-deactivate.guard.mjs +0 -42
- package/esm2020/app/helpers/get-form-errors.mjs +0 -25
- package/esm2020/app/services/fsform.service.mjs +0 -92
- package/esm2020/app/validators/validators.mjs +0 -93
- package/fesm2015/firestitch-form.mjs +0 -2579
- package/fesm2015/firestitch-form.mjs.map +0 -1
- package/fesm2020/firestitch-form.mjs.map +0 -1
- /package/{esm2020 → esm2022}/app/components/confirm-unsaved/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/components/form-dialog-actions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/consts/error-messages.const.mjs +0 -0
- /package/{esm2020 → esm2022}/app/directives/form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/directives/validators/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/confirm-result.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/form-status.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/helpers/confirm-result-continue.mjs +0 -0
- /package/{esm2020 → esm2022}/app/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/helpers/is-enabled.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/async-validator.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/confirm-config.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/confirm-tab-group.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/submit-event.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/submitted-event.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/validator.mjs +0 -0
- /package/{esm2020 → esm2022}/app/providers/validate-messages.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/firestitch-form.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Directive, HostBinding, HostListener, Input, Optional } from '@angular/core';
|
|
2
|
+
import { MatDialogRef } from '@angular/material/dialog';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { filter, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { ConfirmResult } from '../enums/confirm-result';
|
|
6
|
+
import { FsFormDirective } from './form';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./form";
|
|
9
|
+
import * as i2 from "@angular/material/dialog";
|
|
10
|
+
export class FsFormDialogCloseDirective {
|
|
11
|
+
_form;
|
|
12
|
+
_dialogRef;
|
|
13
|
+
closeData;
|
|
14
|
+
type = 'button';
|
|
15
|
+
_destroy$ = new Subject();
|
|
16
|
+
constructor(_form, _dialogRef) {
|
|
17
|
+
this._form = _form;
|
|
18
|
+
this._dialogRef = _dialogRef;
|
|
19
|
+
}
|
|
20
|
+
closeClick() {
|
|
21
|
+
if (this._form) {
|
|
22
|
+
this._form.triggerConfirm()
|
|
23
|
+
.pipe(filter((confirmResult) => (confirmResult !== ConfirmResult.Review)), takeUntil(this._destroy$))
|
|
24
|
+
.subscribe(() => {
|
|
25
|
+
this._dialogRef.close(this.closeData);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this._dialogRef.close(this.closeData);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
ngOnDestroy() {
|
|
33
|
+
this._destroy$.next(null);
|
|
34
|
+
this._destroy$.complete();
|
|
35
|
+
}
|
|
36
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormDialogCloseDirective, deps: [{ token: i1.FsFormDirective, optional: true }, { token: i2.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
37
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsFormDialogCloseDirective, selector: "[fsFormDialogClose],[fs-form-dialog-close]", inputs: { closeData: "closeData" }, host: { listeners: { "click": "closeClick($event.target)" }, properties: { "attr.type": "this.type" } }, ngImport: i0 });
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormDialogCloseDirective, decorators: [{
|
|
40
|
+
type: Directive,
|
|
41
|
+
args: [{
|
|
42
|
+
selector: '[fsFormDialogClose],[fs-form-dialog-close]',
|
|
43
|
+
}]
|
|
44
|
+
}], ctorParameters: () => [{ type: i1.FsFormDirective, decorators: [{
|
|
45
|
+
type: Optional
|
|
46
|
+
}] }, { type: i2.MatDialogRef, decorators: [{
|
|
47
|
+
type: Optional
|
|
48
|
+
}] }], propDecorators: { closeData: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], type: [{
|
|
51
|
+
type: HostBinding,
|
|
52
|
+
args: ['attr.type']
|
|
53
|
+
}], closeClick: [{
|
|
54
|
+
type: HostListener,
|
|
55
|
+
args: ['click', ['$event.target']]
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2ctY2xvc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL2Zvcm0tZGlhbG9nLWNsb3NlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7O0FBTXpDLE1BQU0sT0FBTywwQkFBMEI7SUFTZjtJQUNBO0lBUk4sU0FBUyxDQUFDO0lBRU8sSUFBSSxHQUFHLFFBQVEsQ0FBQztJQUV6QyxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVsQyxZQUNzQixLQUFzQixFQUN0QixVQUE2QjtRQUQ3QixVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtJQUVuRCxDQUFDO0lBR00sVUFBVTtRQUNmLElBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUU7aUJBQ3hCLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxhQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDbEYsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQWpDVSwwQkFBMEI7NEZBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNENBQTRDO2lCQUN2RDs7MEJBVUksUUFBUTs7MEJBQ1IsUUFBUTt5Q0FSSyxTQUFTO3NCQUF4QixLQUFLO2dCQUUyQixJQUFJO3NCQUFwQyxXQUFXO3VCQUFDLFdBQVc7Z0JBV2pCLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29uZmlybVJlc3VsdCB9IGZyb20gJy4uL2VudW1zL2NvbmZpcm0tcmVzdWx0JztcblxuaW1wb3J0IHsgRnNGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtJztcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnNGb3JtRGlhbG9nQ2xvc2VdLFtmcy1mb3JtLWRpYWxvZy1jbG9zZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIGNsb3NlRGF0YTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudHlwZScpIHB1YmxpYyB0eXBlID0gJ2J1dHRvbic7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuIFxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9mb3JtOiBGc0Zvcm1EaXJlY3RpdmUsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8YW55PixcbiAgKSB7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBwdWJsaWMgY2xvc2VDbGljaygpOiB2b2lkIHtcbiAgICBpZih0aGlzLl9mb3JtKSB7XG4gICAgICB0aGlzLl9mb3JtLnRyaWdnZXJDb25maXJtKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChjb25maXJtUmVzdWx0OiBDb25maXJtUmVzdWx0KSA9PiAoY29uZmlybVJlc3VsdCAhPT0gQ29uZmlybVJlc3VsdC5SZXZpZXcpKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh0aGlzLmNsb3NlRGF0YSk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UodGhpcy5jbG9zZURhdGEpO1xuICAgIH1cbiAgfVxuIFxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Directive, QueryList, ViewChildren } from '@angular/core';
|
|
2
|
+
import { NgModel } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class FsFormTemplateDirective {
|
|
5
|
+
constructor() { }
|
|
6
|
+
models;
|
|
7
|
+
ngAfterContentInit() {
|
|
8
|
+
}
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsFormTemplateDirective, selector: "[fsFormTemplate]", viewQueries: [{ propertyName: "models", predicate: NgModel, descendants: true }], ngImport: i0 });
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormTemplateDirective, decorators: [{
|
|
13
|
+
type: Directive,
|
|
14
|
+
args: [{
|
|
15
|
+
selector: '[fsFormTemplate]',
|
|
16
|
+
}]
|
|
17
|
+
}], ctorParameters: () => [], propDecorators: { models: [{
|
|
18
|
+
type: ViewChildren,
|
|
19
|
+
args: [NgModel]
|
|
20
|
+
}] } });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10ZW1wbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvZm9ybS10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQyxTQUFTLEVBQUUsU0FBUyxFQUFlLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBTXpDLE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsZ0JBRUcsQ0FBQztJQUdHLE1BQU0sQ0FBcUI7SUFFM0Isa0JBQWtCO0lBRXpCLENBQUM7d0dBWFUsdUJBQXVCOzRGQUF2Qix1QkFBdUIsbUZBTXBCLE9BQU87OzRGQU5WLHVCQUF1QjtrQkFIbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2lCQUM3Qjt3REFRUSxNQUFNO3NCQURaLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzRm9ybVRlbXBsYXRlXScsXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybVRlbXBsYXRlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAvL3B1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8RnNGb3JtVGVtcGxhdGVEaXJlY3RpdmU+XG4gICkge31cblxuICBAVmlld0NoaWxkcmVuKE5nTW9kZWwpIFxuICBwdWJsaWMgbW9kZWxzOiBRdWVyeUxpc3Q8TmdNb2RlbD47XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcblxuICB9XG59XG4iXX0=
|
|
@@ -2,13 +2,13 @@ import { Directive } from '@angular/core';
|
|
|
2
2
|
import { FsButtonDirective } from './button.directive';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class FsSubmitButtonDirective extends FsButtonDirective {
|
|
5
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsSubmitButtonDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
6
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsSubmitButtonDirective, selector: "dummy-selector", usesInheritance: true, ngImport: i0 });
|
|
5
7
|
}
|
|
6
|
-
|
|
7
|
-
FsSubmitButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsSubmitButtonDirective, selector: "dummy-selector", usesInheritance: true, ngImport: i0 });
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsSubmitButtonDirective, decorators: [{
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsSubmitButtonDirective, decorators: [{
|
|
9
9
|
type: Directive,
|
|
10
10
|
args: [{
|
|
11
11
|
selector: 'dummy-selector',
|
|
12
12
|
}]
|
|
13
13
|
}] });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWJ1dHRvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvc3VibWl0LWJ1dHRvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFNdkQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGlCQUFpQjt3R0FBakQsdUJBQXVCOzRGQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRnNCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL2J1dHRvbi5kaXJlY3RpdmUnO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2R1bW15LXNlbGVjdG9yJyxcbn0pXG5leHBvcnQgY2xhc3MgRnNTdWJtaXRCdXR0b25EaXJlY3RpdmUgZXh0ZW5kcyBGc0J1dHRvbkRpcmVjdGl2ZSB7XG59XG4iXX0=
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';
|
|
3
|
+
import { FsControlDirective } from './control.directive';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class FsFormCompareDirective extends FsControlDirective {
|
|
6
|
+
fsFormCompare;
|
|
7
|
+
set validationMessage(value) {
|
|
8
|
+
this._validateMessages.compare = value;
|
|
9
|
+
}
|
|
10
|
+
ngOnChanges() {
|
|
11
|
+
this._control.updateValueAndValidity();
|
|
12
|
+
}
|
|
13
|
+
validate(control) {
|
|
14
|
+
if (this.fsFormCompare.value === this._elementRef.nativeElement.value) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return { compare: true };
|
|
18
|
+
}
|
|
19
|
+
ngAfterViewInit() {
|
|
20
|
+
this.fsFormCompare.addEventListener('keyup', () => {
|
|
21
|
+
this._control.updateValueAndValidity();
|
|
22
|
+
}, false);
|
|
23
|
+
}
|
|
24
|
+
ngOnDestroy() {
|
|
25
|
+
this.fsFormCompare.removeEventListener('keyup', () => {
|
|
26
|
+
this._control.updateValueAndValidity();
|
|
27
|
+
}, false);
|
|
28
|
+
}
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormCompareDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
30
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsFormCompareDirective, selector: "[fsFormCompare]", inputs: { fsFormCompare: "fsFormCompare", validationMessage: ["fsFormCompareMessage", "validationMessage"] }, providers: [
|
|
31
|
+
VALIDATE_MESSAGE_PROVIDER,
|
|
32
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormCompareDirective, decorators: [{
|
|
35
|
+
type: Directive,
|
|
36
|
+
args: [{
|
|
37
|
+
selector: '[fsFormCompare]',
|
|
38
|
+
providers: [
|
|
39
|
+
VALIDATE_MESSAGE_PROVIDER,
|
|
40
|
+
],
|
|
41
|
+
}]
|
|
42
|
+
}], propDecorators: { fsFormCompare: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], validationMessage: [{
|
|
45
|
+
type: Input,
|
|
46
|
+
args: ['fsFormCompareMessage']
|
|
47
|
+
}] } });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb21wYXJlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBSXRGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVN6RCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsa0JBQWtCO0lBSXJELGFBQWEsQ0FBQztJQUVyQixJQUNXLGlCQUFpQixDQUFDLEtBQWE7UUFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxRQUFRLENBQUMsT0FBd0I7UUFDdEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0RSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBRTNCLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDekMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN6QyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDO3dHQWxDVSxzQkFBc0I7NEZBQXRCLHNCQUFzQix3SkFKdEI7WUFDVCx5QkFBeUI7U0FDMUI7OzRGQUVVLHNCQUFzQjtrQkFObEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixTQUFTLEVBQUU7d0JBQ1QseUJBQXlCO3FCQUMxQjtpQkFDRjs4QkFLUSxhQUFhO3NCQURuQixLQUFLO2dCQUlLLGlCQUFpQjtzQkFEM0IsS0FBSzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGc1ZhbGlkYXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmFsaWRhdG9yJztcbmltcG9ydCB7IFZBTElEQVRFX01FU1NBR0VfUFJPVklERVIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvdmFsaWRhdGUtbWVzc2FnZXMucHJvdmlkZXInO1xuXG5pbXBvcnQgeyBGc0NvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRyb2wuZGlyZWN0aXZlJztcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnNGb3JtQ29tcGFyZV0nLFxuICBwcm92aWRlcnM6IFtcbiAgICBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0Zvcm1Db21wYXJlRGlyZWN0aXZlIGV4dGVuZHMgRnNDb250cm9sRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEZzVmFsaWRhdG9yIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZnNGb3JtQ29tcGFyZTtcblxuICBASW5wdXQoJ2ZzRm9ybUNvbXBhcmVNZXNzYWdlJylcbiAgcHVibGljIHNldCB2YWxpZGF0aW9uTWVzc2FnZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdmFsaWRhdGVNZXNzYWdlcy5jb21wYXJlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICh0aGlzLmZzRm9ybUNvbXBhcmUudmFsdWUgPT09IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuIFxuICAgIHJldHVybiB7IGNvbXBhcmU6IHRydWUgfTtcbiAgICBcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5mc0Zvcm1Db21wYXJlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4ge1xuICAgICAgdGhpcy5fY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSwgZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZnNGb3JtQ29tcGFyZS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHtcbiAgICAgIHRoaXMuX2NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0sIGZhbHNlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { Directive, ElementRef, Inject, Injector, Input, Optional, Renderer2, Self, } from '@angular/core';
|
|
2
|
+
import { NgControl } from '@angular/forms';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { keys, values } from 'lodash-es';
|
|
6
|
+
import { VALIDATE_MESSAGE_PROVIDER, VALIDATE_MESSAGES, } from '../../providers/validate-messages.provider';
|
|
7
|
+
import { FsFormDirective } from '../form/form.directive';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
import * as i2 from "../form/form.directive";
|
|
11
|
+
export class FsControlDirective {
|
|
12
|
+
_elementRef;
|
|
13
|
+
renderer2;
|
|
14
|
+
injector;
|
|
15
|
+
_validateMessages;
|
|
16
|
+
ngControl;
|
|
17
|
+
formDirective;
|
|
18
|
+
wrapperSelector;
|
|
19
|
+
messageSelector;
|
|
20
|
+
hintSelector;
|
|
21
|
+
labelSelector;
|
|
22
|
+
appendMessageClass = 'fs-form-message';
|
|
23
|
+
appendLabelClass = 'fs-form-label';
|
|
24
|
+
appendErrorClass = 'fs-form-error';
|
|
25
|
+
appendHintClass = 'fs-form-hint';
|
|
26
|
+
set validateMessages(messages) {
|
|
27
|
+
this._validateMessages = {
|
|
28
|
+
...this._validateMessages,
|
|
29
|
+
...messages,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
errors = [];
|
|
33
|
+
_control;
|
|
34
|
+
_destroy$ = new Subject();
|
|
35
|
+
constructor(_elementRef, renderer2, injector, _validateMessages, ngControl, formDirective) {
|
|
36
|
+
this._elementRef = _elementRef;
|
|
37
|
+
this.renderer2 = renderer2;
|
|
38
|
+
this.injector = injector;
|
|
39
|
+
this._validateMessages = _validateMessages;
|
|
40
|
+
this.ngControl = ngControl;
|
|
41
|
+
this.formDirective = formDirective;
|
|
42
|
+
if (ngControl) {
|
|
43
|
+
this._control = ngControl.control;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.error('The element does not have a valid ngModel', this._elementRef.nativeElement);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
ngOnInit() {
|
|
50
|
+
this._setupValidators();
|
|
51
|
+
}
|
|
52
|
+
ngOnDestroy() {
|
|
53
|
+
this._destroy$.next(null);
|
|
54
|
+
this._destroy$.complete();
|
|
55
|
+
}
|
|
56
|
+
ngAfterContentInit() {
|
|
57
|
+
this._subscribeToStatusChagnes();
|
|
58
|
+
}
|
|
59
|
+
getMessageSelector() {
|
|
60
|
+
if (this.messageSelector === false) {
|
|
61
|
+
return '';
|
|
62
|
+
}
|
|
63
|
+
if (this.messageSelector) {
|
|
64
|
+
return this.messageSelector;
|
|
65
|
+
}
|
|
66
|
+
else if (this.formDirective?.messageSelector) {
|
|
67
|
+
return this.formDirective.messageSelector;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
getHintWrapperSelector() {
|
|
71
|
+
if (this.hintSelector === false) {
|
|
72
|
+
return '';
|
|
73
|
+
}
|
|
74
|
+
if (this.hintSelector) {
|
|
75
|
+
return this.hintSelector;
|
|
76
|
+
}
|
|
77
|
+
else if (this.formDirective?.hintSelector) {
|
|
78
|
+
return this.formDirective.hintSelector;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
getWrapperSelector() {
|
|
82
|
+
if (this.wrapperSelector === false) {
|
|
83
|
+
return '';
|
|
84
|
+
}
|
|
85
|
+
if (this.wrapperSelector) {
|
|
86
|
+
return this.wrapperSelector;
|
|
87
|
+
}
|
|
88
|
+
else if (this.formDirective?.wrapperSelector) {
|
|
89
|
+
return this.formDirective.wrapperSelector;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
getlabelSelector() {
|
|
93
|
+
if (this.labelSelector === false) {
|
|
94
|
+
return '';
|
|
95
|
+
}
|
|
96
|
+
if (this.labelSelector) {
|
|
97
|
+
return this.labelSelector;
|
|
98
|
+
}
|
|
99
|
+
else if (this.formDirective?.labelSelector) {
|
|
100
|
+
return this.formDirective.labelSelector;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
getWrapperElement() {
|
|
104
|
+
const wrapper = this.getWrapper(this._elementRef.nativeElement);
|
|
105
|
+
if (wrapper) {
|
|
106
|
+
return wrapper;
|
|
107
|
+
}
|
|
108
|
+
return this._elementRef.nativeElement;
|
|
109
|
+
}
|
|
110
|
+
/*
|
|
111
|
+
<mat-form-field class="mat-form-field"> <-- Field Wrapper Class. Look for parents from the native element with the matching wrapperSelector. If not found defaults to native element.
|
|
112
|
+
<input>
|
|
113
|
+
<div class="fs-form-message"> <-- Message Selector. Look for the element with class .fs-form-message or messageSelector
|
|
114
|
+
<div class="fs-form-message"></div>
|
|
115
|
+
<div class="fs-form-hint"></div> <-- Hint Selector. Look for the element with class .fs-form-hint or hintSelector
|
|
116
|
+
</div>
|
|
117
|
+
</mat-form-field>
|
|
118
|
+
*/
|
|
119
|
+
render() {
|
|
120
|
+
if (this.ngControl) {
|
|
121
|
+
const renderer = this.renderer2;
|
|
122
|
+
const wrapper = this.getWrapperElement();
|
|
123
|
+
const error = this.ngControl.dirty ? this.getError(this.ngControl) : null;
|
|
124
|
+
const shouldErrorBeRendered = this.ngControl.invalid
|
|
125
|
+
&& (this.ngControl.dirty || this.formDirective?.ngForm?.submitted);
|
|
126
|
+
if (shouldErrorBeRendered && error) {
|
|
127
|
+
wrapper.classList.add('ng-invalid', 'ng-dirty');
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
wrapper.classList.remove('ng-invalid');
|
|
131
|
+
}
|
|
132
|
+
if (!this.getMessageSelector()) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const messageWrapper = wrapper.querySelector(this.getMessageSelector());
|
|
136
|
+
if (!messageWrapper) {
|
|
137
|
+
return console.warn(`Failed to locate ${this.getMessageSelector()}`, this._elementRef.nativeElement);
|
|
138
|
+
}
|
|
139
|
+
if (this.getlabelSelector()) {
|
|
140
|
+
const labelWrapper = wrapper.querySelector(this.getlabelSelector());
|
|
141
|
+
if (labelWrapper) {
|
|
142
|
+
if (this.appendLabelClass) {
|
|
143
|
+
this.renderer2.addClass(labelWrapper, this.appendLabelClass);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (this.appendMessageClass) {
|
|
148
|
+
renderer.addClass(messageWrapper, this.appendMessageClass);
|
|
149
|
+
}
|
|
150
|
+
if (this.getHintWrapperSelector()) {
|
|
151
|
+
const hint = messageWrapper.querySelector(this.getHintWrapperSelector());
|
|
152
|
+
if (hint) {
|
|
153
|
+
renderer.setStyle(hint, 'display', error ? 'none' : 'block');
|
|
154
|
+
if (this.appendHintClass) {
|
|
155
|
+
renderer.addClass(hint, this.appendHintClass);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
let errorWrapper = wrapper.querySelector('.fs-form-error-target');
|
|
160
|
+
if (errorWrapper) {
|
|
161
|
+
errorWrapper.remove();
|
|
162
|
+
}
|
|
163
|
+
if (!shouldErrorBeRendered || !error) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
errorWrapper = renderer.createElement('div');
|
|
167
|
+
renderer.addClass(errorWrapper, 'fs-form-error-target');
|
|
168
|
+
renderer.addClass(errorWrapper, this.appendErrorClass);
|
|
169
|
+
renderer.addClass(errorWrapper, `${this.appendErrorClass}-${error.name}`);
|
|
170
|
+
const errorText = renderer.createText(error.message);
|
|
171
|
+
renderer.appendChild(errorWrapper, errorText);
|
|
172
|
+
messageWrapper.appendChild(errorWrapper);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
_subscribeToStatusChagnes() {
|
|
176
|
+
if (this._control) {
|
|
177
|
+
this._control.statusChanges
|
|
178
|
+
.pipe(takeUntil(this._destroy$))
|
|
179
|
+
.subscribe(this.render.bind(this));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
getWrapper(node, count = 0) {
|
|
183
|
+
if (!node || count > 10) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
if (node.parentNode && node.parentNode.querySelector(this.getWrapperSelector())) {
|
|
187
|
+
return node;
|
|
188
|
+
}
|
|
189
|
+
return this.getWrapper(node.parentNode, ++count);
|
|
190
|
+
}
|
|
191
|
+
parseErrorMessage(message, args) {
|
|
192
|
+
values(args)
|
|
193
|
+
.forEach((name) => {
|
|
194
|
+
message = message.replace(/\$\(\d\)/, name);
|
|
195
|
+
});
|
|
196
|
+
return message;
|
|
197
|
+
}
|
|
198
|
+
getError(controlRef) {
|
|
199
|
+
const name = keys(controlRef.control.errors)[0];
|
|
200
|
+
if (!name) {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
let message = controlRef.control.errors[name];
|
|
204
|
+
if (this._validateMessages[name]) {
|
|
205
|
+
message = this.parseErrorMessage(this._validateMessages[name], message);
|
|
206
|
+
}
|
|
207
|
+
return { name: name, message: message };
|
|
208
|
+
}
|
|
209
|
+
_setupValidators() {
|
|
210
|
+
const control = this._control;
|
|
211
|
+
if (this.validate) {
|
|
212
|
+
const validators = control.validator
|
|
213
|
+
? [control.validator, this.validate.bind(this)]
|
|
214
|
+
: this.validate.bind(this);
|
|
215
|
+
control.setValidators(validators);
|
|
216
|
+
}
|
|
217
|
+
if (this.validateAsync) {
|
|
218
|
+
const asyncValidators = control.asyncValidator
|
|
219
|
+
? [control.asyncValidator, this.validateAsync.bind(this)]
|
|
220
|
+
: this.validateAsync.bind(this);
|
|
221
|
+
control.setAsyncValidators(asyncValidators);
|
|
222
|
+
}
|
|
223
|
+
control.updateValueAndValidity();
|
|
224
|
+
}
|
|
225
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsControlDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: VALIDATE_MESSAGES, self: true }, { token: i1.NgControl, optional: true }, { token: FsFormDirective, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
226
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsControlDirective, selector: "[fsFormControl]", inputs: { wrapperSelector: "wrapperSelector", messageSelector: "messageSelector", hintSelector: "hintSelector", labelSelector: "labelSelector", appendMessageClass: "appendMessageClass", appendLabelClass: "appendLabelClass", appendErrorClass: "appendErrorClass", appendHintClass: "appendHintClass", validateMessages: "validateMessages" }, providers: [
|
|
227
|
+
VALIDATE_MESSAGE_PROVIDER,
|
|
228
|
+
], ngImport: i0 });
|
|
229
|
+
}
|
|
230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsControlDirective, decorators: [{
|
|
231
|
+
type: Directive,
|
|
232
|
+
args: [{
|
|
233
|
+
selector: '[fsFormControl]',
|
|
234
|
+
providers: [
|
|
235
|
+
VALIDATE_MESSAGE_PROVIDER,
|
|
236
|
+
],
|
|
237
|
+
}]
|
|
238
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: undefined, decorators: [{
|
|
239
|
+
type: Self
|
|
240
|
+
}, {
|
|
241
|
+
type: Inject,
|
|
242
|
+
args: [VALIDATE_MESSAGES]
|
|
243
|
+
}] }, { type: i1.NgControl, decorators: [{
|
|
244
|
+
type: Optional
|
|
245
|
+
}] }, { type: i2.FsFormDirective, decorators: [{
|
|
246
|
+
type: Optional
|
|
247
|
+
}, {
|
|
248
|
+
type: Inject,
|
|
249
|
+
args: [FsFormDirective]
|
|
250
|
+
}] }], propDecorators: { wrapperSelector: [{
|
|
251
|
+
type: Input
|
|
252
|
+
}], messageSelector: [{
|
|
253
|
+
type: Input
|
|
254
|
+
}], hintSelector: [{
|
|
255
|
+
type: Input
|
|
256
|
+
}], labelSelector: [{
|
|
257
|
+
type: Input
|
|
258
|
+
}], appendMessageClass: [{
|
|
259
|
+
type: Input
|
|
260
|
+
}], appendLabelClass: [{
|
|
261
|
+
type: Input
|
|
262
|
+
}], appendErrorClass: [{
|
|
263
|
+
type: Input
|
|
264
|
+
}], appendHintClass: [{
|
|
265
|
+
type: Input
|
|
266
|
+
}], validateMessages: [{
|
|
267
|
+
type: Input
|
|
268
|
+
}] } });
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFHTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGlCQUFpQixHQUNsQixNQUFNLDRDQUE0QyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQWV6RCxNQUFNLE9BQU8sa0JBQWtCO0lBMEJqQjtJQUNBO0lBQ0E7SUFDbUM7SUFDdkI7SUFDeUI7SUE3QmpDLGVBQWUsQ0FBaUI7SUFDaEMsZUFBZSxDQUFpQjtJQUNoQyxZQUFZLENBQWlCO0lBQzdCLGFBQWEsQ0FBaUI7SUFDOUIsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7SUFDdkMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBQ25DLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUNuQyxlQUFlLEdBQUcsY0FBYyxDQUFDO0lBRWpELElBQ1csZ0JBQWdCLENBQUMsUUFBZ0M7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QixHQUFHLFFBQVE7U0FD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RSxpQkFBaUI7b0JBQzNCLFNBQVMsRUFBRTt3QkFDVCx5QkFBeUI7cUJBQzFCO2lCQUNGOzswQkE4QkksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUNoQyxRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7eUNBN0JyQixlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBR0ssZ0JBQWdCO3NCQUQxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG4gIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsga2V5cywgdmFsdWVzIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHtcbiAgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUixcbiAgVkFMSURBVEVfTUVTU0FHRVMsXG59IGZyb20gJy4uLy4uL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlcic7XG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtL2Zvcm0uZGlyZWN0aXZlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEZzQ29udHJvbERpcmVjdGl2ZSB7XG4gIHZhbGlkYXRlPyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbDtcbiAgdmFsaWRhdGVBc3luYz8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPjtcbn1cblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnNGb3JtQ29udHJvbF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NvbnRyb2xEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIHdyYXBwZXJTZWxlY3Rvcjogc3RyaW5nIHwgZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlU2VsZWN0b3I6IHN0cmluZyB8IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaGludFNlbGVjdG9yOiBzdHJpbmcgfCBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxhYmVsU2VsZWN0b3I6IHN0cmluZyB8IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgYXBwZW5kTWVzc2FnZUNsYXNzID0gJ2ZzLWZvcm0tbWVzc2FnZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRMYWJlbENsYXNzID0gJ2ZzLWZvcm0tbGFiZWwnO1xuICBASW5wdXQoKSBwdWJsaWMgYXBwZW5kRXJyb3JDbGFzcyA9ICdmcy1mb3JtLWVycm9yJztcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZEhpbnRDbGFzcyA9ICdmcy1mb3JtLWhpbnQnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGVNZXNzYWdlcyhtZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHRoaXMuX3ZhbGlkYXRlTWVzc2FnZXMgPSB7XG4gICAgICAuLi50aGlzLl92YWxpZGF0ZU1lc3NhZ2VzLFxuICAgICAgLi4ubWVzc2FnZXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvcnMgPSBbXTtcblxuICBwcm90ZWN0ZWQgX2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCByZW5kZXJlcjI6IFJlbmRlcmVyMixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBTZWxmKCkgQEluamVjdChWQUxJREFURV9NRVNTQUdFUykgcHJvdGVjdGVkIF92YWxpZGF0ZU1lc3NhZ2VzLFxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZzRm9ybURpcmVjdGl2ZSkgcHJvdGVjdGVkIGZvcm1EaXJlY3RpdmU6IEZzRm9ybURpcmVjdGl2ZSxcbiAgKSB7XG5cbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICB0aGlzLl9jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSB2YWxpZCBuZ01vZGVsJywgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc2V0dXBWYWxpZGF0b3JzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb1N0YXR1c0NoYWduZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXNzYWdlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlU2VsZWN0b3IgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWVzc2FnZVNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VsZWN0b3I7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybURpcmVjdGl2ZT8ubWVzc2FnZVNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLm1lc3NhZ2VTZWxlY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SGludFdyYXBwZXJTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmhpbnRTZWxlY3RvciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oaW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpbnRTZWxlY3RvcjtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtRGlyZWN0aXZlPy5oaW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1EaXJlY3RpdmUuaGludFNlbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRXcmFwcGVyU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy53cmFwcGVyU2VsZWN0b3IgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud3JhcHBlclNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy53cmFwcGVyU2VsZWN0b3I7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybURpcmVjdGl2ZT8ud3JhcHBlclNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLndyYXBwZXJTZWxlY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0bGFiZWxTZWxlY3RvcigpOiBzdHJpbmcge1xuXG4gICAgaWYgKHRoaXMubGFiZWxTZWxlY3RvciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sYWJlbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYWJlbFNlbGVjdG9yO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm1EaXJlY3RpdmU/LmxhYmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1EaXJlY3RpdmUubGFiZWxTZWxlY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0V3JhcHBlckVsZW1lbnQoKSB7XG5cbiAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5nZXRXcmFwcGVyKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICBpZiAod3JhcHBlcikge1xuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIC8qXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZvcm0tZmllbGRcIj4gIDwtLSBGaWVsZCBXcmFwcGVyIENsYXNzLiBMb29rIGZvciBwYXJlbnRzIGZyb20gdGhlIG5hdGl2ZSBlbGVtZW50IHdpdGggdGhlIG1hdGNoaW5nIHdyYXBwZXJTZWxlY3Rvci4gSWYgbm90IGZvdW5kIGRlZmF1bHRzIHRvIG5hdGl2ZSBlbGVtZW50LlxuICAgICAgPGlucHV0PlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0tbWVzc2FnZVwiPiA8LS0gTWVzc2FnZSBTZWxlY3Rvci4gTG9vayBmb3IgdGhlIGVsZW1lbnQgd2l0aCBjbGFzcyAuZnMtZm9ybS1tZXNzYWdlIG9yIG1lc3NhZ2VTZWxlY3RvclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1tZXNzYWdlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWhpbnRcIj48L2Rpdj4gPC0tIEhpbnQgU2VsZWN0b3IuIExvb2sgZm9yIHRoZSBlbGVtZW50IHdpdGggY2xhc3MgLmZzLWZvcm0taGludCBvciBoaW50U2VsZWN0b3JcbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICovXG4gIHByb3RlY3RlZCByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICBjb25zdCByZW5kZXJlciA9IHRoaXMucmVuZGVyZXIyO1xuICAgICAgY29uc3Qgd3JhcHBlciA9IHRoaXMuZ2V0V3JhcHBlckVsZW1lbnQoKTtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5uZ0NvbnRyb2wuZGlydHkgPyB0aGlzLmdldEVycm9yKHRoaXMubmdDb250cm9sKSA6IG51bGw7XG4gICAgICBjb25zdCBzaG91bGRFcnJvckJlUmVuZGVyZWQgPSB0aGlzLm5nQ29udHJvbC5pbnZhbGlkXG4gICAgICAgICYmICh0aGlzLm5nQ29udHJvbC5kaXJ0eSB8fCB0aGlzLmZvcm1EaXJlY3RpdmU/Lm5nRm9ybT8uc3VibWl0dGVkKTtcblxuICAgICAgaWYgKHNob3VsZEVycm9yQmVSZW5kZXJlZCAmJiBlcnJvcikge1xuICAgICAgICB3cmFwcGVyLmNsYXNzTGlzdC5hZGQoJ25nLWludmFsaWQnLCAnbmctZGlydHknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSgnbmctaW52YWxpZCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuZ2V0TWVzc2FnZVNlbGVjdG9yKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlV3JhcHBlciA9IHdyYXBwZXIucXVlcnlTZWxlY3Rvcih0aGlzLmdldE1lc3NhZ2VTZWxlY3RvcigpKTtcblxuICAgICAgaWYgKCFtZXNzYWdlV3JhcHBlcikge1xuICAgICAgICByZXR1cm4gY29uc29sZS53YXJuKGBGYWlsZWQgdG8gbG9jYXRlICR7ICB0aGlzLmdldE1lc3NhZ2VTZWxlY3RvcigpfWAsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmdldGxhYmVsU2VsZWN0b3IoKSkge1xuICAgICAgICBjb25zdCBsYWJlbFdyYXBwZXIgPSB3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IodGhpcy5nZXRsYWJlbFNlbGVjdG9yKCkpO1xuXG4gICAgICAgIGlmIChsYWJlbFdyYXBwZXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5hcHBlbmRMYWJlbENsYXNzKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5hZGRDbGFzcyhsYWJlbFdyYXBwZXIsIHRoaXMuYXBwZW5kTGFiZWxDbGFzcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmFwcGVuZE1lc3NhZ2VDbGFzcykge1xuICAgICAgICByZW5kZXJlci5hZGRDbGFzcyhtZXNzYWdlV3JhcHBlciwgdGhpcy5hcHBlbmRNZXNzYWdlQ2xhc3MpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5nZXRIaW50V3JhcHBlclNlbGVjdG9yKCkpIHtcbiAgICAgICAgY29uc3QgaGludCA9IG1lc3NhZ2VXcmFwcGVyLnF1ZXJ5U2VsZWN0b3IodGhpcy5nZXRIaW50V3JhcHBlclNlbGVjdG9yKCkpO1xuXG4gICAgICAgIGlmIChoaW50KSB7XG4gICAgICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoaGludCwgJ2Rpc3BsYXknLCBlcnJvciA/ICdub25lJyA6ICdibG9jaycpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuYXBwZW5kSGludENsYXNzKSB7XG4gICAgICAgICAgICByZW5kZXJlci5hZGRDbGFzcyhoaW50LCB0aGlzLmFwcGVuZEhpbnRDbGFzcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCBlcnJvcldyYXBwZXIgPSB3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoJy5mcy1mb3JtLWVycm9yLXRhcmdldCcpO1xuICAgICAgaWYgKGVycm9yV3JhcHBlcikge1xuICAgICAgICBlcnJvcldyYXBwZXIucmVtb3ZlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghc2hvdWxkRXJyb3JCZVJlbmRlcmVkIHx8ICFlcnJvcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGVycm9yV3JhcHBlciA9IHJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoZXJyb3JXcmFwcGVyLCAnZnMtZm9ybS1lcnJvci10YXJnZXQnKTtcbiAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGVycm9yV3JhcHBlciwgdGhpcy5hcHBlbmRFcnJvckNsYXNzKTtcbiAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGVycm9yV3JhcHBlciwgYCR7dGhpcy5hcHBlbmRFcnJvckNsYXNzICB9LSR7ICBlcnJvci5uYW1lfWApO1xuXG4gICAgICBjb25zdCBlcnJvclRleHQgPSByZW5kZXJlci5jcmVhdGVUZXh0KGVycm9yLm1lc3NhZ2UpO1xuXG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZChlcnJvcldyYXBwZXIsIGVycm9yVGV4dCk7XG4gICAgICBtZXNzYWdlV3JhcHBlci5hcHBlbmRDaGlsZChlcnJvcldyYXBwZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfc3Vic2NyaWJlVG9TdGF0dXNDaGFnbmVzKCk6dm9pZCB7XG4gICAgaWYgKHRoaXMuX2NvbnRyb2wpIHtcbiAgICAgIHRoaXMuX2NvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUodGhpcy5yZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuICB9XG5cblxuICBwcm90ZWN0ZWQgZ2V0V3JhcHBlcihub2RlLCBjb3VudCA9IDApIHtcbiAgICBpZiAoIW5vZGUgfHwgY291bnQgPiAxMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUucGFyZW50Tm9kZSAmJiBub2RlLnBhcmVudE5vZGUucXVlcnlTZWxlY3Rvcih0aGlzLmdldFdyYXBwZXJTZWxlY3RvcigpKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0V3JhcHBlcihub2RlLnBhcmVudE5vZGUsICsrY291bnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlRXJyb3JNZXNzYWdlKG1lc3NhZ2UsIGFyZ3MpOiBzdHJpbmcge1xuICAgIHZhbHVlcyhhcmdzKVxuICAgICAgLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXFwkXFwoXFxkXFwpLywgbmFtZSk7XG4gICAgICB9KTtcblxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEVycm9yKGNvbnRyb2xSZWYpOiB7IG5hbWU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0ge1xuXG4gICAgY29uc3QgbmFtZSA9IGtleXMoY29udHJvbFJlZi5jb250cm9sLmVycm9ycylbMF07XG5cbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBtZXNzYWdlID0gY29udHJvbFJlZi5jb250cm9sLmVycm9yc1tuYW1lXTtcblxuICAgIGlmICh0aGlzLl92YWxpZGF0ZU1lc3NhZ2VzW25hbWVdKSB7XG4gICAgICBtZXNzYWdlID0gdGhpcy5wYXJzZUVycm9yTWVzc2FnZSh0aGlzLl92YWxpZGF0ZU1lc3NhZ2VzW25hbWVdLCBtZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBuYW1lOiBuYW1lLCBtZXNzYWdlOiBtZXNzYWdlIH07XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuX2NvbnRyb2w7XG5cbiAgICBpZiAodGhpcy52YWxpZGF0ZSkge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IGNvbnRyb2wudmFsaWRhdG9yXG4gICAgICAgID8gW2NvbnRyb2wudmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlLmJpbmQodGhpcyldXG4gICAgICAgIDogdGhpcy52YWxpZGF0ZS5iaW5kKHRoaXMpO1xuXG4gICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsaWRhdGVBc3luYykge1xuICAgICAgY29uc3QgYXN5bmNWYWxpZGF0b3JzID0gY29udHJvbC5hc3luY1ZhbGlkYXRvclxuICAgICAgICA/IFtjb250cm9sLmFzeW5jVmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlQXN5bmMuYmluZCh0aGlzKV1cbiAgICAgICAgOiB0aGlzLnZhbGlkYXRlQXN5bmMuYmluZCh0aGlzKTtcblxuICAgICAgY29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcbiAgICB9XG5cbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { FsControlDirective } from './control.directive';
|
|
3
|
+
import { FsValidators } from '../../validators/validators';
|
|
4
|
+
import { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';
|
|
5
|
+
import { isEnabled } from '../../helpers/is-enabled';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class FsFormDateRangeDirective extends FsControlDirective {
|
|
8
|
+
fsFormDateRange;
|
|
9
|
+
set validationMessage(value) {
|
|
10
|
+
this._validateMessages.dateRange = value;
|
|
11
|
+
}
|
|
12
|
+
ngOnChanges() {
|
|
13
|
+
this._control.updateValueAndValidity();
|
|
14
|
+
}
|
|
15
|
+
validate(control) {
|
|
16
|
+
if (isEnabled(this.fsFormDateRange)) {
|
|
17
|
+
return FsValidators.dateRange(this._control);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormDateRangeDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
24
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsFormDateRangeDirective, selector: "[fsFormDateRange]", inputs: { fsFormDateRange: "fsFormDateRange", validationMessage: ["fsFormDateRangeMessage", "validationMessage"] }, providers: [
|
|
25
|
+
VALIDATE_MESSAGE_PROVIDER
|
|
26
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormDateRangeDirective, decorators: [{
|
|
29
|
+
type: Directive,
|
|
30
|
+
args: [{
|
|
31
|
+
selector: '[fsFormDateRange]',
|
|
32
|
+
providers: [
|
|
33
|
+
VALIDATE_MESSAGE_PROVIDER
|
|
34
|
+
],
|
|
35
|
+
}]
|
|
36
|
+
}], propDecorators: { fsFormDateRange: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], validationMessage: [{
|
|
39
|
+
type: Input,
|
|
40
|
+
args: ['fsFormDateRangeMessage']
|
|
41
|
+
}] } });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy92YWxpZGF0b3JzL2RhdGVyYW5nZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFTckQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtCQUFrQjtJQUd2RCxlQUFlLENBQUM7SUFFdkIsSUFDVyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sUUFBUSxDQUFDLE9BQXdCO1FBQ3RDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO3dHQXBCVSx3QkFBd0I7NEZBQXhCLHdCQUF3QixnS0FKeEI7WUFDVCx5QkFBeUI7U0FDMUI7OzRGQUVVLHdCQUF3QjtrQkFOcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixTQUFTLEVBQUU7d0JBQ1QseUJBQXlCO3FCQUMxQjtpQkFDRjs4QkFJUSxlQUFlO3NCQURyQixLQUFLO2dCQUlLLGlCQUFpQjtzQkFEM0IsS0FBSzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRnNDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc1ZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlcic7XG5pbXBvcnQgeyBGc1ZhbGlkYXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmFsaWRhdG9yJztcbmltcG9ydCB7IGlzRW5hYmxlZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaXMtZW5hYmxlZCc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzRm9ybURhdGVSYW5nZV0nLFxuICBwcm92aWRlcnM6IFtcbiAgICBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybURhdGVSYW5nZURpcmVjdGl2ZSBleHRlbmRzIEZzQ29udHJvbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgRnNWYWxpZGF0b3Ige1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmc0Zvcm1EYXRlUmFuZ2U7XG5cbiAgQElucHV0KCdmc0Zvcm1EYXRlUmFuZ2VNZXNzYWdlJylcbiAgcHVibGljIHNldCB2YWxpZGF0aW9uTWVzc2FnZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdmFsaWRhdGVNZXNzYWdlcy5kYXRlUmFuZ2UgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKGlzRW5hYmxlZCh0aGlzLmZzRm9ybURhdGVSYW5nZSkpIHtcbiAgICAgIHJldHVybiBGc1ZhbGlkYXRvcnMuZGF0ZVJhbmdlKHRoaXMuX2NvbnRyb2wpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { FsControlDirective } from './control.directive';
|
|
3
|
+
import { FsValidators } from '../../validators/validators';
|
|
4
|
+
import { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';
|
|
5
|
+
import { isEnabled } from '../../helpers/is-enabled';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class FsFormEmailDirective extends FsControlDirective {
|
|
8
|
+
fsFormEmail;
|
|
9
|
+
set validationMessage(value) {
|
|
10
|
+
this._validateMessages.email = value;
|
|
11
|
+
}
|
|
12
|
+
ngOnChanges() {
|
|
13
|
+
this._control.updateValueAndValidity();
|
|
14
|
+
}
|
|
15
|
+
validate(control) {
|
|
16
|
+
if (isEnabled(this.fsFormEmail)) {
|
|
17
|
+
return FsValidators.email(this._control);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormEmailDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
24
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsFormEmailDirective, selector: "[fsFormEmail]", inputs: { fsFormEmail: "fsFormEmail", validationMessage: ["fsFormEmailMessage", "validationMessage"] }, providers: [
|
|
25
|
+
VALIDATE_MESSAGE_PROVIDER
|
|
26
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormEmailDirective, decorators: [{
|
|
29
|
+
type: Directive,
|
|
30
|
+
args: [{
|
|
31
|
+
selector: '[fsFormEmail]',
|
|
32
|
+
providers: [
|
|
33
|
+
VALIDATE_MESSAGE_PROVIDER
|
|
34
|
+
],
|
|
35
|
+
}]
|
|
36
|
+
}], propDecorators: { fsFormEmail: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], validationMessage: [{
|
|
39
|
+
type: Input,
|
|
40
|
+
args: ['fsFormEmailMessage']
|
|
41
|
+
}] } });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvZW1haWwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUV2RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBU3JELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxrQkFBa0I7SUFHbkQsV0FBVyxDQUFDO0lBRW5CLElBQ1csaUJBQWlCLENBQUMsS0FBYTtRQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUF3QjtRQUN0QyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzt3R0FwQlUsb0JBQW9COzRGQUFwQixvQkFBb0IsZ0pBSnBCO1lBQ1QseUJBQXlCO1NBQzFCOzs0RkFFVSxvQkFBb0I7a0JBTmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFNBQVMsRUFBRTt3QkFDVCx5QkFBeUI7cUJBQzFCO2lCQUNGOzhCQUlRLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUssaUJBQWlCO3NCQUQzQixLQUFLO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGc0NvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRyb2wuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3ZhbGlkYXRlLW1lc3NhZ2VzLnByb3ZpZGVyJztcbmltcG9ydCB7IEZzVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy92YWxpZGF0b3InO1xuaW1wb3J0IHsgaXNFbmFibGVkIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pcy1lbmFibGVkJztcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnNGb3JtRW1haWxdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUlxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0Zvcm1FbWFpbERpcmVjdGl2ZSBleHRlbmRzIEZzQ29udHJvbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgRnNWYWxpZGF0b3Ige1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmc0Zvcm1FbWFpbDtcblxuICBASW5wdXQoJ2ZzRm9ybUVtYWlsTWVzc2FnZScpXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGlvbk1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3ZhbGlkYXRlTWVzc2FnZXMuZW1haWwgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKGlzRW5hYmxlZCh0aGlzLmZzRm9ybUVtYWlsKSkge1xuICAgICAgcmV0dXJuIEZzVmFsaWRhdG9ycy5lbWFpbCh0aGlzLl9jb250cm9sKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { FsControlDirective } from './control.directive';
|
|
3
|
+
import { FsValidators } from '../../validators/validators';
|
|
4
|
+
import { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';
|
|
5
|
+
import { isEnabled } from '../../helpers/is-enabled';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class FsFormEmailsDirective extends FsControlDirective {
|
|
8
|
+
fsFormEmails;
|
|
9
|
+
set validationMessage(value) {
|
|
10
|
+
this._validateMessages.emails = value;
|
|
11
|
+
}
|
|
12
|
+
ngOnChanges() {
|
|
13
|
+
this._control.updateValueAndValidity();
|
|
14
|
+
}
|
|
15
|
+
validate(control) {
|
|
16
|
+
if (isEnabled(this.fsFormEmails)) {
|
|
17
|
+
return FsValidators.emails(this._control);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormEmailsDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
24
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsFormEmailsDirective, selector: "[fsFormEmails]", inputs: { fsFormEmails: "fsFormEmails", validationMessage: ["fsFormEmailsMessage", "validationMessage"] }, providers: [
|
|
25
|
+
VALIDATE_MESSAGE_PROVIDER
|
|
26
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFormEmailsDirective, decorators: [{
|
|
29
|
+
type: Directive,
|
|
30
|
+
args: [{
|
|
31
|
+
selector: '[fsFormEmails]',
|
|
32
|
+
providers: [
|
|
33
|
+
VALIDATE_MESSAGE_PROVIDER
|
|
34
|
+
],
|
|
35
|
+
}]
|
|
36
|
+
}], propDecorators: { fsFormEmails: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], validationMessage: [{
|
|
39
|
+
type: Input,
|
|
40
|
+
args: ['fsFormEmailsMessage']
|
|
41
|
+
}] } });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWxzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy92YWxpZGF0b3JzL2VtYWlscy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFTckQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGtCQUFrQjtJQUdwRCxZQUFZLENBQUM7SUFFcEIsSUFDVyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sUUFBUSxDQUFDLE9BQXdCO1FBQ3RDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO3dHQXBCVSxxQkFBcUI7NEZBQXJCLHFCQUFxQixvSkFKckI7WUFDVCx5QkFBeUI7U0FDMUI7OzRGQUVVLHFCQUFxQjtrQkFOakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixTQUFTLEVBQUU7d0JBQ1QseUJBQXlCO3FCQUMxQjtpQkFDRjs4QkFJUSxZQUFZO3NCQURsQixLQUFLO2dCQUlLLGlCQUFpQjtzQkFEM0IsS0FBSzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRnNDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc1ZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlcic7XG5pbXBvcnQgeyBGc1ZhbGlkYXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmFsaWRhdG9yJztcbmltcG9ydCB7IGlzRW5hYmxlZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaXMtZW5hYmxlZCc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzRm9ybUVtYWlsc10nLFxuICBwcm92aWRlcnM6IFtcbiAgICBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybUVtYWlsc0RpcmVjdGl2ZSBleHRlbmRzIEZzQ29udHJvbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgRnNWYWxpZGF0b3Ige1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmc0Zvcm1FbWFpbHM7XG5cbiAgQElucHV0KCdmc0Zvcm1FbWFpbHNNZXNzYWdlJylcbiAgcHVibGljIHNldCB2YWxpZGF0aW9uTWVzc2FnZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdmFsaWRhdGVNZXNzYWdlcy5lbWFpbHMgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKGlzRW5hYmxlZCh0aGlzLmZzRm9ybUVtYWlscykpIHtcbiAgICAgIHJldHVybiBGc1ZhbGlkYXRvcnMuZW1haWxzKHRoaXMuX2NvbnRyb2wpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxufVxuIl19
|