@firestitch/form 9.7.3 → 9.7.7

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.
Files changed (135) hide show
  1. package/app/components/form-dialog-actions/form-dialog-actions.component.d.ts +18 -15
  2. package/app/consts/error-messages.const.d.ts +19 -19
  3. package/app/directives/form/form.directive.d.ts +102 -100
  4. package/app/directives/form-dialog-close.directive.d.ts +9 -9
  5. package/app/directives/submit-button.directive.d.ts +28 -28
  6. package/app/directives/validators/compare.directive.d.ts +12 -12
  7. package/app/directives/validators/control.directive.d.ts +45 -45
  8. package/app/directives/validators/daterange.directive.d.ts +10 -10
  9. package/app/directives/validators/email.directive.d.ts +10 -10
  10. package/app/directives/validators/emails.directive.d.ts +10 -10
  11. package/app/directives/validators/function.directive.d.ts +11 -11
  12. package/app/directives/validators/greater.directive.d.ts +10 -10
  13. package/app/directives/validators/integer.directive.d.ts +10 -10
  14. package/app/directives/validators/lesser.directive.d.ts +10 -10
  15. package/app/directives/validators/max.directive.d.ts +10 -10
  16. package/app/directives/validators/maxlength.directive.d.ts +10 -10
  17. package/app/directives/validators/min.directive.d.ts +10 -10
  18. package/app/directives/validators/minlength.directive.d.ts +10 -10
  19. package/app/directives/validators/numeric.directive.d.ts +10 -10
  20. package/app/directives/validators/pattern.directive.d.ts +10 -10
  21. package/app/directives/validators/phone.directive.d.ts +10 -10
  22. package/app/directives/validators/required.directive.d.ts +13 -13
  23. package/app/directives/validators/url.directive.d.ts +11 -11
  24. package/app/directives/validators/validate.directive.d.ts +11 -11
  25. package/app/enums/confirm-result.d.ts +7 -7
  26. package/app/enums/form-status.d.ts +9 -9
  27. package/app/fs-form.module.d.ts +4 -4
  28. package/app/guards/form-deactivate.guard.d.ts +9 -9
  29. package/app/helpers/confirm-result-continue.d.ts +1 -1
  30. package/app/helpers/confirm-unsaved.d.ts +5 -5
  31. package/app/helpers/get-form-errors.d.ts +2 -2
  32. package/app/helpers/index.d.ts +2 -2
  33. package/app/helpers/is-enabled.d.ts +1 -1
  34. package/app/interfaces/async-validator.d.ts +14 -14
  35. package/app/interfaces/confirm-config.d.ts +7 -7
  36. package/app/interfaces/confirm-tab-group.d.ts +10 -10
  37. package/app/interfaces/form-deactivate.d.ts +4 -4
  38. package/app/interfaces/index.d.ts +4 -4
  39. package/app/interfaces/submit-event.d.ts +5 -5
  40. package/app/interfaces/submitted-event.d.ts +6 -6
  41. package/app/interfaces/validator.d.ts +13 -13
  42. package/app/providers/validate-messages.provider.d.ts +25 -25
  43. package/app/services/fsform.service.d.ts +7 -7
  44. package/app/validators/validators.d.ts +12 -12
  45. package/bundles/firestitch-form.umd.js +2300 -2267
  46. package/bundles/firestitch-form.umd.js.map +1 -1
  47. package/bundles/firestitch-form.umd.min.js +2 -2
  48. package/bundles/firestitch-form.umd.min.js.map +1 -1
  49. package/esm2015/app/components/form-dialog-actions/form-dialog-actions.component.js +93 -67
  50. package/esm2015/app/consts/error-messages.const.js +19 -19
  51. package/esm2015/app/directives/form/form.directive.js +665 -656
  52. package/esm2015/app/directives/form-dialog-close.directive.js +32 -32
  53. package/esm2015/app/directives/submit-button.directive.js +137 -137
  54. package/esm2015/app/directives/validators/compare.directive.js +48 -48
  55. package/esm2015/app/directives/validators/control.directive.js +272 -272
  56. package/esm2015/app/directives/validators/daterange.directive.js +40 -40
  57. package/esm2015/app/directives/validators/email.directive.js +40 -40
  58. package/esm2015/app/directives/validators/emails.directive.js +40 -40
  59. package/esm2015/app/directives/validators/function.directive.js +30 -30
  60. package/esm2015/app/directives/validators/greater.directive.js +39 -39
  61. package/esm2015/app/directives/validators/integer.directive.js +40 -40
  62. package/esm2015/app/directives/validators/lesser.directive.js +39 -39
  63. package/esm2015/app/directives/validators/max.directive.js +35 -35
  64. package/esm2015/app/directives/validators/maxlength.directive.js +34 -34
  65. package/esm2015/app/directives/validators/min.directive.js +35 -35
  66. package/esm2015/app/directives/validators/minlength.directive.js +34 -34
  67. package/esm2015/app/directives/validators/numeric.directive.js +40 -40
  68. package/esm2015/app/directives/validators/pattern.directive.js +34 -34
  69. package/esm2015/app/directives/validators/phone.directive.js +40 -40
  70. package/esm2015/app/directives/validators/required.directive.js +72 -72
  71. package/esm2015/app/directives/validators/url.directive.js +48 -48
  72. package/esm2015/app/directives/validators/validate.directive.js +30 -30
  73. package/esm2015/app/enums/confirm-result.js +8 -8
  74. package/esm2015/app/enums/form-status.js +10 -10
  75. package/esm2015/app/fs-form.module.js +106 -106
  76. package/esm2015/app/guards/form-deactivate.guard.js +43 -43
  77. package/esm2015/app/helpers/confirm-result-continue.js +4 -4
  78. package/esm2015/app/helpers/confirm-unsaved.js +70 -70
  79. package/esm2015/app/helpers/get-form-errors.js +24 -24
  80. package/esm2015/app/helpers/index.js +2 -2
  81. package/esm2015/app/helpers/is-enabled.js +3 -3
  82. package/esm2015/app/providers/validate-messages.provider.js +10 -10
  83. package/esm2015/app/services/fsform.service.js +25 -25
  84. package/esm2015/app/validators/validators.js +96 -96
  85. package/esm2015/firestitch-form.js +27 -28
  86. package/esm2015/public_api.js +13 -13
  87. package/esm5/app/components/form-dialog-actions/form-dialog-actions.component.js +96 -69
  88. package/esm5/app/consts/error-messages.const.js +19 -19
  89. package/esm5/app/directives/form/form.directive.js +706 -697
  90. package/esm5/app/directives/form-dialog-close.directive.js +33 -33
  91. package/esm5/app/directives/submit-button.directive.js +143 -143
  92. package/esm5/app/directives/validators/compare.directive.js +59 -59
  93. package/esm5/app/directives/validators/control.directive.js +278 -278
  94. package/esm5/app/directives/validators/daterange.directive.js +49 -49
  95. package/esm5/app/directives/validators/email.directive.js +49 -49
  96. package/esm5/app/directives/validators/emails.directive.js +49 -49
  97. package/esm5/app/directives/validators/function.directive.js +35 -35
  98. package/esm5/app/directives/validators/greater.directive.js +48 -48
  99. package/esm5/app/directives/validators/integer.directive.js +49 -49
  100. package/esm5/app/directives/validators/lesser.directive.js +48 -48
  101. package/esm5/app/directives/validators/max.directive.js +44 -44
  102. package/esm5/app/directives/validators/maxlength.directive.js +43 -43
  103. package/esm5/app/directives/validators/min.directive.js +44 -44
  104. package/esm5/app/directives/validators/minlength.directive.js +43 -43
  105. package/esm5/app/directives/validators/numeric.directive.js +49 -49
  106. package/esm5/app/directives/validators/pattern.directive.js +43 -43
  107. package/esm5/app/directives/validators/phone.directive.js +49 -49
  108. package/esm5/app/directives/validators/required.directive.js +87 -87
  109. package/esm5/app/directives/validators/url.directive.js +55 -55
  110. package/esm5/app/directives/validators/validate.directive.js +35 -35
  111. package/esm5/app/enums/confirm-result.js +8 -8
  112. package/esm5/app/enums/form-status.js +10 -10
  113. package/esm5/app/fs-form.module.js +110 -110
  114. package/esm5/app/guards/form-deactivate.guard.js +44 -44
  115. package/esm5/app/helpers/confirm-result-continue.js +4 -4
  116. package/esm5/app/helpers/confirm-unsaved.js +70 -70
  117. package/esm5/app/helpers/get-form-errors.js +27 -27
  118. package/esm5/app/helpers/index.js +2 -2
  119. package/esm5/app/helpers/is-enabled.js +3 -3
  120. package/esm5/app/providers/validate-messages.provider.js +11 -11
  121. package/esm5/app/services/fsform.service.js +26 -26
  122. package/esm5/app/validators/validators.js +101 -101
  123. package/esm5/firestitch-form.js +27 -28
  124. package/esm5/public_api.js +13 -13
  125. package/fesm2015/firestitch-form.js +2075 -2042
  126. package/fesm2015/firestitch-form.js.map +1 -1
  127. package/fesm5/firestitch-form.js +2304 -2270
  128. package/fesm5/firestitch-form.js.map +1 -1
  129. package/firestitch-form.d.ts +26 -27
  130. package/firestitch-form.metadata.json +1 -1
  131. package/package.json +1 -1
  132. package/public_api.d.ts +12 -12
  133. package/app/components/form-dialog-actions/index.d.ts +0 -1
  134. package/esm2015/app/components/form-dialog-actions/index.js +0 -2
  135. package/esm5/app/components/form-dialog-actions/index.js +0 -2
@@ -1,44 +1,44 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { FsPrompt } from '@firestitch/prompt';
4
- import { of } from 'rxjs';
5
- import { FsFormDirective } from '../directives/form/form.directive';
6
- import { confirmUnsaved } from '../helpers/confirm-unsaved';
7
- import { map } from 'rxjs/operators';
8
- import { confirmResultContinue } from '../helpers';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@firestitch/prompt";
11
- let FormDeactivateGuard = class FormDeactivateGuard {
12
- constructor(_prompt) {
13
- this._prompt = _prompt;
14
- }
15
- canDeactivate(directive) {
16
- if (!('getForm' in directive)) {
17
- const error = `Directive ${directive.constructor.name} does not property implement interface FormDeactivate`;
18
- console.error(error);
19
- return of(true);
20
- }
21
- const form = directive.getForm();
22
- if (!(form instanceof FsFormDirective)) {
23
- const error = `Directive ${directive.constructor.name}.getForm() does not return a valid FsFormDirective`;
24
- console.error(error);
25
- return of(true);
26
- }
27
- return confirmUnsaved(form, this._prompt)
28
- .pipe(map((result) => {
29
- return confirmResultContinue(result);
30
- }));
31
- }
32
- };
33
- FormDeactivateGuard.ctorParameters = () => [
34
- { type: FsPrompt }
35
- ];
36
- FormDeactivateGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormDeactivateGuard_Factory() { return new FormDeactivateGuard(i0.ɵɵinject(i1.FsPrompt)); }, token: FormDeactivateGuard, providedIn: "root" });
37
- FormDeactivateGuard = __decorate([
38
- Injectable({
39
- providedIn: 'root'
40
- }),
41
- __metadata("design:paramtypes", [FsPrompt])
42
- ], FormDeactivateGuard);
43
- export { FormDeactivateGuard };
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { FsPrompt } from '@firestitch/prompt';
4
+ import { of } from 'rxjs';
5
+ import { FsFormDirective } from '../directives/form/form.directive';
6
+ import { confirmUnsaved } from '../helpers/confirm-unsaved';
7
+ import { map } from 'rxjs/operators';
8
+ import { confirmResultContinue } from '../helpers';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@firestitch/prompt";
11
+ let FormDeactivateGuard = class FormDeactivateGuard {
12
+ constructor(_prompt) {
13
+ this._prompt = _prompt;
14
+ }
15
+ canDeactivate(directive) {
16
+ if (!('getForm' in directive)) {
17
+ const error = `Directive ${directive.constructor.name} does not property implement interface FormDeactivate`;
18
+ console.error(error);
19
+ return of(true);
20
+ }
21
+ const form = directive.getForm();
22
+ if (!(form instanceof FsFormDirective)) {
23
+ const error = `Directive ${directive.constructor.name}.getForm() does not return a valid FsFormDirective`;
24
+ console.error(error);
25
+ return of(true);
26
+ }
27
+ return confirmUnsaved(form, this._prompt)
28
+ .pipe(map((result) => {
29
+ return confirmResultContinue(result);
30
+ }));
31
+ }
32
+ };
33
+ FormDeactivateGuard.ctorParameters = () => [
34
+ { type: FsPrompt }
35
+ ];
36
+ FormDeactivateGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormDeactivateGuard_Factory() { return new FormDeactivateGuard(i0.ɵɵinject(i1.FsPrompt)); }, token: FormDeactivateGuard, providedIn: "root" });
37
+ FormDeactivateGuard = __decorate([
38
+ Injectable({
39
+ providedIn: 'root'
40
+ }),
41
+ __metadata("design:paramtypes", [FsPrompt])
42
+ ], FormDeactivateGuard);
43
+ export { FormDeactivateGuard };
44
44
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kZWFjdGl2YXRlLmd1YXJkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvZm9ybS8iLCJzb3VyY2VzIjpbImFwcC9ndWFyZHMvZm9ybS1kZWFjdGl2YXRlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBS25ELElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0lBRTlCLFlBQW9CLE9BQWlCO1FBQWpCLFlBQU8sR0FBUCxPQUFPLENBQVU7SUFBRyxDQUFDO0lBRXpDLGFBQWEsQ0FBQyxTQUF5QjtRQUVyQyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxLQUFLLEdBQUcsYUFBbUIsU0FBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLHVEQUF1RCxDQUFDO1lBQ3BILE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7UUFFRCxNQUFNLElBQUksR0FBb0IsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWxELElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxlQUFlLENBQUMsRUFBRTtZQUN0QyxNQUFNLEtBQUssR0FBRyxhQUFhLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxvREFBb0QsQ0FBQztZQUMxRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDdEMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2IsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztDQUNGLENBQUE7O1lBekI4QixRQUFROzs7QUFGMUIsbUJBQW1CO0lBSC9CLFVBQVUsQ0FBQztRQUNWLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7cUNBRzZCLFFBQVE7R0FGMUIsbUJBQW1CLENBMkIvQjtTQTNCWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZzUHJvbXB0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvcHJvbXB0JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRm9ybURlYWN0aXZhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zvcm0tZGVhY3RpdmF0ZSc7XG5pbXBvcnQgeyBjb25maXJtVW5zYXZlZCB9IGZyb20gJy4uL2hlbHBlcnMvY29uZmlybS11bnNhdmVkJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvbmZpcm1SZXN1bHRDb250aW51ZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtRGVhY3RpdmF0ZUd1YXJkIGltcGxlbWVudHMgQ2FuRGVhY3RpdmF0ZTxhbnk+IHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wcm9tcHQ6IEZzUHJvbXB0KSB7fVxuXG4gIGNhbkRlYWN0aXZhdGUoZGlyZWN0aXZlOiBGb3JtRGVhY3RpdmF0ZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgaWYgKCEoJ2dldEZvcm0nIGluIGRpcmVjdGl2ZSkpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gYERpcmVjdGl2ZSAkeyg8YW55PmRpcmVjdGl2ZSkuY29uc3RydWN0b3IubmFtZX0gZG9lcyBub3QgcHJvcGVydHkgaW1wbGVtZW50IGludGVyZmFjZSBGb3JtRGVhY3RpdmF0ZWA7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtOiBGc0Zvcm1EaXJlY3RpdmUgPSBkaXJlY3RpdmUuZ2V0Rm9ybSgpO1xuXG4gICAgaWYgKCEoZm9ybSBpbnN0YW5jZW9mIEZzRm9ybURpcmVjdGl2ZSkpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gYERpcmVjdGl2ZSAke2RpcmVjdGl2ZS5jb25zdHJ1Y3Rvci5uYW1lfS5nZXRGb3JtKCkgZG9lcyBub3QgcmV0dXJuIGEgdmFsaWQgRnNGb3JtRGlyZWN0aXZlYDtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb25maXJtVW5zYXZlZChmb3JtLCB0aGlzLl9wcm9tcHQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICByZXR1cm4gY29uZmlybVJlc3VsdENvbnRpbnVlKHJlc3VsdCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
- import { ConfirmResult } from '../enums/confirm-result';
2
- export function confirmResultContinue(result) {
3
- return result === ConfirmResult.Discard || result === ConfirmResult.Save || result === ConfirmResult.Pristine;
4
- }
1
+ import { ConfirmResult } from '../enums/confirm-result';
2
+ export function confirmResultContinue(result) {
3
+ return result === ConfirmResult.Discard || result === ConfirmResult.Save || result === ConfirmResult.Pristine;
4
+ }
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1yZXN1bHQtY29udGludWUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9mb3JtLyIsInNvdXJjZXMiOlsiYXBwL2hlbHBlcnMvY29uZmlybS1yZXN1bHQtY29udGludWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxNQUFNO0lBQzFDLE9BQU8sTUFBTSxLQUFLLGFBQWEsQ0FBQyxPQUFPLElBQUksTUFBTSxLQUFLLGFBQWEsQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLGFBQWEsQ0FBQyxRQUFRLENBQUM7QUFDaEgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpcm1SZXN1bHQgfSBmcm9tICcuLi9lbnVtcy9jb25maXJtLXJlc3VsdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maXJtUmVzdWx0Q29udGludWUocmVzdWx0KSB7XG4gIHJldHVybiByZXN1bHQgPT09IENvbmZpcm1SZXN1bHQuRGlzY2FyZCB8fCByZXN1bHQgPT09IENvbmZpcm1SZXN1bHQuU2F2ZSB8fCByZXN1bHQgPT09IENvbmZpcm1SZXN1bHQuUHJpc3RpbmU7XG59XG4iXX0=
@@ -1,70 +1,70 @@
1
- import { Observable } from 'rxjs';
2
- import { first } from 'rxjs/operators';
3
- import { ConfirmResult } from '../enums/confirm-result';
4
- export function confirmUnsaved(form, prompt) {
5
- return new Observable(observer => {
6
- if (!form.confirm || !form.ngForm.dirty) {
7
- observer.next(ConfirmResult.Pristine);
8
- observer.complete();
9
- return;
10
- }
11
- let title = 'You Have Unsaved Changes';
12
- let message = 'What would you like to do with your changes?';
13
- let saveLabel = 'Save & Continue';
14
- let discardLabel = 'Discard Changes & Continue';
15
- let cancelLabel = 'Review Changes';
16
- if (typeof form.confirm === 'object') {
17
- title = form.confirm.title || title;
18
- message = form.confirm.message || message;
19
- saveLabel = form.confirm.saveLabel || saveLabel;
20
- discardLabel = form.confirm.discardLabel || discardLabel;
21
- cancelLabel = form.confirm.cancelLabel || cancelLabel;
22
- }
23
- prompt.confirm({
24
- title: title,
25
- template: message,
26
- dialogConfig: { width: 'auto' },
27
- buttons: [
28
- {
29
- label: saveLabel,
30
- color: 'primary',
31
- value: 'save'
32
- },
33
- {
34
- label: discardLabel,
35
- value: 'discard'
36
- },
37
- {
38
- label: cancelLabel,
39
- cancel: true
40
- }
41
- ]
42
- }).subscribe(value => {
43
- if (value === 'discard') {
44
- observer.next(ConfirmResult.Discard);
45
- observer.complete();
46
- form.reset();
47
- }
48
- if (value === 'save') {
49
- form.submitted
50
- .pipe(first())
51
- .subscribe(() => {
52
- observer.next(ConfirmResult.Save);
53
- observer.complete();
54
- });
55
- form.invalid
56
- .pipe(first())
57
- .subscribe(() => {
58
- observer.next(ConfirmResult.Invalid);
59
- observer.complete();
60
- });
61
- form.ngForm.control.markAsPristine();
62
- form.ngForm.ngSubmit.emit();
63
- }
64
- }, (error) => {
65
- observer.next(ConfirmResult.Review);
66
- observer.complete();
67
- });
68
- });
69
- }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS11bnNhdmVkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvZm9ybS8iLCJzb3VyY2VzIjpbImFwcC9oZWxwZXJzL2NvbmZpcm0tdW5zYXZlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFxQixFQUFFLE1BQWdCO0lBQ3BFLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTztTQUNSO1FBRUQsSUFBSSxLQUFLLEdBQUcsMEJBQTBCLENBQUM7UUFDdkMsSUFBSSxPQUFPLEdBQUcsOENBQThDLENBQUM7UUFDN0QsSUFBSSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDbEMsSUFBSSxZQUFZLEdBQUcsNEJBQTRCLENBQUM7UUFDaEQsSUFBSSxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7UUFFbkMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQ3BDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7WUFDcEMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztZQUMxQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDO1lBQ2hELFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUM7WUFDekQsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQztTQUN2RDtRQUVELE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDYixLQUFLLEVBQUUsS0FBSztZQUNaLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDL0IsT0FBTyxFQUFFO2dCQUNQO29CQUNFLEtBQUssRUFBRSxTQUFTO29CQUNoQixLQUFLLEVBQUUsU0FBUztvQkFDaEIsS0FBSyxFQUFFLE1BQU07aUJBQ2Q7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLFlBQVk7b0JBQ25CLEtBQUssRUFBRSxTQUFTO2lCQUNqQjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsV0FBVztvQkFDbEIsTUFBTSxFQUFFLElBQUk7aUJBQ2I7YUFDRjtTQUNGLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFFbkIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO2dCQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZDtZQUVELElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTtnQkFFcEIsSUFBSSxDQUFDLFNBQVM7cUJBQ2IsSUFBSSxDQUNILEtBQUssRUFBRSxDQUNSO3FCQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLE9BQU87cUJBQ1gsSUFBSSxDQUNILEtBQUssRUFBRSxDQUNSO3FCQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3JDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzdCO1FBRUgsQ0FBQyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDaEIsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnNGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9mb3JtL2Zvcm0uZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbmZpcm1SZXN1bHQgfSBmcm9tICcuLi9lbnVtcy9jb25maXJtLXJlc3VsdCc7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpcm1VbnNhdmVkKGZvcm06IEZzRm9ybURpcmVjdGl2ZSwgcHJvbXB0OiBGc1Byb21wdCk6IE9ic2VydmFibGU8Q29uZmlybVJlc3VsdD4ge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuXG4gICAgaWYgKCFmb3JtLmNvbmZpcm0gfHwgIWZvcm0ubmdGb3JtLmRpcnR5KSB7XG4gICAgICBvYnNlcnZlci5uZXh0KENvbmZpcm1SZXN1bHQuUHJpc3RpbmUpO1xuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdGl0bGUgPSAnWW91IEhhdmUgVW5zYXZlZCBDaGFuZ2VzJztcbiAgICBsZXQgbWVzc2FnZSA9ICdXaGF0IHdvdWxkIHlvdSBsaWtlIHRvIGRvIHdpdGggeW91ciBjaGFuZ2VzPyc7XG4gICAgbGV0IHNhdmVMYWJlbCA9ICdTYXZlICYgQ29udGludWUnO1xuICAgIGxldCBkaXNjYXJkTGFiZWwgPSAnRGlzY2FyZCBDaGFuZ2VzICYgQ29udGludWUnO1xuICAgIGxldCBjYW5jZWxMYWJlbCA9ICdSZXZpZXcgQ2hhbmdlcyc7XG5cbiAgICBpZiAodHlwZW9mIGZvcm0uY29uZmlybSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRpdGxlID0gZm9ybS5jb25maXJtLnRpdGxlIHx8IHRpdGxlO1xuICAgICAgbWVzc2FnZSA9IGZvcm0uY29uZmlybS5tZXNzYWdlIHx8IG1lc3NhZ2U7XG4gICAgICBzYXZlTGFiZWwgPSBmb3JtLmNvbmZpcm0uc2F2ZUxhYmVsIHx8IHNhdmVMYWJlbDtcbiAgICAgIGRpc2NhcmRMYWJlbCA9IGZvcm0uY29uZmlybS5kaXNjYXJkTGFiZWwgfHwgZGlzY2FyZExhYmVsO1xuICAgICAgY2FuY2VsTGFiZWwgPSBmb3JtLmNvbmZpcm0uY2FuY2VsTGFiZWwgfHwgY2FuY2VsTGFiZWw7XG4gICAgfVxuXG4gICAgcHJvbXB0LmNvbmZpcm0oe1xuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgdGVtcGxhdGU6IG1lc3NhZ2UsXG4gICAgICBkaWFsb2dDb25maWc6IHsgd2lkdGg6ICdhdXRvJyB9LFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IHNhdmVMYWJlbCxcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgIHZhbHVlOiAnc2F2ZSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiBkaXNjYXJkTGFiZWwsXG4gICAgICAgICAgdmFsdWU6ICdkaXNjYXJkJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IGNhbmNlbExhYmVsLFxuICAgICAgICAgIGNhbmNlbDogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcblxuICAgICAgaWYgKHZhbHVlID09PSAnZGlzY2FyZCcpIHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChDb25maXJtUmVzdWx0LkRpc2NhcmQpO1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICBmb3JtLnJlc2V0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3NhdmUnKSB7XG5cbiAgICAgICAgZm9ybS5zdWJtaXR0ZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoQ29uZmlybVJlc3VsdC5TYXZlKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3JtLmludmFsaWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoQ29uZmlybVJlc3VsdC5JbnZhbGlkKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3JtLm5nRm9ybS5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIGZvcm0ubmdGb3JtLm5nU3VibWl0LmVtaXQoKTtcbiAgICAgIH1cblxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICBvYnNlcnZlci5uZXh0KENvbmZpcm1SZXN1bHQuUmV2aWV3KTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl19
1
+ import { Observable } from 'rxjs';
2
+ import { first } from 'rxjs/operators';
3
+ import { ConfirmResult } from '../enums/confirm-result';
4
+ export function confirmUnsaved(form, prompt) {
5
+ return new Observable(observer => {
6
+ if (!form.confirm || !form.ngForm.dirty) {
7
+ observer.next(ConfirmResult.Pristine);
8
+ observer.complete();
9
+ return;
10
+ }
11
+ let title = 'You Have Unsaved Changes';
12
+ let message = 'What would you like to do with your changes?';
13
+ let saveLabel = 'Save & Continue';
14
+ let discardLabel = 'Discard Changes & Continue';
15
+ let cancelLabel = 'Review Changes';
16
+ if (typeof form.confirm === 'object') {
17
+ title = form.confirm.title || title;
18
+ message = form.confirm.message || message;
19
+ saveLabel = form.confirm.saveLabel || saveLabel;
20
+ discardLabel = form.confirm.discardLabel || discardLabel;
21
+ cancelLabel = form.confirm.cancelLabel || cancelLabel;
22
+ }
23
+ prompt.confirm({
24
+ title: title,
25
+ template: message,
26
+ dialogConfig: { width: 'auto' },
27
+ buttons: [
28
+ {
29
+ label: saveLabel,
30
+ color: 'primary',
31
+ value: 'save'
32
+ },
33
+ {
34
+ label: discardLabel,
35
+ value: 'discard'
36
+ },
37
+ {
38
+ label: cancelLabel,
39
+ cancel: true
40
+ }
41
+ ]
42
+ }).subscribe((value) => {
43
+ if (value === 'discard') {
44
+ observer.next(ConfirmResult.Discard);
45
+ observer.complete();
46
+ form.reset();
47
+ }
48
+ if (value === 'save') {
49
+ form.submitted
50
+ .pipe(first())
51
+ .subscribe(() => {
52
+ observer.next(ConfirmResult.Save);
53
+ observer.complete();
54
+ });
55
+ form.invalid
56
+ .pipe(first())
57
+ .subscribe(() => {
58
+ observer.next(ConfirmResult.Invalid);
59
+ observer.complete();
60
+ });
61
+ form.ngForm.control.markAsPristine();
62
+ form.ngForm.ngSubmit.emit();
63
+ }
64
+ }, (error) => {
65
+ observer.next(ConfirmResult.Review);
66
+ observer.complete();
67
+ });
68
+ });
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS11bnNhdmVkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvZm9ybS8iLCJzb3VyY2VzIjpbImFwcC9oZWxwZXJzL2NvbmZpcm0tdW5zYXZlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFxQixFQUFFLE1BQWdCO0lBQ3BFLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTztTQUNSO1FBRUQsSUFBSSxLQUFLLEdBQUcsMEJBQTBCLENBQUM7UUFDdkMsSUFBSSxPQUFPLEdBQUcsOENBQThDLENBQUM7UUFDN0QsSUFBSSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDbEMsSUFBSSxZQUFZLEdBQUcsNEJBQTRCLENBQUM7UUFDaEQsSUFBSSxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7UUFFbkMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQ3BDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7WUFDcEMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztZQUMxQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDO1lBQ2hELFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUM7WUFDekQsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQztTQUN2RDtRQUVELE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDYixLQUFLLEVBQUUsS0FBSztZQUNaLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDL0IsT0FBTyxFQUFFO2dCQUNQO29CQUNFLEtBQUssRUFBRSxTQUFTO29CQUNoQixLQUFLLEVBQUUsU0FBUztvQkFDaEIsS0FBSyxFQUFFLE1BQU07aUJBQ2Q7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLFlBQVk7b0JBQ25CLEtBQUssRUFBRSxTQUFTO2lCQUNqQjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsV0FBVztvQkFDbEIsTUFBTSxFQUFFLElBQUk7aUJBQ2I7YUFDRjtTQUNGLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUVyQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7Z0JBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1lBRUQsSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO2dCQUVwQixJQUFJLENBQUMsU0FBUztxQkFDYixJQUFJLENBQ0gsS0FBSyxFQUFFLENBQ1I7cUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDZCxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsT0FBTztxQkFDWCxJQUFJLENBQ0gsS0FBSyxFQUFFLENBQ1I7cUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDZCxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDckMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDN0I7UUFFSCxDQUFDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNoQixRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29uZmlybVJlc3VsdCB9IGZyb20gJy4uL2VudW1zL2NvbmZpcm0tcmVzdWx0JztcblxuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlybVVuc2F2ZWQoZm9ybTogRnNGb3JtRGlyZWN0aXZlLCBwcm9tcHQ6IEZzUHJvbXB0KTogT2JzZXJ2YWJsZTxDb25maXJtUmVzdWx0PiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG5cbiAgICBpZiAoIWZvcm0uY29uZmlybSB8fCAhZm9ybS5uZ0Zvcm0uZGlydHkpIHtcbiAgICAgIG9ic2VydmVyLm5leHQoQ29uZmlybVJlc3VsdC5QcmlzdGluZSk7XG4gICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB0aXRsZSA9ICdZb3UgSGF2ZSBVbnNhdmVkIENoYW5nZXMnO1xuICAgIGxldCBtZXNzYWdlID0gJ1doYXQgd291bGQgeW91IGxpa2UgdG8gZG8gd2l0aCB5b3VyIGNoYW5nZXM/JztcbiAgICBsZXQgc2F2ZUxhYmVsID0gJ1NhdmUgJiBDb250aW51ZSc7XG4gICAgbGV0IGRpc2NhcmRMYWJlbCA9ICdEaXNjYXJkIENoYW5nZXMgJiBDb250aW51ZSc7XG4gICAgbGV0IGNhbmNlbExhYmVsID0gJ1JldmlldyBDaGFuZ2VzJztcblxuICAgIGlmICh0eXBlb2YgZm9ybS5jb25maXJtID09PSAnb2JqZWN0Jykge1xuICAgICAgdGl0bGUgPSBmb3JtLmNvbmZpcm0udGl0bGUgfHwgdGl0bGU7XG4gICAgICBtZXNzYWdlID0gZm9ybS5jb25maXJtLm1lc3NhZ2UgfHwgbWVzc2FnZTtcbiAgICAgIHNhdmVMYWJlbCA9IGZvcm0uY29uZmlybS5zYXZlTGFiZWwgfHwgc2F2ZUxhYmVsO1xuICAgICAgZGlzY2FyZExhYmVsID0gZm9ybS5jb25maXJtLmRpc2NhcmRMYWJlbCB8fCBkaXNjYXJkTGFiZWw7XG4gICAgICBjYW5jZWxMYWJlbCA9IGZvcm0uY29uZmlybS5jYW5jZWxMYWJlbCB8fCBjYW5jZWxMYWJlbDtcbiAgICB9XG5cbiAgICBwcm9tcHQuY29uZmlybSh7XG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICB0ZW1wbGF0ZTogbWVzc2FnZSxcbiAgICAgIGRpYWxvZ0NvbmZpZzogeyB3aWR0aDogJ2F1dG8nIH0sXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogc2F2ZUxhYmVsLFxuICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgdmFsdWU6ICdzYXZlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IGRpc2NhcmRMYWJlbCxcbiAgICAgICAgICB2YWx1ZTogJ2Rpc2NhcmQnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogY2FuY2VsTGFiZWwsXG4gICAgICAgICAgY2FuY2VsOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gJ2Rpc2NhcmQnKSB7XG4gICAgICAgIG9ic2VydmVyLm5leHQoQ29uZmlybVJlc3VsdC5EaXNjYXJkKTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgZm9ybS5yZXNldCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09ICdzYXZlJykge1xuXG4gICAgICAgIGZvcm0uc3VibWl0dGVkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpcnN0KClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KENvbmZpcm1SZXN1bHQuU2F2ZSk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9ybS5pbnZhbGlkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpcnN0KClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KENvbmZpcm1SZXN1bHQuSW52YWxpZCk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9ybS5uZ0Zvcm0uY29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICBmb3JtLm5nRm9ybS5uZ1N1Ym1pdC5lbWl0KCk7XG4gICAgICB9XG5cbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgb2JzZXJ2ZXIubmV4dChDb25maXJtUmVzdWx0LlJldmlldyk7XG4gICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
@@ -1,25 +1,25 @@
1
- import { FormGroup } from '@angular/forms';
2
- export function getFormErrors(control, key) {
3
- let errors = null;
4
- if (control.invalid && control.errors) {
5
- errors = {
6
- [key]: Object.assign({}, control.errors),
7
- };
8
- }
9
- if (control instanceof FormGroup) {
10
- Object.entries(control.controls)
11
- .forEach(([name, childControl]) => {
12
- const childErrors = getFormErrors(childControl, name);
13
- if (childErrors) {
14
- if (!errors) {
15
- errors = Object.assign({}, childErrors);
16
- }
17
- else {
18
- Object.assign(errors, childErrors);
19
- }
20
- }
21
- });
22
- }
23
- return errors;
24
- }
1
+ import { FormGroup } from '@angular/forms';
2
+ export function getFormErrors(control, key) {
3
+ let errors = null;
4
+ if (control.invalid && control.errors) {
5
+ errors = {
6
+ [key]: Object.assign({}, control.errors),
7
+ };
8
+ }
9
+ if (control instanceof FormGroup) {
10
+ Object.entries(control.controls)
11
+ .forEach(([name, childControl]) => {
12
+ const childErrors = getFormErrors(childControl, name);
13
+ if (childErrors) {
14
+ if (!errors) {
15
+ errors = Object.assign({}, childErrors);
16
+ }
17
+ else {
18
+ Object.assign(errors, childErrors);
19
+ }
20
+ }
21
+ });
22
+ }
23
+ return errors;
24
+ }
25
25
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWZvcm0tZXJyb3JzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvZm9ybS8iLCJzb3VyY2VzIjpbImFwcC9oZWxwZXJzL2dldC1mb3JtLWVycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5RSxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQXdCLEVBQUUsR0FBVztJQUNqRSxJQUFJLE1BQU0sR0FBNEIsSUFBSSxDQUFDO0lBRTNDLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ3JDLE1BQU0sR0FBRztZQUNQLENBQUMsR0FBRyxDQUFDLG9CQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUU7U0FDN0IsQ0FBQTtLQUNGO0lBRUQsSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUM3QixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFdEQsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDWCxNQUFNLHFCQUFRLFdBQVcsQ0FBRSxDQUFDO2lCQUM3QjtxQkFBTTtvQkFDTCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztpQkFDcEM7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1FcnJvcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBrZXk6IHN0cmluZyk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgbGV0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gIGlmIChjb250cm9sLmludmFsaWQgJiYgY29udHJvbC5lcnJvcnMpIHtcbiAgICBlcnJvcnMgPSB7XG4gICAgICBba2V5XTogeyAuLi5jb250cm9sLmVycm9ycyB9LFxuICAgIH1cbiAgfVxuXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoY29udHJvbC5jb250cm9scylcbiAgICAgIC5mb3JFYWNoKChbbmFtZSwgY2hpbGRDb250cm9sXSkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZEVycm9ycyA9IGdldEZvcm1FcnJvcnMoY2hpbGRDb250cm9sLCBuYW1lKTtcblxuICAgICAgICBpZiAoY2hpbGRFcnJvcnMpIHtcbiAgICAgICAgICBpZiAoIWVycm9ycykge1xuICAgICAgICAgICAgZXJyb3JzID0geyAuLi5jaGlsZEVycm9ycyB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGVycm9ycywgY2hpbGRFcnJvcnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICByZXR1cm4gZXJyb3JzO1xufVxuIl19
@@ -1,3 +1,3 @@
1
- export * from './confirm-result-continue';
2
- export * from './confirm-unsaved';
1
+ export * from './confirm-result-continue';
2
+ export * from './confirm-unsaved';
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9mb3JtLyIsInNvdXJjZXMiOlsiYXBwL2hlbHBlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maXJtLXJlc3VsdC1jb250aW51ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpcm0tdW5zYXZlZCc7XG5cbiJdfQ==
@@ -1,4 +1,4 @@
1
- export function isEnabled(value) {
2
- return value !== 'false' && (value || value === '');
3
- }
1
+ export function isEnabled(value) {
2
+ return value !== 'false' && (value || value === '');
3
+ }
4
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZW5hYmxlZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2Zvcm0vIiwic291cmNlcyI6WyJhcHAvaGVscGVycy9pcy1lbmFibGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBVTtJQUNsQyxPQUFPLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNFbmFibGVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9PSAnZmFsc2UnICYmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gJycpO1xufVxuIl19
@@ -1,11 +1,11 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { ERROR_MESSAGES } from '../consts/error-messages.const';
3
- export const VALIDATE_MESSAGES = new InjectionToken('fs.form.validate-messages');
4
- export const VALIDATE_MESSAGE_PROVIDER = {
5
- provide: VALIDATE_MESSAGES,
6
- useFactory: messageProviderFactory,
7
- };
8
- export function messageProviderFactory() {
9
- return Object.assign({}, ERROR_MESSAGES);
10
- }
1
+ import { InjectionToken } from '@angular/core';
2
+ import { ERROR_MESSAGES } from '../consts/error-messages.const';
3
+ export const VALIDATE_MESSAGES = new InjectionToken('fs.form.validate-messages');
4
+ export const VALIDATE_MESSAGE_PROVIDER = {
5
+ provide: VALIDATE_MESSAGES,
6
+ useFactory: messageProviderFactory,
7
+ };
8
+ export function messageProviderFactory() {
9
+ return Object.assign({}, ERROR_MESSAGES);
10
+ }
11
11
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtbWVzc2FnZXMucHJvdmlkZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9mb3JtLyIsInNvdXJjZXMiOlsiYXBwL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVoRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FDakQsMkJBQTJCLENBQzVCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFVBQVUsRUFBRSxzQkFBc0I7Q0FDbkMsQ0FBQztBQUVGLE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMseUJBQVksY0FBYyxFQUFHO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRVJST1JfTUVTU0FHRVMgfSBmcm9tICcuLi9jb25zdHMvZXJyb3ItbWVzc2FnZXMuY29uc3QnO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVEVfTUVTU0FHRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICdmcy5mb3JtLnZhbGlkYXRlLW1lc3NhZ2VzJyxcbik7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBWQUxJREFURV9NRVNTQUdFUyxcbiAgdXNlRmFjdG9yeTogbWVzc2FnZVByb3ZpZGVyRmFjdG9yeSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXNzYWdlUHJvdmlkZXJGYWN0b3J5KCkge1xuICByZXR1cm4geyAuLi5FUlJPUl9NRVNTQUdFUyB9O1xufVxuXG4iXX0=
@@ -1,26 +1,26 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { Subject } from 'rxjs';
4
- import { filter, map } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- let FsForm = class FsForm {
7
- constructor() {
8
- this._eventBus = new Subject();
9
- }
10
- broadcast(key, data) {
11
- this._eventBus.next({ key, data });
12
- }
13
- on(key) {
14
- return this._eventBus.asObservable()
15
- .pipe(filter(event => event.key === key), map(event => event.data));
16
- }
17
- };
18
- FsForm.ɵprov = i0.ɵɵdefineInjectable({ factory: function FsForm_Factory() { return new FsForm(); }, token: FsForm, providedIn: "root" });
19
- FsForm = __decorate([
20
- Injectable({
21
- providedIn: 'root',
22
- }),
23
- __metadata("design:paramtypes", [])
24
- ], FsForm);
25
- export { FsForm };
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { Subject } from 'rxjs';
4
+ import { filter, map } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ let FsForm = class FsForm {
7
+ constructor() {
8
+ this._eventBus = new Subject();
9
+ }
10
+ broadcast(key, data) {
11
+ this._eventBus.next({ key, data });
12
+ }
13
+ on(key) {
14
+ return this._eventBus.asObservable()
15
+ .pipe(filter(event => event.key === key), map(event => event.data));
16
+ }
17
+ };
18
+ FsForm.ɵprov = i0.ɵɵdefineInjectable({ factory: function FsForm_Factory() { return new FsForm(); }, token: FsForm, providedIn: "root" });
19
+ FsForm = __decorate([
20
+ Injectable({
21
+ providedIn: 'root',
22
+ }),
23
+ __metadata("design:paramtypes", [])
24
+ ], FsForm);
25
+ export { FsForm };
26
26
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnNmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9mb3JtLyIsInNvdXJjZXMiOlsiYXBwL3NlcnZpY2VzL2ZzZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFVN0MsSUFBYSxNQUFNLEdBQW5CLE1BQWEsTUFBTTtJQUdmO1FBQ0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBa0IsQ0FBQztJQUNqRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVEsRUFBRSxJQUFVO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEVBQUUsQ0FBSSxHQUFRO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTthQUNqQyxJQUFJLENBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFDbEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUM1QixDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUE7O0FBbEJZLE1BQU07SUFIbEIsVUFBVSxDQUFDO1FBQ1YsVUFBVSxFQUFFLE1BQU07S0FDbkIsQ0FBQzs7R0FDVyxNQUFNLENBa0JsQjtTQWxCWSxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW50ZXJmYWNlIEJyb2FkY2FzdEV2ZW50IHtcbiAgICBrZXk6IGFueTtcbiAgICBkYXRhPzogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnNGb3JtIHtcbiAgICBwcml2YXRlIF9ldmVudEJ1czogU3ViamVjdDxCcm9hZGNhc3RFdmVudD47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIHRoaXMuX2V2ZW50QnVzID0gbmV3IFN1YmplY3Q8QnJvYWRjYXN0RXZlbnQ+KCk7XG4gICAgfVxuXG4gICAgYnJvYWRjYXN0KGtleTogYW55LCBkYXRhPzogYW55KSB7XG4gICAgICB0aGlzLl9ldmVudEJ1cy5uZXh0KHtrZXksIGRhdGF9KTtcbiAgICB9XG5cbiAgICBvbjxUPihrZXk6IGFueSk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50QnVzLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC5rZXkgPT09IGtleSksXG4gICAgICAgICAgbWFwKGV2ZW50ID0+IDxUPmV2ZW50LmRhdGEpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -1,97 +1,97 @@
1
- import { email, isEmpty, isNumeric, phone, url } from '@firestitch/common';
2
- import { isValid } from 'date-fns';
3
- import { isObject } from 'lodash-es';
4
- import { catchError, map, take } from 'rxjs/operators';
5
- import { from, isObservable, of, throwError } from 'rxjs';
6
- export class FsValidators {
7
- static email(control) {
8
- if (!control.value || email(control.value)) {
9
- return null;
10
- }
11
- return { email: true };
12
- }
13
- static emails(control) {
14
- const model = control.value || '';
15
- const hasInvalidEmails = model
16
- .split(',')
17
- .some((part) => !email(part));
18
- return hasInvalidEmails ? { email: true } : null;
19
- }
20
- static numeric(control) {
21
- if (isEmpty(control.value) || isNumeric(control.value)) {
22
- return null;
23
- }
24
- else {
25
- return { numeric: true };
26
- }
27
- }
28
- static integer(control) {
29
- if (!control.value || String(control.value) === '' || (control.value % 1 === 0)) {
30
- return null;
31
- }
32
- else {
33
- return { integer: true };
34
- }
35
- }
36
- static phone(control) {
37
- if (!control.value || phone(control.value)) {
38
- return null;
39
- }
40
- return { phone: true };
41
- }
42
- static url(control, protocolRequired = false) {
43
- if (!control.value) {
44
- return null;
45
- }
46
- if (!url(control.value)) {
47
- return { url: true };
48
- }
49
- if (protocolRequired) {
50
- const pattern = new RegExp(/^http(s)?:\/\//gm);
51
- if (!String(control.value).match(pattern)) {
52
- return { urlProtocol: true };
53
- }
54
- }
55
- return null;
56
- }
57
- static dateRange(control) {
58
- if (!control.value) {
59
- return null;
60
- }
61
- if (isObject(control.value)) {
62
- const start = control.value.start;
63
- const end = control.value.end;
64
- if ((!start && !end) || (isValid(start) && isValid(end))) {
65
- return null;
66
- }
67
- }
68
- return { dateRange: true };
69
- }
70
- static func(control, formFunction, data) {
71
- let result;
72
- let stream$;
73
- try {
74
- result = formFunction(control, data);
75
- }
76
- catch (err) {
77
- err = err instanceof Error ? err.message : err;
78
- stream$ = throwError(err);
79
- }
80
- if (!stream$) {
81
- if (result instanceof Promise) {
82
- stream$ = from(result);
83
- }
84
- else if (isObservable(result)) {
85
- stream$ = result;
86
- }
87
- else {
88
- stream$ = of(null);
89
- }
90
- }
91
- return stream$
92
- .pipe(map(() => null), catchError((err) => {
93
- return of({ validationError: err });
94
- }), take(1));
95
- }
96
- }
1
+ import { email, isEmpty, isNumeric, phone, url } from '@firestitch/common';
2
+ import { isValid } from 'date-fns';
3
+ import { isObject } from 'lodash-es';
4
+ import { catchError, map, take } from 'rxjs/operators';
5
+ import { from, isObservable, of, throwError } from 'rxjs';
6
+ export class FsValidators {
7
+ static email(control) {
8
+ if (!control.value || email(control.value)) {
9
+ return null;
10
+ }
11
+ return { email: true };
12
+ }
13
+ static emails(control) {
14
+ const model = control.value || '';
15
+ const hasInvalidEmails = model
16
+ .split(',')
17
+ .some((part) => !email(part));
18
+ return hasInvalidEmails ? { email: true } : null;
19
+ }
20
+ static numeric(control) {
21
+ if (isEmpty(control.value) || isNumeric(control.value)) {
22
+ return null;
23
+ }
24
+ else {
25
+ return { numeric: true };
26
+ }
27
+ }
28
+ static integer(control) {
29
+ if (!control.value || String(control.value) === '' || (control.value % 1 === 0)) {
30
+ return null;
31
+ }
32
+ else {
33
+ return { integer: true };
34
+ }
35
+ }
36
+ static phone(control) {
37
+ if (!control.value || phone(control.value)) {
38
+ return null;
39
+ }
40
+ return { phone: true };
41
+ }
42
+ static url(control, protocolRequired = false) {
43
+ if (!control.value) {
44
+ return null;
45
+ }
46
+ if (!url(control.value)) {
47
+ return { url: true };
48
+ }
49
+ if (protocolRequired) {
50
+ const pattern = new RegExp(/^http(s)?:\/\//gm);
51
+ if (!String(control.value).match(pattern)) {
52
+ return { urlProtocol: true };
53
+ }
54
+ }
55
+ return null;
56
+ }
57
+ static dateRange(control) {
58
+ if (!control.value) {
59
+ return null;
60
+ }
61
+ if (isObject(control.value)) {
62
+ const start = control.value.start;
63
+ const end = control.value.end;
64
+ if ((!start && !end) || (isValid(start) && isValid(end))) {
65
+ return null;
66
+ }
67
+ }
68
+ return { dateRange: true };
69
+ }
70
+ static func(control, formFunction, data) {
71
+ let result;
72
+ let stream$;
73
+ try {
74
+ result = formFunction(control, data);
75
+ }
76
+ catch (err) {
77
+ err = err instanceof Error ? err.message : err;
78
+ stream$ = throwError(err);
79
+ }
80
+ if (!stream$) {
81
+ if (result instanceof Promise) {
82
+ stream$ = from(result);
83
+ }
84
+ else if (isObservable(result)) {
85
+ stream$ = result;
86
+ }
87
+ else {
88
+ stream$ = of(null);
89
+ }
90
+ }
91
+ return stream$
92
+ .pipe(map(() => null), catchError((err) => {
93
+ return of({ validationError: err });
94
+ }), take(1));
95
+ }
96
+ }
97
97
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2Zvcm0vIiwic291cmNlcyI6WyJhcHAvdmFsaWRhdG9ycy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEUsTUFBTSxPQUFPLFlBQVk7SUFFdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUF3QjtRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQXdCO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBRWxDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSzthQUMzQixLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWhDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElB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QyxDQUFDLEdBQUcsQ0FBQztZQUUvQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLElBQUksTUFBTSxZQUFZLE9BQU8sRUFBRTtnQkFDN0IsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUN2QjtpQkFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDL0IsT0FBTyxHQUFHLE1BQU0sQ0FBQzthQUNsQjtpQkFBTTtnQkFDTCxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BCO1NBQ0Y7UUFFRCxPQUFPLE9BQU87YUFDWCxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNmLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7SUFDTixDQUFDO0NBV0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBlbWFpbCwgaXNFbXB0eSwgaXNOdW1lcmljLCBwaG9uZSwgdXJsIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcbmltcG9ydCB7IGlzVmFsaWQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmcm9tLCBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBGc1ZhbGlkYXRvcnMge1xuXG4gIHN0YXRpYyBlbWFpbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGVtYWlsKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBlbWFpbDogdHJ1ZSB9O1xuICB9XG5cbiAgc3RhdGljIGVtYWlscyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgbW9kZWwgPSBjb250cm9sLnZhbHVlIHx8ICcnO1xuXG4gICAgY29uc3QgaGFzSW52YWxpZEVtYWlscyA9IG1vZGVsXG4gICAgICAuc3BsaXQoJywnKVxuICAgICAgLnNvbWUoKHBhcnQpID0+ICFlbWFpbChwYXJ0KSk7XG5cbiAgICByZXR1cm4gaGFzSW52YWxpZEVtYWlscyA/IHsgZW1haWw6IHRydWUgfSA6IG51bGw7XG4gIH1cblxuICBzdGF0aWMgbnVtZXJpYyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKGlzRW1wdHkoY29udHJvbC52YWx1ZSkgfHwgaXNOdW1lcmljKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgbnVtZXJpYzogdHJ1ZSB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGludGVnZXIoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBTdHJpbmcoY29udHJvbC52YWx1ZSkgPT09ICcnIHx8IChjb250cm9sLnZhbHVlICUgMSA9PT0gMCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyBpbnRlZ2VyOiB0cnVlIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgcGhvbmUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBwaG9uZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcGhvbmU6IHRydWUgfTtcbiAgfVxuXG4gIHN0YXRpYyB1cmwoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwcm90b2NvbFJlcXVpcmVkID0gZmFsc2UpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoIXVybChjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgdXJsOiB0cnVlIH07XG4gICAgfVxuXG4gICAgaWYgKHByb3RvY29sUmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKC9eaHR0cChzKT86XFwvXFwvL2dtKTtcblxuICAgICAgaWYgKCFTdHJpbmcoY29udHJvbC52YWx1ZSkubWF0Y2gocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuIHsgdXJsUHJvdG9jb2w6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBkYXRlUmFuZ2UoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghY29udHJvbC52YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0KGNvbnRyb2wudmFsdWUpKSB7XG5cbiAgICAgIGNvbnN0IHN0YXJ0ID0gY29udHJvbC52YWx1ZS5zdGFydDtcbiAgICAgIGNvbnN0IGVuZCA9IGNvbnRyb2wudmFsdWUuZW5kO1xuXG4gICAgICBpZiAoKCFzdGFydCAmJiAhZW5kKSB8fCAoaXNWYWxpZChzdGFydCkgJiYgaXNWYWxpZChlbmQpKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBkYXRlUmFuZ2U6IHRydWUgfTtcbiAgfVxuXG4gIHN0YXRpYyBmdW5jKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZm9ybUZ1bmN0aW9uLCBkYXRhOiBhbnkpIHtcbiAgICBsZXQgcmVzdWx0OiB1bmtub3duO1xuICAgIGxldCBzdHJlYW0kOiBPYnNlcnZhYmxlPHVua25vd24+XG5cbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gZm9ybUZ1bmN0aW9uKGNvbnRyb2wsIGRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZXJyID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcblxuICAgICAgc3RyZWFtJCA9IHRocm93RXJyb3IoZXJyKTtcbiAgICB9XG5cbiAgICBpZiAoIXN0cmVhbSQpIHtcbiAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHN0cmVhbSQgPSBmcm9tKHJlc3VsdClcbiAgICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgc3RyZWFtJCA9IHJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmVhbSQgPSBvZihudWxsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiBudWxsKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9mKHsgdmFsaWRhdGlvbkVycm9yOiBlcnIgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKTtcbiAgfVxuXG4gIC8vIHN0YXRpYyBjb21wYXJlKGEsIGIpOiBWYWxpZGF0b3JGbiB7XG4gIC8vICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gIC8vICAgICBpZiAoYSA9PT0gYikge1xuICAvLyAgICAgICByZXR1cm4gbnVsbDtcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIHJldHVybiB7IGNvbXBhcmU6IHRydWUgfTtcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vIH1cbn1cbiJdfQ==