@firestitch/form 9.7.3 → 9.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/components/form-dialog-actions/form-dialog-actions.component.d.ts +18 -15
- package/app/consts/error-messages.const.d.ts +19 -19
- package/app/directives/form/form.directive.d.ts +102 -100
- package/app/directives/form-dialog-close.directive.d.ts +9 -9
- package/app/directives/submit-button.directive.d.ts +28 -28
- package/app/directives/validators/compare.directive.d.ts +12 -12
- package/app/directives/validators/control.directive.d.ts +45 -45
- package/app/directives/validators/daterange.directive.d.ts +10 -10
- package/app/directives/validators/email.directive.d.ts +10 -10
- package/app/directives/validators/emails.directive.d.ts +10 -10
- package/app/directives/validators/function.directive.d.ts +11 -11
- package/app/directives/validators/greater.directive.d.ts +10 -10
- package/app/directives/validators/integer.directive.d.ts +10 -10
- package/app/directives/validators/lesser.directive.d.ts +10 -10
- package/app/directives/validators/max.directive.d.ts +10 -10
- package/app/directives/validators/maxlength.directive.d.ts +10 -10
- package/app/directives/validators/min.directive.d.ts +10 -10
- package/app/directives/validators/minlength.directive.d.ts +10 -10
- package/app/directives/validators/numeric.directive.d.ts +10 -10
- package/app/directives/validators/pattern.directive.d.ts +10 -10
- package/app/directives/validators/phone.directive.d.ts +10 -10
- package/app/directives/validators/required.directive.d.ts +13 -13
- package/app/directives/validators/url.directive.d.ts +11 -11
- package/app/directives/validators/validate.directive.d.ts +11 -11
- package/app/enums/confirm-result.d.ts +7 -7
- package/app/enums/form-status.d.ts +9 -9
- package/app/fs-form.module.d.ts +4 -4
- package/app/guards/form-deactivate.guard.d.ts +9 -9
- package/app/helpers/confirm-result-continue.d.ts +1 -1
- package/app/helpers/confirm-unsaved.d.ts +5 -5
- package/app/helpers/get-form-errors.d.ts +2 -2
- package/app/helpers/index.d.ts +2 -2
- package/app/helpers/is-enabled.d.ts +1 -1
- package/app/interfaces/async-validator.d.ts +14 -14
- package/app/interfaces/confirm-config.d.ts +7 -7
- package/app/interfaces/confirm-tab-group.d.ts +10 -10
- package/app/interfaces/form-deactivate.d.ts +4 -4
- package/app/interfaces/index.d.ts +4 -4
- package/app/interfaces/submit-event.d.ts +5 -5
- package/app/interfaces/submitted-event.d.ts +6 -6
- package/app/interfaces/validator.d.ts +13 -13
- package/app/providers/validate-messages.provider.d.ts +25 -25
- package/app/services/fsform.service.d.ts +7 -7
- package/app/validators/validators.d.ts +12 -12
- package/bundles/firestitch-form.umd.js +2300 -2267
- package/bundles/firestitch-form.umd.js.map +1 -1
- package/bundles/firestitch-form.umd.min.js +2 -2
- package/bundles/firestitch-form.umd.min.js.map +1 -1
- package/esm2015/app/components/form-dialog-actions/form-dialog-actions.component.js +93 -67
- package/esm2015/app/consts/error-messages.const.js +19 -19
- package/esm2015/app/directives/form/form.directive.js +665 -656
- package/esm2015/app/directives/form-dialog-close.directive.js +32 -32
- package/esm2015/app/directives/submit-button.directive.js +137 -137
- package/esm2015/app/directives/validators/compare.directive.js +48 -48
- package/esm2015/app/directives/validators/control.directive.js +272 -272
- package/esm2015/app/directives/validators/daterange.directive.js +40 -40
- package/esm2015/app/directives/validators/email.directive.js +40 -40
- package/esm2015/app/directives/validators/emails.directive.js +40 -40
- package/esm2015/app/directives/validators/function.directive.js +30 -30
- package/esm2015/app/directives/validators/greater.directive.js +39 -39
- package/esm2015/app/directives/validators/integer.directive.js +40 -40
- package/esm2015/app/directives/validators/lesser.directive.js +39 -39
- package/esm2015/app/directives/validators/max.directive.js +35 -35
- package/esm2015/app/directives/validators/maxlength.directive.js +34 -34
- package/esm2015/app/directives/validators/min.directive.js +35 -35
- package/esm2015/app/directives/validators/minlength.directive.js +34 -34
- package/esm2015/app/directives/validators/numeric.directive.js +40 -40
- package/esm2015/app/directives/validators/pattern.directive.js +34 -34
- package/esm2015/app/directives/validators/phone.directive.js +40 -40
- package/esm2015/app/directives/validators/required.directive.js +72 -72
- package/esm2015/app/directives/validators/url.directive.js +48 -48
- package/esm2015/app/directives/validators/validate.directive.js +30 -30
- package/esm2015/app/enums/confirm-result.js +8 -8
- package/esm2015/app/enums/form-status.js +10 -10
- package/esm2015/app/fs-form.module.js +106 -106
- package/esm2015/app/guards/form-deactivate.guard.js +43 -43
- package/esm2015/app/helpers/confirm-result-continue.js +4 -4
- package/esm2015/app/helpers/confirm-unsaved.js +70 -70
- package/esm2015/app/helpers/get-form-errors.js +24 -24
- package/esm2015/app/helpers/index.js +2 -2
- package/esm2015/app/helpers/is-enabled.js +3 -3
- package/esm2015/app/providers/validate-messages.provider.js +10 -10
- package/esm2015/app/services/fsform.service.js +25 -25
- package/esm2015/app/validators/validators.js +96 -96
- package/esm2015/firestitch-form.js +27 -28
- package/esm2015/public_api.js +13 -13
- package/esm5/app/components/form-dialog-actions/form-dialog-actions.component.js +96 -69
- package/esm5/app/consts/error-messages.const.js +19 -19
- package/esm5/app/directives/form/form.directive.js +706 -697
- package/esm5/app/directives/form-dialog-close.directive.js +33 -33
- package/esm5/app/directives/submit-button.directive.js +143 -143
- package/esm5/app/directives/validators/compare.directive.js +59 -59
- package/esm5/app/directives/validators/control.directive.js +278 -278
- package/esm5/app/directives/validators/daterange.directive.js +49 -49
- package/esm5/app/directives/validators/email.directive.js +49 -49
- package/esm5/app/directives/validators/emails.directive.js +49 -49
- package/esm5/app/directives/validators/function.directive.js +35 -35
- package/esm5/app/directives/validators/greater.directive.js +48 -48
- package/esm5/app/directives/validators/integer.directive.js +49 -49
- package/esm5/app/directives/validators/lesser.directive.js +48 -48
- package/esm5/app/directives/validators/max.directive.js +44 -44
- package/esm5/app/directives/validators/maxlength.directive.js +43 -43
- package/esm5/app/directives/validators/min.directive.js +44 -44
- package/esm5/app/directives/validators/minlength.directive.js +43 -43
- package/esm5/app/directives/validators/numeric.directive.js +49 -49
- package/esm5/app/directives/validators/pattern.directive.js +43 -43
- package/esm5/app/directives/validators/phone.directive.js +49 -49
- package/esm5/app/directives/validators/required.directive.js +87 -87
- package/esm5/app/directives/validators/url.directive.js +55 -55
- package/esm5/app/directives/validators/validate.directive.js +35 -35
- package/esm5/app/enums/confirm-result.js +8 -8
- package/esm5/app/enums/form-status.js +10 -10
- package/esm5/app/fs-form.module.js +110 -110
- package/esm5/app/guards/form-deactivate.guard.js +44 -44
- package/esm5/app/helpers/confirm-result-continue.js +4 -4
- package/esm5/app/helpers/confirm-unsaved.js +70 -70
- package/esm5/app/helpers/get-form-errors.js +27 -27
- package/esm5/app/helpers/index.js +2 -2
- package/esm5/app/helpers/is-enabled.js +3 -3
- package/esm5/app/providers/validate-messages.provider.js +11 -11
- package/esm5/app/services/fsform.service.js +26 -26
- package/esm5/app/validators/validators.js +101 -101
- package/esm5/firestitch-form.js +27 -28
- package/esm5/public_api.js +13 -13
- package/fesm2015/firestitch-form.js +2075 -2042
- package/fesm2015/firestitch-form.js.map +1 -1
- package/fesm5/firestitch-form.js +2304 -2270
- package/fesm5/firestitch-form.js.map +1 -1
- package/firestitch-form.d.ts +26 -27
- package/firestitch-form.metadata.json +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +12 -12
- package/app/components/form-dialog-actions/index.d.ts +0 -1
- package/esm2015/app/components/form-dialog-actions/index.js +0 -2
- package/esm5/app/components/form-dialog-actions/index.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-form.js","sources":["ng://@firestitch/form/app/enums/confirm-result.ts","ng://@firestitch/form/app/helpers/confirm-unsaved.ts","ng://@firestitch/form/app/directives/form-dialog-close.directive.ts","ng://@firestitch/form/app/services/fsform.service.ts","ng://@firestitch/form/app/enums/form-status.ts","ng://@firestitch/form/app/helpers/confirm-result-continue.ts","ng://@firestitch/form/app/helpers/get-form-errors.ts","ng://@firestitch/form/app/directives/form/form.directive.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","ng://@firestitch/form/public_api.ts","ng://@firestitch/form/firestitch-form.ts"],"sourcesContent":["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","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","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 { ConfirmResult } from '../enums/confirm-result';\n\nexport function confirmResultContinue(result) {\n return result === ConfirmResult.Discard || result === ConfirmResult.Save || result === ConfirmResult.Pristine;\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","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 @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\n public clear(): void {\n this.ngForm.resetForm();\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 } else {\n subscriber.error();\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","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\nimport { Subject } from 'rxjs';\r\nimport { delay, filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { FsFormDirective } from '../../directives/form/form.directive';\r\n\r\n\r\n@Component({\r\n selector: 'fs-form-dialog-actions',\r\n templateUrl: './form-dialog-actions.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./form-dialog-actions.component.scss'],\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 private _cdRef: ChangeDetectorRef, \r\n ) {}\r\n\r\n public ngOnInit(): void {\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 \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';\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","// Modules\nexport { FsFormModule } from './app/fs-form.module';\n\n// Services\nexport { FsForm } from './app/services/fsform.service';\n\n// Directives\nexport { FsFormDirective } from './app/directives/form/form.directive';\n\n// Components\nexport { FsFormDialogActionsComponent } from './app/components/form-dialog-actions/form-dialog-actions.component';\n\nexport { FsValidators } from './app/validators/validators';\nexport { FormDeactivate } from './app/interfaces/form-deactivate';\n\nexport { FormDeactivateGuard } from './app/guards/form-deactivate.guard';\n\n// Interfaces\nexport { SubmitEvent } from './app/interfaces/submit-event';\nexport { SubmittedEvent } from './app/interfaces/submitted-event';\nexport { ConfirmConfig } from './app/interfaces/confirm-config';\n\n// Enums\nexport { ConfirmResult } from './app/enums/confirm-result';\nexport { FormStatus } from './app/enums/form-status';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {FsFormDialogActionsComponent as ɵy} from './app/components/form-dialog-actions';\nexport {FsFormDialogCloseDirective as ɵa} from './app/directives/form-dialog-close.directive';\nexport {FsSubmitButtonDirective as ɵw} from './app/directives/submit-button.directive';\nexport {FsFormCompareDirective as ɵn} from './app/directives/validators/compare.directive';\nexport {FsControlDirective as ɵb} from './app/directives/validators/control.directive';\nexport {FsFormDateRangeDirective as ɵs} from './app/directives/validators/daterange.directive';\nexport {FsFormEmailDirective as ɵk} from './app/directives/validators/email.directive';\nexport {FsFormEmailsDirective as ɵl} from './app/directives/validators/emails.directive';\nexport {FsFormFunctionDirective as ɵr} from './app/directives/validators/function.directive';\nexport {FsFormGreaterDirective as ɵt} from './app/directives/validators/greater.directive';\nexport {FsFormIntegerDirective as ɵo} from './app/directives/validators/integer.directive';\nexport {FsFormLesserDirective as ɵu} from './app/directives/validators/lesser.directive';\nexport {FsFormMaxDirective as ɵh} from './app/directives/validators/max.directive';\nexport {FsFormMaxLengthDirective as ɵj} from './app/directives/validators/maxlength.directive';\nexport {FsFormMinDirective as ɵg} from './app/directives/validators/min.directive';\nexport {FsFormMinLengthDirective as ɵi} from './app/directives/validators/minlength.directive';\nexport {FsFormNumericDirective as ɵp} from './app/directives/validators/numeric.directive';\nexport {FsFormPatternDirective as ɵq} from './app/directives/validators/pattern.directive';\nexport {FsFormPhoneDirective as ɵm} from './app/directives/validators/phone.directive';\nexport {FsFormRequiredDirective as ɵf} from './app/directives/validators/required.directive';\nexport {FsFormUrlDirective as ɵv} from './app/directives/validators/url.directive';\nexport {FsFormValidateDirective as ɵx} from './app/directives/validators/validate.directive';\nexport {VALIDATE_MESSAGES as ɵc,VALIDATE_MESSAGE_PROVIDER as ɵd,messageProviderFactory as ɵe} from './app/providers/validate-messages.provider';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firestitch-form.js","sources":["ng://@firestitch/form/app/enums/confirm-result.ts","ng://@firestitch/form/app/helpers/confirm-unsaved.ts","ng://@firestitch/form/app/directives/form-dialog-close.directive.ts","ng://@firestitch/form/app/services/fsform.service.ts","ng://@firestitch/form/app/enums/form-status.ts","ng://@firestitch/form/app/helpers/confirm-result-continue.ts","ng://@firestitch/form/app/helpers/get-form-errors.ts","ng://@firestitch/form/app/directives/form/form.directive.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","ng://@firestitch/form/public_api.ts","ng://@firestitch/form/firestitch-form.ts"],"sourcesContent":["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","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","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 { ConfirmResult } from '../enums/confirm-result';\n\nexport function confirmResultContinue(result) {\n return result === ConfirmResult.Discard || result === ConfirmResult.Save || result === ConfirmResult.Pristine;\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","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","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","// Modules\nexport { FsFormModule } from './app/fs-form.module';\n\n// Services\nexport { FsForm } from './app/services/fsform.service';\n\n// Directives\nexport { FsFormDirective } from './app/directives/form/form.directive';\n\n// Components\nexport { FsFormDialogActionsComponent } from './app/components/form-dialog-actions/form-dialog-actions.component';\n\nexport { FsValidators } from './app/validators/validators';\nexport { FormDeactivate } from './app/interfaces/form-deactivate';\n\nexport { FormDeactivateGuard } from './app/guards/form-deactivate.guard';\n\n// Interfaces\nexport { SubmitEvent } from './app/interfaces/submit-event';\nexport { SubmittedEvent } from './app/interfaces/submitted-event';\nexport { ConfirmConfig } from './app/interfaces/confirm-config';\n\n// Enums\nexport { ConfirmResult } from './app/enums/confirm-result';\nexport { FormStatus } from './app/enums/form-status';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {FsFormDialogCloseDirective as ɵa} from './app/directives/form-dialog-close.directive';\nexport {FsSubmitButtonDirective as ɵw} from './app/directives/submit-button.directive';\nexport {FsFormCompareDirective as ɵn} from './app/directives/validators/compare.directive';\nexport {FsControlDirective as ɵb} from './app/directives/validators/control.directive';\nexport {FsFormDateRangeDirective as ɵs} from './app/directives/validators/daterange.directive';\nexport {FsFormEmailDirective as ɵk} from './app/directives/validators/email.directive';\nexport {FsFormEmailsDirective as ɵl} from './app/directives/validators/emails.directive';\nexport {FsFormFunctionDirective as ɵr} from './app/directives/validators/function.directive';\nexport {FsFormGreaterDirective as ɵt} from './app/directives/validators/greater.directive';\nexport {FsFormIntegerDirective as ɵo} from './app/directives/validators/integer.directive';\nexport {FsFormLesserDirective as ɵu} from './app/directives/validators/lesser.directive';\nexport {FsFormMaxDirective as ɵh} from './app/directives/validators/max.directive';\nexport {FsFormMaxLengthDirective as ɵj} from './app/directives/validators/maxlength.directive';\nexport {FsFormMinDirective as ɵg} from './app/directives/validators/min.directive';\nexport {FsFormMinLengthDirective as ɵi} from './app/directives/validators/minlength.directive';\nexport {FsFormNumericDirective as ɵp} from './app/directives/validators/numeric.directive';\nexport {FsFormPatternDirective as ɵq} from './app/directives/validators/pattern.directive';\nexport {FsFormPhoneDirective as ɵm} from './app/directives/validators/phone.directive';\nexport {FsFormRequiredDirective as ɵf} from './app/directives/validators/required.directive';\nexport {FsFormUrlDirective as ɵv} from './app/directives/validators/url.directive';\nexport {FsFormValidateDirective as ɵx} from './app/directives/validators/validate.directive';\nexport {VALIDATE_MESSAGES as ɵc,VALIDATE_MESSAGE_PROVIDER as ɵd,messageProviderFactory as ɵe} from './app/providers/validate-messages.provider';"],"names":[],"mappings":"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"}
|