@firestitch/form 15.0.0 → 16.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/esm2022/app/components/form-template-outlet/form-template-outlet.component.mjs +32 -0
- package/esm2022/app/directives/button.directive.mjs +172 -0
- package/esm2022/app/directives/form/form.directive.mjs +702 -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/{esm2020 → esm2022}/app/directives/validators/no-fs-validators.directive.mjs +6 -6
- 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/esm2022/app/services/fsform.service.mjs +94 -0
- package/{fesm2020 → fesm2022}/firestitch-form.mjs +354 -291
- 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/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/services/fsform.service.mjs +0 -92
- 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/form-template/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/components/form-template-outlet/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/get-active-route.mjs +0 -0
- /package/{esm2020 → esm2022}/app/helpers/get-form-errors.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}/app/validators/validators.mjs +0 -0
- /package/{esm2020 → esm2022}/firestitch-form.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -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 FsFormPhoneDirective extends FsControlDirective {
|
|
8
|
+
fsFormPhone;
|
|
9
|
+
set validationMessage(value) {
|
|
10
|
+
this._validateMessages.phone = value;
|
|
11
|
+
}
|
|
12
|
+
ngOnChanges() {
|
|
13
|
+
this._control.updateValueAndValidity();
|
|
14
|
+
}
|
|
15
|
+
validate(control) {
|
|
16
|
+
if (isEnabled(this.fsFormPhone)) {
|
|
17
|
+
return FsValidators.phone(this._control);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormPhoneDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
24
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsFormPhoneDirective, selector: "[fsFormPhone]", inputs: { fsFormPhone: "fsFormPhone", validationMessage: ["fsFormPhoneMessage", "validationMessage"] }, providers: [
|
|
25
|
+
VALIDATE_MESSAGE_PROVIDER
|
|
26
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormPhoneDirective, decorators: [{
|
|
29
|
+
type: Directive,
|
|
30
|
+
args: [{
|
|
31
|
+
selector: '[fsFormPhone]',
|
|
32
|
+
providers: [
|
|
33
|
+
VALIDATE_MESSAGE_PROVIDER
|
|
34
|
+
],
|
|
35
|
+
}]
|
|
36
|
+
}], propDecorators: { fsFormPhone: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], validationMessage: [{
|
|
39
|
+
type: Input,
|
|
40
|
+
args: ['fsFormPhoneMessage']
|
|
41
|
+
}] } });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvcGhvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUV2RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBU3JELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxrQkFBa0I7SUFHbkQsV0FBVyxDQUFDO0lBRW5CLElBQ1csaUJBQWlCLENBQUMsS0FBYTtRQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUF3QjtRQUN0QyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7d0dBcEJVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLGdKQUpwQjtZQUNULHlCQUF5QjtTQUMxQjs7NEZBRVUsb0JBQW9CO2tCQU5oQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixTQUFTLEVBQUU7d0JBQ1QseUJBQXlCO3FCQUMxQjtpQkFDRjs4QkFJUSxXQUFXO3NCQURqQixLQUFLO2dCQUlLLGlCQUFpQjtzQkFEM0IsS0FBSzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRnNDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc1ZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlcic7XG5pbXBvcnQgeyBGc1ZhbGlkYXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmFsaWRhdG9yJztcbmltcG9ydCB7IGlzRW5hYmxlZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaXMtZW5hYmxlZCc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzRm9ybVBob25lXScsXG4gIHByb3ZpZGVyczogW1xuICAgIFZBTElEQVRFX01FU1NBR0VfUFJPVklERVJcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGb3JtUGhvbmVEaXJlY3RpdmUgZXh0ZW5kcyBGc0NvbnRyb2xEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEZzVmFsaWRhdG9yIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZnNGb3JtUGhvbmU7XG5cbiAgQElucHV0KCdmc0Zvcm1QaG9uZU1lc3NhZ2UnKVxuICBwdWJsaWMgc2V0IHZhbGlkYXRpb25NZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl92YWxpZGF0ZU1lc3NhZ2VzLnBob25lID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5fY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmIChpc0VuYWJsZWQodGhpcy5mc0Zvcm1QaG9uZSkpIHtcbiAgICAgIHJldHVybiBGc1ZhbGlkYXRvcnMucGhvbmUodGhpcy5fY29udHJvbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { isEnabled } from '../../helpers/is-enabled';
|
|
4
|
+
import { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';
|
|
5
|
+
import { FsControlDirective } from './control.directive';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class FsFormRequiredDirective extends FsControlDirective {
|
|
8
|
+
required = false;
|
|
9
|
+
set setFsFormRequired(value) {
|
|
10
|
+
this.required = isEnabled(value);
|
|
11
|
+
}
|
|
12
|
+
set setRequired(value) {
|
|
13
|
+
this.required = isEnabled(value);
|
|
14
|
+
}
|
|
15
|
+
set validationMessage(value) {
|
|
16
|
+
this._validateMessages.required = value;
|
|
17
|
+
}
|
|
18
|
+
ngOnChanges() {
|
|
19
|
+
this._control.updateValueAndValidity();
|
|
20
|
+
}
|
|
21
|
+
validate(control) {
|
|
22
|
+
if (this.required) {
|
|
23
|
+
return Validators.required(this._control);
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
render() {
|
|
28
|
+
const wrapper = this.getWrapperElement();
|
|
29
|
+
if (wrapper && this.getlabelSelector()) {
|
|
30
|
+
const labelWrapper = wrapper.querySelector(this.getlabelSelector());
|
|
31
|
+
// Adding class fs-form-label-requried adds the * to the label
|
|
32
|
+
if (labelWrapper) {
|
|
33
|
+
if (this.required) {
|
|
34
|
+
this.renderer2.addClass(labelWrapper, 'fs-form-label-required');
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
this.renderer2.removeClass(labelWrapper, 'fs-form-label-required');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
super.render();
|
|
42
|
+
}
|
|
43
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormRequiredDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
44
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: { setFsFormRequired: ["fsFormRequired", "setFsFormRequired"], setRequired: ["required", "setRequired"], validationMessage: ["fsFormRequiredMessage", "validationMessage"] }, providers: [
|
|
45
|
+
VALIDATE_MESSAGE_PROVIDER,
|
|
46
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormRequiredDirective, decorators: [{
|
|
49
|
+
type: Directive,
|
|
50
|
+
args: [{
|
|
51
|
+
selector: '[fsFormRequired],[ngModel][required]',
|
|
52
|
+
providers: [
|
|
53
|
+
VALIDATE_MESSAGE_PROVIDER,
|
|
54
|
+
],
|
|
55
|
+
}]
|
|
56
|
+
}], propDecorators: { setFsFormRequired: [{
|
|
57
|
+
type: Input,
|
|
58
|
+
args: ['fsFormRequired']
|
|
59
|
+
}], setRequired: [{
|
|
60
|
+
type: Input,
|
|
61
|
+
args: ['required']
|
|
62
|
+
}], validationMessage: [{
|
|
63
|
+
type: Input,
|
|
64
|
+
args: ['fsFormRequiredMessage']
|
|
65
|
+
}] } });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvcmVxdWlyZWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVN6RCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBQ3RELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFeEIsSUFDVyxpQkFBaUIsQ0FBQyxLQUFLO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUNXLFdBQVcsQ0FBQyxLQUFLO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUNXLGlCQUFpQixDQUFDLEtBQWE7UUFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxRQUFRLENBQUMsT0FBd0I7UUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDM0M7UUFFRCxPQUFPLElBQUksQ0FBQztJQUVkLENBQUM7SUFFUyxNQUFNO1FBRWQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekMsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDdEMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBRXBFLDhEQUE4RDtZQUM5RCxJQUFJLFlBQVksRUFBRTtnQkFDaEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztpQkFDakU7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLHdCQUF3QixDQUFDLENBQUM7aUJBQ3BFO2FBQ0Y7U0FDRjtRQUVELEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQixDQUFDO3dHQWpEVSx1QkFBdUI7NEZBQXZCLHVCQUF1QixvUEFKdkI7WUFDVCx5QkFBeUI7U0FDMUI7OzRGQUVVLHVCQUF1QjtrQkFObkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0NBQXNDO29CQUNoRCxTQUFTLEVBQUU7d0JBQ1QseUJBQXlCO3FCQUMxQjtpQkFDRjs4QkFLWSxpQkFBaUI7c0JBRDNCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQU1aLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsVUFBVTtnQkFNTixpQkFBaUI7c0JBRDNCLEtBQUs7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGlzRW5hYmxlZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaXMtZW5hYmxlZCc7XG5pbXBvcnQgeyBGc1ZhbGlkYXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmFsaWRhdG9yJztcbmltcG9ydCB7IFZBTElEQVRFX01FU1NBR0VfUFJPVklERVIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvdmFsaWRhdGUtbWVzc2FnZXMucHJvdmlkZXInO1xuXG5pbXBvcnQgeyBGc0NvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRyb2wuZGlyZWN0aXZlJztcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnNGb3JtUmVxdWlyZWRdLFtuZ01vZGVsXVtyZXF1aXJlZF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0Zvcm1SZXF1aXJlZERpcmVjdGl2ZSBleHRlbmRzIEZzQ29udHJvbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgRnNWYWxpZGF0b3Ige1xuICBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcblxuICBASW5wdXQoJ2ZzRm9ybVJlcXVpcmVkJylcbiAgcHVibGljIHNldCBzZXRGc0Zvcm1SZXF1aXJlZCh2YWx1ZSkge1xuICAgIHRoaXMucmVxdWlyZWQgPSBpc0VuYWJsZWQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KCdyZXF1aXJlZCcpXG4gIHB1YmxpYyBzZXQgc2V0UmVxdWlyZWQodmFsdWUpIHtcbiAgICB0aGlzLnJlcXVpcmVkID0gaXNFbmFibGVkKHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgnZnNGb3JtUmVxdWlyZWRNZXNzYWdlJylcbiAgcHVibGljIHNldCB2YWxpZGF0aW9uTWVzc2FnZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdmFsaWRhdGVNZXNzYWdlcy5yZXF1aXJlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucmVxdWlyZWQodGhpcy5fY29udHJvbCk7XG4gICAgfVxuIFxuICAgIHJldHVybiBudWxsO1xuICAgIFxuICB9XG5cbiAgcHJvdGVjdGVkIHJlbmRlcigpIHtcblxuICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLmdldFdyYXBwZXJFbGVtZW50KCk7XG5cbiAgICBpZiAod3JhcHBlciAmJiB0aGlzLmdldGxhYmVsU2VsZWN0b3IoKSkge1xuICAgICAgY29uc3QgbGFiZWxXcmFwcGVyID0gd3JhcHBlci5xdWVyeVNlbGVjdG9yKHRoaXMuZ2V0bGFiZWxTZWxlY3RvcigpKTtcblxuICAgICAgLy8gQWRkaW5nIGNsYXNzIGZzLWZvcm0tbGFiZWwtcmVxdXJpZWQgYWRkcyB0aGUgKiB0byB0aGUgbGFiZWxcbiAgICAgIGlmIChsYWJlbFdyYXBwZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5hZGRDbGFzcyhsYWJlbFdyYXBwZXIsICdmcy1mb3JtLWxhYmVsLXJlcXVpcmVkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlQ2xhc3MobGFiZWxXcmFwcGVyLCAnZnMtZm9ybS1sYWJlbC1yZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3VwZXIucmVuZGVyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { isEnabled } from '../../helpers/is-enabled';
|
|
3
|
+
import { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';
|
|
4
|
+
import { FsValidators } from '../../validators/validators';
|
|
5
|
+
import { FsControlDirective } from './control.directive';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class FsFormUrlDirective extends FsControlDirective {
|
|
8
|
+
fsFormUrl;
|
|
9
|
+
fsFormUrlProtocol = true;
|
|
10
|
+
set validationMessage(value) {
|
|
11
|
+
this._validateMessages.url = value;
|
|
12
|
+
}
|
|
13
|
+
ngOnChanges() {
|
|
14
|
+
this._control.updateValueAndValidity();
|
|
15
|
+
}
|
|
16
|
+
validate(control) {
|
|
17
|
+
if (isEnabled(this.fsFormUrl)) {
|
|
18
|
+
return FsValidators.url(this._control, this.fsFormUrlProtocol);
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormUrlDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
23
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsFormUrlDirective, selector: "[fsFormUrl]", inputs: { fsFormUrl: "fsFormUrl", fsFormUrlProtocol: "fsFormUrlProtocol", validationMessage: ["fsFormUrlMessage", "validationMessage"] }, providers: [
|
|
24
|
+
VALIDATE_MESSAGE_PROVIDER,
|
|
25
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormUrlDirective, decorators: [{
|
|
28
|
+
type: Directive,
|
|
29
|
+
args: [{
|
|
30
|
+
selector: '[fsFormUrl]',
|
|
31
|
+
providers: [
|
|
32
|
+
VALIDATE_MESSAGE_PROVIDER,
|
|
33
|
+
],
|
|
34
|
+
}]
|
|
35
|
+
}], propDecorators: { fsFormUrl: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], fsFormUrlProtocol: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], validationMessage: [{
|
|
40
|
+
type: Input,
|
|
41
|
+
args: ['fsFormUrlMessage']
|
|
42
|
+
}] } });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy92YWxpZGF0b3JzL3VybC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFTekQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGtCQUFrQjtJQUdqRCxTQUFTLENBQUM7SUFHVixpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFFaEMsSUFDVyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sUUFBUSxDQUFDLE9BQXdCO1FBQ3RDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNoRTtRQUVELE9BQU8sSUFBSSxDQUFDO0lBRWQsQ0FBQzt3R0F4QlUsa0JBQWtCOzRGQUFsQixrQkFBa0IsZ0xBSmxCO1lBQ1QseUJBQXlCO1NBQzFCOzs0RkFFVSxrQkFBa0I7a0JBTjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFNBQVMsRUFBRTt3QkFDVCx5QkFBeUI7cUJBQzFCO2lCQUNGOzhCQUlRLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUssaUJBQWlCO3NCQUQzQixLQUFLO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBpc0VuYWJsZWQgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2lzLWVuYWJsZWQnO1xuaW1wb3J0IHsgRnNWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3ZhbGlkYXRvcic7XG5pbXBvcnQgeyBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3ZhbGlkYXRlLW1lc3NhZ2VzLnByb3ZpZGVyJztcbmltcG9ydCB7IEZzVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvdmFsaWRhdG9ycyc7XG5cbmltcG9ydCB7IEZzQ29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vY29udHJvbC5kaXJlY3RpdmUnO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmc0Zvcm1VcmxdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGb3JtVXJsRGlyZWN0aXZlIGV4dGVuZHMgRnNDb250cm9sRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBGc1ZhbGlkYXRvciB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZzRm9ybVVybDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZnNGb3JtVXJsUHJvdG9jb2wgPSB0cnVlO1xuXG4gIEBJbnB1dCgnZnNGb3JtVXJsTWVzc2FnZScpXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGlvbk1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3ZhbGlkYXRlTWVzc2FnZXMudXJsID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5fY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmIChpc0VuYWJsZWQodGhpcy5mc0Zvcm1VcmwpKSB7XG4gICAgICByZXR1cm4gRnNWYWxpZGF0b3JzLnVybCh0aGlzLl9jb250cm9sLCB0aGlzLmZzRm9ybVVybFByb3RvY29sKTtcbiAgICB9XG4gXG4gICAgcmV0dXJuIG51bGw7XG4gICAgXG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import { FsControlDirective } from './control.directive';
|
|
4
|
+
import { FsValidators } from '../../validators/validators';
|
|
5
|
+
import { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class FsFormValidateDirective extends FsControlDirective {
|
|
8
|
+
validateFn;
|
|
9
|
+
validateFnData;
|
|
10
|
+
validateOnSubmit = false;
|
|
11
|
+
ngOnChanges() {
|
|
12
|
+
this._control.updateValueAndValidity();
|
|
13
|
+
}
|
|
14
|
+
validateAsync(control) {
|
|
15
|
+
if (this.validateOnSubmit && !this.formDirective.validating) {
|
|
16
|
+
return of(null);
|
|
17
|
+
}
|
|
18
|
+
return FsValidators.func(this._control, this.validateFn, this.validateFnData);
|
|
19
|
+
}
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormValidateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
21
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsFormValidateDirective, selector: "[validate]", inputs: { validateFn: ["validate", "validateFn"], validateFnData: ["validateData", "validateFnData"], validateOnSubmit: "validateOnSubmit" }, providers: [
|
|
22
|
+
VALIDATE_MESSAGE_PROVIDER
|
|
23
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormValidateDirective, decorators: [{
|
|
26
|
+
type: Directive,
|
|
27
|
+
args: [{
|
|
28
|
+
selector: '[validate]',
|
|
29
|
+
providers: [
|
|
30
|
+
VALIDATE_MESSAGE_PROVIDER
|
|
31
|
+
],
|
|
32
|
+
}]
|
|
33
|
+
}], propDecorators: { validateFn: [{
|
|
34
|
+
type: Input,
|
|
35
|
+
args: ['validate']
|
|
36
|
+
}], validateFnData: [{
|
|
37
|
+
type: Input,
|
|
38
|
+
args: ['validateData']
|
|
39
|
+
}], validateOnSubmit: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}] } });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvdmFsaWRhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQVV2RixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBR3RELFVBQVUsQ0FBQztJQUdYLGNBQWMsQ0FBQztJQUdmLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUV6QixXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQXdCO1FBQzNDLElBQUcsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDMUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7UUFFRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRixDQUFDO3dHQXJCVSx1QkFBdUI7NEZBQXZCLHVCQUF1QixtTEFKdkI7WUFDVCx5QkFBeUI7U0FDMUI7OzRGQUVVLHVCQUF1QjtrQkFObkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsU0FBUyxFQUFFO3dCQUNULHlCQUF5QjtxQkFDMUI7aUJBQ0Y7OEJBSVEsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQUlWLGNBQWM7c0JBRHBCLEtBQUs7dUJBQUMsY0FBYztnQkFJZCxnQkFBZ0I7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRnNDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc1ZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlcic7XG5pbXBvcnQgeyBGc0FzeW5jVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hc3luYy12YWxpZGF0b3InO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t2YWxpZGF0ZV0nLFxuICBwcm92aWRlcnM6IFtcbiAgICBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybVZhbGlkYXRlRGlyZWN0aXZlIGV4dGVuZHMgRnNDb250cm9sRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBGc0FzeW5jVmFsaWRhdG9yIHtcblxuICBASW5wdXQoJ3ZhbGlkYXRlJylcbiAgcHVibGljIHZhbGlkYXRlRm47XG5cbiAgQElucHV0KCd2YWxpZGF0ZURhdGEnKVxuICBwdWJsaWMgdmFsaWRhdGVGbkRhdGE7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHZhbGlkYXRlT25TdWJtaXQgPSBmYWxzZTtcblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGVBc3luYyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHtcbiAgICBpZih0aGlzLnZhbGlkYXRlT25TdWJtaXQgJiYgIXRoaXMuZm9ybURpcmVjdGl2ZS52YWxpZGF0aW5nKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEZzVmFsaWRhdG9ycy5mdW5jKHRoaXMuX2NvbnRyb2wsIHRoaXMudmFsaWRhdGVGbiwgdGhpcy52YWxpZGF0ZUZuRGF0YSk7XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';
|
|
6
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
7
|
+
import { FsDialogModule } from '@firestitch/dialog';
|
|
8
|
+
import { ConfirmUnsavedComponent, FsFormDialogActionsComponent, FsFormTemplateComponent, FsFormTemplateOutletComponent, } from './components';
|
|
9
|
+
import { FsFormGreaterEqualDirective, FsFormLesserEqualDirective, FsFormTemplateDirective, FsSubmitButtonDirective, } from './directives';
|
|
10
|
+
import { FsButtonDirective } from './directives/button.directive';
|
|
11
|
+
import { FsFormDialogCloseDirective } from './directives/form-dialog-close.directive';
|
|
12
|
+
import { FsFormDirective } from './directives/form/form.directive';
|
|
13
|
+
import { FsFormCompareDirective } from './directives/validators/compare.directive';
|
|
14
|
+
import { FsControlDirective } from './directives/validators/control.directive';
|
|
15
|
+
import { FsFormDateRangeDirective } from './directives/validators/daterange.directive';
|
|
16
|
+
import { FsFormEmailDirective } from './directives/validators/email.directive';
|
|
17
|
+
import { FsFormEmailsDirective } from './directives/validators/emails.directive';
|
|
18
|
+
import { FsFormFunctionDirective } from './directives/validators/function.directive';
|
|
19
|
+
import { FsFormGreaterDirective } from './directives/validators/greater.directive';
|
|
20
|
+
import { FsFormIntegerDirective } from './directives/validators/integer.directive';
|
|
21
|
+
import { FsFormLesserDirective } from './directives/validators/lesser.directive';
|
|
22
|
+
import { FsFormMaxDirective } from './directives/validators/max.directive';
|
|
23
|
+
import { FsFormMaxLengthDirective } from './directives/validators/maxlength.directive';
|
|
24
|
+
import { FsFormMinDirective } from './directives/validators/min.directive';
|
|
25
|
+
import { FsFormMinLengthDirective } from './directives/validators/minlength.directive';
|
|
26
|
+
import { FsFormNoFsValidatorsDirective } from './directives/validators/no-fs-validators.directive';
|
|
27
|
+
import { FsFormNumericDirective } from './directives/validators/numeric.directive';
|
|
28
|
+
import { FsFormPatternDirective } from './directives/validators/pattern.directive';
|
|
29
|
+
import { FsFormPhoneDirective } from './directives/validators/phone.directive';
|
|
30
|
+
import { FsFormRequiredDirective } from './directives/validators/required.directive';
|
|
31
|
+
import { FsFormUrlDirective } from './directives/validators/url.directive';
|
|
32
|
+
import { FsFormValidateDirective } from './directives/validators/validate.directive';
|
|
33
|
+
import * as i0 from "@angular/core";
|
|
34
|
+
export class FsFormModule {
|
|
35
|
+
static forRoot() {
|
|
36
|
+
/**
|
|
37
|
+
* Hack: https://github.com/angular/components/issues/20097
|
|
38
|
+
*/
|
|
39
|
+
ErrorStateMatcher.prototype
|
|
40
|
+
.isErrorState = (control, form) => {
|
|
41
|
+
return control?.invalid && control?.touched && control?.dirty;
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
ngModule: FsFormModule,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
48
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FsFormModule, declarations: [FsFormDirective,
|
|
49
|
+
FsControlDirective,
|
|
50
|
+
FsFormRequiredDirective,
|
|
51
|
+
FsFormMinDirective,
|
|
52
|
+
FsFormMaxDirective,
|
|
53
|
+
FsFormMinLengthDirective,
|
|
54
|
+
FsFormMaxLengthDirective,
|
|
55
|
+
FsFormEmailDirective,
|
|
56
|
+
FsFormEmailsDirective,
|
|
57
|
+
FsFormPhoneDirective,
|
|
58
|
+
FsFormCompareDirective,
|
|
59
|
+
FsFormIntegerDirective,
|
|
60
|
+
FsFormNumericDirective,
|
|
61
|
+
FsFormPatternDirective,
|
|
62
|
+
FsFormFunctionDirective,
|
|
63
|
+
FsFormDateRangeDirective,
|
|
64
|
+
FsFormGreaterDirective,
|
|
65
|
+
FsFormGreaterEqualDirective,
|
|
66
|
+
FsFormLesserDirective,
|
|
67
|
+
FsFormLesserEqualDirective,
|
|
68
|
+
FsFormUrlDirective,
|
|
69
|
+
FsFormDialogCloseDirective,
|
|
70
|
+
FsFormValidateDirective,
|
|
71
|
+
FsFormDialogActionsComponent,
|
|
72
|
+
FsFormNoFsValidatorsDirective,
|
|
73
|
+
FsButtonDirective,
|
|
74
|
+
FsSubmitButtonDirective,
|
|
75
|
+
FsFormTemplateComponent,
|
|
76
|
+
FsFormTemplateDirective,
|
|
77
|
+
FsFormTemplateOutletComponent,
|
|
78
|
+
ConfirmUnsavedComponent], imports: [CommonModule,
|
|
79
|
+
FormsModule,
|
|
80
|
+
MatButtonModule,
|
|
81
|
+
MatDialogModule,
|
|
82
|
+
MatDialogModule,
|
|
83
|
+
FsDialogModule], exports: [FsFormDirective,
|
|
84
|
+
FsControlDirective,
|
|
85
|
+
FsFormRequiredDirective,
|
|
86
|
+
FsFormMinDirective,
|
|
87
|
+
FsFormMaxDirective,
|
|
88
|
+
FsFormMinLengthDirective,
|
|
89
|
+
FsFormMaxLengthDirective,
|
|
90
|
+
FsFormEmailDirective,
|
|
91
|
+
FsFormEmailsDirective,
|
|
92
|
+
FsFormPhoneDirective,
|
|
93
|
+
FsFormCompareDirective,
|
|
94
|
+
FsFormIntegerDirective,
|
|
95
|
+
FsFormNumericDirective,
|
|
96
|
+
FsFormPatternDirective,
|
|
97
|
+
FsFormFunctionDirective,
|
|
98
|
+
FsFormDateRangeDirective,
|
|
99
|
+
FsFormGreaterDirective,
|
|
100
|
+
FsFormGreaterEqualDirective,
|
|
101
|
+
FsFormLesserDirective,
|
|
102
|
+
FsFormLesserEqualDirective,
|
|
103
|
+
FsFormUrlDirective,
|
|
104
|
+
FsFormDialogCloseDirective,
|
|
105
|
+
FsFormValidateDirective,
|
|
106
|
+
FsFormDialogActionsComponent,
|
|
107
|
+
FsFormNoFsValidatorsDirective,
|
|
108
|
+
FsButtonDirective,
|
|
109
|
+
FsSubmitButtonDirective,
|
|
110
|
+
FsFormTemplateComponent,
|
|
111
|
+
FsFormTemplateDirective,
|
|
112
|
+
FsFormTemplateOutletComponent] });
|
|
113
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormModule, providers: [
|
|
114
|
+
{
|
|
115
|
+
provide: ErrorStateMatcher,
|
|
116
|
+
useClass: ShowOnDirtyErrorStateMatcher,
|
|
117
|
+
},
|
|
118
|
+
], imports: [CommonModule,
|
|
119
|
+
FormsModule,
|
|
120
|
+
MatButtonModule,
|
|
121
|
+
MatDialogModule,
|
|
122
|
+
MatDialogModule,
|
|
123
|
+
FsDialogModule] });
|
|
124
|
+
}
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormModule, decorators: [{
|
|
126
|
+
type: NgModule,
|
|
127
|
+
args: [{
|
|
128
|
+
imports: [
|
|
129
|
+
CommonModule,
|
|
130
|
+
FormsModule,
|
|
131
|
+
MatButtonModule,
|
|
132
|
+
MatDialogModule,
|
|
133
|
+
MatDialogModule,
|
|
134
|
+
FsDialogModule,
|
|
135
|
+
],
|
|
136
|
+
declarations: [
|
|
137
|
+
FsFormDirective,
|
|
138
|
+
FsControlDirective,
|
|
139
|
+
FsFormRequiredDirective,
|
|
140
|
+
FsFormMinDirective,
|
|
141
|
+
FsFormMaxDirective,
|
|
142
|
+
FsFormMinLengthDirective,
|
|
143
|
+
FsFormMaxLengthDirective,
|
|
144
|
+
FsFormEmailDirective,
|
|
145
|
+
FsFormEmailsDirective,
|
|
146
|
+
FsFormPhoneDirective,
|
|
147
|
+
FsFormCompareDirective,
|
|
148
|
+
FsFormIntegerDirective,
|
|
149
|
+
FsFormNumericDirective,
|
|
150
|
+
FsFormPatternDirective,
|
|
151
|
+
FsFormFunctionDirective,
|
|
152
|
+
FsFormDateRangeDirective,
|
|
153
|
+
FsFormGreaterDirective,
|
|
154
|
+
FsFormGreaterEqualDirective,
|
|
155
|
+
FsFormLesserDirective,
|
|
156
|
+
FsFormLesserEqualDirective,
|
|
157
|
+
FsFormUrlDirective,
|
|
158
|
+
FsFormDialogCloseDirective,
|
|
159
|
+
FsFormValidateDirective,
|
|
160
|
+
FsFormDialogActionsComponent,
|
|
161
|
+
FsFormNoFsValidatorsDirective,
|
|
162
|
+
FsButtonDirective,
|
|
163
|
+
FsSubmitButtonDirective,
|
|
164
|
+
FsFormTemplateComponent,
|
|
165
|
+
FsFormTemplateDirective,
|
|
166
|
+
FsFormTemplateOutletComponent,
|
|
167
|
+
ConfirmUnsavedComponent,
|
|
168
|
+
],
|
|
169
|
+
exports: [
|
|
170
|
+
FsFormDirective,
|
|
171
|
+
FsControlDirective,
|
|
172
|
+
FsFormRequiredDirective,
|
|
173
|
+
FsFormMinDirective,
|
|
174
|
+
FsFormMaxDirective,
|
|
175
|
+
FsFormMinLengthDirective,
|
|
176
|
+
FsFormMaxLengthDirective,
|
|
177
|
+
FsFormEmailDirective,
|
|
178
|
+
FsFormEmailsDirective,
|
|
179
|
+
FsFormPhoneDirective,
|
|
180
|
+
FsFormCompareDirective,
|
|
181
|
+
FsFormIntegerDirective,
|
|
182
|
+
FsFormNumericDirective,
|
|
183
|
+
FsFormPatternDirective,
|
|
184
|
+
FsFormFunctionDirective,
|
|
185
|
+
FsFormDateRangeDirective,
|
|
186
|
+
FsFormGreaterDirective,
|
|
187
|
+
FsFormGreaterEqualDirective,
|
|
188
|
+
FsFormLesserDirective,
|
|
189
|
+
FsFormLesserEqualDirective,
|
|
190
|
+
FsFormUrlDirective,
|
|
191
|
+
FsFormDialogCloseDirective,
|
|
192
|
+
FsFormValidateDirective,
|
|
193
|
+
FsFormDialogActionsComponent,
|
|
194
|
+
FsFormNoFsValidatorsDirective,
|
|
195
|
+
FsButtonDirective,
|
|
196
|
+
FsSubmitButtonDirective,
|
|
197
|
+
FsFormTemplateComponent,
|
|
198
|
+
FsFormTemplateDirective,
|
|
199
|
+
FsFormTemplateOutletComponent,
|
|
200
|
+
],
|
|
201
|
+
providers: [
|
|
202
|
+
{
|
|
203
|
+
provide: ErrorStateMatcher,
|
|
204
|
+
useClass: ShowOnDirtyErrorStateMatcher,
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
}]
|
|
208
|
+
}] });
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2ZzLWZvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQTBDLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBRTdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFDTCx1QkFBdUIsRUFBRSw0QkFBNEIsRUFDckQsdUJBQXVCLEVBQUUsNkJBQTZCLEdBQ3ZELE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCwyQkFBMkIsRUFBRSwwQkFBMEIsRUFDdkQsdUJBQXVCLEVBQUUsdUJBQXVCLEdBQ2pELE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFzRnJGLE1BQU0sT0FBTyxZQUFZO0lBQ2hCLE1BQU0sQ0FBQyxPQUFPO1FBRW5COztXQUVHO1FBQ0gsaUJBQWlCLENBQUMsU0FBUzthQUN4QixZQUFZLEdBQUcsQ0FDZCxPQUFrQyxFQUNsQyxJQUF3QyxFQUMvQixFQUFFO1lBQ1gsT0FBTyxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxPQUFPLElBQUksT0FBTyxFQUFFLEtBQUssQ0FBQztRQUNoRSxDQUFDLENBQUM7UUFFSixPQUFPO1lBQ0wsUUFBUSxFQUFFLFlBQVk7U0FDdkIsQ0FBQztJQUNKLENBQUM7d0dBakJVLFlBQVk7eUdBQVosWUFBWSxpQkF2RXJCLGVBQWU7WUFDZixrQkFBa0I7WUFDbEIsdUJBQXVCO1lBQ3ZCLGtCQUFrQjtZQUNsQixrQkFBa0I7WUFDbEIsd0JBQXdCO1lBQ3hCLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFDcEIscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQixzQkFBc0I7WUFDdEIsc0JBQXNCO1lBQ3RCLHNCQUFzQjtZQUN0QixzQkFBc0I7WUFDdEIsdUJBQXVCO1lBQ3ZCLHdCQUF3QjtZQUN4QixzQkFBc0I7WUFDdEIsMkJBQTJCO1lBQzNCLHFCQUFxQjtZQUNyQiwwQkFBMEI7WUFDMUIsa0JBQWtCO1lBQ2xCLDBCQUEwQjtZQUMxQix1QkFBdUI7WUFDdkIsNEJBQTRCO1lBQzVCLDZCQUE2QjtZQUM3QixpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFDdkIsNkJBQTZCO1lBQzdCLHVCQUF1QixhQXhDdkIsWUFBWTtZQUNaLFdBQVc7WUFFWCxlQUFlO1lBQ2YsZUFBZTtZQUNmLGVBQWU7WUFFZixjQUFjLGFBb0NkLGVBQWU7WUFDZixrQkFBa0I7WUFDbEIsdUJBQXVCO1lBQ3ZCLGtCQUFrQjtZQUNsQixrQkFBa0I7WUFDbEIsd0JBQXdCO1lBQ3hCLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFDcEIscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQixzQkFBc0I7WUFDdEIsc0JBQXNCO1lBQ3RCLHNCQUFzQjtZQUN0QixzQkFBc0I7WUFDdEIsdUJBQXVCO1lBQ3ZCLHdCQUF3QjtZQUN4QixzQkFBc0I7WUFDdEIsMkJBQTJCO1lBQzNCLHFCQUFxQjtZQUNyQiwwQkFBMEI7WUFDMUIsa0JBQWtCO1lBQ2xCLDBCQUEwQjtZQUMxQix1QkFBdUI7WUFDdkIsNEJBQTRCO1lBQzVCLDZCQUE2QjtZQUM3QixpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFDdkIsNkJBQTZCO3lHQVNwQixZQUFZLGFBUFo7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixRQUFRLEVBQUUsNEJBQTRCO2FBQ3ZDO1NBQ0YsWUEvRUMsWUFBWTtZQUNaLFdBQVc7WUFFWCxlQUFlO1lBQ2YsZUFBZTtZQUNmLGVBQWU7WUFFZixjQUFjOzs0RkEwRUwsWUFBWTtrQkFuRnhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFFWCxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZUFBZTt3QkFFZixjQUFjO3FCQUNmO29CQUNELFlBQVksRUFBRTt3QkFDWixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0QixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsa0JBQWtCO3dCQUNsQiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsNkJBQTZCO3dCQUM3Qix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0QixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsa0JBQWtCO3dCQUNsQiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsNkJBQTZCO3FCQUM5QjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLDRCQUE0Qjt5QkFDdkM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBGb3Jtc01vZHVsZSwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIsIFNob3dPbkRpcnR5RXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGlhbG9nJztcblxuaW1wb3J0IHtcbiAgQ29uZmlybVVuc2F2ZWRDb21wb25lbnQsIEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQsXG4gIEZzRm9ybVRlbXBsYXRlQ29tcG9uZW50LCBGc0Zvcm1UZW1wbGF0ZU91dGxldENvbXBvbmVudCxcbn0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEZzRm9ybUdyZWF0ZXJFcXVhbERpcmVjdGl2ZSwgRnNGb3JtTGVzc2VyRXF1YWxEaXJlY3RpdmUsXG4gIEZzRm9ybVRlbXBsYXRlRGlyZWN0aXZlLCBGc1N1Ym1pdEJ1dHRvbkRpcmVjdGl2ZSxcbn0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEZzQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtRGlhbG9nQ2xvc2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZm9ybS1kaWFsb2ctY2xvc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9mb3JtL2Zvcm0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybUNvbXBhcmVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb21wYXJlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0NvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1EYXRlUmFuZ2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9kYXRlcmFuZ2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybUVtYWlsRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvZW1haWwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybUVtYWlsc0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL2VtYWlscy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtRnVuY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9mdW5jdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtR3JlYXRlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL2dyZWF0ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybUludGVnZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9pbnRlZ2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1MZXNzZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9sZXNzZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybU1heERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL21heC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtTWF4TGVuZ3RoRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbWF4bGVuZ3RoLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1NaW5EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9taW4uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybU1pbkxlbmd0aERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL21pbmxlbmd0aC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtTm9Gc1ZhbGlkYXRvcnNEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9uby1mcy12YWxpZGF0b3JzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1OdW1lcmljRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbnVtZXJpYy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtUGF0dGVybkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL3BhdHRlcm4uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybVBob25lRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvcGhvbmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybVJlcXVpcmVkRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvcmVxdWlyZWQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybVVybERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL3VybC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtVmFsaWRhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy92YWxpZGF0ZS5kaXJlY3RpdmUnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG5cbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcblxuICAgIEZzRGlhbG9nTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGc0Zvcm1EaXJlY3RpdmUsXG4gICAgRnNDb250cm9sRGlyZWN0aXZlLFxuICAgIEZzRm9ybVJlcXVpcmVkRGlyZWN0aXZlLFxuICAgIEZzRm9ybU1pbkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1NYXhEaXJlY3RpdmUsXG4gICAgRnNGb3JtTWluTGVuZ3RoRGlyZWN0aXZlLFxuICAgIEZzRm9ybU1heExlbmd0aERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1FbWFpbERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1FbWFpbHNEaXJlY3RpdmUsXG4gICAgRnNGb3JtUGhvbmVEaXJlY3RpdmUsXG4gICAgRnNGb3JtQ29tcGFyZURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1JbnRlZ2VyRGlyZWN0aXZlLFxuICAgIEZzRm9ybU51bWVyaWNEaXJlY3RpdmUsXG4gICAgRnNGb3JtUGF0dGVybkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1GdW5jdGlvbkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1EYXRlUmFuZ2VEaXJlY3RpdmUsXG4gICAgRnNGb3JtR3JlYXRlckRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1HcmVhdGVyRXF1YWxEaXJlY3RpdmUsXG4gICAgRnNGb3JtTGVzc2VyRGlyZWN0aXZlLFxuICAgIEZzRm9ybUxlc3NlckVxdWFsRGlyZWN0aXZlLFxuICAgIEZzRm9ybVVybERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1WYWxpZGF0ZURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1EaWFsb2dBY3Rpb25zQ29tcG9uZW50LFxuICAgIEZzRm9ybU5vRnNWYWxpZGF0b3JzRGlyZWN0aXZlLFxuICAgIEZzQnV0dG9uRGlyZWN0aXZlLFxuICAgIEZzU3VibWl0QnV0dG9uRGlyZWN0aXZlLFxuICAgIEZzRm9ybVRlbXBsYXRlQ29tcG9uZW50LFxuICAgIEZzRm9ybVRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIEZzRm9ybVRlbXBsYXRlT3V0bGV0Q29tcG9uZW50LFxuICAgIENvbmZpcm1VbnNhdmVkQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRnNGb3JtRGlyZWN0aXZlLFxuICAgIEZzQ29udHJvbERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1SZXF1aXJlZERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1NaW5EaXJlY3RpdmUsXG4gICAgRnNGb3JtTWF4RGlyZWN0aXZlLFxuICAgIEZzRm9ybU1pbkxlbmd0aERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1NYXhMZW5ndGhEaXJlY3RpdmUsXG4gICAgRnNGb3JtRW1haWxEaXJlY3RpdmUsXG4gICAgRnNGb3JtRW1haWxzRGlyZWN0aXZlLFxuICAgIEZzRm9ybVBob25lRGlyZWN0aXZlLFxuICAgIEZzRm9ybUNvbXBhcmVEaXJlY3RpdmUsXG4gICAgRnNGb3JtSW50ZWdlckRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1OdW1lcmljRGlyZWN0aXZlLFxuICAgIEZzRm9ybVBhdHRlcm5EaXJlY3RpdmUsXG4gICAgRnNGb3JtRnVuY3Rpb25EaXJlY3RpdmUsXG4gICAgRnNGb3JtRGF0ZVJhbmdlRGlyZWN0aXZlLFxuICAgIEZzRm9ybUdyZWF0ZXJEaXJlY3RpdmUsXG4gICAgRnNGb3JtR3JlYXRlckVxdWFsRGlyZWN0aXZlLFxuICAgIEZzRm9ybUxlc3NlckRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1MZXNzZXJFcXVhbERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1VcmxEaXJlY3RpdmUsXG4gICAgRnNGb3JtRGlhbG9nQ2xvc2VEaXJlY3RpdmUsXG4gICAgRnNGb3JtVmFsaWRhdGVEaXJlY3RpdmUsXG4gICAgRnNGb3JtRGlhbG9nQWN0aW9uc0NvbXBvbmVudCxcbiAgICBGc0Zvcm1Ob0ZzVmFsaWRhdG9yc0RpcmVjdGl2ZSxcbiAgICBGc0J1dHRvbkRpcmVjdGl2ZSxcbiAgICBGc1N1Ym1pdEJ1dHRvbkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1UZW1wbGF0ZUNvbXBvbmVudCxcbiAgICBGc0Zvcm1UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1UZW1wbGF0ZU91dGxldENvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICB1c2VDbGFzczogU2hvd09uRGlydHlFcnJvclN0YXRlTWF0Y2hlcixcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0Zvcm1Nb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGc0Zvcm1Nb2R1bGU+IHtcblxuICAgIC8qKlxuICAgICAqIEhhY2s6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIwMDk3XG4gICAgICovXG4gICAgRXJyb3JTdGF0ZU1hdGNoZXIucHJvdG90eXBlXG4gICAgICAuaXNFcnJvclN0YXRlID0gKFxuICAgICAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgfCBudWxsLCBcbiAgICAgICAgZm9ybTogRm9ybUdyb3VwRGlyZWN0aXZlIHwgTmdGb3JtIHwgbnVsbCxcbiAgICAgICk6IGJvb2xlYW4gPT4ge1xuICAgICAgICByZXR1cm4gY29udHJvbD8uaW52YWxpZCAmJiBjb250cm9sPy50b3VjaGVkICYmIGNvbnRyb2w/LmRpcnR5O1xuICAgICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRnNGb3JtTW9kdWxlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ActivatedRoute } from '@angular/router';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import { confirmResultContinue } from '../helpers';
|
|
6
|
+
import { getActiveRoute } from '../helpers/get-active-route';
|
|
7
|
+
import { FsForm } from '../services/fsform.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../services/fsform.service";
|
|
10
|
+
import * as i2 from "@angular/router";
|
|
11
|
+
export class FormDeactivateGuard {
|
|
12
|
+
_form;
|
|
13
|
+
_route;
|
|
14
|
+
constructor(_form, _route) {
|
|
15
|
+
this._form = _form;
|
|
16
|
+
this._route = _route;
|
|
17
|
+
}
|
|
18
|
+
canDeactivate() {
|
|
19
|
+
const route = getActiveRoute(this._route);
|
|
20
|
+
if (!route) {
|
|
21
|
+
console.error('Can not find route for FormDeactivateGuard checks');
|
|
22
|
+
return of(true);
|
|
23
|
+
}
|
|
24
|
+
const directives = this._form
|
|
25
|
+
.getFormDirectives(route.routeConfig.component);
|
|
26
|
+
if (!Array.isArray(directives) || directives.length === 0) {
|
|
27
|
+
console.error('Can not find a valid FsFormDirective');
|
|
28
|
+
return of(true);
|
|
29
|
+
}
|
|
30
|
+
return this._form.confirmUnsaved(directives)
|
|
31
|
+
.pipe(map((result) => {
|
|
32
|
+
return confirmResultContinue(result);
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormDeactivateGuard, deps: [{ token: i1.FsForm }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
36
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormDeactivateGuard, providedIn: 'root' });
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormDeactivateGuard, decorators: [{
|
|
39
|
+
type: Injectable,
|
|
40
|
+
args: [{
|
|
41
|
+
providedIn: 'root',
|
|
42
|
+
}]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i1.FsForm }, { type: i2.ActivatedRoute }]; } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kZWFjdGl2YXRlLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9ndWFyZHMvZm9ybS1kZWFjdGl2YXRlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2pELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBTXBELE1BQU0sT0FBTyxtQkFBbUI7SUFHcEI7SUFDQTtJQUZWLFlBQ1UsS0FBYSxFQUNiLE1BQXNCO1FBRHRCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixXQUFNLEdBQU4sTUFBTSxDQUFnQjtJQUM3QixDQUFDO0lBRUcsYUFBYTtRQUNsQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7WUFFbkUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7UUFFRCxNQUFNLFVBQVUsR0FBc0IsSUFBSSxDQUFDLEtBQUs7YUFDN0MsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN6RCxPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFFdEQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQzthQUN6QyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDYixPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO3dHQS9CVSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBjb25maXJtUmVzdWx0Q29udGludWUgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IGdldEFjdGl2ZVJvdXRlIH0gZnJvbSAnLi4vaGVscGVycy9nZXQtYWN0aXZlLXJvdXRlJztcbmltcG9ydCB7IEZzRm9ybSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZzZm9ybS5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybURlYWN0aXZhdGVHdWFyZCAge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2Zvcm06IEZzRm9ybSxcbiAgICBwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge31cblxuICBwdWJsaWMgY2FuRGVhY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByb3V0ZSA9IGdldEFjdGl2ZVJvdXRlKHRoaXMuX3JvdXRlKTtcblxuICAgIGlmICghcm91dGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NhbiBub3QgZmluZCByb3V0ZSBmb3IgRm9ybURlYWN0aXZhdGVHdWFyZCBjaGVja3MnKTtcblxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGRpcmVjdGl2ZXM6IEZzRm9ybURpcmVjdGl2ZVtdID0gdGhpcy5fZm9ybVxuICAgICAgLmdldEZvcm1EaXJlY3RpdmVzKHJvdXRlLnJvdXRlQ29uZmlnLmNvbXBvbmVudCk7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGlyZWN0aXZlcykgfHwgZGlyZWN0aXZlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NhbiBub3QgZmluZCBhIHZhbGlkIEZzRm9ybURpcmVjdGl2ZScpO1xuXG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm0uY29uZmlybVVuc2F2ZWQoZGlyZWN0aXZlcylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb25maXJtUmVzdWx0Q29udGludWUocmVzdWx0KTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
+
import { merge, of, Subject } from 'rxjs';
|
|
4
|
+
import { filter, first, map, mapTo, switchMap, take } from 'rxjs/operators';
|
|
5
|
+
import { ConfirmUnsavedComponent } from '../components/confirm-unsaved';
|
|
6
|
+
import { ConfirmResult } from '../enums';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/dialog";
|
|
9
|
+
export class FsForm {
|
|
10
|
+
_dialog;
|
|
11
|
+
// value is array for future possibilities of extension
|
|
12
|
+
_formDirectiveStore = new WeakMap();
|
|
13
|
+
_eventBus;
|
|
14
|
+
constructor(_dialog) {
|
|
15
|
+
this._dialog = _dialog;
|
|
16
|
+
this._eventBus = new Subject();
|
|
17
|
+
}
|
|
18
|
+
// @deprecated
|
|
19
|
+
broadcast(key, data) {
|
|
20
|
+
this._eventBus.next({ key, data });
|
|
21
|
+
}
|
|
22
|
+
// @deprecated
|
|
23
|
+
on(key) {
|
|
24
|
+
return this._eventBus.asObservable()
|
|
25
|
+
.pipe(filter((event) => event.key === key), map((event) => event.data));
|
|
26
|
+
}
|
|
27
|
+
registerFormDirective(routeComponent, directive) {
|
|
28
|
+
const directives = this.getFormDirectives(routeComponent) || [];
|
|
29
|
+
directives.push(directive);
|
|
30
|
+
this._formDirectiveStore.set(routeComponent, directives);
|
|
31
|
+
}
|
|
32
|
+
getFormDirectives(routeComponent) {
|
|
33
|
+
return this._formDirectiveStore.get(routeComponent);
|
|
34
|
+
}
|
|
35
|
+
removeFormDirective(routeComponent) {
|
|
36
|
+
this._formDirectiveStore.delete(routeComponent);
|
|
37
|
+
}
|
|
38
|
+
confirmUnsaved(directives) {
|
|
39
|
+
// TODO support for multiple directives per page
|
|
40
|
+
const form = directives[0];
|
|
41
|
+
if (!form.confirm || !form.ngForm.dirty) {
|
|
42
|
+
return of(ConfirmResult.Pristine);
|
|
43
|
+
}
|
|
44
|
+
let title = 'You Have Unsaved Changes';
|
|
45
|
+
let message = 'What would you like to do with your changes?';
|
|
46
|
+
let saveLabel = 'Save & Continue';
|
|
47
|
+
let discardLabel = 'Discard Changes & Continue';
|
|
48
|
+
let cancelLabel = 'Review Changes';
|
|
49
|
+
if (typeof form.confirm === 'object') {
|
|
50
|
+
title = form.confirm.title || title;
|
|
51
|
+
message = form.confirm.message || message;
|
|
52
|
+
saveLabel = form.confirm.saveLabel || saveLabel;
|
|
53
|
+
discardLabel = form.confirm.discardLabel || discardLabel;
|
|
54
|
+
cancelLabel = form.confirm.cancelLabel || cancelLabel;
|
|
55
|
+
}
|
|
56
|
+
return this._dialog.open(ConfirmUnsavedComponent, {
|
|
57
|
+
data: {
|
|
58
|
+
title,
|
|
59
|
+
message,
|
|
60
|
+
saveLabel,
|
|
61
|
+
discardLabel,
|
|
62
|
+
cancelLabel,
|
|
63
|
+
},
|
|
64
|
+
width: 'auto',
|
|
65
|
+
})
|
|
66
|
+
.afterClosed()
|
|
67
|
+
.pipe(switchMap((result) => {
|
|
68
|
+
if (!result) {
|
|
69
|
+
return of(ConfirmResult.Review);
|
|
70
|
+
}
|
|
71
|
+
if (result === 'discard') {
|
|
72
|
+
form.reset();
|
|
73
|
+
return of(ConfirmResult.Discard);
|
|
74
|
+
}
|
|
75
|
+
if (result === 'save') {
|
|
76
|
+
form.ngForm.control.markAsPristine();
|
|
77
|
+
form.triggerSubmit({ confirmed: true });
|
|
78
|
+
return merge(form.submitted
|
|
79
|
+
.pipe(first(), mapTo(ConfirmResult.Save)), form.invalid
|
|
80
|
+
.pipe(first(), mapTo(ConfirmResult.Invalid)))
|
|
81
|
+
.pipe(take(1));
|
|
82
|
+
}
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsForm, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
86
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsForm, providedIn: 'root' });
|
|
87
|
+
}
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsForm, decorators: [{
|
|
89
|
+
type: Injectable,
|
|
90
|
+
args: [{
|
|
91
|
+
providedIn: 'root',
|
|
92
|
+
}]
|
|
93
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; } });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnNmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL3NlcnZpY2VzL2ZzZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3JELE9BQU8sRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFXekMsTUFBTSxPQUFPLE1BQU07SUFRUDtJQU5WLHVEQUF1RDtJQUMvQyxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBZ0MsQ0FBQztJQUVsRSxTQUFTLENBQTBCO0lBRTNDLFlBQ1UsT0FBa0I7UUFBbEIsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUUxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFrQixDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjO0lBQ1AsU0FBUyxDQUFDLEdBQVEsRUFBRSxJQUFVO1FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWM7SUFDUCxFQUFFLENBQUksR0FBUTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFO2FBQ2pDLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQ3BDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUM5QixDQUFDO0lBQ04sQ0FBQztJQUVNLHFCQUFxQixDQUFDLGNBQXlCLEVBQUUsU0FBMEI7UUFDaEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRSxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxjQUFjO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsY0FBYztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxjQUFjLENBQ25CLFVBQTZCO1FBRS9CLGdEQUFnRDtRQUM5QyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUN2QyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbkM7UUFFRCxJQUFJLEtBQUssR0FBRywwQkFBMEIsQ0FBQztRQUN2QyxJQUFJLE9BQU8sR0FBRyw4Q0FBOEMsQ0FBQztRQUM3RCxJQUFJLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUNsQyxJQUFJLFlBQVksR0FBRyw0QkFBNEIsQ0FBQztRQUNoRCxJQUFJLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztRQUVuQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDcEMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztZQUNwQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO1lBQzFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7WUFDaEQsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQztZQUN6RCxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDO1NBQ3ZEO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUNoRCxJQUFJLEVBQUU7Z0JBQ0osS0FBSztnQkFDTCxPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsWUFBWTtnQkFDWixXQUFXO2FBQ1o7WUFDRCxLQUFLLEVBQUUsTUFBTTtTQUNkLENBQUM7YUFDQyxXQUFXLEVBQUU7YUFDYixJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbkIsSUFBRyxDQUFDLE1BQU0sRUFBRTtnQkFDVixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDakM7WUFFRCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFFYixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEM7WUFFRCxJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBRXhDLE9BQU8sS0FBSyxDQUNWLElBQUksQ0FBQyxTQUFTO3FCQUNYLElBQUksQ0FDSCxLQUFLLEVBQUUsRUFDUCxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUMxQixFQUNILElBQUksQ0FBQyxPQUFPO3FCQUNULElBQUksQ0FDSCxLQUFLLEVBQUUsRUFDUCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUM3QixDQUFDO3FCQUNILElBQUksQ0FDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQzthQUNMO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7d0dBOUdVLE1BQU07NEdBQU4sTUFBTSxjQUZMLE1BQU07OzRGQUVQLE1BQU07a0JBSGxCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5cbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgbWFwLCBtYXBUbywgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb25maXJtVW5zYXZlZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uZmlybS11bnNhdmVkJztcbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb25maXJtUmVzdWx0IH0gZnJvbSAnLi4vZW51bXMnO1xuXG5pbnRlcmZhY2UgQnJvYWRjYXN0RXZlbnQge1xuICAgIGtleTogYW55O1xuICAgIGRhdGE/OiBhbnk7XG59XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybSB7XG5cbiAgLy8gdmFsdWUgaXMgYXJyYXkgZm9yIGZ1dHVyZSBwb3NzaWJpbGl0aWVzIG9mIGV4dGVuc2lvblxuICBwcml2YXRlIF9mb3JtRGlyZWN0aXZlU3RvcmUgPSBuZXcgV2Vha01hcDxUeXBlPGFueT4sIEZzRm9ybURpcmVjdGl2ZVtdPigpO1xuXG4gIHByaXZhdGUgX2V2ZW50QnVzOiBTdWJqZWN0PEJyb2FkY2FzdEV2ZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7XG4gICAgdGhpcy5fZXZlbnRCdXMgPSBuZXcgU3ViamVjdDxCcm9hZGNhc3RFdmVudD4oKTtcbiAgfVxuXG4gIC8vIEBkZXByZWNhdGVkXG4gIHB1YmxpYyBicm9hZGNhc3Qoa2V5OiBhbnksIGRhdGE/OiBhbnkpIHtcbiAgICB0aGlzLl9ldmVudEJ1cy5uZXh0KHsga2V5LCBkYXRhIH0pO1xuICB9XG5cbiAgLy8gQGRlcHJlY2F0ZWRcbiAgcHVibGljIG9uPFQ+KGtleTogYW55KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50QnVzLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQua2V5ID09PSBrZXkpLFxuICAgICAgICBtYXAoKGV2ZW50KSA9PiA8VD5ldmVudC5kYXRhKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJGb3JtRGlyZWN0aXZlKHJvdXRlQ29tcG9uZW50OiBUeXBlPGFueT4sIGRpcmVjdGl2ZTogRnNGb3JtRGlyZWN0aXZlKSB7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMuZ2V0Rm9ybURpcmVjdGl2ZXMocm91dGVDb21wb25lbnQpIHx8IFtdO1xuICAgIGRpcmVjdGl2ZXMucHVzaChkaXJlY3RpdmUpO1xuXG4gICAgdGhpcy5fZm9ybURpcmVjdGl2ZVN0b3JlLnNldChyb3V0ZUNvbXBvbmVudCwgZGlyZWN0aXZlcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybURpcmVjdGl2ZXMocm91dGVDb21wb25lbnQpOiBGc0Zvcm1EaXJlY3RpdmVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1EaXJlY3RpdmVTdG9yZS5nZXQocm91dGVDb21wb25lbnQpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUZvcm1EaXJlY3RpdmUocm91dGVDb21wb25lbnQpIHtcbiAgICB0aGlzLl9mb3JtRGlyZWN0aXZlU3RvcmUuZGVsZXRlKHJvdXRlQ29tcG9uZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maXJtVW5zYXZlZChcbiAgICBkaXJlY3RpdmVzOiBGc0Zvcm1EaXJlY3RpdmVbXSwgXG4gICk6IE9ic2VydmFibGU8Q29uZmlybVJlc3VsdD4ge1xuICAvLyBUT0RPIHN1cHBvcnQgZm9yIG11bHRpcGxlIGRpcmVjdGl2ZXMgcGVyIHBhZ2VcbiAgICBjb25zdCBmb3JtID0gZGlyZWN0aXZlc1swXTtcblxuICAgIGlmICghZm9ybS5jb25maXJtIHx8ICFmb3JtLm5nRm9ybS5kaXJ0eSkge1xuICAgICAgcmV0dXJuIG9mKENvbmZpcm1SZXN1bHQuUHJpc3RpbmUpO1xuICAgIH1cblxuICAgIGxldCB0aXRsZSA9ICdZb3UgSGF2ZSBVbnNhdmVkIENoYW5nZXMnO1xuICAgIGxldCBtZXNzYWdlID0gJ1doYXQgd291bGQgeW91IGxpa2UgdG8gZG8gd2l0aCB5b3VyIGNoYW5nZXM/JztcbiAgICBsZXQgc2F2ZUxhYmVsID0gJ1NhdmUgJiBDb250aW51ZSc7XG4gICAgbGV0IGRpc2NhcmRMYWJlbCA9ICdEaXNjYXJkIENoYW5nZXMgJiBDb250aW51ZSc7XG4gICAgbGV0IGNhbmNlbExhYmVsID0gJ1JldmlldyBDaGFuZ2VzJztcblxuICAgIGlmICh0eXBlb2YgZm9ybS5jb25maXJtID09PSAnb2JqZWN0Jykge1xuICAgICAgdGl0bGUgPSBmb3JtLmNvbmZpcm0udGl0bGUgfHwgdGl0bGU7XG4gICAgICBtZXNzYWdlID0gZm9ybS5jb25maXJtLm1lc3NhZ2UgfHwgbWVzc2FnZTtcbiAgICAgIHNhdmVMYWJlbCA9IGZvcm0uY29uZmlybS5zYXZlTGFiZWwgfHwgc2F2ZUxhYmVsO1xuICAgICAgZGlzY2FyZExhYmVsID0gZm9ybS5jb25maXJtLmRpc2NhcmRMYWJlbCB8fCBkaXNjYXJkTGFiZWw7XG4gICAgICBjYW5jZWxMYWJlbCA9IGZvcm0uY29uZmlybS5jYW5jZWxMYWJlbCB8fCBjYW5jZWxMYWJlbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZGlhbG9nLm9wZW4oQ29uZmlybVVuc2F2ZWRDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHNhdmVMYWJlbCxcbiAgICAgICAgZGlzY2FyZExhYmVsLFxuICAgICAgICBjYW5jZWxMYWJlbCxcbiAgICAgIH0sXG4gICAgICB3aWR0aDogJ2F1dG8nLCBcbiAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmKCFyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihDb25maXJtUmVzdWx0LlJldmlldyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgIGlmIChyZXN1bHQgPT09ICdkaXNjYXJkJykge1xuICAgICAgICAgICAgZm9ybS5yZXNldCgpO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YoQ29uZmlybVJlc3VsdC5EaXNjYXJkKTsgXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgICBmb3JtLm5nRm9ybS5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICBmb3JtLnRyaWdnZXJTdWJtaXQoeyBjb25maXJtZWQ6IHRydWUgfSk7XG4gICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICAgIGZvcm0uc3VibWl0dGVkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgICAgbWFwVG8oQ29uZmlybVJlc3VsdC5TYXZlKSxcbiAgICAgICAgICAgICAgICApLCBcbiAgICAgICAgICAgICAgZm9ybS5pbnZhbGlkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgICAgbWFwVG8oQ29uZmlybVJlc3VsdC5JbnZhbGlkKSxcbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbn1cbiJdfQ==
|