@firestitch/form 9.7.7 → 12.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 +3 -0
- package/app/directives/form/form.directive.d.ts +3 -0
- package/app/directives/form-dialog-close.directive.d.ts +3 -0
- package/app/directives/submit-button.directive.d.ts +3 -0
- package/app/directives/validators/compare.directive.d.ts +3 -0
- package/app/directives/validators/control.directive.d.ts +3 -0
- package/app/directives/validators/daterange.directive.d.ts +3 -0
- package/app/directives/validators/email.directive.d.ts +3 -0
- package/app/directives/validators/emails.directive.d.ts +3 -0
- package/app/directives/validators/function.directive.d.ts +3 -0
- package/app/directives/validators/greater.directive.d.ts +3 -0
- package/app/directives/validators/integer.directive.d.ts +3 -0
- package/app/directives/validators/lesser.directive.d.ts +3 -0
- package/app/directives/validators/max.directive.d.ts +3 -0
- package/app/directives/validators/maxlength.directive.d.ts +3 -0
- package/app/directives/validators/min.directive.d.ts +3 -0
- package/app/directives/validators/minlength.directive.d.ts +3 -0
- package/app/directives/validators/numeric.directive.d.ts +3 -0
- package/app/directives/validators/pattern.directive.d.ts +3 -0
- package/app/directives/validators/phone.directive.d.ts +3 -0
- package/app/directives/validators/required.directive.d.ts +3 -0
- package/app/directives/validators/url.directive.d.ts +3 -0
- package/app/directives/validators/validate.directive.d.ts +3 -0
- package/app/fs-form.module.d.ts +31 -0
- package/app/guards/form-deactivate.guard.d.ts +3 -0
- package/app/services/fsform.service.d.ts +3 -0
- package/bundles/firestitch-form.umd.js +1113 -984
- package/bundles/firestitch-form.umd.js.map +1 -1
- package/esm2015/app/components/form-dialog-actions/form-dialog-actions.component.js +33 -40
- package/esm2015/app/consts/error-messages.const.js +1 -1
- package/esm2015/app/directives/form/form.directive.js +87 -133
- package/esm2015/app/directives/form-dialog-close.directive.js +18 -20
- package/esm2015/app/directives/submit-button.directive.js +28 -35
- package/esm2015/app/directives/validators/compare.directive.js +22 -22
- package/esm2015/app/directives/validators/control.directive.js +51 -67
- package/esm2015/app/directives/validators/daterange.directive.js +22 -22
- package/esm2015/app/directives/validators/email.directive.js +22 -22
- package/esm2015/app/directives/validators/emails.directive.js +22 -22
- package/esm2015/app/directives/validators/function.directive.js +21 -21
- package/esm2015/app/directives/validators/greater.directive.js +22 -22
- package/esm2015/app/directives/validators/integer.directive.js +22 -22
- package/esm2015/app/directives/validators/lesser.directive.js +22 -22
- package/esm2015/app/directives/validators/max.directive.js +22 -22
- package/esm2015/app/directives/validators/maxlength.directive.js +22 -22
- package/esm2015/app/directives/validators/min.directive.js +22 -22
- package/esm2015/app/directives/validators/minlength.directive.js +22 -22
- package/esm2015/app/directives/validators/numeric.directive.js +22 -22
- package/esm2015/app/directives/validators/pattern.directive.js +22 -22
- package/esm2015/app/directives/validators/phone.directive.js +22 -22
- package/esm2015/app/directives/validators/required.directive.js +26 -28
- package/esm2015/app/directives/validators/url.directive.js +24 -26
- package/esm2015/app/directives/validators/validate.directive.js +23 -21
- package/esm2015/app/enums/confirm-result.js +1 -1
- package/esm2015/app/enums/form-status.js +1 -1
- package/esm2015/app/fs-form.module.js +128 -69
- package/esm2015/app/guards/form-deactivate.guard.js +11 -15
- package/esm2015/app/helpers/confirm-result-continue.js +1 -1
- package/esm2015/app/helpers/confirm-unsaved.js +1 -1
- package/esm2015/app/helpers/get-form-errors.js +1 -1
- package/esm2015/app/helpers/index.js +1 -1
- package/esm2015/app/helpers/is-enabled.js +1 -1
- package/esm2015/app/interfaces/async-validator.js +2 -1
- package/esm2015/app/interfaces/confirm-config.js +2 -1
- package/esm2015/app/interfaces/confirm-tab-group.js +2 -1
- package/esm2015/app/interfaces/form-deactivate.js +2 -1
- package/esm2015/app/interfaces/index.js +5 -1
- package/esm2015/app/interfaces/submit-event.js +2 -1
- package/esm2015/app/interfaces/submitted-event.js +2 -1
- package/esm2015/app/interfaces/validator.js +2 -1
- package/esm2015/app/providers/validate-messages.provider.js +1 -1
- package/esm2015/app/services/fsform.service.js +11 -12
- package/esm2015/app/validators/validators.js +1 -1
- package/esm2015/firestitch-form.js +1 -23
- package/esm2015/public_api.js +22 -1
- package/fesm2015/firestitch-form.js +711 -718
- package/fesm2015/firestitch-form.js.map +1 -1
- package/firestitch-form.d.ts +1 -22
- package/package.json +7 -8
- package/public_api.d.ts +21 -0
- package/styles.scss +4 -4
- package/bundles/firestitch-form.umd.min.js +0 -16
- package/bundles/firestitch-form.umd.min.js.map +0 -1
- package/esm5/app/components/form-dialog-actions/form-dialog-actions.component.js +0 -96
- package/esm5/app/consts/error-messages.const.js +0 -20
- package/esm5/app/directives/form/form.directive.js +0 -706
- package/esm5/app/directives/form-dialog-close.directive.js +0 -34
- package/esm5/app/directives/submit-button.directive.js +0 -144
- package/esm5/app/directives/validators/compare.directive.js +0 -60
- package/esm5/app/directives/validators/control.directive.js +0 -279
- package/esm5/app/directives/validators/daterange.directive.js +0 -50
- package/esm5/app/directives/validators/email.directive.js +0 -50
- package/esm5/app/directives/validators/emails.directive.js +0 -50
- package/esm5/app/directives/validators/function.directive.js +0 -36
- package/esm5/app/directives/validators/greater.directive.js +0 -49
- package/esm5/app/directives/validators/integer.directive.js +0 -50
- package/esm5/app/directives/validators/lesser.directive.js +0 -49
- package/esm5/app/directives/validators/max.directive.js +0 -45
- package/esm5/app/directives/validators/maxlength.directive.js +0 -44
- package/esm5/app/directives/validators/min.directive.js +0 -45
- package/esm5/app/directives/validators/minlength.directive.js +0 -44
- package/esm5/app/directives/validators/numeric.directive.js +0 -50
- package/esm5/app/directives/validators/pattern.directive.js +0 -44
- package/esm5/app/directives/validators/phone.directive.js +0 -50
- package/esm5/app/directives/validators/required.directive.js +0 -88
- package/esm5/app/directives/validators/url.directive.js +0 -56
- package/esm5/app/directives/validators/validate.directive.js +0 -36
- package/esm5/app/enums/confirm-result.js +0 -9
- package/esm5/app/enums/form-status.js +0 -11
- package/esm5/app/fs-form.module.js +0 -110
- package/esm5/app/guards/form-deactivate.guard.js +0 -45
- package/esm5/app/helpers/confirm-result-continue.js +0 -5
- package/esm5/app/helpers/confirm-unsaved.js +0 -70
- package/esm5/app/helpers/get-form-errors.js +0 -28
- package/esm5/app/helpers/index.js +0 -3
- package/esm5/app/helpers/is-enabled.js +0 -4
- package/esm5/app/interfaces/async-validator.js +0 -1
- package/esm5/app/interfaces/confirm-config.js +0 -1
- package/esm5/app/interfaces/confirm-tab-group.js +0 -1
- package/esm5/app/interfaces/form-deactivate.js +0 -1
- package/esm5/app/interfaces/index.js +0 -1
- package/esm5/app/interfaces/submit-event.js +0 -1
- package/esm5/app/interfaces/submitted-event.js +0 -1
- package/esm5/app/interfaces/validator.js +0 -1
- package/esm5/app/providers/validate-messages.provider.js +0 -12
- package/esm5/app/services/fsform.service.js +0 -27
- package/esm5/app/validators/validators.js +0 -102
- package/esm5/firestitch-form.js +0 -27
- package/esm5/public_api.js +0 -14
- package/fesm5/firestitch-form.js +0 -2396
- package/fesm5/firestitch-form.js.map +0 -1
- package/firestitch-form.metadata.json +0 -1
package/firestitch-form.d.ts
CHANGED
|
@@ -1,26 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
|
+
/// <amd-module name="@firestitch/form" />
|
|
4
5
|
export * from './public_api';
|
|
5
|
-
export { FsFormDialogCloseDirective as ɵa } from './app/directives/form-dialog-close.directive';
|
|
6
|
-
export { FsSubmitButtonDirective as ɵw } from './app/directives/submit-button.directive';
|
|
7
|
-
export { FsFormCompareDirective as ɵn } from './app/directives/validators/compare.directive';
|
|
8
|
-
export { FsControlDirective as ɵb } from './app/directives/validators/control.directive';
|
|
9
|
-
export { FsFormDateRangeDirective as ɵs } from './app/directives/validators/daterange.directive';
|
|
10
|
-
export { FsFormEmailDirective as ɵk } from './app/directives/validators/email.directive';
|
|
11
|
-
export { FsFormEmailsDirective as ɵl } from './app/directives/validators/emails.directive';
|
|
12
|
-
export { FsFormFunctionDirective as ɵr } from './app/directives/validators/function.directive';
|
|
13
|
-
export { FsFormGreaterDirective as ɵt } from './app/directives/validators/greater.directive';
|
|
14
|
-
export { FsFormIntegerDirective as ɵo } from './app/directives/validators/integer.directive';
|
|
15
|
-
export { FsFormLesserDirective as ɵu } from './app/directives/validators/lesser.directive';
|
|
16
|
-
export { FsFormMaxDirective as ɵh } from './app/directives/validators/max.directive';
|
|
17
|
-
export { FsFormMaxLengthDirective as ɵj } from './app/directives/validators/maxlength.directive';
|
|
18
|
-
export { FsFormMinDirective as ɵg } from './app/directives/validators/min.directive';
|
|
19
|
-
export { FsFormMinLengthDirective as ɵi } from './app/directives/validators/minlength.directive';
|
|
20
|
-
export { FsFormNumericDirective as ɵp } from './app/directives/validators/numeric.directive';
|
|
21
|
-
export { FsFormPatternDirective as ɵq } from './app/directives/validators/pattern.directive';
|
|
22
|
-
export { FsFormPhoneDirective as ɵm } from './app/directives/validators/phone.directive';
|
|
23
|
-
export { FsFormRequiredDirective as ɵf } from './app/directives/validators/required.directive';
|
|
24
|
-
export { FsFormUrlDirective as ɵv } from './app/directives/validators/url.directive';
|
|
25
|
-
export { FsFormValidateDirective as ɵx } from './app/directives/validators/validate.directive';
|
|
26
|
-
export { VALIDATE_MESSAGES as ɵc, VALIDATE_MESSAGE_PROVIDER as ɵd, messageProviderFactory as ɵe } from './app/providers/validate-messages.provider';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@firestitch/form",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/Firestitch/ngx-form"
|
|
@@ -18,17 +18,16 @@
|
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
20
|
"@firestitch/common": ">=7.0.2",
|
|
21
|
-
"@firestitch/drawer": ">=8.3.5"
|
|
22
|
-
"tslib": "^1.10.0"
|
|
21
|
+
"@firestitch/drawer": ">=8.3.5"
|
|
23
22
|
},
|
|
24
23
|
"sideEffects": false,
|
|
25
24
|
"main": "bundles/firestitch-form.umd.js",
|
|
26
|
-
"module": "
|
|
25
|
+
"module": "fesm2015/firestitch-form.js",
|
|
27
26
|
"es2015": "fesm2015/firestitch-form.js",
|
|
28
|
-
"esm5": "esm5/firestitch-form.js",
|
|
29
27
|
"esm2015": "esm2015/firestitch-form.js",
|
|
30
|
-
"fesm5": "fesm5/firestitch-form.js",
|
|
31
28
|
"fesm2015": "fesm2015/firestitch-form.js",
|
|
32
29
|
"typings": "firestitch-form.d.ts",
|
|
33
|
-
"
|
|
34
|
-
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"tslib": "^2.2.0"
|
|
32
|
+
}
|
|
33
|
+
}
|
package/public_api.d.ts
CHANGED
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
export { FsFormModule } from './app/fs-form.module';
|
|
2
2
|
export { FsForm } from './app/services/fsform.service';
|
|
3
3
|
export { FsFormDirective } from './app/directives/form/form.directive';
|
|
4
|
+
export { FsControlDirective } from './app/directives/validators/control.directive';
|
|
5
|
+
export { FsFormRequiredDirective } from './app/directives/validators/required.directive';
|
|
6
|
+
export { FsFormMinDirective } from './app/directives/validators/min.directive';
|
|
7
|
+
export { FsFormMaxDirective } from './app/directives/validators/max.directive';
|
|
8
|
+
export { FsFormMinLengthDirective } from './app/directives/validators/minlength.directive';
|
|
9
|
+
export { FsFormMaxLengthDirective } from './app/directives/validators/maxlength.directive';
|
|
10
|
+
export { FsFormEmailDirective } from './app/directives/validators/email.directive';
|
|
11
|
+
export { FsFormEmailsDirective } from './app/directives/validators/emails.directive';
|
|
12
|
+
export { FsFormPhoneDirective } from './app/directives/validators/phone.directive';
|
|
13
|
+
export { FsFormCompareDirective } from './app/directives/validators/compare.directive';
|
|
14
|
+
export { FsFormIntegerDirective } from './app/directives/validators/integer.directive';
|
|
15
|
+
export { FsFormNumericDirective } from './app/directives/validators/numeric.directive';
|
|
16
|
+
export { FsFormPatternDirective } from './app/directives/validators/pattern.directive';
|
|
17
|
+
export { FsFormFunctionDirective } from './app/directives/validators/function.directive';
|
|
18
|
+
export { FsFormDateRangeDirective } from './app/directives/validators/daterange.directive';
|
|
19
|
+
export { FsFormGreaterDirective } from './app/directives/validators/greater.directive';
|
|
20
|
+
export { FsFormLesserDirective } from './app/directives/validators/lesser.directive';
|
|
21
|
+
export { FsFormUrlDirective } from './app/directives/validators/url.directive';
|
|
22
|
+
export { FsFormDialogCloseDirective } from './app/directives/form-dialog-close.directive';
|
|
23
|
+
export { FsSubmitButtonDirective } from './app/directives/submit-button.directive';
|
|
24
|
+
export { FsFormValidateDirective } from './app/directives/validators/validate.directive';
|
|
4
25
|
export { FsFormDialogActionsComponent } from './app/components/form-dialog-actions/form-dialog-actions.component';
|
|
5
26
|
export { FsValidators } from './app/validators/validators';
|
|
6
27
|
export { FormDeactivate } from './app/interfaces/form-deactivate';
|
package/styles.scss
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@
|
|
1
|
+
@use '~@angular/material' as mat;
|
|
2
2
|
|
|
3
3
|
.fs-form-label-required:after {
|
|
4
4
|
content: " *";
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
|
|
68
68
|
// hack for material form field
|
|
69
69
|
.mat-form-field.mat-form-field-invalid.ng-valid .mat-form-field-ripple {
|
|
70
|
-
background-color: mat-color($foreground, divider, if($is-dark-theme, 1, 0.87));
|
|
70
|
+
background-color: mat.get-color-from-palette($foreground, divider, if($is-dark-theme, 1, 0.87));
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
// hack for material form field
|
|
@@ -80,12 +80,12 @@
|
|
|
80
80
|
&.mat-button,
|
|
81
81
|
&.mat-raised-button:not([color='primary']) {
|
|
82
82
|
svg.svg-icon-process {
|
|
83
|
-
stroke: mat-color($primary);
|
|
83
|
+
stroke: mat.get-color-from-palette($primary);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
svg.svg-icon-error path,
|
|
87
87
|
svg.svg-icon-success path {
|
|
88
|
-
fill: mat-color($primary);
|
|
88
|
+
fill: mat.get-color-from-palette($primary);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms"),require("@angular/material/button"),require("@angular/material/dialog"),require("@angular/material/core"),require("@angular/material/tabs"),require("@firestitch/message"),require("@firestitch/prompt"),require("@firestitch/common"),require("@firestitch/drawer"),require("rxjs"),require("rxjs/operators"),require("lodash-es"),require("date-fns")):"function"==typeof define&&define.amd?define("@firestitch/form",["exports","@angular/core","@angular/common","@angular/forms","@angular/material/button","@angular/material/dialog","@angular/material/core","@angular/material/tabs","@firestitch/message","@firestitch/prompt","@firestitch/common","@firestitch/drawer","rxjs","rxjs/operators","lodash-es","date-fns"],e):e(((t=t||self).firestitch=t.firestitch||{},t.firestitch.form={}),t.ng.core,t.ng.common,t.ng.forms,t.ng.material.button,t.ng.material.dialog,t.ng.material.core,t.ng.material.tabs,t.message,t.prompt,t.common$1,t.drawer,t.rxjs,t.rxjs.operators,t.lodashEs,t.dateFns)}(this,(function(t,e,r,i,n,o,s,a,l,u,p,c,d,f,m,h){"use strict";
|
|
2
|
-
/*! *****************************************************************************
|
|
3
|
-
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
5
|
-
this file except in compliance with the License. You may obtain a copy of the
|
|
6
|
-
License at http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
|
|
8
|
-
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
9
|
-
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
|
10
|
-
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
|
11
|
-
MERCHANTABLITY OR NON-INFRINGEMENT.
|
|
12
|
-
|
|
13
|
-
See the Apache Version 2.0 License for specific language governing permissions
|
|
14
|
-
and limitations under the License.
|
|
15
|
-
***************************************************************************** */var g=function(t,e){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)};function y(t,e){function r(){this.constructor=t}g(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var v,b=function(){return(b=Object.assign||function(t){for(var e,r=1,i=arguments.length;r<i;r++)for(var n in e=arguments[r])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}).apply(this,arguments)};function _(t,e,r,i){var n,o=arguments.length,s=o<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,r,i);else for(var a=t.length-1;a>=0;a--)(n=t[a])&&(s=(o<3?n(s):o>3?n(e,r,s):n(e,r))||s);return o>3&&s&&Object.defineProperty(e,r,s),s}function S(t,e){return function(r,i){e(r,i,t)}}function F(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function C(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var i,n,o=r.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(i=o.next()).done;)s.push(i.value)}catch(t){n={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return s}function O(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(C(arguments[e]));return t}function M(e,r){return new d.Observable((function(i){if(!e.confirm||!e.ngForm.dirty)return i.next(t.ConfirmResult.Pristine),void i.complete();var n="You Have Unsaved Changes",o="What would you like to do with your changes?",s="Save & Continue",a="Discard Changes & Continue",l="Review Changes";"object"==typeof e.confirm&&(n=e.confirm.title||n,o=e.confirm.message||o,s=e.confirm.saveLabel||s,a=e.confirm.discardLabel||a,l=e.confirm.cancelLabel||l),r.confirm({title:n,template:o,dialogConfig:{width:"auto"},buttons:[{label:s,color:"primary",value:"save"},{label:a,value:"discard"},{label:l,cancel:!0}]}).subscribe((function(r){"discard"===r&&(i.next(t.ConfirmResult.Discard),i.complete(),e.reset()),"save"===r&&(e.submitted.pipe(f.first()).subscribe((function(){i.next(t.ConfirmResult.Save),i.complete()})),e.invalid.pipe(f.first()).subscribe((function(){i.next(t.ConfirmResult.Invalid),i.complete()})),e.ngForm.control.markAsPristine(),e.ngForm.ngSubmit.emit())}),(function(e){i.next(t.ConfirmResult.Review),i.complete()}))}))}(v=t.ConfirmResult||(t.ConfirmResult={})).Save="save",v.Discard="discard",v.Review="review",v.Invalid="invalid",v.Pristine="pristine";var j,D=function(){function t(){this.clicked$=new d.Subject,this.registered=!1,this.type="button"}return t.prototype.click=function(){this.clicked$.next()},t.prototype.ngOnDestroy=function(){this.clicked$.complete()},_([e.HostBinding("attr.type"),F("design:type",Object)],t.prototype,"type",void 0),_([e.HostListener("click",["$event.target"]),F("design:type",Function),F("design:paramtypes",[]),F("design:returntype",void 0)],t.prototype,"click",null),t=_([e.Directive({selector:"[fsFormDialogClose],[fs-form-dialog-close]"})],t)}(),I=function(){function t(){this._eventBus=new d.Subject}return t.prototype.broadcast=function(t,e){this._eventBus.next({key:t,data:e})},t.prototype.on=function(t){return this._eventBus.asObservable().pipe(f.filter((function(e){return e.key===t})),f.map((function(t){return t.data})))},t.ɵprov=e.ɵɵdefineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t=_([e.Injectable({providedIn:"root"}),F("design:paramtypes",[])],t)}();function E(e){return e===t.ConfirmResult.Discard||e===t.ConfirmResult.Save||e===t.ConfirmResult.Pristine}(j=t.FormStatus||(t.FormStatus={})).Valid="valid",j.Invalid="invalid",j.Submitting="submitting",j.Submitted="submitted",j.Error="error",j.Success="success",j.Completing="completing";var w=function(){function r(r,i,n,o,s,a,l,u){this.ngForm=r,this._form=i,this._element=n,this._message=o,this._prompt=s,this._ngZone=a,this._dialogRef=l,this._drawerRef=u,this.wrapperSelector=".fs-form-wrapper,.mat-form-field",this.messageSelector=".fs-form-message,.mat-form-field-subscript-wrapper",this.hintSelector=".fs-form-hint,.mat-form-field-hint-wrapper",this.labelSelector=".fs-form-label,.mat-form-field-label",this.autocomplete=!1,this.shortcuts=!0,this.confirm=!0,this.confirmDialog=!0,this.confirmDrawer=!0,this.confirmBrowser=!0,this.confirmTabs=!0,this.dirtySubmitButton=!0,this.successDelay=0,this.errorDelay=1e3,this.submitEvent=new e.EventEmitter,this.invalid=new e.EventEmitter,this.valid=new e.EventEmitter,this.submitted=new e.EventEmitter,this.reseted=new e.EventEmitter,this.cleared=new e.EventEmitter,this.fsformClass=!0,this._tabGroups=new e.QueryList,this._submitButtons=new e.QueryList,this._dialogBackdropEscape=!1,this._snapshot={},this._status$=new d.BehaviorSubject(t.FormStatus.Valid),this._destroy$=new d.Subject}return Object.defineProperty(r.prototype,"submitting",{get:function(){return this._status$.getValue()===t.FormStatus.Submitting},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"completing",{get:function(){return this._status$.getValue()===t.FormStatus.Completing},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"_submitEvent",{get:function(){return{ngForm:this.ngForm,submitter:this._submitter}},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"_formValidState$",{get:function(){this._form.broadcast("valid",this._submitEvent),this.submitEvent.emit(this._submitEvent),this.valid.emit(this._submitEvent);var t={ngForm:this.ngForm,submitter:this._submitter,response:null};if(!this.submit)return d.of(t);var e=this.submit(this._submitEvent);return d.isObservable(e)?e.pipe(f.map((function(e){return t.response=e,t}))):d.of(t)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"_formInvalidState$",{get:function(){this._form.broadcast("invalid",this._submitEvent),this.invalid&&this.invalid.emit(this._submitEvent);this._message.error("Changes not saved. Please review errors highlighted in red.",{mode:l.MessageMode.Toast});var t=this._element.nativeElement.querySelector(".ng-invalid");return t&&t.scrollIntoView({behavior:"smooth",block:"center"}),d.throwError("Form validation error")},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"_submitter",{get:function(){return this._activeSubmitButton?this._activeSubmitButton.name:null},enumerable:!0,configurable:!0}),r.prototype.ngOnInit=function(){this._registerConfirmDialogBackdropEscape(),this._listenHotKeys(),this._listenWindowClose(),this._listenSubmit(),this.autocomplete||this._registerAutocomplete()},r.prototype.ngOnChanges=function(t){t.confirm&&this._updateDirtySubmitButtons()},r.prototype.ngAfterContentInit=function(){this._registerConfirm(),this._registerConfirmDialogClose(),this._registerConfirmDrawerClose(),this._registerConfirmTabs(),this._registerDrawerClose(),this._registerDirtySubmitButton()},r.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},r.prototype.createSnapshot=function(){this._snapshot=this.ngForm.value},r.prototype.reset=function(){var t=this;this.ngForm.resetForm(),Object.keys(this.ngForm.controls).forEach((function(e){t.ngForm.controls[e].reset(t._snapshot[e])})),this.reseted.emit()},r.prototype.clear=function(){this.ngForm.resetForm(),this.cleared.emit()},r.prototype.dirty=function(){this.ngForm.form.markAsDirty(),this._updateDirtySubmitButtons()},r.prototype.triggerSubmit=function(){this.ngForm.ngSubmit.next()},r.prototype.triggerConfirm=function(){var t=this;return(this.submitting?this.submitted.asObservable():d.of({})).pipe(f.take(1),f.mergeMap((function(){return M(t,t._prompt)})))},r.prototype.enable=function(){this.ngForm.control.enable(),this._updateDirtySubmitButtons()},r.prototype.disable=function(){this.ngForm.control.disable(),this._submitButtons.forEach((function(t){t.disable()}))},r.prototype.addSubmitButton=function(t){this._submitButtons.reset(O(this._submitButtons.toArray(),[t]))},r.prototype.removeSubmitButton=function(t){this._submitButtons.reset(O(this._submitButtons.toArray().filter((function(e){return t!==e}))))},r.prototype._listenSubmit=function(){var e=this;this.ngForm.ngSubmit.pipe(f.tap((function(t){null==t||t.preventDefault()})),f.filter((function(){return[t.FormStatus.Valid,t.FormStatus.Invalid].includes(e._status$.getValue())})),f.tap((function(){return e._markControlsAsTouchedAndUpdateValidity()})),f.tap((function(){return e._broadcastSubmittingEvents()})),f.switchMap((function(){return e._waitUntilStatusPending()})),f.tap((function(){return e._setupActiveSubmitButton()})),f.mergeMap((function(){return"INVALID"===e.ngForm.status?e._formInvalidState$:e._formValidState$})),f.catchError((function(t,r){return e._handleError(t),r})),f.tap((function(t){e._completeSubmit(!0,t)})),f.takeUntil(this._destroy$)).subscribe((function(){}))},r.prototype._listenWindowClose=function(){var t=this;d.fromEvent(window,"beforeunload").pipe(f.takeUntil(this._destroy$)).subscribe((function(e){t.confirm&&t.confirmBrowser&&t.ngForm.dirty&&(e.returnValue=!1)}))},r.prototype._listenHotKeys=function(){var t=this;this._ngZone.runOutsideAngular((function(){d.fromEvent(document,"keydown").pipe(f.takeUntil(t._destroy$)).subscribe((function(e){if(t._dialogBackdropEscape&&"Escape"===e.code){var r=document.getElementById(t._dialogRef.id),i=e.composedPath();i&&i.forEach((function(e){r===e&&t._ngZone.run((function(){t._formClose()}))}))}(e.ctrlKey||e.metaKey)&&"KeyS"===e.code&&(e.preventDefault(),t.shortcuts&&t._elementInForm(document.activeElement)&&t.ngForm.ngSubmit.next())}))}))},r.prototype._formClose=function(){var e=this;this.confirm&&this.confirmDialog?this.triggerConfirm().pipe(f.filter((function(t){return E(t)})),f.switchMap((function(r){return r===t.ConfirmResult.Pristine||r===t.ConfirmResult.Discard?d.of(null):e.submitted.asObservable()})),f.takeUntil(this._destroy$)).subscribe((function(t){e._dialogRef.close(null==t?void 0:t.response)})):this._dialogRef.close(null)},r.prototype._registerDialogClose=function(t){var e=this;t.registered||(t.registered=!0,t.clicked$.pipe(f.takeUntil(this._destroy$)).subscribe((function(){e._formClose()})))},r.prototype._getActiveButton=function(){var t=this._submitButtons.find((function(t){return t.active}));return t||this._submitButtons.first},r.prototype._elementInForm=function(t){return!!t.isSameNode(this._element.nativeElement)||!!t.parentElement&&this._elementInForm(t.parentElement)},r.prototype._completeSubmit=function(e,r){var i=this;e?(this.ngForm.control.markAsPristine(),this.createSnapshot(),this.submitted.emit(r)):this._resetButtons(),this._activeSubmitButton&&(e?this._activeSubmitButton.success():this._activeSubmitButton.error()),this._status$.next(t.FormStatus.Submitted),e?this._status$.next(t.FormStatus.Success):this._status$.next(t.FormStatus.Error),this._status$.next(t.FormStatus.Completing);var n=e?this.successDelay:this.errorDelay;d.of(!0).pipe(f.delay(n),f.first(),f.takeUntil(this._destroy$)).subscribe((function(){"VALID"===i.ngForm.form.status?i._status$.next(t.FormStatus.Valid):i._status$.next(t.FormStatus.Invalid),i._resetButtons(),i._updateDirtySubmitButtons()}))},r.prototype._resetButtons=function(){this._submitButtons.forEach((function(t){t.reset()}))},r.prototype._registerConfirm=function(){var t=this;this.ngForm.form.valueChanges.pipe(f.takeUntil(this._destroy$)).subscribe((function(e){if(t.confirm){var r=Object.keys(t._snapshot);Object.keys(e).forEach((function(i){-1===r.indexOf(i)&&(t._snapshot[i]=e[i])}))}}))},r.prototype._registerDrawerClose=function(){var e=this;this._drawerRef&&this._drawerRef.closeStart$.pipe(f.takeUntil(this._destroy$)).subscribe((function(r){e.submitting?e._status$.pipe(f.filter((function(e){return e===t.FormStatus.Success||e===t.FormStatus.Error})),f.takeUntil(e._destroy$)).subscribe((function(e){e===t.FormStatus.Success?(r.next(),r.complete()):r.error()})):(r.next(),r.complete())}))},r.prototype._registerConfirmDrawerClose=function(){var t=this;this._drawerRef&&this._drawerRef.closeStart$.pipe(f.switchMap((function(e){return d.iif((function(){return t.confirm&&t.confirmDrawer}),t.triggerConfirm().pipe(f.map((function(t){return E(t)})),f.tap((function(t){t&&(e.next(),e.complete())}))),d.defer((function(){e.next(),e.complete()})))})),f.takeUntil(this._destroy$)).subscribe()},r.prototype._registerConfirmTabs=function(){var t=this;this.tabGroup&&this.registerConfirmTabGroup(this.tabGroup),this.registerConfirmTabGroups(this._tabGroups.toArray()),this._tabGroups.changes.pipe(f.takeUntil(this._destroy$)).subscribe((function(){t.registerConfirmTabGroups(t._tabGroups.toArray())}))},r.prototype.registerConfirmTabGroups=function(t){var e=this;t.forEach((function(t){e.registerConfirmTabGroup(t)}))},r.prototype.registerConfirmTabGroup=function(t){var e=this,r=t;r._originalHandleClick||(r._originalHandleClick=t._handleClick,r._handlClick$=new d.Subject,r._handleClick=function(t,e,i){r._handlClick$.observers.length?r._handlClick$.next({tab:t,tabHeader:e,idx:i}):r._originalHandleClick(t,e,i)}),r._handlClick$.pipe(f.takeUntil(this._destroy$)).subscribe((function(t){e.submitting||(e.confirm&&e.confirmTabs?e.triggerConfirm().pipe(f.takeUntil(e._destroy$)).subscribe((function(e){E(e)&&(r.selectedIndex=t.idx)})):r._originalHandleClick(t.tab,t.tabHeader,t.idx))}))},r.prototype._registerConfirmDialogClose=function(){var t=this;this._dialogRef&&(this.formDialogClose.forEach((function(e){t._registerDialogClose(e)})),this.formDialogClose.changes.pipe(f.takeUntil(this._destroy$)).subscribe((function(e){e.forEach((function(e){t._registerDialogClose(e)}))})))},r.prototype._registerConfirmDialogBackdropEscape=function(){var t=this;this._dialogBackdropEscape=this._dialogRef&&!0!==this._dialogRef.disableClose,this._dialogRef&&!this._dialogRef.disableClose&&(this._dialogRef.disableClose=!0,this._dialogRef.backdropClick().pipe(f.takeUntil(this._destroy$)).subscribe((function(){t._formClose()})),this._destroy$.subscribe((function(){t._dialogRef.disableClose=!1})))},r.prototype._registerAutocomplete=function(){var t=this;this._registerControl=this.ngForm.form.registerControl.bind(this.ngForm.form),this.ngForm.form.registerControl=function(e,r){var i=t._element.nativeElement.querySelector("input[name='"+e+"']");return i&&(i.setAttribute("name",e+"_"+p.guid()),i.getAttribute("autocomplete")||i.setAttribute("autocomplete","none")),t._registerControl(e,r)}},r.prototype._registerDirtySubmitButton=function(){var t=this;this.ngForm&&(this.ngForm.form.valueChanges.pipe(f.takeUntil(this._destroy$)).subscribe((function(){t._updateDirtySubmitButtons()})),this._submitButtons.changes.pipe(f.takeUntil(this._destroy$)).subscribe((function(){t._updateDirtySubmitButtons()})))},r.prototype._updateDirtySubmitButtons=function(){var t=this;this._submitButtons.forEach((function(e){t.confirm&&t.dirtySubmitButton&&!t.ngForm.dirty&&e.dirtySubmit?e.disable():e.enable()}))},r.prototype._broadcastSubmittingEvents=function(){this._status$.next(t.FormStatus.Submitting),this._form.broadcast("submit",this.ngForm)},r.prototype._markControlsAsTouchedAndUpdateValidity=function(){Object.values(this.ngForm.controls).forEach((function(t){t.markAsDirty(),t.markAsTouched(),t.updateValueAndValidity()}))},r.prototype._setupActiveSubmitButton=function(){this._activeSubmitButton=this._getActiveButton(),this._resetButtons(),this._activeSubmitButton&&this._activeSubmitButton.process()},r.prototype._waitUntilStatusPending=function(){return this.ngForm.statusChanges.pipe(f.startWith(this.ngForm.status),f.first((function(t){return"PENDING"!==t})))},r.prototype._handleError=function(t){if(console.log("%c Form Submit ","color: white; background-color: #D33F49","Error occured"),console.group("Error Details:"),console.log("Message: ",t),console.log("FormRef: ",this),this.ngForm.invalid){var e=function t(e,r){var n,o=null;return e.invalid&&e.errors&&((n={})[r]=b({},e.errors),o=n),e instanceof i.FormGroup&&Object.entries(e.controls).forEach((function(e){var r=C(e,2),i=r[0],n=t(r[1],i);n&&(o?Object.assign(o,n):o=b({},n))})),o}(this.ngForm.control,null);console.log("Validation Errors: ",e)}console.groupEnd(),this._completeSubmit(!1,null)},r.ctorParameters=function(){return[{type:i.NgForm,decorators:[{type:e.Inject,args:[i.NgForm]}]},{type:I},{type:e.ElementRef},{type:l.FsMessage},{type:u.FsPrompt},{type:e.NgZone},{type:o.MatDialogRef,decorators:[{type:e.Optional},{type:e.Inject,args:[o.MatDialogRef]}]},{type:c.DrawerRef,decorators:[{type:e.Optional},{type:e.Inject,args:[c.DrawerRef]}]}]},_([e.Input(),F("design:type",Object)],r.prototype,"wrapperSelector",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"messageSelector",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"hintSelector",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"labelSelector",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"autocomplete",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"shortcuts",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"confirm",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"confirmDialog",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"confirmDrawer",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"confirmBrowser",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"confirmTabs",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"dirtySubmitButton",void 0),_([e.Input(),F("design:type",Function)],r.prototype,"submit",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"successDelay",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"errorDelay",void 0),_([e.Input(),F("design:type",a.MatTabGroup)],r.prototype,"tabGroup",void 0),_([e.Output("fsForm"),F("design:type",e.EventEmitter)],r.prototype,"submitEvent",void 0),_([e.Output(),F("design:type",e.EventEmitter)],r.prototype,"invalid",void 0),_([e.Output(),F("design:type",e.EventEmitter)],r.prototype,"valid",void 0),_([e.Output(),F("design:type",e.EventEmitter)],r.prototype,"submitted",void 0),_([e.Output(),F("design:type",e.EventEmitter)],r.prototype,"reseted",void 0),_([e.Output(),F("design:type",e.EventEmitter)],r.prototype,"cleared",void 0),_([e.HostBinding("class.fs-form"),F("design:type",Object)],r.prototype,"fsformClass",void 0),_([e.ContentChildren(D,{descendants:!0}),F("design:type",e.QueryList)],r.prototype,"formDialogClose",void 0),_([e.ContentChildren(a.MatTabGroup,{descendants:!0}),F("design:type",e.QueryList)],r.prototype,"_tabGroups",void 0),r=_([e.Directive({selector:"[fsForm]"}),S(0,e.Inject(i.NgForm)),S(6,e.Optional()),S(6,e.Inject(o.MatDialogRef)),S(7,e.Optional()),S(7,e.Inject(c.DrawerRef)),F("design:paramtypes",[i.NgForm,I,e.ElementRef,l.FsMessage,u.FsPrompt,e.NgZone,o.MatDialogRef,c.DrawerRef])],r)}(),R={required:"This field is required",email:"This is not a valid email address",emails:"Input valid email addresses, comma separated",phone:"Invalid phone number",numeric:"Value should be numeric",integer:"Value should be an integer",min:"Value should not be less than $(1)",max:"Value should not be greater than $(1)",minlength:"Should not be shorter than $(1) characters",maxlength:"Should not be longer than $(1) characters",compare:"Inputs do not match",pattern:"Value should match pattern $(1)",dateRange:"Invalid date range",url:"This is not a valid url",urlProtocol:"Invalid URL. Proper http protocol is required. eg. https://google.com",greater:"Value must be greater than $(1)",lesser:"Value must be less than $(1)"},k=new e.InjectionToken("fs.form.validate-messages"),x={provide:k,useFactory:V};function V(){return b({},R)}var B=function(){function t(t,e,r,i,n,o){this.elementRef=t,this.renderer2=e,this.injector=r,this._validateMessages=i,this.ngControl=n,this.formDirective=o,this.appendMessageClass="fs-form-message",this.appendLabelClass="fs-form-label",this.appendErrorClass="fs-form-error",this.appendHintClass="fs-form-hint",this.errors=[],this._destroy$=new d.Subject,n?this._control=n.control:console.error("The element does not have a valid ngModel",this.elementRef.nativeElement)}return Object.defineProperty(t.prototype,"validateMessages",{set:function(t){this._validateMessages=b(b({},this._validateMessages),t)},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this._setupValidators()},t.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},t.prototype.ngAfterContentInit=function(){this._control&&(this._control.statusChangesSubscribe||(this._control.statusChanges.pipe(f.takeUntil(this._destroy$)).subscribe(this.render.bind(this)),this._control.statusChangesSubscribe=!0))},t.prototype.getMessageSelector=function(){return!1===this.messageSelector?"":this.messageSelector?this.messageSelector:this.formDirective&&this.formDirective.messageSelector?this.formDirective.messageSelector:void 0},t.prototype.getHintWrapperSelector=function(){return!1===this.hintSelector?"":this.hintSelector?this.hintSelector:this.formDirective&&this.formDirective.hintSelector?this.formDirective.hintSelector:void 0},t.prototype.getWrapperSelector=function(){return!1===this.wrapperSelector?"":this.wrapperSelector?this.wrapperSelector:this.formDirective&&this.formDirective.wrapperSelector?this.formDirective.wrapperSelector:void 0},t.prototype.getlabelSelector=function(){return!1===this.labelSelector?"":this.labelSelector?this.labelSelector:this.formDirective&&this.formDirective.labelSelector?this.formDirective.labelSelector:void 0},t.prototype.getWrapperElement=function(){var t=this.getWrapper(this.elementRef.nativeElement);return t||this.elementRef.nativeElement},t.prototype.render=function(){var t;if(this.ngControl){var e=this.renderer2,r=this.getWrapperElement(),i=this.ngControl.dirty?this.getError(this.ngControl):null;if(!this.getMessageSelector())return;var n=r.querySelector(this.getMessageSelector());if(!n)return console.warn("Failed to locate "+this.getMessageSelector(),this.elementRef.nativeElement);if(this.getlabelSelector()){var o=r.querySelector(this.getlabelSelector());o&&this.appendLabelClass&&this.renderer2.addClass(o,this.appendLabelClass)}if(this.appendMessageClass&&e.addClass(n,this.appendMessageClass),this.getHintWrapperSelector()){var s=n.querySelector(this.getHintWrapperSelector());s&&(e.setStyle(s,"display",i?"none":"block"),this.appendHintClass&&e.addClass(s,this.appendHintClass))}var a=r.querySelector(".fs-form-error-target");if(a&&a.remove(),r.classList.remove("ng-invalid"),!(this.ngControl.invalid&&(this.ngControl.dirty||(null===(t=this.formDirective.ngForm)||void 0===t?void 0:t.submitted)))||!i)return;r.classList.add("ng-invalid"),a=e.createElement("div"),e.addClass(a,"fs-form-error-target"),e.addClass(a,this.appendErrorClass),e.addClass(a,this.appendErrorClass+"-"+i.name);var l=e.createText(i.message);e.appendChild(a,l),n.appendChild(a)}},t.prototype.getWrapper=function(t,e){return void 0===e&&(e=0),!t||e>10?null:t.parentNode&&t.parentNode.querySelector(this.getWrapperSelector())?t:this.getWrapper(t.parentNode,++e)},t.prototype.parseErrorMessage=function(t,e){return m.values(e).forEach((function(e){t=t.replace(/\$\(\d\)/,e)})),t},t.prototype.getError=function(t){var e=m.keys(t.control.errors)[0];if(!e)return null;var r=t.control.errors[e];return this._validateMessages[e]&&(r=this.parseErrorMessage(this._validateMessages[e],r)),{name:e,message:r}},t.prototype._setupValidators=function(){var t=this._control;if(this.validate){var e=t.validator?[t.validator,this.validate.bind(this)]:this.validate.bind(this);t.setValidators(e)}if(this.validateAsync){var r=t.asyncValidator?[t.asyncValidator,this.validateAsync.bind(this)]:this.validateAsync.bind(this);t.setAsyncValidators(r)}t.updateValueAndValidity()},t.ctorParameters=function(){return[{type:e.ElementRef},{type:e.Renderer2},{type:e.Injector},{type:void 0,decorators:[{type:e.Self},{type:e.Inject,args:[k]}]},{type:i.NgControl,decorators:[{type:e.Optional}]},{type:w,decorators:[{type:e.Optional},{type:e.Inject,args:[w]}]}]},_([e.Input(),F("design:type",Object)],t.prototype,"wrapperSelector",void 0),_([e.Input(),F("design:type",Object)],t.prototype,"messageSelector",void 0),_([e.Input(),F("design:type",Object)],t.prototype,"hintSelector",void 0),_([e.Input(),F("design:type",Object)],t.prototype,"labelSelector",void 0),_([e.Input(),F("design:type",Object)],t.prototype,"appendMessageClass",void 0),_([e.Input(),F("design:type",Object)],t.prototype,"appendLabelClass",void 0),_([e.Input(),F("design:type",Object)],t.prototype,"appendErrorClass",void 0),_([e.Input(),F("design:type",Object)],t.prototype,"appendHintClass",void 0),_([e.Input(),F("design:type",Object),F("design:paramtypes",[Object])],t.prototype,"validateMessages",null),t=_([e.Directive({selector:"[fsFormControl]",providers:[x]}),S(3,e.Self()),S(3,e.Inject(k)),S(4,e.Optional()),S(5,e.Optional()),S(5,e.Inject(w)),F("design:paramtypes",[e.ElementRef,e.Renderer2,e.Injector,Object,i.NgControl,w])],t)}();function P(t){return"false"!==t&&(t||""===t)}var $=function(t){function r(){var e=null!==t&&t.apply(this,arguments)||this;return e.required=!1,e}return y(r,t),Object.defineProperty(r.prototype,"setFsFormRequired",{set:function(t){this.required=P(t)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"setRequired",{set:function(t){this.required=P(t)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.required=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return this.required?i.Validators.required(this._control):null},r.prototype.render=function(){var e=this.getWrapperElement();if(e&&this.getlabelSelector()){var r=e.querySelector(this.getlabelSelector());r&&(this.required?this.renderer2.addClass(r,"fs-form-label-required"):this.renderer2.removeClass(r,"fs-form-label-required"))}t.prototype.render.call(this)},_([e.Input("fsFormRequired"),F("design:type",Object),F("design:paramtypes",[Object])],r.prototype,"setFsFormRequired",null),_([e.Input("required"),F("design:type",Object),F("design:paramtypes",[Object])],r.prototype,"setRequired",null),_([e.Input("fsFormRequiredMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormRequired],[ngModel][required]",providers:[x]})],r)}(B),A=function(){function t(){}return t.email=function(t){return!t.value||p.email(t.value)?null:{email:!0}},t.emails=function(t){return(t.value||"").split(",").some((function(t){return!p.email(t)}))?{email:!0}:null},t.numeric=function(t){return p.isEmpty(t.value)||p.isNumeric(t.value)?null:{numeric:!0}},t.integer=function(t){return t.value&&""!==String(t.value)&&t.value%1!=0?{integer:!0}:null},t.phone=function(t){return!t.value||p.phone(t.value)?null:{phone:!0}},t.url=function(t,e){if(void 0===e&&(e=!1),!t.value)return null;if(!p.url(t.value))return{url:!0};if(e){var r=new RegExp(/^http(s)?:\/\//gm);if(!String(t.value).match(r))return{urlProtocol:!0}}return null},t.dateRange=function(t){if(!t.value)return null;if(m.isObject(t.value)){var e=t.value.start,r=t.value.end;if(!e&&!r||h.isValid(e)&&h.isValid(r))return null}return{dateRange:!0}},t.func=function(t,e,r){var i,n;try{i=e(t,r)}catch(t){t=t instanceof Error?t.message:t,n=d.throwError(t)}return n||(n=i instanceof Promise?d.from(i):d.isObservable(i)?i:d.of(null)),n.pipe(f.map((function(){return null})),f.catchError((function(t){return d.of({validationError:t})})),f.take(1))},t}(),q=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.min=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return A.numeric(this._control)||i.Validators.min(parseFloat(this.fsFormMin))(this._control)},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormMin",void 0),_([e.Input("fsFormMinMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormMin]",providers:[x]})],r)}(B),L=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.max=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return A.numeric(this._control)||i.Validators.max(this.fsFormMax)(this._control)},_([e.Input(),F("design:type",Number)],r.prototype,"fsFormMax",void 0),_([e.Input("fsFormMaxMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormMax]",providers:[x]})],r)}(B),U=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.minlength=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return i.Validators.minLength(this.fsFormMinLength)(this._control)},_([e.Input(),F("design:type",Number)],r.prototype,"fsFormMinLength",void 0),_([e.Input("fsFormMinLengthMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormMinLength]",providers:[x]})],r)}(B),N=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.maxlength=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return i.Validators.maxLength(this.fsFormMaxLength)(this._control)},_([e.Input(),F("design:type",Number)],r.prototype,"fsFormMaxLength",void 0),_([e.Input("fsFormMaxLengthMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormMaxLength]",providers:[x]})],r)}(B),T=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.email=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return P(this.fsFormEmail)?A.email(this._control):null},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormEmail",void 0),_([e.Input("fsFormEmailMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormEmail]",providers:[x]})],r)}(B),G=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.emails=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return P(this.fsFormEmails)?A.emails(this._control):null},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormEmails",void 0),_([e.Input("fsFormEmailsMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormEmails]",providers:[x]})],r)}(B),H=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.phone=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return P(this.fsFormPhone)?A.phone(this._control):null},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormPhone",void 0),_([e.Input("fsFormPhoneMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormPhone]",providers:[x]})],r)}(B),W=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.compare=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return this.fsFormCompare.value===this.elementRef.nativeElement.value?null:{compare:!0}},r.prototype.ngAfterViewInit=function(){var t=this;this.fsFormCompare.addEventListener("keyup",(function(){t._control.updateValueAndValidity()}),!1)},r.prototype.ngOnDestroy=function(){var t=this;this.fsFormCompare.removeEventListener("keyup",(function(){t._control.updateValueAndValidity()}),!1)},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormCompare",void 0),_([e.Input("fsFormCompareMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormCompare]",providers:[x]})],r)}(B),z=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.integer=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return P(this.fsFormInteger)?A.integer(this._control):null},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormInteger",void 0),_([e.Input("fsFormIntegerMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormInteger]",providers:[x]})],r)}(B),K=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.numeric=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return P(this.fsFormNumeric)?A.numeric(this._control):null},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormNumeric",void 0),_([e.Input("fsFormNumericMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormNumeric]",providers:[x]})],r)}(B),Z=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.pattern=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return i.Validators.pattern(this.fsFormPattern)(this._control)},_([e.Input(),F("design:type",RegExp)],r.prototype,"fsFormPattern",void 0),_([e.Input("fsFormPatternMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormPattern]",providers:[x]})],r)}(B),Q=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validateAsync=function(t){return A.func(this._control,this.fsFormFunction,this.fsFormFunctionData)},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormFunction",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"fsFormFunctionData",void 0),r=_([e.Directive({selector:"[fsFormFunction]",providers:[x]})],r)}(B),Y=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.greater=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){var e=parseFloat(this.fsFormGreater),r=parseFloat(this._control.value);return!isNaN(e)&&!isNaN(r)&&r<=e?{greater:{greater:e,actual:r}}:A.numeric(this._control)},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormGreater",void 0),_([e.Input("fsFormGreaterMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormGreater]",providers:[x]})],r)}(B),J=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.dateRange=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return P(this.fsFormDateRange)?A.dateRange(this._control):null},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormDateRange",void 0),_([e.Input("fsFormDateRangeMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormDateRange]",providers:[x]})],r)}(B),X=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.lesser=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){var e=parseFloat(this.fsFormLesser),r=parseFloat(this._control.value);return!isNaN(e)&&!isNaN(r)&&r>=e?{lesser:{lesser:e,actual:r}}:A.numeric(this._control)},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormLesser",void 0),_([e.Input("fsFormLesserMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormLesser]",providers:[x]})],r)}(B),tt=function(t){function r(){var e=null!==t&&t.apply(this,arguments)||this;return e.fsFormUrlProtocol=!1,e}return y(r,t),Object.defineProperty(r.prototype,"validationMessage",{set:function(t){this._validateMessages.url=t},enumerable:!0,configurable:!0}),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validate=function(t){return P(this.fsFormUrl)?A.url(this._control,this.fsFormUrlProtocol):null},_([e.Input(),F("design:type",Object)],r.prototype,"fsFormUrl",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"fsFormUrlProtocol",void 0),_([e.Input("fsFormUrlMessage"),F("design:type",String),F("design:paramtypes",[String])],r.prototype,"validationMessage",null),r=_([e.Directive({selector:"[fsFormUrl]",providers:[x]})],r)}(B),et=function(){function t(t,e,r,i){this._matButton=t,this._form=e,this._elementRef=r,this._cdRef=i,this.dirtySubmit=!0,this.transitionStyle=null,this.active=!1,this._destroy$=new d.Subject}return t.prototype.ngOnInit=function(){var t=this;this._form&&(this._form.addSubmitButton(this),d.fromEvent(this.element,"click").pipe(f.takeUntil(this._destroy$)).subscribe((function(){t.active=!0})),this.dirtySubmit&&this._form.dirtySubmitButton&&(this._form.ngForm.dirty||this.disable()),this.transitionStyle="none",setTimeout((function(){t.transitionStyle=null}),500))},t.prototype.disable=function(){this._matButton&&(this._matButton.disabled=!0,this._cdRef.markForCheck())},t.prototype.enable=function(){this._matButton&&(this._matButton.disabled=!1,this._matButton.disableRipple=!0,this._cdRef.markForCheck())},t.prototype.process=function(){this.setClass("process"),this._matButton.disableRipple=!0},t.prototype.success=function(){this.setClass("success"),this._matButton.disableRipple=!1},t.prototype.error=function(){this.setClass("error"),this._matButton.disableRipple=!1},t.prototype.setClass=function(t){var e=this._getSvg(t);this._resetClass(),this._disableShadowAnimation(),this.element.classList.add("submit-"+t),this.element.append(e)},Object.defineProperty(t.prototype,"element",{get:function(){return this._elementRef.nativeElement},enumerable:!0,configurable:!0}),t.prototype.reset=function(){this.active=!1,this.enable(),this.element.querySelectorAll(".svg-icon").forEach((function(t){t.remove()})),this._matButton.disableRipple=!1,this._resetClass()},t.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete(),this._form.removeSubmitButton(this)},t.prototype._disableShadowAnimation=function(){},t.prototype._resetClass=function(){this.element.classList.remove("submit-success","submit-error","submit-process","mat-elevation-z2")},t.prototype._getSvg=function(t){return"success"===t?(new DOMParser).parseFromString('<svg class="svg-icon svg-icon-success" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewBox="0 0 38 38" style="enable-background:new 0 0 38 38;" xml:space="preserve" width="38px" height="38px">\n <g>\n <g class="check">\n <g>\n <path d="M29.6,11.9c-0.5-0.5-1.3-0.5-1.8,0L16.3,23.4l-6.1-6.1c-0.5-0.5-1.3-0.5-1.8,0s-0.5,1.3,0,1.8l7,7c0.3,0.3,0.6,0.4,0.9,0.4s0.7-0.1,0.9-0.4l12.4-12.4C30.1,13.2,30.1,12.4,29.6,11.9z"/>\n </g>\n </g>\n </g>\n </svg>',"text/xml").firstChild:"process"===t?(new DOMParser).parseFromString('<svg class="svg-icon svg-icon-process" width="38" height="38" viewBox="0 0 38 38" xmlns="http://www.w3.org/2000/svg">\n <g fill="none" fill-rule="evenodd">\n <g transform="translate(1 1)" stroke-width="2"><circle stroke-opacity=".5" cx="18" cy="18" r="18"/>\n <path d="M36 18c0-9.94-8.06-18-18-18"><animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur=".7s" repeatCount="indefinite"/></path>\n </g>\n </g>\n </svg>',"text/xml").firstChild:"error"===t?(new DOMParser).parseFromString('<svg class="svg-icon svg-icon-error" xmlns="http://www.w3.org/2000/svg" width="38px" height="38px" viewBox="0 0 16 16"><g><path d="M8 1c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7zM8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8v0z" data-original="#444444" data-old_color="#444444"/><path d="M12.2 10.8l-2.8-2.8 2.8-2.8-1.4-1.4-2.8 2.8-2.8-2.8-1.4 1.4 2.8 2.8-2.8 2.8 1.4 1.4 2.8-2.8 2.8 2.8z"/></g> </svg>',"text/xml").firstChild:void 0},t.ctorParameters=function(){return[{type:n.MatButton,decorators:[{type:e.Optional},{type:e.Host}]},{type:w,decorators:[{type:e.Optional}]},{type:e.ElementRef},{type:e.ChangeDetectorRef}]},_([e.Input(),F("design:type",Object)],t.prototype,"name",void 0),_([e.Input(),F("design:type",Object)],t.prototype,"dirtySubmit",void 0),_([e.HostBinding("style.transition"),F("design:type",Object)],t.prototype,"transitionStyle",void 0),t=_([e.Directive({selector:'button[type="submit"]'}),S(0,e.Optional()),S(0,e.Host()),S(1,e.Optional()),F("design:paramtypes",[n.MatButton,w,e.ElementRef,e.ChangeDetectorRef])],t)}(),rt=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return y(r,t),r.prototype.ngOnChanges=function(){this._control.updateValueAndValidity()},r.prototype.validateAsync=function(t){return A.func(this._control,this.validateFn,this.validateFnData)},_([e.Input("validate"),F("design:type",Object)],r.prototype,"validateFn",void 0),_([e.Input("validateData"),F("design:type",Object)],r.prototype,"validateFnData",void 0),r=_([e.Directive({selector:"[validate]",providers:[x]})],r)}(B),it=function(){function r(t,e,r){this._form=t,this._dialogRef=e,this._cdRef=r,this.save=!0,this.create=!1,this.close=!1,this.dirty=!1,this._destroy$=new d.Subject}return r.prototype.ngOnInit=function(){var t=this;this._form&&(this._form.ngForm.valueChanges.pipe(f.filter((function(){return!t.dirty})),f.takeUntil(this._destroy$)).subscribe((function(){t.dirty=t._form.ngForm.dirty,t._cdRef.markForCheck()})),this._form.submitted.pipe(f.delay(50),f.takeUntil(this._destroy$)).subscribe((function(){t.dirty=!1,t._cdRef.markForCheck()})),this._form.reseted.pipe(f.takeUntil(this._destroy$)).subscribe((function(){t.dirty=!1,t._cdRef.markForCheck()})))},r.prototype.closeClick=function(){var e=this;this._form?this._form.triggerConfirm().pipe(f.filter((function(e){return e!==t.ConfirmResult.Review})),f.takeUntil(this._destroy$)).subscribe((function(){e._dialogRef.close(null)})):this._dialogRef.close(null)},r.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},r.ctorParameters=function(){return[{type:w,decorators:[{type:e.Optional}]},{type:o.MatDialogRef,decorators:[{type:e.Optional}]},{type:e.ChangeDetectorRef}]},_([e.Input(),F("design:type",Object)],r.prototype,"save",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"create",void 0),_([e.Input(),F("design:type",Object)],r.prototype,"close",void 0),_([e.Input(),F("design:type",String)],r.prototype,"name",void 0),r=_([e.Component({selector:"fs-form-dialog-actions",template:'<div class="buttons">\r\n <ng-container *ngIf="save">\r\n <button \r\n mat-button \r\n type="submit"\r\n color="primary" \r\n [name]="name">\r\n {{create ? \'Create\' : \'Save\'}}\r\n </button>\r\n <button \r\n mat-button \r\n type="button"\r\n [disabled]="close && !dirty && !create"\r\n [matDialogClose]="null">\r\n Cancel\r\n </button>\r\n </ng-container>\r\n\r\n <ng-content></ng-content>\r\n <div class="close" *ngIf="close">\r\n <button \r\n mat-button \r\n type="button"\r\n [color]="dirty ? \'basic\' : \'primary\'"\r\n (click)="closeClick()">\r\n Close\r\n </button>\r\n </div>\r\n</div>',changeDetection:e.ChangeDetectionStrategy.OnPush,styles:[".buttons{display:flex;flex-grow:1;align-items:center}.buttons .close{display:flex;flex-grow:1;justify-content:flex-end}:host{display:flex;flex-grow:1}@media only screen and (max-width:599px){.buttons{flex-direction:column}}"]}),S(0,e.Optional()),S(1,e.Optional()),F("design:paramtypes",[w,o.MatDialogRef,e.ChangeDetectorRef])],r)}(),nt=function(){function t(){}var a;return a=t,t.forRoot=function(){return{ngModule:a}},t=a=_([e.NgModule({imports:[r.CommonModule,i.FormsModule,n.MatButtonModule,o.MatDialogModule],declarations:[w,B,$,q,L,U,N,T,G,H,W,z,K,Z,Q,J,Y,X,tt,D,et,rt,it],exports:[w,B,$,q,L,U,N,T,G,H,W,z,K,Z,Q,J,Y,X,tt,D,et,rt,it],providers:[{provide:s.ErrorStateMatcher,useClass:s.ShowOnDirtyErrorStateMatcher}]})],t)}(),ot=function(){function t(t){this._prompt=t}return t.prototype.canDeactivate=function(t){if(!("getForm"in t)){var e="Directive "+t.constructor.name+" does not property implement interface FormDeactivate";return console.error(e),d.of(!0)}var r=t.getForm();if(!(r instanceof w)){e="Directive "+t.constructor.name+".getForm() does not return a valid FsFormDirective";return console.error(e),d.of(!0)}return M(r,this._prompt).pipe(f.map((function(t){return E(t)})))},t.ctorParameters=function(){return[{type:u.FsPrompt}]},t.ɵprov=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(u.FsPrompt))},token:t,providedIn:"root"}),t=_([e.Injectable({providedIn:"root"}),F("design:paramtypes",[u.FsPrompt])],t)}();t.FormDeactivateGuard=ot,t.FsForm=I,t.FsFormDialogActionsComponent=it,t.FsFormDirective=w,t.FsFormModule=nt,t.FsValidators=A,t.ɵa=D,t.ɵb=B,t.ɵc=k,t.ɵd=x,t.ɵe=V,t.ɵf=$,t.ɵg=q,t.ɵh=L,t.ɵi=U,t.ɵj=N,t.ɵk=T,t.ɵl=G,t.ɵm=H,t.ɵn=W,t.ɵo=z,t.ɵp=K,t.ɵq=Z,t.ɵr=Q,t.ɵs=J,t.ɵt=Y,t.ɵu=X,t.ɵv=tt,t.ɵw=et,t.ɵx=rt,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
16
|
-
//# sourceMappingURL=firestitch-form.umd.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@firestitch/form/app/enums/confirm-result.ts","ng://@firestitch/form/app/helpers/confirm-unsaved.ts","ng://@firestitch/form/app/enums/form-status.ts","ng://@firestitch/form/app/directives/form-dialog-close.directive.ts","ng://@firestitch/form/app/services/fsform.service.ts","ng://@firestitch/form/app/helpers/confirm-result-continue.ts","ng://@firestitch/form/app/directives/form/form.directive.ts","ng://@firestitch/form/app/helpers/get-form-errors.ts","ng://@firestitch/form/app/consts/error-messages.const.ts","ng://@firestitch/form/app/providers/validate-messages.provider.ts","ng://@firestitch/form/app/directives/validators/control.directive.ts","ng://@firestitch/form/app/helpers/is-enabled.ts","ng://@firestitch/form/app/directives/validators/required.directive.ts","ng://@firestitch/form/app/validators/validators.ts","ng://@firestitch/form/app/directives/validators/min.directive.ts","ng://@firestitch/form/app/directives/validators/max.directive.ts","ng://@firestitch/form/app/directives/validators/minlength.directive.ts","ng://@firestitch/form/app/directives/validators/maxlength.directive.ts","ng://@firestitch/form/app/directives/validators/email.directive.ts","ng://@firestitch/form/app/directives/validators/emails.directive.ts","ng://@firestitch/form/app/directives/validators/phone.directive.ts","ng://@firestitch/form/app/directives/validators/compare.directive.ts","ng://@firestitch/form/app/directives/validators/integer.directive.ts","ng://@firestitch/form/app/directives/validators/numeric.directive.ts","ng://@firestitch/form/app/directives/validators/pattern.directive.ts","ng://@firestitch/form/app/directives/validators/function.directive.ts","ng://@firestitch/form/app/directives/validators/greater.directive.ts","ng://@firestitch/form/app/directives/validators/daterange.directive.ts","ng://@firestitch/form/app/directives/validators/lesser.directive.ts","ng://@firestitch/form/app/directives/validators/url.directive.ts","ng://@firestitch/form/app/directives/submit-button.directive.ts","ng://@firestitch/form/app/directives/validators/validate.directive.ts","ng://@firestitch/form/app/components/form-dialog-actions/form-dialog-actions.component.ts","ng://@firestitch/form/app/fs-form.module.ts","ng://@firestitch/form/app/guards/form-deactivate.guard.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","ConfirmResult","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__read","o","m","Symbol","iterator","e","ar","next","done","push","value","error","__spread","concat","confirmUnsaved","form","prompt","Observable","observer","confirm","ngForm","dirty","Pristine","complete","title","message","saveLabel","discardLabel","cancelLabel","template","dialogConfig","width","buttons","label","color","cancel","subscribe","Discard","reset","submitted","pipe","first","Save","invalid","Invalid","control","markAsPristine","ngSubmit","emit","Review","FormStatus","FsFormDialogCloseDirective","clicked$","Subject","registered","type","click","ngOnDestroy","HostBinding","HostListener","Directive","selector","FsForm","_eventBus","broadcast","data","on","asObservable","filter","event","map","Injectable","providedIn","confirmResultContinue","result","FsFormDirective","_form","_element","_message","_prompt","_ngZone","_dialogRef","_drawerRef","wrapperSelector","messageSelector","hintSelector","labelSelector","autocomplete","shortcuts","confirmDialog","confirmDrawer","confirmBrowser","confirmTabs","dirtySubmitButton","successDelay","errorDelay","submitEvent","EventEmitter","valid","reseted","cleared","fsformClass","_tabGroups","QueryList","_submitButtons","_dialogBackdropEscape","_snapshot","_status$","BehaviorSubject","Valid","_destroy$","getValue","Submitting","Completing","submitter","_submitter","_submitEvent","submittedEvent","response","submit","of","isObservable","mode","MessageMode","Toast","el","nativeElement","querySelector","scrollIntoView","behavior","block","throwError","_activeSubmitButton","name","ngOnInit","_registerConfirmDialogBackdropEscape","_listenHotKeys","_listenWindowClose","_listenSubmit","_registerAutocomplete","ngOnChanges","changes","_updateDirtySubmitButtons","ngAfterContentInit","_registerConfirm","_registerConfirmDialogClose","_registerConfirmDrawerClose","_registerConfirmTabs","_registerDrawerClose","_registerDirtySubmitButton","createSnapshot","_this","resetForm","keys","controls","forEach","clear","markAsDirty","triggerSubmit","triggerConfirm","submitting","take","mergeMap","enable","disable","button","addSubmitButton","submitButton","toArray","removeSubmitButton","submitButton_","tap","preventDefault","includes","_markControlsAsTouchedAndUpdateValidity","_broadcastSubmittingEvents","switchMap","_waitUntilStatusPending","_setupActiveSubmitButton","status","_formInvalidState$","_formValidState$","catchError","source$","_handleError","_completeSubmit","takeUntil","fromEvent","window","returnValue","runOutsideAngular","document","code","dialog_1","getElementById","id","paths","composedPath","item","run","_formClose","ctrlKey","metaKey","_elementInForm","activeElement","close","_registerDialogClose","directive","_getActiveButton","activeButton","find","active","isSameNode","parentElement","success","_resetButtons","Submitted","Success","Error","resetDelay","delay","valueChanges","existing_1","indexOf","closeStart$","subscriber","iif","defer","tabGroup","registerConfirmTabGroup","registerConfirmTabGroups","tabGroups","confirmTabGroup","_originalHandleClick","_handleClick","_handlClick$","tab","tabHeader","idx","observers","selectedIndex","formDialogClose","disableClose","backdropClick","_registerControl","registerControl","bind","setAttribute","guid","getAttribute","dirtySubmit","values","markAsTouched","updateValueAndValidity","process","statusChanges","startWith","state","console","log","group","errors","getFormErrors","_a","FormGroup","entries","_b","childErrors","groupEnd","NgForm","Inject","args","ElementRef","FsMessage","FsPrompt","NgZone","MatDialogRef","Optional","DrawerRef","Input","MatTabGroup","Output","ContentChildren","descendants","ERROR_MESSAGES","required","email","emails","phone","numeric","integer","min","max","minlength","maxlength","compare","pattern","dateRange","url","urlProtocol","greater","lesser","VALIDATE_MESSAGES","InjectionToken","VALIDATE_MESSAGE_PROVIDER","provide","useFactory","messageProviderFactory","FsControlDirective","elementRef","renderer2","injector","_validateMessages","ngControl","formDirective","appendMessageClass","appendLabelClass","appendErrorClass","appendHintClass","_control","messages","_setupValidators","statusChangesSubscribe","render","getMessageSelector","getHintWrapperSelector","getWrapperSelector","getlabelSelector","getWrapperElement","wrapper","getWrapper","renderer","getError","messageWrapper","warn","labelWrapper","addClass","hint","setStyle","errorWrapper","remove","classList","add","createElement","errorText","createText","appendChild","node","count","parentNode","parseErrorMessage","replace","controlRef","validate","validators","validator","setValidators","validateAsync","asyncValidators","asyncValidator","setAsyncValidators","Renderer2","Injector","Self","NgControl","providers","isEnabled","FsFormRequiredDirective","_super","Validators","removeClass","FsValidators","split","some","part","isEmpty","isNumeric","String","protocolRequired","RegExp","match","isObject","start","end","isValid","func","formFunction","stream$","err","Promise","from","validationError","FsFormMinDirective","parseFloat","fsFormMin","FsFormMaxDirective","fsFormMax","FsFormMinLengthDirective","minLength","fsFormMinLength","FsFormMaxLengthDirective","maxLength","fsFormMaxLength","FsFormEmailDirective","fsFormEmail","FsFormEmailsDirective","fsFormEmails","FsFormPhoneDirective","fsFormPhone","FsFormCompareDirective","fsFormCompare","ngAfterViewInit","addEventListener","removeEventListener","FsFormIntegerDirective","fsFormInteger","FsFormNumericDirective","fsFormNumeric","FsFormPatternDirective","fsFormPattern","FsFormFunctionDirective","fsFormFunction","fsFormFunctionData","FsFormGreaterDirective","fsFormGreater","isNaN","actual","FsFormDateRangeDirective","fsFormDateRange","FsFormLesserDirective","fsFormLesser","FsFormUrlDirective","fsFormUrlProtocol","fsFormUrl","FsSubmitButtonDirective","_matButton","_elementRef","_cdRef","transitionStyle","element","setTimeout","disabled","markForCheck","disableRipple","setClass","cls","svg","_getSvg","_resetClass","_disableShadowAnimation","append","querySelectorAll","DOMParser","parseFromString","firstChild","MatButton","Host","ChangeDetectorRef","FsFormValidateDirective","validateFn","validateFnData","FsFormDialogActionsComponent","save","closeClick","confirmResult","Component","changeDetection","ChangeDetectionStrategy","OnPush","FsFormModule","forRoot","ngModule","FsFormModule_1","NgModule","imports","CommonModule","FormsModule","MatButtonModule","MatDialogModule","declarations","exports","ErrorStateMatcher","useClass","ShowOnDirtyErrorStateMatcher","FormDeactivateGuard","canDeactivate","getForm"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export enum ConfirmResult {\n Save = 'save',\n Discard = 'discard',\n Review = 'review',\n Invalid = 'invalid',\n Pristine = 'pristine',\n}\n","import { FsPrompt } from '@firestitch/prompt';\n\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { FsFormDirective } from '../directives/form/form.directive';\nimport { ConfirmResult } from '../enums/confirm-result';\n\n\nexport function confirmUnsaved(form: FsFormDirective, prompt: FsPrompt): Observable<ConfirmResult> {\n return new Observable(observer => {\n\n if (!form.confirm || !form.ngForm.dirty) {\n observer.next(ConfirmResult.Pristine);\n observer.complete();\n return;\n }\n\n let title = 'You Have Unsaved Changes';\n let message = 'What would you like to do with your changes?';\n let saveLabel = 'Save & Continue';\n let discardLabel = 'Discard Changes & Continue';\n let cancelLabel = 'Review Changes';\n\n if (typeof form.confirm === 'object') {\n title = form.confirm.title || title;\n message = form.confirm.message || message;\n saveLabel = form.confirm.saveLabel || saveLabel;\n discardLabel = form.confirm.discardLabel || discardLabel;\n cancelLabel = form.confirm.cancelLabel || cancelLabel;\n }\n\n prompt.confirm({\n title: title,\n template: message,\n dialogConfig: { width: 'auto' },\n buttons: [\n {\n label: saveLabel,\n color: 'primary',\n value: 'save'\n },\n {\n label: discardLabel,\n value: 'discard'\n },\n {\n label: cancelLabel,\n cancel: true\n }\n ]\n }).subscribe((value) => {\n\n if (value === 'discard') {\n observer.next(ConfirmResult.Discard);\n observer.complete();\n form.reset();\n }\n\n if (value === 'save') {\n\n form.submitted\n .pipe(\n first()\n )\n .subscribe(() => {\n observer.next(ConfirmResult.Save);\n observer.complete();\n });\n\n form.invalid\n .pipe(\n first()\n )\n .subscribe(() => {\n observer.next(ConfirmResult.Invalid);\n observer.complete();\n });\n\n form.ngForm.control.markAsPristine();\n form.ngForm.ngSubmit.emit();\n }\n\n }, (error: any) => {\n observer.next(ConfirmResult.Review);\n observer.complete();\n });\n });\n}\n","export enum FormStatus {\n Valid = 'valid',\n Invalid = 'invalid',\n Submitting = 'submitting',\n Submitted = 'submitted',\n Error = 'error',\n Success = 'success',\n Completing = 'completing',\n}\n","import { Directive, HostListener, OnDestroy, HostBinding } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n@Directive({\n selector: '[fsFormDialogClose],[fs-form-dialog-close]'\n})\nexport class FsFormDialogCloseDirective implements OnDestroy {\n\n public clicked$ = new Subject();\n public registered = false;\n\n @HostBinding('attr.type') type = 'button';\n\n @HostListener('click', ['$event.target'])\n public click() {\n this.clicked$.next();\n }\n\n public ngOnDestroy() {\n this.clicked$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Subject, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\ninterface BroadcastEvent {\n key: any;\n data?: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsForm {\n private _eventBus: Subject<BroadcastEvent>;\n\n constructor() {\n this._eventBus = new Subject<BroadcastEvent>();\n }\n\n broadcast(key: any, data?: any) {\n this._eventBus.next({key, data});\n }\n\n on<T>(key: any): Observable<T> {\n return this._eventBus.asObservable()\n .pipe(\n filter(event => event.key === key),\n map(event => <T>event.data)\n );\n }\n}\n","import { ConfirmResult } from '../enums/confirm-result';\n\nexport function confirmResultContinue(result) {\n return result === ConfirmResult.Discard || result === ConfirmResult.Save || result === ConfirmResult.Pristine;\n}\n","import {\n AfterContentInit,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n} from '@angular/core';\nimport { AbstractControl, NgForm } from '@angular/forms';\n\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatTab, MatTabGroup, MatTabHeader } from '@angular/material/tabs';\n\nimport { FsMessage, MessageMode } from '@firestitch/message';\nimport { FsPrompt } from '@firestitch/prompt';\nimport { guid } from '@firestitch/common';\nimport { DrawerRef } from '@firestitch/drawer';\n\nimport {\n BehaviorSubject,\n defer,\n fromEvent,\n iif,\n isObservable,\n Observable,\n of,\n Subject,\n throwError\n} from 'rxjs';\nimport {\n catchError,\n delay,\n filter,\n first,\n map,\n mergeMap,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap\n} from 'rxjs/operators';\n\nimport { confirmUnsaved } from '../../helpers/confirm-unsaved';\nimport { FsFormDialogCloseDirective } from '../form-dialog-close.directive';\nimport { FsSubmitButtonDirective } from '../submit-button.directive';\nimport { ConfirmConfig, SubmittedEvent, ConfirmTabGroup } from './../../interfaces';\nimport { ConfirmResult } from './../../enums/confirm-result';\nimport { FsForm } from '../../services/fsform.service';\nimport { SubmitEvent } from './../../interfaces/submit-event';\nimport { FormStatus } from './../../enums/form-status';\nimport { confirmResultContinue } from '../../helpers/confirm-result-continue';\nimport { getFormErrors } from '../../helpers/get-form-errors';\n\n\n@Directive({\n selector: '[fsForm]',\n})\nexport class FsFormDirective implements OnInit, OnDestroy, AfterContentInit, OnChanges {\n\n @Input()\n public wrapperSelector = '.fs-form-wrapper,.mat-form-field';\n\n @Input()\n public messageSelector = '.fs-form-message,.mat-form-field-subscript-wrapper';\n\n @Input()\n public hintSelector = '.fs-form-hint,.mat-form-field-hint-wrapper';\n\n @Input()\n public labelSelector = '.fs-form-label,.mat-form-field-label';\n\n @Input()\n public autocomplete = false;\n\n @Input()\n public shortcuts = true; // Ctrl + s\n\n @Input()\n public confirm: ConfirmConfig | boolean = true;\n\n @Input()\n public confirmDialog = true;\n\n @Input()\n public confirmDrawer = true;\n\n @Input()\n public confirmBrowser = true;\n\n @Input()\n public confirmTabs = true;\n\n @Input()\n public dirtySubmitButton = true;\n\n @Input()\n public submit: (event: SubmitEvent) => Observable<any>;\n\n @Input()\n public successDelay = 0;\n\n @Input()\n public errorDelay = 1000;\n\n @Input()\n public tabGroup: MatTabGroup;\n\n @Output('fsForm')\n public submitEvent: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public invalid: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public valid: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public submitted: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public reseted: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public cleared: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @HostBinding('class.fs-form')\n public fsformClass = true;\n\n @ContentChildren(FsFormDialogCloseDirective, { descendants: true })\n public formDialogClose: QueryList<FsFormDialogCloseDirective>;\n\n @ContentChildren(MatTabGroup, { descendants: true })\n private _tabGroups: QueryList<MatTabGroup> = new QueryList();\n\n private _submitButtons: QueryList<FsSubmitButtonDirective> = new QueryList();\n private _registerControl;\n private _activeSubmitButton: FsSubmitButtonDirective;\n private _dialogBackdropEscape = false;\n private _snapshot: { [key: string]: unknown } = {};\n private _status$ = new BehaviorSubject(FormStatus.Valid);\n private _destroy$ = new Subject();\n\n constructor(\n @Inject(NgForm)\n public ngForm: NgForm,\n private _form: FsForm,\n private _element: ElementRef,\n private _message: FsMessage,\n private _prompt: FsPrompt,\n private _ngZone: NgZone,\n\n @Optional() @Inject(MatDialogRef)\n private _dialogRef: MatDialogRef<any>,\n\n @Optional() @Inject(DrawerRef)\n private _drawerRef: DrawerRef<any>,\n ) {}\n\n public get submitting(): boolean {\n return this._status$.getValue() === FormStatus.Submitting;\n }\n\n public get completing(): boolean {\n return this._status$.getValue() === FormStatus.Completing;\n }\n\n private get _submitEvent(): SubmitEvent {\n return {\n ngForm: this.ngForm,\n submitter: this._submitter,\n };\n }\n\n private get _formValidState$(): Observable<SubmittedEvent> {\n this._form.broadcast('valid', this._submitEvent);\n this.submitEvent.emit(this._submitEvent);\n this.valid.emit(this._submitEvent);\n\n const submittedEvent: SubmittedEvent = {\n ngForm: this.ngForm,\n submitter: this._submitter,\n response: null\n };\n\n if (!this.submit) {\n return of(submittedEvent);\n }\n\n const result = this.submit(this._submitEvent);\n\n if (!isObservable(result)) {\n return of(submittedEvent);\n }\n\n return result\n .pipe(\n map((response) => {\n submittedEvent.response = response;\n\n return submittedEvent;\n })\n );\n }\n\n private get _formInvalidState$(): Observable<never> {\n this._form.broadcast('invalid', this._submitEvent);\n\n if (this.invalid) {\n this.invalid.emit(this._submitEvent);\n }\n\n const message = 'Changes not saved. Please review errors highlighted in red.';\n this._message.error(message, { mode: MessageMode.Toast });\n\n const el = this._element.nativeElement.querySelector('.ng-invalid');\n\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n\n return throwError('Form validation error');\n }\n\n private get _submitter(): string {\n return this._activeSubmitButton\n ? this._activeSubmitButton.name\n : null;\n }\n\n public ngOnInit() {\n this._registerConfirmDialogBackdropEscape();\n this._listenHotKeys();\n this._listenWindowClose();\n this._listenSubmit();\n\n if (!this.autocomplete) {\n this._registerAutocomplete();\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.confirm) {\n this._updateDirtySubmitButtons();\n }\n }\n\n public ngAfterContentInit(): void {\n this._registerConfirm();\n this._registerConfirmDialogClose();\n this._registerConfirmDrawerClose();\n this._registerConfirmTabs();\n this._registerDrawerClose();\n this._registerDirtySubmitButton();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public createSnapshot(): void {\n this._snapshot = this.ngForm.value;\n }\n\n public reset(): void {\n this.ngForm.resetForm();\n\n Object.keys(this.ngForm.controls)\n .forEach((name: string) => {\n const control = this.ngForm.controls[name];\n control.reset(this._snapshot[name]);\n });\n \n this.reseted.emit();\n }\n\n public clear(): void {\n this.ngForm.resetForm();\n this.cleared.emit();\n }\n\n public dirty(): void {\n this.ngForm.form.markAsDirty();\n this._updateDirtySubmitButtons();\n }\n\n public triggerSubmit(): void {\n this.ngForm.ngSubmit.next();\n }\n\n public triggerConfirm(): Observable<ConfirmResult> {\n const submitted = this.submitting ? this.submitted.asObservable() : of({});\n\n return submitted\n .pipe(\n take(1),\n mergeMap(() => confirmUnsaved(this, this._prompt)),\n );\n }\n\n public enable(): void {\n this.ngForm.control.enable();\n\n this._updateDirtySubmitButtons();\n }\n\n public disable(): void {\n this.ngForm.control.disable();\n\n this._submitButtons.forEach((button) => {\n button.disable();\n });\n }\n\n public addSubmitButton(submitButton: FsSubmitButtonDirective): void {\n this._submitButtons.reset(\n [\n ...this._submitButtons.toArray(),\n submitButton,\n ]);\n }\n\n public removeSubmitButton(submitButton: FsSubmitButtonDirective): void {\n this._submitButtons.reset(\n [\n ...this._submitButtons.toArray()\n .filter((submitButton_) => (submitButton !== submitButton_)),\n ]);\n }\n\n private _listenSubmit(): void {\n this.ngForm\n .ngSubmit\n .pipe(\n tap((event) => {\n event?.preventDefault();\n }),\n filter(() => {\n return [ FormStatus.Valid, FormStatus.Invalid ]\n .includes(this._status$.getValue());\n }),\n tap(() => this._markControlsAsTouchedAndUpdateValidity()),\n tap(() => this._broadcastSubmittingEvents()),\n switchMap(() => this._waitUntilStatusPending()),\n tap(() => this._setupActiveSubmitButton()),\n mergeMap(() => {\n return this.ngForm.status === 'INVALID'\n ? this._formInvalidState$\n : this._formValidState$;\n }),\n catchError((e, source$) => {\n this._handleError(e);\n\n return source$;\n }),\n tap((submittedEvent: SubmittedEvent) => {\n this._completeSubmit(true, submittedEvent);\n }),\n takeUntil(this._destroy$)\n )\n .subscribe(() => {});\n }\n\n private _listenWindowClose(): void {\n fromEvent(window, 'beforeunload')\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((event: Event) => {\n if (this.confirm && this.confirmBrowser && this.ngForm.dirty) {\n event.returnValue = false;\n }\n });\n }\n\n private _listenHotKeys(): void {\n this._ngZone.runOutsideAngular(() => {\n fromEvent(document, 'keydown')\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((event: KeyboardEvent) => {\n if (this._dialogBackdropEscape && event.code === 'Escape') {\n const dialog = document.getElementById(this._dialogRef.id);\n const paths = event.composedPath();\n\n if (paths) {\n paths.forEach(item => {\n if (dialog === item) {\n this._ngZone.run(() => {\n this._formClose();\n });\n }\n });\n }\n }\n\n if ((event.ctrlKey || event.metaKey) && event.code === 'KeyS') {\n event.preventDefault();\n\n if (this.shortcuts) {\n if (this._elementInForm(document.activeElement)) {\n this.ngForm.ngSubmit.next();\n }\n }\n }\n });\n });\n }\n\n private _formClose(): void {\n if (this.confirm && this.confirmDialog) {\n this.triggerConfirm()\n .pipe(\n filter((result) => confirmResultContinue(result)),\n switchMap((result) => {\n return result === ConfirmResult.Pristine || result === ConfirmResult.Discard\n ? of(null)\n : this.submitted.asObservable();\n }),\n takeUntil(this._destroy$),\n )\n .subscribe((result: SubmittedEvent) => {\n this._dialogRef.close(result?.response);\n });\n } else {\n this._dialogRef.close(null);\n }\n }\n\n private _registerDialogClose(directive: FsFormDialogCloseDirective): void {\n if (!directive.registered) {\n directive.registered = true;\n\n directive.clicked$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._formClose();\n });\n }\n }\n\n private _getActiveButton(): FsSubmitButtonDirective {\n const activeButton = this._submitButtons.find(button => {\n return button.active;\n });\n\n return activeButton ? activeButton : this._submitButtons.first;\n }\n\n private _elementInForm(el: Element): boolean {\n\n if (el.isSameNode(this._element.nativeElement)) {\n return true;\n } else if (el.parentElement) {\n return this._elementInForm(el.parentElement);\n }\n\n return false;\n }\n\n private _completeSubmit(success, submitEvent: SubmittedEvent): void {\n if (success) {\n this.ngForm.control.markAsPristine();\n this.createSnapshot(); \n this.submitted.emit(submitEvent); \n } else {\n this._resetButtons();\n }\n\n if (this._activeSubmitButton) {\n if (success) {\n this._activeSubmitButton.success();\n } else {\n this._activeSubmitButton.error();\n } \n }\n\n this._status$.next(FormStatus.Submitted);\n\n if (success) {\n this._status$.next(FormStatus.Success);\n } else {\n this._status$.next(FormStatus.Error);\n }\n\n this._status$.next(FormStatus.Completing);\n\n const resetDelay = success ? this.successDelay : this.errorDelay;\n\n of(true)\n .pipe(\n delay(resetDelay),\n first(),\n takeUntil(this._destroy$),\n ).subscribe(() => {\n if (this.ngForm.form.status === 'VALID') {\n this._status$.next(FormStatus.Valid);\n } else {\n this._status$.next(FormStatus.Invalid);\n }\n\n this._resetButtons();\n this._updateDirtySubmitButtons();\n });\n }\n\n private _resetButtons(): void {\n this._submitButtons.forEach((button) => {\n button.reset();\n });\n }\n\n private _registerConfirm(): void {\n this.ngForm.form.valueChanges\n .pipe(\n takeUntil(this._destroy$)\n )\n .subscribe((changes) => {\n if (this.confirm) {\n const existing = Object.keys(this._snapshot);\n\n Object.keys(changes)\n .forEach((name: string) => {\n if (existing.indexOf(name) === -1) {\n this._snapshot[name] = changes[name];\n }\n });\n }\n });\n }\n\n private _registerDrawerClose(): void {\n if (this._drawerRef) {\n this._drawerRef.closeStart$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((subscriber) => {\n if (this.submitting) {\n this._status$\n .pipe(\n filter((status) => status === FormStatus.Success || status === FormStatus.Error),\n takeUntil(this._destroy$),\n )\n .subscribe((status) => {\n if (status === FormStatus.Success) {\n subscriber.next();\n subscriber.complete();\n } else {\n subscriber.error();\n }\n });\n } else {\n subscriber.next();\n subscriber.complete();\n }\n });\n }\n }\n\n private _registerConfirmDrawerClose(): void {\n if (this._drawerRef) {\n this._drawerRef.closeStart$\n .pipe(\n switchMap((subscriber) => {\n return iif(\n () => this.confirm && this.confirmDrawer,\n this.triggerConfirm()\n .pipe(\n map((result) => confirmResultContinue(result)),\n tap((result) => {\n if (result) {\n subscriber.next();\n subscriber.complete();\n }\n })\n ),\n defer(() => {\n subscriber.next();\n subscriber.complete();\n }),\n )\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n }\n\n private _registerConfirmTabs(): void {\n if(this.tabGroup) {\n this.registerConfirmTabGroup(this.tabGroup);\n }\n\n this.registerConfirmTabGroups(this._tabGroups.toArray());\n\n this._tabGroups.changes\n .pipe(\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n this.registerConfirmTabGroups(this._tabGroups.toArray());\n });\n }\n\n public registerConfirmTabGroups(tabGroups: MatTabGroup[]): void {\n tabGroups.forEach((tabGroup: MatTabGroup) => {\n this.registerConfirmTabGroup(tabGroup);\n });\n }\n\n public registerConfirmTabGroup(tabGroup: MatTabGroup): void {\n const confirmTabGroup = tabGroup as ConfirmTabGroup;\n if (!confirmTabGroup._originalHandleClick) {\n confirmTabGroup._originalHandleClick = tabGroup._handleClick;\n confirmTabGroup._handlClick$ = new Subject<{ tab: MatTab; tabHeader: MatTabHeader; idx: number }>();\n confirmTabGroup._handleClick = (tab: MatTab, tabHeader: MatTabHeader, idx: number) => {\n if(confirmTabGroup._handlClick$.observers.length) {\n confirmTabGroup._handlClick$.next({ tab, tabHeader, idx});\n } else {\n confirmTabGroup._originalHandleClick(tab, tabHeader, idx);\n }\n }\n }\n\n confirmTabGroup._handlClick$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((event) => {\n if (!this.submitting) {\n if (this.confirm && this.confirmTabs) {\n this.triggerConfirm()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((result) => {\n if (confirmResultContinue(result)) {\n confirmTabGroup.selectedIndex = event.idx;\n }\n });\n } else {\n confirmTabGroup._originalHandleClick(event.tab, event.tabHeader, event.idx);\n }\n }\n });\n }\n\n private _registerConfirmDialogClose(): void {\n if (this._dialogRef) {\n this.formDialogClose.forEach(item => {\n this._registerDialogClose(item);\n });\n\n this.formDialogClose.changes\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((e) => {\n e.forEach(item => {\n this._registerDialogClose(item);\n });\n });\n }\n }\n\n private _registerConfirmDialogBackdropEscape(): void {\n this._dialogBackdropEscape = this._dialogRef && this._dialogRef.disableClose !== true;\n\n if (this._dialogRef && !this._dialogRef.disableClose) {\n this._dialogRef.disableClose = true;\n this._dialogRef.backdropClick()\n .pipe(\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n this._formClose();\n });\n\n this._destroy$\n .subscribe(() => {\n this._dialogRef.disableClose = false;\n });\n }\n }\n\n private _registerAutocomplete(): void {\n this._registerControl = this.ngForm.form.registerControl.bind(this.ngForm.form);\n\n this.ngForm.form.registerControl = (name: string, control: AbstractControl) => {\n\n const el: Element = this._element.nativeElement.querySelector(`input[name='${name}']`);\n\n if (el) {\n el.setAttribute('name', name + '_' + guid());\n\n if (!el.getAttribute('autocomplete')) {\n el.setAttribute('autocomplete', 'none');\n }\n }\n\n return this._registerControl(name, control);\n }\n }\n\n private _registerDirtySubmitButton(): void {\n\n if (!this.ngForm) {\n return;\n }\n\n this.ngForm.form.valueChanges\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._updateDirtySubmitButtons();\n });\n\n this._submitButtons.changes\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._updateDirtySubmitButtons();\n });\n }\n\n private _updateDirtySubmitButtons(): void {\n this._submitButtons\n .forEach((submitButton: FsSubmitButtonDirective) => {\n if (!this.confirm || !this.dirtySubmitButton || this.ngForm.dirty || !submitButton.dirtySubmit) {\n submitButton.enable();\n } else {\n submitButton.disable();\n }\n });\n }\n\n private _broadcastSubmittingEvents(): void {\n this._status$.next(FormStatus.Submitting);\n this._form.broadcast('submit', this.ngForm);\n }\n\n private _markControlsAsTouchedAndUpdateValidity(): void {\n Object.values(this.ngForm.controls)\n .forEach(control => {\n control.markAsDirty();\n control.markAsTouched();\n control.updateValueAndValidity();\n });\n }\n\n private _setupActiveSubmitButton(): void {\n this._activeSubmitButton = this._getActiveButton();\n this._resetButtons();\n\n if (this._activeSubmitButton) {\n this._activeSubmitButton.process();\n }\n }\n\n private _waitUntilStatusPending(): Observable<string> {\n return this.ngForm.statusChanges\n .pipe(\n startWith(this.ngForm.status),\n first((state) => state !== 'PENDING'),\n );\n }\n\n private _handleError(e: SubmittedEvent) {\n console.log('%c Form Submit ', 'color: white; background-color: #D33F49', 'Error occured');\n\n console.group('Error Details:');\n console.log('Message: ', e);\n console.log('FormRef: ', this);\n\n if (this.ngForm.invalid) {\n const errors = getFormErrors(this.ngForm.control, null);\n console.log('Validation Errors: ', errors);\n }\n\n console.groupEnd();\n\n this._completeSubmit(false, null);\n }\n\n}\n","import { AbstractControl, FormGroup, ValidationErrors } from '@angular/forms';\n\n\nexport function getFormErrors(control: AbstractControl, key: string): ValidationErrors | null {\n let errors: ValidationErrors | null = null;\n\n if (control.invalid && control.errors) {\n errors = {\n [key]: { ...control.errors },\n }\n }\n\n if (control instanceof FormGroup) {\n Object.entries(control.controls)\n .forEach(([name, childControl]) => {\n const childErrors = getFormErrors(childControl, name);\n\n if (childErrors) {\n if (!errors) {\n errors = { ...childErrors };\n } else {\n Object.assign(errors, childErrors);\n }\n }\n });\n }\n\n return errors;\n}\n","export const ERROR_MESSAGES = {\n required: 'This field is required',\n email: 'This is not a valid email address',\n emails: 'Input valid email addresses, comma separated',\n phone: 'Invalid phone number',\n numeric: 'Value should be numeric',\n integer: 'Value should be an integer',\n min: 'Value should not be less than $(1)',\n max: 'Value should not be greater than $(1)',\n minlength: 'Should not be shorter than $(1) characters',\n maxlength: 'Should not be longer than $(1) characters',\n compare: 'Inputs do not match',\n pattern: 'Value should match pattern $(1)',\n dateRange: 'Invalid date range',\n url: 'This is not a valid url',\n urlProtocol: 'Invalid URL. Proper http protocol is required. eg. https://google.com',\n greater: 'Value must be greater than $(1)',\n lesser: 'Value must be less than $(1)',\n};\n","import { InjectionToken } from '@angular/core';\nimport { ERROR_MESSAGES } from '../consts/error-messages.const';\n\nexport const VALIDATE_MESSAGES = new InjectionToken<Record<string, string>>(\n 'fs.form.validate-messages',\n);\n\nexport const VALIDATE_MESSAGE_PROVIDER = {\n provide: VALIDATE_MESSAGES,\n useFactory: messageProviderFactory,\n};\n\nexport function messageProviderFactory() {\n return { ...ERROR_MESSAGES };\n}\n\n","import {\n Input,\n ElementRef,\n Renderer2,\n Directive,\n Injector,\n Optional,\n Inject,\n Self,\n OnInit,\n OnDestroy,\n AfterContentInit,\n} from '@angular/core';\nimport { NgControl, AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { values, keys } from 'lodash-es';\n\nimport { FsFormDirective } from '../form/form.directive';\nimport {\n VALIDATE_MESSAGE_PROVIDER,\n VALIDATE_MESSAGES\n} from '../../providers/validate-messages.provider';\n\n\nexport interface FsControlDirective {\n validate?(control: AbstractControl): ValidationErrors | null;\n validateAsync?(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null>;\n}\n\n\n@Directive({\n selector: '[fsFormControl]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsControlDirective implements OnInit, AfterContentInit, OnDestroy {\n\n @Input() wrapperSelector: string | false;\n @Input() messageSelector: string | false;\n @Input() hintSelector: string | false;\n @Input() labelSelector: string | false;\n @Input() appendMessageClass = 'fs-form-message';\n @Input() appendLabelClass = 'fs-form-label';\n @Input() appendErrorClass = 'fs-form-error';\n @Input() appendHintClass = 'fs-form-hint';\n\n @Input()\n public set validateMessages(messages: Record<string, string>) {\n this._validateMessages = {\n ...this._validateMessages,\n ...messages,\n };\n }\n\n public errors = [];\n\n // protected _validateMessages = { ...ERROR_MESSAGES };\n protected _destroy$ = new Subject();\n protected _control: AbstractControl;\n\n constructor(\n protected elementRef: ElementRef,\n protected renderer2: Renderer2,\n protected injector: Injector,\n @Self() @Inject(VALIDATE_MESSAGES) protected _validateMessages,\n @Optional() protected ngControl: NgControl,\n @Optional() @Inject(FsFormDirective) private formDirective: FsFormDirective,\n ) {\n\n if (ngControl) {\n this._control = ngControl.control;\n } else {\n console.error('The element does not have a valid ngModel', this.elementRef.nativeElement);\n }\n }\n\n ngOnInit() {\n this._setupValidators();\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n ngAfterContentInit() {\n if (this._control) {\n\n /*\n Ensure that statusChanges has one subscription per control. Multiple can happen\n when multiple fsForm validation directives are applied to the same element\n */\n if (!(<any>this._control).statusChangesSubscribe) {\n\n this._control.statusChanges\n .pipe(\n takeUntil(this._destroy$)\n )\n .subscribe(this.render.bind(this));\n\n (<any>this._control).statusChangesSubscribe = true;\n }\n }\n }\n\n protected getMessageSelector(): string {\n\n if (this.messageSelector === false) {\n return '';\n }\n\n if (this.messageSelector) {\n return this.messageSelector;\n\n } else if (this.formDirective && this.formDirective.messageSelector) {\n return this.formDirective.messageSelector;\n }\n }\n\n protected getHintWrapperSelector(): string {\n\n if (this.hintSelector === false) {\n return '';\n }\n\n if (this.hintSelector) {\n return this.hintSelector;\n\n } else if (this.formDirective && this.formDirective.hintSelector) {\n return this.formDirective.hintSelector;\n }\n }\n\n protected getWrapperSelector(): string {\n\n if (this.wrapperSelector === false) {\n return '';\n }\n\n if (this.wrapperSelector) {\n return this.wrapperSelector;\n\n } else if (this.formDirective && this.formDirective.wrapperSelector) {\n return this.formDirective.wrapperSelector;\n }\n }\n\n protected getlabelSelector(): string {\n\n if (this.labelSelector === false) {\n return '';\n }\n\n if (this.labelSelector) {\n return this.labelSelector;\n\n } else if (this.formDirective && this.formDirective.labelSelector) {\n return this.formDirective.labelSelector;\n }\n }\n\n protected getWrapperElement() {\n\n const wrapper = this.getWrapper(this.elementRef.nativeElement);\n\n if (wrapper) {\n return wrapper;\n }\n\n return this.elementRef.nativeElement;\n }\n\n /*\n <mat-form-field class=\"mat-form-field\"> <-- Field Wrapper Class. Look for parents from the native element with the matching wrapperSelector. If not found defaults to native element.\n <input>\n <div class=\"fs-form-message\"> <-- Message Selector. Look for the element with class .fs-form-message or messageSelector\n <div class=\"fs-form-message\"></div>\n <div class=\"fs-form-hint\"></div> <-- Hint Selector. Look for the element with class .fs-form-hint or hintSelector\n </div>\n </mat-form-field>\n */\n\n protected render() {\n if (this.ngControl) {\n\n const renderer = this.renderer2;\n const wrapper = this.getWrapperElement();\n const error = this.ngControl.dirty ? this.getError(this.ngControl) : null;\n\n if (!this.getMessageSelector()) {\n return;\n }\n\n const messageWrapper = wrapper.querySelector(this.getMessageSelector());\n\n if (!messageWrapper) {\n return console.warn('Failed to locate ' + this.getMessageSelector(), this.elementRef.nativeElement);\n }\n\n if (this.getlabelSelector()) {\n const labelWrapper = wrapper.querySelector(this.getlabelSelector());\n\n if (labelWrapper) {\n if (this.appendLabelClass) {\n this.renderer2.addClass(labelWrapper, this.appendLabelClass);\n }\n }\n }\n\n if (this.appendMessageClass) {\n renderer.addClass(messageWrapper, this.appendMessageClass);\n }\n\n if (this.getHintWrapperSelector()) {\n const hint = messageWrapper.querySelector(this.getHintWrapperSelector());\n\n if (hint) {\n renderer.setStyle(hint, 'display', error ? 'none' : 'block');\n\n if (this.appendHintClass) {\n renderer.addClass(hint, this.appendHintClass);\n }\n }\n }\n\n let errorWrapper = wrapper.querySelector('.fs-form-error-target');\n if (errorWrapper) {\n errorWrapper.remove();\n }\n\n wrapper.classList.remove('ng-invalid');\n\n const shouldErrorBeRendered = this.ngControl.invalid\n && (this.ngControl.dirty || this.formDirective.ngForm?.submitted);\n\n if (!shouldErrorBeRendered || !error) {\n return;\n }\n\n wrapper.classList.add('ng-invalid');\n\n errorWrapper = renderer.createElement('div');\n renderer.addClass(errorWrapper, 'fs-form-error-target');\n renderer.addClass(errorWrapper, this.appendErrorClass);\n renderer.addClass(errorWrapper, this.appendErrorClass + '-' + error.name);\n\n const errorText = renderer.createText(error.message);\n\n renderer.appendChild(errorWrapper, errorText);\n messageWrapper.appendChild(errorWrapper);\n }\n }\n\n protected getWrapper(node, count = 0) {\n\n if (!node || count > 10) {\n return null;\n }\n\n if (node.parentNode && node.parentNode.querySelector(this.getWrapperSelector())) {\n return node;\n }\n\n return this.getWrapper(node.parentNode, ++count);\n }\n\n protected parseErrorMessage(message, args): string {\n values(args)\n .forEach((name) => {\n message = message.replace(/\\$\\(\\d\\)/, name);\n });\n\n return message;\n }\n\n protected getError(controlRef): { name: string, message: string } {\n\n const name = keys(controlRef.control.errors)[0];\n\n if (!name) {\n return null;\n }\n\n let message = controlRef.control.errors[name];\n\n if (this._validateMessages[name]) {\n message = this.parseErrorMessage(this._validateMessages[name], message);\n }\n\n return { name: name, message: message };\n }\n\n private _setupValidators(): void {\n const control = this._control;\n\n if (this.validate) {\n const validators = control.validator\n ? [ control.validator, this.validate.bind(this)]\n : this.validate.bind(this);\n\n control.setValidators(validators);\n }\n\n if (this.validateAsync) {\n const asyncValidators = control.asyncValidator\n ? [ control.asyncValidator, this.validateAsync.bind(this)]\n : this.validateAsync.bind(this);\n\n control.setAsyncValidators(asyncValidators);\n }\n\n control.updateValueAndValidity();\n }\n\n}\n","export function isEnabled(value: any): boolean {\n return value !== 'false' && (value || value === '');\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { isEnabled } from '../../helpers/is-enabled';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormRequired],[ngModel][required]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormRequiredDirective extends FsControlDirective implements OnChanges, FsValidator {\n public required = false;\n\n @Input('fsFormRequired')\n public set setFsFormRequired(value) {\n this.required = isEnabled(value);\n }\n\n @Input('required')\n public set setRequired(value) {\n this.required = isEnabled(value);\n }\n\n @Input('fsFormRequiredMessage')\n public set validationMessage(value: string) {\n this._validateMessages.required = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (this.required) {\n return Validators.required(this._control);\n } else {\n return null;\n }\n }\n\n protected render() {\n\n const wrapper = this.getWrapperElement();\n\n if (wrapper && this.getlabelSelector()) {\n const labelWrapper = wrapper.querySelector(this.getlabelSelector());\n\n // Adding class fs-form-label-requried adds the * to the label\n if (labelWrapper) {\n if (this.required) {\n this.renderer2.addClass(labelWrapper, 'fs-form-label-required');\n } else {\n this.renderer2.removeClass(labelWrapper, 'fs-form-label-required');\n }\n }\n }\n\n super.render();\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { email, isEmpty, isNumeric, phone, url } from '@firestitch/common';\nimport { isValid } from 'date-fns';\nimport { isObject } from 'lodash-es';\nimport { catchError, map, take } from 'rxjs/operators';\nimport { from, isObservable, Observable, of, throwError } from 'rxjs';\n\nexport class FsValidators {\n\n static email(control: AbstractControl): ValidationErrors | null {\n if (!control.value || email(control.value)) {\n return null;\n }\n\n return { email: true };\n }\n\n static emails(control: AbstractControl): ValidationErrors | null {\n const model = control.value || '';\n\n const hasInvalidEmails = model\n .split(',')\n .some((part) => !email(part));\n\n return hasInvalidEmails ? { email: true } : null;\n }\n\n static numeric(control: AbstractControl): ValidationErrors | null {\n if (isEmpty(control.value) || isNumeric(control.value)) {\n return null;\n } else {\n return { numeric: true }\n }\n }\n\n static integer(control: AbstractControl): ValidationErrors | null {\n if (!control.value || String(control.value) === '' || (control.value % 1 === 0)) {\n return null;\n } else {\n return { integer: true }\n }\n }\n\n static phone(control: AbstractControl): ValidationErrors | null {\n if (!control.value || phone(control.value)) {\n return null;\n }\n\n return { phone: true };\n }\n\n static url(control: AbstractControl, protocolRequired = false): ValidationErrors | null {\n if (!control.value) {\n return null;\n }\n\n if (!url(control.value)) {\n return { url: true };\n }\n\n if (protocolRequired) {\n const pattern = new RegExp(/^http(s)?:\\/\\//gm);\n\n if (!String(control.value).match(pattern)) {\n return { urlProtocol: true };\n }\n }\n\n return null;\n }\n\n static dateRange(control: AbstractControl): ValidationErrors | null {\n if (!control.value) {\n return null;\n }\n\n if (isObject(control.value)) {\n\n const start = control.value.start;\n const end = control.value.end;\n\n if ((!start && !end) || (isValid(start) && isValid(end))) {\n return null;\n }\n }\n\n return { dateRange: true };\n }\n\n static func(control: AbstractControl, formFunction, data: any) {\n let result: unknown;\n let stream$: Observable<unknown>\n\n try {\n result = formFunction(control, data);\n } catch (err) {\n err = err instanceof Error ? err.message : err;\n\n stream$ = throwError(err);\n }\n\n if (!stream$) {\n if (result instanceof Promise) {\n stream$ = from(result)\n } else if (isObservable(result)) {\n stream$ = result;\n } else {\n stream$ = of(null);\n }\n }\n\n return stream$\n .pipe(\n map(() => null),\n catchError((err) => {\n return of({ validationError: err });\n }),\n take(1),\n );\n }\n\n // static compare(a, b): ValidatorFn {\n // return (control: AbstractControl): ValidationErrors | null => {\n // if (a === b) {\n // return null;\n // } else {\n // return { compare: true };\n // }\n // }\n // }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMin]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormMinDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMin;\n\n @Input('fsFormMinMessage')\n public set validationMessage(value: string) {\n this._validateMessages.min = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return FsValidators.numeric(this._control) || Validators.min(parseFloat(this.fsFormMin))(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMax]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormMaxDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMax: number;\n\n @Input('fsFormMaxMessage')\n public set validationMessage(value: string) {\n this._validateMessages.max = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return FsValidators.numeric(this._control) || Validators.max(this.fsFormMax)(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMinLength]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormMinLengthDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMinLength: number;\n\n @Input('fsFormMinLengthMessage')\n public set validationMessage(value: string) {\n this._validateMessages.minlength = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return Validators.minLength(this.fsFormMinLength)(this._control);\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMaxLength]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormMaxLengthDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMaxLength: number;\n\n @Input('fsFormMaxLengthMessage')\n public set validationMessage(value: string) {\n this._validateMessages.maxlength = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return Validators.maxLength(this.fsFormMaxLength)(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormEmail]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormEmailDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormEmail;\n\n @Input('fsFormEmailMessage')\n public set validationMessage(value: string) {\n this._validateMessages.email = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormEmail)) {\n return FsValidators.email(this._control);\n } else {\n return null;\n }\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormEmails]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormEmailsDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormEmails;\n\n @Input('fsFormEmailsMessage')\n public set validationMessage(value: string) {\n this._validateMessages.emails = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormEmails)) {\n return FsValidators.emails(this._control);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormPhone]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormPhoneDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormPhone;\n\n @Input('fsFormPhoneMessage')\n public set validationMessage(value: string) {\n this._validateMessages.phone = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormPhone)) {\n return FsValidators.phone(this._control);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, Input, OnDestroy, AfterViewInit, OnChanges } from '@angular/core';\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormCompare]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n})\nexport class FsFormCompareDirective extends FsControlDirective\n implements OnChanges, AfterViewInit, OnDestroy, FsValidator {\n\n @Input()\n public fsFormCompare;\n\n @Input('fsFormCompareMessage')\n public set validationMessage(value: string) {\n this._validateMessages.compare = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (this.fsFormCompare.value === this.elementRef.nativeElement.value) {\n return null;\n } else {\n return { compare: true };\n }\n }\n\n public ngAfterViewInit() {\n this.fsFormCompare.addEventListener('keyup', () => {\n this._control.updateValueAndValidity();\n }, false);\n }\n\n public ngOnDestroy() {\n this.fsFormCompare.removeEventListener('keyup', () => {\n this._control.updateValueAndValidity();\n }, false);\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormInteger]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormIntegerDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormInteger;\n\n @Input('fsFormIntegerMessage')\n public set validationMessage(value: string) {\n this._validateMessages.integer = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormInteger)) {\n return FsValidators.integer(this._control);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormNumeric]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormNumericDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormNumeric;\n\n @Input('fsFormNumericMessage')\n public set validationMessage(value: string) {\n this._validateMessages.numeric = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormNumeric)) {\n return FsValidators.numeric(this._control);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormPattern]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormPatternDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormPattern: RegExp;\n\n @Input('fsFormPatternMessage')\n public set validationMessage(value: string) {\n this._validateMessages.pattern = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return Validators.pattern(this.fsFormPattern)(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { Observable } from 'rxjs';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsAsyncValidator } from '../../interfaces/async-validator';\n\n\n@Directive({\n selector: '[fsFormFunction]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormFunctionDirective extends FsControlDirective implements OnChanges, FsAsyncValidator {\n\n @Input()\n public fsFormFunction;\n\n @Input()\n public fsFormFunctionData;\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validateAsync(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {\n return FsValidators.func(this._control, this.fsFormFunction, this.fsFormFunctionData);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormGreater]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormGreaterDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormGreater;\n\n @Input('fsFormGreaterMessage')\n public set validationMessage(value: string) {\n this._validateMessages.greater = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const greater = parseFloat(this.fsFormGreater);\n const value = parseFloat(this._control.value);\n\n if (!isNaN(greater) && !isNaN(value) && value <= greater) {\n return { greater: { greater, actual: value } };\n }\n\n return FsValidators.numeric(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormDateRange]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormDateRangeDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormDateRange;\n\n @Input('fsFormDateRangeMessage')\n public set validationMessage(value: string) {\n this._validateMessages.dateRange = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormDateRange)) {\n return FsValidators.dateRange(this._control);\n } else {\n return null;\n }\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormLesser]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormLesserDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormLesser;\n\n @Input('fsFormLesserMessage')\n public set validationMessage(value: string) {\n this._validateMessages.lesser = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const lesser = parseFloat(this.fsFormLesser);\n const value = parseFloat(this._control.value);\n\n if (!isNaN(lesser) && !isNaN(value) && value >= lesser) {\n return { lesser: { lesser, actual: value } };\n }\n\n return FsValidators.numeric(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormUrl]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormUrlDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormUrl;\n\n @Input()\n public fsFormUrlProtocol = false;\n\n @Input('fsFormUrlMessage')\n public set validationMessage(value: string) {\n this._validateMessages.url = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormUrl)) {\n return FsValidators.url(this._control, this.fsFormUrlProtocol);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, OnInit, Host, ElementRef, HostBinding, Optional, Input, OnDestroy, ChangeDetectorRef } from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\nimport { FsFormDirective } from '../directives/form/form.directive';\n\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n\n@Directive({\n selector: 'button[type=\"submit\"]',\n})\nexport class FsSubmitButtonDirective implements OnInit, OnDestroy {\n\n @Input()\n public name;\n\n @Input()\n public dirtySubmit = true;\n\n @HostBinding('style.transition')\n public transitionStyle = null;\n\n public active = false;\n\n private _destroy$ = new Subject();\n\n constructor(\n @Optional() @Host() private _matButton: MatButton,\n @Optional() private _form: FsFormDirective,\n private _elementRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit() {\n if (this._form) {\n this._form.addSubmitButton(this); \n\n fromEvent(this.element, 'click')\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.active = true;\n });\n\n if (this.dirtySubmit) {\n if (this._form.dirtySubmitButton) {\n if(!this._form.ngForm.dirty) {\n this.disable();\n }\n }\n } \n\n this.transitionStyle = 'none';\n setTimeout(() => {\n this.transitionStyle = null;\n }, 500);\n }\n }\n\n public disable() {\n if (this._matButton) {\n this._matButton.disabled = true;\n this._cdRef.markForCheck();\n }\n }\n\n public enable() {\n if (this._matButton) {\n this._matButton.disabled = false;\n this._matButton.disableRipple = true;\n this._cdRef.markForCheck();\n }\n }\n\n public process() {\n this.setClass('process');\n this._matButton.disableRipple = true;\n }\n\n public success() {\n this.setClass('success');\n this._matButton.disableRipple = false;\n }\n\n public error() {\n this.setClass('error');\n this._matButton.disableRipple = false;\n }\n\n public setClass(cls) {\n const svg = this._getSvg(cls);\n this._resetClass();\n this._disableShadowAnimation();\n this.element.classList.add(`submit-${cls}`);\n this.element.append(svg);\n }\n\n public get element() {\n return this._elementRef.nativeElement;\n }\n\n public reset() {\n this.active = false;\n this.enable();\n this.element.querySelectorAll('.svg-icon')\n .forEach((el) => {\n el.remove();\n });\n this._matButton.disableRipple = false;\n this._resetClass();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this._form.removeSubmitButton(this);\n }\n\n private _disableShadowAnimation() {\n // .mat-elevation-z2 removes the click shadow animation\n //this.element.classList.add('mat-elevation-z2');\n }\n\n private _resetClass() {\n this.element.classList.remove('submit-success', 'submit-error', 'submit-process', 'mat-elevation-z2');\n }\n\n private _getSvg(type) {\n if (type === 'success') {\n return new DOMParser().parseFromString(`<svg class=\"svg-icon svg-icon-success\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 38 38\" style=\"enable-background:new 0 0 38 38;\" xml:space=\"preserve\" width=\"38px\" height=\"38px\">\n <g>\n <g class=\"check\">\n <g>\n <path d=\"M29.6,11.9c-0.5-0.5-1.3-0.5-1.8,0L16.3,23.4l-6.1-6.1c-0.5-0.5-1.3-0.5-1.8,0s-0.5,1.3,0,1.8l7,7c0.3,0.3,0.6,0.4,0.9,0.4s0.7-0.1,0.9-0.4l12.4-12.4C30.1,13.2,30.1,12.4,29.6,11.9z\"/>\n </g>\n </g>\n </g>\n </svg>`, 'text/xml').firstChild;\n }\n\n if (type === 'process') {\n return new DOMParser().parseFromString(`<svg class=\"svg-icon svg-icon-process\" width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(1 1)\" stroke-width=\"2\"><circle stroke-opacity=\".5\" cx=\"18\" cy=\"18\" r=\"18\"/>\n <path d=\"M36 18c0-9.94-8.06-18-18-18\"><animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\" to=\"360 18 18\" dur=\".7s\" repeatCount=\"indefinite\"/></path>\n </g>\n </g>\n </svg>`, 'text/xml').firstChild;\n }\n\n if (type === 'error') {\n return new DOMParser().parseFromString(`<svg class=\"svg-icon svg-icon-error\" xmlns=\"http://www.w3.org/2000/svg\" width=\"38px\" height=\"38px\" viewBox=\"0 0 16 16\"><g><path d=\"M8 1c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7zM8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8v0z\" data-original=\"#444444\" data-old_color=\"#444444\"/><path d=\"M12.2 10.8l-2.8-2.8 2.8-2.8-1.4-1.4-2.8 2.8-2.8-2.8-1.4 1.4 2.8 2.8-2.8 2.8 1.4 1.4 2.8-2.8 2.8 2.8z\"/></g> </svg>`, 'text/xml').firstChild;\n }\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { Observable } from 'rxjs';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsAsyncValidator } from '../../interfaces/async-validator';\n\n\n@Directive({\n selector: '[validate]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n})\nexport class FsFormValidateDirective extends FsControlDirective implements OnChanges, FsAsyncValidator {\n @Input('validate')\n public validateFn;\n\n @Input('validateData')\n public validateFnData;\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validateAsync(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {\n return FsValidators.func(this._control, this.validateFn, this.validateFnData);\n }\n\n}\n","import { Component, OnInit, ChangeDetectionStrategy, Input, Optional, ChangeDetectorRef, OnDestroy } from '@angular/core';\r\n\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { delay, filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { FsFormDirective } from '../../directives/form/form.directive';\r\nimport { ConfirmResult } from '../../enums/confirm-result';\r\n\r\n\r\n@Component({\r\n selector: 'fs-form-dialog-actions',\r\n templateUrl: './form-dialog-actions.component.html',\r\n styleUrls: ['./form-dialog-actions.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsFormDialogActionsComponent implements OnInit, OnDestroy {\r\n\r\n @Input() public save = true;\r\n @Input() public create = false;\r\n @Input() public close = false;\r\n @Input() public name: string;\r\n\r\n public dirty = false;\r\n\r\n private _destroy$ = new Subject<void>();\r\n \r\n constructor(\r\n @Optional() private _form: FsFormDirective,\r\n @Optional() private _dialogRef: MatDialogRef<any>,\r\n private _cdRef: ChangeDetectorRef, \r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n if(this._form) {\r\n this._form.ngForm.valueChanges\r\n .pipe( \r\n filter(() => (!this.dirty)),\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this.dirty = this._form.ngForm.dirty;\r\n this._cdRef.markForCheck();\r\n });\r\n\r\n this._form.submitted\r\n .pipe(\r\n delay(50),\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this.dirty = false;\r\n this._cdRef.markForCheck();\r\n });\r\n\r\n this._form.reseted\r\n .pipe(\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this.dirty = false;\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n }\r\n \r\n public closeClick(): void {\r\n if(this._form) {\r\n this._form.triggerConfirm()\r\n .pipe(\r\n filter((confirmResult: ConfirmResult) => (confirmResult !== ConfirmResult.Review)),\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this._dialogRef.close(null);\r\n });\r\n } else {\r\n this._dialogRef.close(null);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\n\nimport { FsFormDirective } from './directives/form/form.directive';\nimport { FsControlDirective } from './directives/validators/control.directive';\nimport { FsFormRequiredDirective } from './directives/validators/required.directive';\nimport { FsFormMinDirective } from './directives/validators/min.directive';\nimport { FsFormMaxDirective } from './directives/validators/max.directive';\nimport { FsFormMinLengthDirective } from './directives/validators/minlength.directive';\nimport { FsFormMaxLengthDirective } from './directives/validators/maxlength.directive';\nimport { FsFormEmailDirective } from './directives/validators/email.directive';\nimport { FsFormEmailsDirective } from './directives/validators/emails.directive';\nimport { FsFormPhoneDirective } from './directives/validators/phone.directive';\nimport { FsFormCompareDirective } from './directives/validators/compare.directive';\nimport { FsFormIntegerDirective } from './directives/validators/integer.directive';\nimport { FsFormNumericDirective } from './directives/validators/numeric.directive';\nimport { FsFormPatternDirective } from './directives/validators/pattern.directive';\nimport { FsFormFunctionDirective } from './directives/validators/function.directive';\nimport { FsFormGreaterDirective } from './directives/validators/greater.directive';\nimport { FsFormDateRangeDirective } from './directives/validators/daterange.directive';\nimport { FsFormLesserDirective } from './directives/validators/lesser.directive';\nimport { FsFormUrlDirective } from './directives/validators/url.directive';\nimport { FsFormDialogCloseDirective } from './directives/form-dialog-close.directive';\nimport { FsSubmitButtonDirective } from './directives/submit-button.directive';\nimport { FsFormValidateDirective } from './directives/validators/validate.directive';\nimport { FsFormDialogActionsComponent } from './components/form-dialog-actions/form-dialog-actions.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatButtonModule,\n MatDialogModule,\n ],\n declarations: [\n FsFormDirective,\n FsControlDirective,\n FsFormRequiredDirective,\n FsFormMinDirective,\n FsFormMaxDirective,\n FsFormMinLengthDirective,\n FsFormMaxLengthDirective,\n FsFormEmailDirective,\n FsFormEmailsDirective,\n FsFormPhoneDirective,\n FsFormCompareDirective,\n FsFormIntegerDirective,\n FsFormNumericDirective,\n FsFormPatternDirective,\n FsFormFunctionDirective,\n FsFormDateRangeDirective,\n FsFormGreaterDirective,\n FsFormLesserDirective,\n FsFormUrlDirective,\n FsFormDialogCloseDirective,\n FsSubmitButtonDirective,\n FsFormValidateDirective,\n FsFormDialogActionsComponent,\n ],\n exports: [\n FsFormDirective,\n FsControlDirective,\n FsFormRequiredDirective,\n FsFormMinDirective,\n FsFormMaxDirective,\n FsFormMinLengthDirective,\n FsFormMaxLengthDirective,\n FsFormEmailDirective,\n FsFormEmailsDirective,\n FsFormPhoneDirective,\n FsFormCompareDirective,\n FsFormIntegerDirective,\n FsFormNumericDirective,\n FsFormPatternDirective,\n FsFormFunctionDirective,\n FsFormDateRangeDirective,\n FsFormGreaterDirective,\n FsFormLesserDirective,\n FsFormUrlDirective,\n FsFormDialogCloseDirective,\n FsSubmitButtonDirective,\n FsFormValidateDirective,\n FsFormDialogActionsComponent,\n ],\n providers: [\n {\n provide: ErrorStateMatcher,\n useClass: ShowOnDirtyErrorStateMatcher,\n },\n ],\n})\nexport class FsFormModule {\n static forRoot(): ModuleWithProviders<FsFormModule> {\n return {\n ngModule: FsFormModule,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\nimport { FsPrompt } from '@firestitch/prompt';\nimport { Observable, of } from 'rxjs';\nimport { FsFormDirective } from '../directives/form/form.directive';\nimport { FormDeactivate } from '../interfaces/form-deactivate';\nimport { confirmUnsaved } from '../helpers/confirm-unsaved';\nimport { map } from 'rxjs/operators';\nimport { confirmResultContinue } from '../helpers';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormDeactivateGuard implements CanDeactivate<any> {\n\n constructor(private _prompt: FsPrompt) {}\n\n canDeactivate(directive: FormDeactivate): Observable<boolean> {\n\n if (!('getForm' in directive)) {\n const error = `Directive ${(<any>directive).constructor.name} does not property implement interface FormDeactivate`;\n console.error(error);\n return of(true);\n }\n\n const form: FsFormDirective = directive.getForm();\n\n if (!(form instanceof FsFormDirective)) {\n const error = `Directive ${directive.constructor.name}.getForm() does not return a valid FsFormDirective`;\n console.error(error);\n return of(true);\n }\n\n return confirmUnsaved(form, this._prompt)\n .pipe(\n map((result) => {\n return confirmResultContinue(result);\n }),\n );\n }\n}\n"]}
|