@ngxs/form-plugin 3.7.4 → 3.7.5
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/README.md +3 -3
- package/bundles/ngxs-form-plugin.umd.js +665 -658
- package/bundles/ngxs-form-plugin.umd.js.map +1 -1
- package/bundles/ngxs-form-plugin.umd.min.js +1 -1
- package/bundles/ngxs-form-plugin.umd.min.js.map +1 -1
- package/esm2015/index.js +9 -9
- package/esm2015/ngxs-form-plugin.js +9 -9
- package/esm2015/src/actions.js +195 -195
- package/esm2015/src/directive.js +306 -299
- package/esm2015/src/form.module.js +34 -34
- package/esm2015/src/form.plugin.js +83 -83
- package/esm2015/src/public_api.js +8 -8
- package/esm5/index.js +9 -9
- package/esm5/ngxs-form-plugin.js +9 -9
- package/esm5/src/actions.js +225 -225
- package/esm5/src/directive.js +335 -328
- package/esm5/src/form.module.js +41 -41
- package/esm5/src/form.plugin.js +100 -100
- package/esm5/src/public_api.js +8 -8
- package/fesm2015/ngxs-form-plugin.js +605 -598
- package/fesm2015/ngxs-form-plugin.js.map +1 -1
- package/fesm5/ngxs-form-plugin.js +674 -667
- package/fesm5/ngxs-form-plugin.js.map +1 -1
- package/index.d.ts +4 -4
- package/ngxs-form-plugin.d.ts +5 -5
- package/package.json +2 -2
- package/src/actions.d.ts +102 -102
- package/src/directive.d.ts +22 -22
- package/src/form.module.d.ts +4 -4
- package/src/form.plugin.d.ts +5 -5
- package/src/public_api.d.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngxs-form-plugin.js","sources":["ng://@ngxs/form-plugin/src/actions.ts","ng://@ngxs/form-plugin/src/form.plugin.ts","ng://@ngxs/form-plugin/src/directive.ts","ng://@ngxs/form-plugin/src/form.module.ts"],"sourcesContent":["export class UpdateFormStatus {\r\n static get type() {\r\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\r\n return '[Forms] Update Form Status';\r\n }\r\n constructor(\r\n public payload: {\r\n status: string | null;\r\n path: string;\r\n }\r\n ) {}\r\n}\r\n\r\nexport class UpdateFormValue {\r\n static get type() {\r\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\r\n return '[Forms] Update Form Value';\r\n }\r\n constructor(public payload: { value: any; path: string; propertyPath?: string }) {}\r\n}\r\n\r\nexport class UpdateForm {\r\n static get type() {\r\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\r\n return '[Forms] Update Form';\r\n }\r\n constructor(\r\n public payload: {\r\n value: any;\r\n errors: { [k: string]: string } | null;\r\n dirty: boolean | null;\r\n status: string | null;\r\n path: string;\r\n }\r\n ) {}\r\n}\r\n\r\nexport class UpdateFormDirty {\r\n static get type() {\r\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\r\n return '[Forms] Update Form Dirty';\r\n }\r\n constructor(public payload: { dirty: boolean | null; path: string }) {}\r\n}\r\n\r\nexport class SetFormDirty {\r\n static get type() {\r\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\r\n return '[Forms] Set Form Dirty';\r\n }\r\n constructor(public payload: string) {}\r\n}\r\n\r\nexport class SetFormPristine {\r\n static get type() {\r\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\r\n return '[Forms] Set Form Pristine';\r\n }\r\n constructor(public payload: string) {}\r\n}\r\n\r\nexport class UpdateFormErrors {\r\n static get type() {\r\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\r\n return '[Forms] Update Form Errors';\r\n }\r\n constructor(public payload: { errors: { [k: string]: string } | null; path: string }) {}\r\n}\r\n\r\nexport class SetFormDisabled {\r\n static get type() {\r\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\r\n return '[Forms] Set Form Disabled';\r\n }\r\n constructor(public payload: string) {}\r\n}\r\n\r\nexport class SetFormEnabled {\r\n static get type() {\r\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\r\n return '[Forms] Set Form Enabled';\r\n }\r\n constructor(public payload: string) {}\r\n}\r\n\r\nexport class ResetForm {\r\n static get type() {\r\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\r\n return '[Forms] Reset Form';\r\n }\r\n constructor(public payload: { path: string; value?: any }) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n getActionTypeFromInstance,\r\n getValue,\r\n NgxsNextPluginFn,\r\n NgxsPlugin,\r\n setValue\r\n} from '@ngxs/store';\r\nimport {\r\n ResetForm,\r\n SetFormDirty,\r\n SetFormDisabled,\r\n SetFormEnabled,\r\n SetFormPristine,\r\n UpdateForm,\r\n UpdateFormDirty,\r\n UpdateFormErrors,\r\n UpdateFormStatus,\r\n UpdateFormValue\r\n} from './actions';\r\n\r\n@Injectable()\r\nexport class NgxsFormPlugin implements NgxsPlugin {\r\n handle(state: any, event: any, next: NgxsNextPluginFn) {\r\n const type = getActionTypeFromInstance(event);\r\n\r\n let nextState = state;\r\n\r\n if (type === UpdateFormValue.type || type === UpdateForm.type || type === ResetForm.type) {\r\n const { value } = event.payload;\r\n const payloadValue = Array.isArray(value)\r\n ? value.slice()\r\n : isObjectLike(value)\r\n ? { ...value }\r\n : value;\r\n const path = this.joinPathWithPropertyPath(event);\r\n nextState = setValue(nextState, path, payloadValue);\r\n }\r\n\r\n if (type === ResetForm.type) {\r\n const model = getValue(nextState, `${event.payload.path}.model`);\r\n nextState = setValue(nextState, `${event.payload.path}`, { model: model });\r\n }\r\n\r\n if (type === UpdateFormStatus.type || type === UpdateForm.type) {\r\n nextState = setValue(nextState, `${event.payload.path}.status`, event.payload.status);\r\n }\r\n\r\n if (type === UpdateFormErrors.type || type === UpdateForm.type) {\r\n nextState = setValue(nextState, `${event.payload.path}.errors`, {\r\n ...event.payload.errors\r\n });\r\n }\r\n\r\n if (type === UpdateFormDirty.type || type === UpdateForm.type) {\r\n nextState = setValue(nextState, `${event.payload.path}.dirty`, event.payload.dirty);\r\n }\r\n\r\n if (type === SetFormDirty.type) {\r\n nextState = setValue(nextState, `${event.payload}.dirty`, true);\r\n }\r\n\r\n if (type === SetFormPristine.type) {\r\n nextState = setValue(nextState, `${event.payload}.dirty`, false);\r\n }\r\n\r\n if (type === SetFormDisabled.type) {\r\n nextState = setValue(nextState, `${event.payload}.disabled`, true);\r\n }\r\n\r\n if (type === SetFormEnabled.type) {\r\n nextState = setValue(nextState, `${event.payload}.disabled`, false);\r\n }\r\n\r\n return next(nextState, event);\r\n }\r\n\r\n private joinPathWithPropertyPath({ payload }: UpdateFormValue): string {\r\n let path = `${payload.path}.model`;\r\n\r\n if (payload.propertyPath) {\r\n path += `.${payload.propertyPath}`;\r\n }\r\n\r\n return path;\r\n }\r\n}\r\n\r\nfunction isObjectLike(target: unknown): target is object {\r\n return target !== null && typeof target === 'object';\r\n}\r\n","import { ChangeDetectorRef, Directive, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroup, FormGroupDirective } from '@angular/forms';\r\nimport { Actions, getValue, ofActionDispatched, Store } from '@ngxs/store';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\r\nimport {\r\n ResetForm,\r\n UpdateForm,\r\n UpdateFormDirty,\r\n UpdateFormErrors,\r\n UpdateFormStatus,\r\n UpdateFormValue\r\n} from './actions';\r\n\r\n@Directive({ selector: '[ngxsForm]' })\r\nexport class FormDirective implements OnInit, OnDestroy {\r\n @Input('ngxsForm')\r\n path: string = null!;\r\n\r\n @Input('ngxsFormDebounce')\r\n debounce = 100;\r\n\r\n @Input('ngxsFormClearOnDestroy')\r\n set clearDestroy(val: boolean) {\r\n this._clearDestroy = val != null && `${val}` !== 'false';\r\n }\r\n\r\n get clearDestroy(): boolean {\r\n return this._clearDestroy;\r\n }\r\n\r\n _clearDestroy = false;\r\n\r\n private readonly _destroy$ = new Subject<void>();\r\n private _updating = false;\r\n\r\n constructor(\r\n private _actions$: Actions,\r\n private _store: Store,\r\n private _formGroupDirective: FormGroupDirective,\r\n private _cd: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n this._actions$\r\n .pipe(\r\n ofActionDispatched(ResetForm),\r\n filter((action: ResetForm) => action.payload.path === this.path),\r\n takeUntil(this._destroy$)\r\n )\r\n .subscribe(({ payload: { value } }: ResetForm) => {\r\n this.form.reset(value);\r\n this.updateFormStateWithRawValue(true);\r\n this._cd.markForCheck();\r\n });\r\n\r\n this.getStateStream(`${this.path}.model`).subscribe(model => {\r\n if (this._updating || !model) {\r\n return;\r\n }\r\n\r\n this.form.patchValue(model);\r\n this._cd.markForCheck();\r\n });\r\n\r\n this.getStateStream(`${this.path}.dirty`).subscribe(dirty => {\r\n if (this.form.dirty === dirty || typeof dirty !== 'boolean') {\r\n return;\r\n }\r\n\r\n if (dirty) {\r\n this.form.markAsDirty();\r\n } else {\r\n this.form.markAsPristine();\r\n }\r\n\r\n this._cd.markForCheck();\r\n });\r\n\r\n // On first state change, sync form model, status and dirty with state\r\n this._store\r\n .selectOnce(state => getValue(state, this.path))\r\n .subscribe(() => {\r\n this._store.dispatch([\r\n new UpdateFormValue({\r\n path: this.path,\r\n value: this.form.getRawValue()\r\n }),\r\n new UpdateFormStatus({\r\n path: this.path,\r\n status: this.form.status\r\n }),\r\n new UpdateFormDirty({\r\n path: this.path,\r\n dirty: this.form.dirty\r\n })\r\n ]);\r\n });\r\n\r\n this.getStateStream(`${this.path}.disabled`).subscribe(disabled => {\r\n if (this.form.disabled === disabled || typeof disabled !== 'boolean') {\r\n return;\r\n }\r\n\r\n if (disabled) {\r\n this.form.disable();\r\n } else {\r\n this.form.enable();\r\n }\r\n\r\n this._cd.markForCheck();\r\n });\r\n\r\n this._formGroupDirective.valueChanges!.pipe(this.debounceChange()).subscribe(() => {\r\n this.updateFormStateWithRawValue();\r\n });\r\n\r\n this._formGroupDirective\r\n .statusChanges!.pipe(distinctUntilChanged(), this.debounceChange())\r\n .subscribe((status: string) => {\r\n this._store.dispatch(\r\n new UpdateFormStatus({\r\n status,\r\n path: this.path\r\n })\r\n );\r\n });\r\n }\r\n\r\n updateFormStateWithRawValue(withFormStatus?: boolean) {\r\n if (this._updating) return;\r\n\r\n const value = this._formGroupDirective.control.getRawValue();\r\n\r\n const actions: any[] = [\r\n new UpdateFormValue({\r\n path: this.path,\r\n value\r\n }),\r\n new UpdateFormDirty({\r\n path: this.path,\r\n dirty: this._formGroupDirective.dirty\r\n }),\r\n new UpdateFormErrors({\r\n path: this.path,\r\n errors: this._formGroupDirective.errors\r\n })\r\n ];\r\n\r\n if (withFormStatus) {\r\n actions.push(\r\n new UpdateFormStatus({\r\n path: this.path,\r\n status: this._formGroupDirective.status\r\n })\r\n );\r\n }\r\n\r\n this._updating = true;\r\n this._store.dispatch(actions).subscribe({\r\n error: () => (this._updating = false),\r\n complete: () => (this._updating = false)\r\n });\r\n }\r\n ngOnDestroy() {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n\r\n if (this.clearDestroy) {\r\n this._store.dispatch(\r\n new UpdateForm({\r\n path: this.path,\r\n value: null,\r\n dirty: null,\r\n status: null,\r\n errors: null\r\n })\r\n );\r\n }\r\n }\r\n\r\n private debounceChange() {\r\n const skipDebounceTime =\r\n this._formGroupDirective.control.updateOn !== 'change' || this.debounce < 0;\r\n\r\n return skipDebounceTime\r\n ? (change: Observable<any>) => change.pipe(takeUntil(this._destroy$))\r\n : (change: Observable<any>) =>\r\n change.pipe(debounceTime(this.debounce), takeUntil(this._destroy$));\r\n }\r\n\r\n private get form(): FormGroup {\r\n return this._formGroupDirective.form;\r\n }\r\n\r\n private getStateStream(path: string) {\r\n return this._store.select(state => getValue(state, path)).pipe(takeUntil(this._destroy$));\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { NGXS_PLUGINS } from '@ngxs/store';\r\nimport { NgxsFormPlugin } from './form.plugin';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormDirective } from './directive';\r\n\r\n@NgModule({\r\n imports: [ReactiveFormsModule],\r\n declarations: [FormDirective],\r\n exports: [FormDirective]\r\n})\r\nexport class NgxsFormPluginModule {\r\n static forRoot(): ModuleWithProviders<NgxsFormPluginModule> {\r\n return {\r\n ngModule: NgxsFormPluginModule,\r\n providers: [\r\n {\r\n provide: NGXS_PLUGINS,\r\n useClass: NgxsFormPlugin,\r\n multi: true\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngxs-form-plugin.js","sources":["ng://@ngxs/form-plugin/src/actions.ts","ng://@ngxs/form-plugin/src/form.plugin.ts","ng://@ngxs/form-plugin/src/directive.ts","ng://@ngxs/form-plugin/src/form.module.ts"],"sourcesContent":["export class UpdateFormStatus {\n static get type() {\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\n return '[Forms] Update Form Status';\n }\n constructor(\n public payload: {\n status: string | null;\n path: string;\n }\n ) {}\n}\n\nexport class UpdateFormValue {\n static get type() {\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\n return '[Forms] Update Form Value';\n }\n constructor(public payload: { value: any; path: string; propertyPath?: string }) {}\n}\n\nexport class UpdateForm {\n static get type() {\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\n return '[Forms] Update Form';\n }\n constructor(\n public payload: {\n value: any;\n errors: { [k: string]: string } | null;\n dirty: boolean | null;\n status: string | null;\n path: string;\n }\n ) {}\n}\n\nexport class UpdateFormDirty {\n static get type() {\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\n return '[Forms] Update Form Dirty';\n }\n constructor(public payload: { dirty: boolean | null; path: string }) {}\n}\n\nexport class SetFormDirty {\n static get type() {\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\n return '[Forms] Set Form Dirty';\n }\n constructor(public payload: string) {}\n}\n\nexport class SetFormPristine {\n static get type() {\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\n return '[Forms] Set Form Pristine';\n }\n constructor(public payload: string) {}\n}\n\nexport class UpdateFormErrors {\n static get type() {\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\n return '[Forms] Update Form Errors';\n }\n constructor(public payload: { errors: { [k: string]: string } | null; path: string }) {}\n}\n\nexport class SetFormDisabled {\n static get type() {\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\n return '[Forms] Set Form Disabled';\n }\n constructor(public payload: string) {}\n}\n\nexport class SetFormEnabled {\n static get type() {\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\n return '[Forms] Set Form Enabled';\n }\n constructor(public payload: string) {}\n}\n\nexport class ResetForm {\n static get type() {\n // NOTE: Not necessary to declare the type in this way in your code. See https://github.com/ngxs/store/pull/644#issuecomment-436003138\n return '[Forms] Reset Form';\n }\n constructor(public payload: { path: string; value?: any }) {}\n}\n","import { Injectable } from '@angular/core';\nimport {\n getActionTypeFromInstance,\n getValue,\n NgxsNextPluginFn,\n NgxsPlugin,\n setValue\n} from '@ngxs/store';\nimport {\n ResetForm,\n SetFormDirty,\n SetFormDisabled,\n SetFormEnabled,\n SetFormPristine,\n UpdateForm,\n UpdateFormDirty,\n UpdateFormErrors,\n UpdateFormStatus,\n UpdateFormValue\n} from './actions';\n\n@Injectable()\nexport class NgxsFormPlugin implements NgxsPlugin {\n handle(state: any, event: any, next: NgxsNextPluginFn) {\n const type = getActionTypeFromInstance(event);\n\n let nextState = state;\n\n if (type === UpdateFormValue.type || type === UpdateForm.type || type === ResetForm.type) {\n const { value } = event.payload;\n const payloadValue = Array.isArray(value)\n ? value.slice()\n : isObjectLike(value)\n ? { ...value }\n : value;\n const path = this.joinPathWithPropertyPath(event);\n nextState = setValue(nextState, path, payloadValue);\n }\n\n if (type === ResetForm.type) {\n const model = getValue(nextState, `${event.payload.path}.model`);\n nextState = setValue(nextState, `${event.payload.path}`, { model: model });\n }\n\n if (type === UpdateFormStatus.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.status`, event.payload.status);\n }\n\n if (type === UpdateFormErrors.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.errors`, {\n ...event.payload.errors\n });\n }\n\n if (type === UpdateFormDirty.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.dirty`, event.payload.dirty);\n }\n\n if (type === SetFormDirty.type) {\n nextState = setValue(nextState, `${event.payload}.dirty`, true);\n }\n\n if (type === SetFormPristine.type) {\n nextState = setValue(nextState, `${event.payload}.dirty`, false);\n }\n\n if (type === SetFormDisabled.type) {\n nextState = setValue(nextState, `${event.payload}.disabled`, true);\n }\n\n if (type === SetFormEnabled.type) {\n nextState = setValue(nextState, `${event.payload}.disabled`, false);\n }\n\n return next(nextState, event);\n }\n\n private joinPathWithPropertyPath({ payload }: UpdateFormValue): string {\n let path = `${payload.path}.model`;\n\n if (payload.propertyPath) {\n path += `.${payload.propertyPath}`;\n }\n\n return path;\n }\n}\n\nfunction isObjectLike(target: unknown): target is object {\n return target !== null && typeof target === 'object';\n}\n","import { ChangeDetectorRef, Directive, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormGroup, FormGroupDirective } from '@angular/forms';\nimport { Actions, getValue, ofActionDispatched, Store } from '@ngxs/store';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport {\n ResetForm,\n UpdateForm,\n UpdateFormDirty,\n UpdateFormErrors,\n UpdateFormStatus,\n UpdateFormValue\n} from './actions';\n\n@Directive({ selector: '[ngxsForm]' })\nexport class FormDirective implements OnInit, OnDestroy {\n @Input('ngxsForm')\n path: string = null!;\n\n @Input('ngxsFormDebounce')\n debounce = 100;\n\n @Input('ngxsFormClearOnDestroy')\n set clearDestroy(val: boolean) {\n this._clearDestroy = val != null && `${val}` !== 'false';\n }\n\n get clearDestroy(): boolean {\n return this._clearDestroy;\n }\n\n _clearDestroy = false;\n\n private readonly _destroy$ = new Subject<void>();\n private _updating = false;\n\n constructor(\n private _actions$: Actions,\n private _store: Store,\n private _formGroupDirective: FormGroupDirective,\n private _cd: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this._actions$\n .pipe(\n ofActionDispatched(ResetForm),\n filter((action: ResetForm) => action.payload.path === this.path),\n takeUntil(this._destroy$)\n )\n .subscribe(({ payload: { value } }: ResetForm) => {\n this.form.reset(value);\n this.updateFormStateWithRawValue(true);\n this._cd.markForCheck();\n });\n\n this.getStateStream(`${this.path}.model`).subscribe(model => {\n if (this._updating || !model) {\n return;\n }\n\n this.form.patchValue(model);\n this._cd.markForCheck();\n });\n\n this.getStateStream(`${this.path}.dirty`).subscribe(dirty => {\n if (this.form.dirty === dirty || typeof dirty !== 'boolean') {\n return;\n }\n\n if (dirty) {\n this.form.markAsDirty();\n } else {\n this.form.markAsPristine();\n }\n\n this._cd.markForCheck();\n });\n\n // On first state change, sync form model, status and dirty with state\n this._store\n .selectOnce(state => getValue(state, this.path))\n .subscribe(() => {\n this._store.dispatch([\n new UpdateFormValue({\n path: this.path,\n value: this.form.getRawValue()\n }),\n new UpdateFormStatus({\n path: this.path,\n status: this.form.status\n }),\n new UpdateFormDirty({\n path: this.path,\n dirty: this.form.dirty\n })\n ]);\n });\n\n this.getStateStream(`${this.path}.disabled`).subscribe(disabled => {\n if (this.form.disabled === disabled || typeof disabled !== 'boolean') {\n return;\n }\n\n if (disabled) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n\n this._cd.markForCheck();\n });\n\n this._formGroupDirective\n .valueChanges!.pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n this.debounceChange()\n )\n .subscribe(() => {\n this.updateFormStateWithRawValue();\n });\n\n this._formGroupDirective\n .statusChanges!.pipe(distinctUntilChanged(), this.debounceChange())\n .subscribe((status: string) => {\n this._store.dispatch(\n new UpdateFormStatus({\n status,\n path: this.path\n })\n );\n });\n }\n\n updateFormStateWithRawValue(withFormStatus?: boolean) {\n if (this._updating) return;\n\n const value = this._formGroupDirective.control.getRawValue();\n\n const actions: any[] = [\n new UpdateFormValue({\n path: this.path,\n value\n }),\n new UpdateFormDirty({\n path: this.path,\n dirty: this._formGroupDirective.dirty\n }),\n new UpdateFormErrors({\n path: this.path,\n errors: this._formGroupDirective.errors\n })\n ];\n\n if (withFormStatus) {\n actions.push(\n new UpdateFormStatus({\n path: this.path,\n status: this._formGroupDirective.status\n })\n );\n }\n\n this._updating = true;\n this._store.dispatch(actions).subscribe({\n error: () => (this._updating = false),\n complete: () => (this._updating = false)\n });\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n\n if (this.clearDestroy) {\n this._store.dispatch(\n new UpdateForm({\n path: this.path,\n value: null,\n dirty: null,\n status: null,\n errors: null\n })\n );\n }\n }\n\n private debounceChange() {\n const skipDebounceTime =\n this._formGroupDirective.control.updateOn !== 'change' || this.debounce < 0;\n\n return skipDebounceTime\n ? (change: Observable<any>) => change.pipe(takeUntil(this._destroy$))\n : (change: Observable<any>) =>\n change.pipe(debounceTime(this.debounce), takeUntil(this._destroy$));\n }\n\n private get form(): FormGroup {\n return this._formGroupDirective.form;\n }\n\n private getStateStream(path: string) {\n return this._store.select(state => getValue(state, path)).pipe(takeUntil(this._destroy$));\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { NGXS_PLUGINS } from '@ngxs/store';\nimport { NgxsFormPlugin } from './form.plugin';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormDirective } from './directive';\n\n@NgModule({\n imports: [ReactiveFormsModule],\n declarations: [FormDirective],\n exports: [FormDirective]\n})\nexport class NgxsFormPluginModule {\n static forRoot(): ModuleWithProviders<NgxsFormPluginModule> {\n return {\n ngModule: NgxsFormPluginModule,\n providers: [\n {\n provide: NGXS_PLUGINS,\n useClass: NgxsFormPlugin,\n multi: true\n }\n ]\n };\n }\n}\n"],"names":[],"mappings":"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"}
|