@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
package/esm5/src/directive.js
CHANGED
|
@@ -1,328 +1,335 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
import { ChangeDetectorRef, Directive, Input } from '@angular/core';
|
|
6
|
-
import { FormGroupDirective } from '@angular/forms';
|
|
7
|
-
import { Actions, getValue, ofActionDispatched, Store } from '@ngxs/store';
|
|
8
|
-
import { Subject } from 'rxjs';
|
|
9
|
-
import { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';
|
|
10
|
-
import { ResetForm, UpdateForm, UpdateFormDirty, UpdateFormErrors, UpdateFormStatus, UpdateFormValue } from './actions';
|
|
11
|
-
var FormDirective = /** @class */ (function () {
|
|
12
|
-
function FormDirective(_actions$, _store, _formGroupDirective, _cd) {
|
|
13
|
-
this._actions$ = _actions$;
|
|
14
|
-
this._store = _store;
|
|
15
|
-
this._formGroupDirective = _formGroupDirective;
|
|
16
|
-
this._cd = _cd;
|
|
17
|
-
this.path = (/** @type {?} */ (null));
|
|
18
|
-
this.debounce = 100;
|
|
19
|
-
this._clearDestroy = false;
|
|
20
|
-
this._destroy$ = new Subject();
|
|
21
|
-
this._updating = false;
|
|
22
|
-
}
|
|
23
|
-
Object.defineProperty(FormDirective.prototype, "clearDestroy", {
|
|
24
|
-
get: /**
|
|
25
|
-
* @return {?}
|
|
26
|
-
*/
|
|
27
|
-
function () {
|
|
28
|
-
return this._clearDestroy;
|
|
29
|
-
},
|
|
30
|
-
set: /**
|
|
31
|
-
* @param {?} val
|
|
32
|
-
* @return {?}
|
|
33
|
-
*/
|
|
34
|
-
function (val) {
|
|
35
|
-
this._clearDestroy = val != null && "" + val !== 'false';
|
|
36
|
-
},
|
|
37
|
-
enumerable: true,
|
|
38
|
-
configurable: true
|
|
39
|
-
});
|
|
40
|
-
/**
|
|
41
|
-
* @return {?}
|
|
42
|
-
*/
|
|
43
|
-
FormDirective.prototype.ngOnInit = /**
|
|
44
|
-
* @return {?}
|
|
45
|
-
*/
|
|
46
|
-
function () {
|
|
47
|
-
var _this = this;
|
|
48
|
-
this._actions$
|
|
49
|
-
.pipe(ofActionDispatched(ResetForm), filter((/**
|
|
50
|
-
* @param {?} action
|
|
51
|
-
* @return {?}
|
|
52
|
-
*/
|
|
53
|
-
function (action) { return action.payload.path === _this.path; })), takeUntil(this._destroy$))
|
|
54
|
-
.subscribe((/**
|
|
55
|
-
* @param {?} __0
|
|
56
|
-
* @return {?}
|
|
57
|
-
*/
|
|
58
|
-
function (_a) {
|
|
59
|
-
var value = _a.payload.value;
|
|
60
|
-
_this.form.reset(value);
|
|
61
|
-
_this.updateFormStateWithRawValue(true);
|
|
62
|
-
_this._cd.markForCheck();
|
|
63
|
-
}));
|
|
64
|
-
this.getStateStream(this.path + ".model").subscribe((/**
|
|
65
|
-
* @param {?} model
|
|
66
|
-
* @return {?}
|
|
67
|
-
*/
|
|
68
|
-
function (model) {
|
|
69
|
-
if (_this._updating || !model) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
_this.form.patchValue(model);
|
|
73
|
-
_this._cd.markForCheck();
|
|
74
|
-
}));
|
|
75
|
-
this.getStateStream(this.path + ".dirty").subscribe((/**
|
|
76
|
-
* @param {?} dirty
|
|
77
|
-
* @return {?}
|
|
78
|
-
*/
|
|
79
|
-
function (dirty) {
|
|
80
|
-
if (_this.form.dirty === dirty || typeof dirty !== 'boolean') {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
if (dirty) {
|
|
84
|
-
_this.form.markAsDirty();
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
_this.form.markAsPristine();
|
|
88
|
-
}
|
|
89
|
-
_this._cd.markForCheck();
|
|
90
|
-
}));
|
|
91
|
-
// On first state change, sync form model, status and dirty with state
|
|
92
|
-
this._store
|
|
93
|
-
.selectOnce((/**
|
|
94
|
-
* @param {?} state
|
|
95
|
-
* @return {?}
|
|
96
|
-
*/
|
|
97
|
-
function (state) { return getValue(state, _this.path); }))
|
|
98
|
-
.subscribe((/**
|
|
99
|
-
* @return {?}
|
|
100
|
-
*/
|
|
101
|
-
function () {
|
|
102
|
-
_this._store.dispatch([
|
|
103
|
-
new UpdateFormValue({
|
|
104
|
-
path: _this.path,
|
|
105
|
-
value: _this.form.getRawValue()
|
|
106
|
-
}),
|
|
107
|
-
new UpdateFormStatus({
|
|
108
|
-
path: _this.path,
|
|
109
|
-
status: _this.form.status
|
|
110
|
-
}),
|
|
111
|
-
new UpdateFormDirty({
|
|
112
|
-
path: _this.path,
|
|
113
|
-
dirty: _this.form.dirty
|
|
114
|
-
})
|
|
115
|
-
]);
|
|
116
|
-
}));
|
|
117
|
-
this.getStateStream(this.path + ".disabled").subscribe((/**
|
|
118
|
-
* @param {?} disabled
|
|
119
|
-
* @return {?}
|
|
120
|
-
*/
|
|
121
|
-
function (disabled) {
|
|
122
|
-
if (_this.form.disabled === disabled || typeof disabled !== 'boolean') {
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
if (disabled) {
|
|
126
|
-
_this.form.disable();
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
_this.form.enable();
|
|
130
|
-
}
|
|
131
|
-
_this._cd.markForCheck();
|
|
132
|
-
}));
|
|
133
|
-
(/** @type {?} */ (this._formGroupDirective
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
(
|
|
140
|
-
.
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
})
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
* @
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
{
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
{ type:
|
|
281
|
-
];
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
FormDirective
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
FormDirective.prototype.
|
|
302
|
-
/**
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvZm9ybS1wbHVnaW4vIiwic291cmNlcyI6WyJzcmMvZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFhLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNoQixNQUFNLFdBQVcsQ0FBQztBQUVuQjtJQXNCRSx1QkFDVSxTQUFrQixFQUNsQixNQUFhLEVBQ2IsbUJBQXVDLEVBQ3ZDLEdBQXNCO1FBSHRCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF2QmhDLFNBQUksR0FBVyxtQkFBQSxJQUFJLEVBQUMsQ0FBQztRQUdyQixhQUFRLEdBQUcsR0FBRyxDQUFDO1FBV2Ysa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFTCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN6QyxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBT3ZCLENBQUM7SUFuQkosc0JBQ0ksdUNBQVk7Ozs7UUFJaEI7WUFDRSxPQUFPLElBQUks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LFlBQVksRUFBRTs7OztnQkFaNUIsT0FBTztnQkFBZ0MsS0FBSztnQkFEakMsa0JBQWtCO2dCQUQ3QixpQkFBaUI7Ozt1QkFnQnZCLEtBQUssU0FBQyxVQUFVOzJCQUdoQixLQUFLLFNBQUMsa0JBQWtCOytCQUd4QixLQUFLLFNBQUMsd0JBQXdCOztJQWdMakMsb0JBQUM7Q0FBQSxBQXhMRCxJQXdMQztTQXZMWSxhQUFhOzs7SUFDeEIsNkJBQ3FCOztJQUVyQixpQ0FDZTs7SUFXZixzQ0FBc0I7Ozs7O0lBRXRCLGtDQUFpRDs7Ozs7SUFDakQsa0NBQTBCOzs7OztJQUd4QixrQ0FBMEI7Ozs7O0lBQzFCLCtCQUFxQjs7Ozs7SUFDckIsNENBQStDOzs7OztJQUMvQyw0QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGlvbnMsIGdldFZhbHVlLCBvZkFjdGlvbkRpc3BhdGNoZWQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIFJlc2V0Rm9ybSxcclxuICBVcGRhdGVGb3JtLFxyXG4gIFVwZGF0ZUZvcm1EaXJ0eSxcclxuICBVcGRhdGVGb3JtRXJyb3JzLFxyXG4gIFVwZGF0ZUZvcm1TdGF0dXMsXHJcbiAgVXBkYXRlRm9ybVZhbHVlXHJcbn0gZnJvbSAnLi9hY3Rpb25zJztcclxuXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tuZ3hzRm9ybV0nIH0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgnbmd4c0Zvcm0nKVxyXG4gIHBhdGg6IHN0cmluZyA9IG51bGwhO1xyXG5cclxuICBASW5wdXQoJ25neHNGb3JtRGVib3VuY2UnKVxyXG4gIGRlYm91bmNlID0gMTAwO1xyXG5cclxuICBASW5wdXQoJ25neHNGb3JtQ2xlYXJPbkRlc3Ryb3knKVxyXG4gIHNldCBjbGVhckRlc3Ryb3kodmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9jbGVhckRlc3Ryb3kgPSB2YWwgIT0gbnVsbCAmJiBgJHt2YWx9YCAhPT0gJ2ZhbHNlJztcclxuICB9XHJcblxyXG4gIGdldCBjbGVhckRlc3Ryb3koKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2xlYXJEZXN0cm95O1xyXG4gIH1cclxuXHJcbiAgX2NsZWFyRGVzdHJveSA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfdXBkYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9hY3Rpb25zJDogQWN0aW9ucyxcclxuICAgIHByaXZhdGUgX3N0b3JlOiBTdG9yZSxcclxuICAgIHByaXZhdGUgX2Zvcm1Hcm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX2FjdGlvbnMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG9mQWN0aW9uRGlzcGF0Y2hlZChSZXNldEZvcm0pLFxyXG4gICAgICAgIGZpbHRlcigoYWN0aW9uOiBSZXNldEZvcm0pID0+IGFjdGlvbi5wYXlsb2FkLnBhdGggPT09IHRoaXMucGF0aCksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHsgcGF5bG9hZDogeyB2YWx1ZSB9IH06IFJlc2V0Rm9ybSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtU3RhdGVXaXRoUmF3VmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0U3RhdGVTdHJlYW0oYCR7dGhpcy5wYXRofS5tb2RlbGApLnN1YnNjcmliZShtb2RlbCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl91cGRhdGluZyB8fCAhbW9kZWwpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKG1vZGVsKTtcclxuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdldFN0YXRlU3RyZWFtKGAke3RoaXMucGF0aH0uZGlydHlgKS5zdWJzY3JpYmUoZGlydHkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5mb3JtLmRpcnR5ID09PSBkaXJ0eSB8fCB0eXBlb2YgZGlydHkgIT09ICdib29sZWFuJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGRpcnR5KSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gT24gZmlyc3Qgc3RhdGUgY2hhbmdlLCBzeW5jIGZvcm0gbW9kZWwsIHN0YXR1cyBhbmQgZGlydHkgd2l0aCBzdGF0ZVxyXG4gICAgdGhpcy5fc3RvcmVcclxuICAgICAgLnNlbGVjdE9uY2Uoc3RhdGUgPT4gZ2V0VmFsdWUoc3RhdGUsIHRoaXMucGF0aCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFtcclxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtVmFsdWUoe1xyXG4gICAgICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBuZXcgVXBkYXRlRm9ybVN0YXR1cyh7XHJcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcclxuICAgICAgICAgICAgc3RhdHVzOiB0aGlzLmZvcm0uc3RhdHVzXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtRGlydHkoe1xyXG4gICAgICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXHJcbiAgICAgICAgICAgIGRpcnR5OiB0aGlzLmZvcm0uZGlydHlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0U3RhdGVTdHJlYW0oYCR7dGhpcy5wYXRofS5kaXNhYmxlZGApLnN1YnNjcmliZShkaXNhYmxlZCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uZGlzYWJsZWQgPT09IGRpc2FibGVkIHx8IHR5cGVvZiBkaXNhYmxlZCAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUudmFsdWVDaGFuZ2VzIS5waXBlKHRoaXMuZGVib3VuY2VDaGFuZ2UoKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVGb3JtU3RhdGVXaXRoUmF3VmFsdWUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZVxyXG4gICAgICAuc3RhdHVzQ2hhbmdlcyEucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0aGlzLmRlYm91bmNlQ2hhbmdlKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goXHJcbiAgICAgICAgICBuZXcgVXBkYXRlRm9ybVN0YXR1cyh7XHJcbiAgICAgICAgICAgIHN0YXR1cyxcclxuICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRm9ybVN0YXRlV2l0aFJhd1ZhbHVlKHdpdGhGb3JtU3RhdHVzPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuX3VwZGF0aW5nKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuY29udHJvbC5nZXRSYXdWYWx1ZSgpO1xyXG5cclxuICAgIGNvbnN0IGFjdGlvbnM6IGFueVtdID0gW1xyXG4gICAgICBuZXcgVXBkYXRlRm9ybVZhbHVlKHtcclxuICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXHJcbiAgICAgICAgdmFsdWVcclxuICAgICAgfSksXHJcbiAgICAgIG5ldyBVcGRhdGVGb3JtRGlydHkoe1xyXG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcclxuICAgICAgICBkaXJ0eTogdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLmRpcnR5XHJcbiAgICAgIH0pLFxyXG4gICAgICBuZXcgVXBkYXRlRm9ybUVycm9ycyh7XHJcbiAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxyXG4gICAgICAgIGVycm9yczogdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLmVycm9yc1xyXG4gICAgICB9KVxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAod2l0aEZvcm1TdGF0dXMpIHtcclxuICAgICAgYWN0aW9ucy5wdXNoKFxyXG4gICAgICAgIG5ldyBVcGRhdGVGb3JtU3RhdHVzKHtcclxuICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcclxuICAgICAgICAgIHN0YXR1czogdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLnN0YXR1c1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goYWN0aW9ucykuc3Vic2NyaWJlKHtcclxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLl91cGRhdGluZyA9IGZhbHNlKSxcclxuICAgICAgY29tcGxldGU6ICgpID0+ICh0aGlzLl91cGRhdGluZyA9IGZhbHNlKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5jbGVhckRlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goXHJcbiAgICAgICAgbmV3IFVwZGF0ZUZvcm0oe1xyXG4gICAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxyXG4gICAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICBkaXJ0eTogbnVsbCxcclxuICAgICAgICAgIHN0YXR1czogbnVsbCxcclxuICAgICAgICAgIGVycm9yczogbnVsbFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlYm91bmNlQ2hhbmdlKCkge1xyXG4gICAgY29uc3Qgc2tpcERlYm91bmNlVGltZSA9XHJcbiAgICAgIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5jb250cm9sLnVwZGF0ZU9uICE9PSAnY2hhbmdlJyB8fCB0aGlzLmRlYm91bmNlIDwgMDtcclxuXHJcbiAgICByZXR1cm4gc2tpcERlYm91bmNlVGltZVxyXG4gICAgICA/IChjaGFuZ2U6IE9ic2VydmFibGU8YW55PikgPT4gY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgOiAoY2hhbmdlOiBPYnNlcnZhYmxlPGFueT4pID0+XHJcbiAgICAgICAgICBjaGFuZ2UucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZm9ybSgpOiBGb3JtR3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5mb3JtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGF0ZVN0cmVhbShwYXRoOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdG9yZS5zZWxlY3Qoc3RhdGUgPT4gZ2V0VmFsdWUoc3RhdGUsIHBhdGgpKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { ChangeDetectorRef, Directive, Input } from '@angular/core';
|
|
6
|
+
import { FormGroupDirective } from '@angular/forms';
|
|
7
|
+
import { Actions, getValue, ofActionDispatched, Store } from '@ngxs/store';
|
|
8
|
+
import { Subject } from 'rxjs';
|
|
9
|
+
import { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';
|
|
10
|
+
import { ResetForm, UpdateForm, UpdateFormDirty, UpdateFormErrors, UpdateFormStatus, UpdateFormValue } from './actions';
|
|
11
|
+
var FormDirective = /** @class */ (function () {
|
|
12
|
+
function FormDirective(_actions$, _store, _formGroupDirective, _cd) {
|
|
13
|
+
this._actions$ = _actions$;
|
|
14
|
+
this._store = _store;
|
|
15
|
+
this._formGroupDirective = _formGroupDirective;
|
|
16
|
+
this._cd = _cd;
|
|
17
|
+
this.path = (/** @type {?} */ (null));
|
|
18
|
+
this.debounce = 100;
|
|
19
|
+
this._clearDestroy = false;
|
|
20
|
+
this._destroy$ = new Subject();
|
|
21
|
+
this._updating = false;
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(FormDirective.prototype, "clearDestroy", {
|
|
24
|
+
get: /**
|
|
25
|
+
* @return {?}
|
|
26
|
+
*/
|
|
27
|
+
function () {
|
|
28
|
+
return this._clearDestroy;
|
|
29
|
+
},
|
|
30
|
+
set: /**
|
|
31
|
+
* @param {?} val
|
|
32
|
+
* @return {?}
|
|
33
|
+
*/
|
|
34
|
+
function (val) {
|
|
35
|
+
this._clearDestroy = val != null && "" + val !== 'false';
|
|
36
|
+
},
|
|
37
|
+
enumerable: true,
|
|
38
|
+
configurable: true
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* @return {?}
|
|
42
|
+
*/
|
|
43
|
+
FormDirective.prototype.ngOnInit = /**
|
|
44
|
+
* @return {?}
|
|
45
|
+
*/
|
|
46
|
+
function () {
|
|
47
|
+
var _this = this;
|
|
48
|
+
this._actions$
|
|
49
|
+
.pipe(ofActionDispatched(ResetForm), filter((/**
|
|
50
|
+
* @param {?} action
|
|
51
|
+
* @return {?}
|
|
52
|
+
*/
|
|
53
|
+
function (action) { return action.payload.path === _this.path; })), takeUntil(this._destroy$))
|
|
54
|
+
.subscribe((/**
|
|
55
|
+
* @param {?} __0
|
|
56
|
+
* @return {?}
|
|
57
|
+
*/
|
|
58
|
+
function (_a) {
|
|
59
|
+
var value = _a.payload.value;
|
|
60
|
+
_this.form.reset(value);
|
|
61
|
+
_this.updateFormStateWithRawValue(true);
|
|
62
|
+
_this._cd.markForCheck();
|
|
63
|
+
}));
|
|
64
|
+
this.getStateStream(this.path + ".model").subscribe((/**
|
|
65
|
+
* @param {?} model
|
|
66
|
+
* @return {?}
|
|
67
|
+
*/
|
|
68
|
+
function (model) {
|
|
69
|
+
if (_this._updating || !model) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
_this.form.patchValue(model);
|
|
73
|
+
_this._cd.markForCheck();
|
|
74
|
+
}));
|
|
75
|
+
this.getStateStream(this.path + ".dirty").subscribe((/**
|
|
76
|
+
* @param {?} dirty
|
|
77
|
+
* @return {?}
|
|
78
|
+
*/
|
|
79
|
+
function (dirty) {
|
|
80
|
+
if (_this.form.dirty === dirty || typeof dirty !== 'boolean') {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (dirty) {
|
|
84
|
+
_this.form.markAsDirty();
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
_this.form.markAsPristine();
|
|
88
|
+
}
|
|
89
|
+
_this._cd.markForCheck();
|
|
90
|
+
}));
|
|
91
|
+
// On first state change, sync form model, status and dirty with state
|
|
92
|
+
this._store
|
|
93
|
+
.selectOnce((/**
|
|
94
|
+
* @param {?} state
|
|
95
|
+
* @return {?}
|
|
96
|
+
*/
|
|
97
|
+
function (state) { return getValue(state, _this.path); }))
|
|
98
|
+
.subscribe((/**
|
|
99
|
+
* @return {?}
|
|
100
|
+
*/
|
|
101
|
+
function () {
|
|
102
|
+
_this._store.dispatch([
|
|
103
|
+
new UpdateFormValue({
|
|
104
|
+
path: _this.path,
|
|
105
|
+
value: _this.form.getRawValue()
|
|
106
|
+
}),
|
|
107
|
+
new UpdateFormStatus({
|
|
108
|
+
path: _this.path,
|
|
109
|
+
status: _this.form.status
|
|
110
|
+
}),
|
|
111
|
+
new UpdateFormDirty({
|
|
112
|
+
path: _this.path,
|
|
113
|
+
dirty: _this.form.dirty
|
|
114
|
+
})
|
|
115
|
+
]);
|
|
116
|
+
}));
|
|
117
|
+
this.getStateStream(this.path + ".disabled").subscribe((/**
|
|
118
|
+
* @param {?} disabled
|
|
119
|
+
* @return {?}
|
|
120
|
+
*/
|
|
121
|
+
function (disabled) {
|
|
122
|
+
if (_this.form.disabled === disabled || typeof disabled !== 'boolean') {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (disabled) {
|
|
126
|
+
_this.form.disable();
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
_this.form.enable();
|
|
130
|
+
}
|
|
131
|
+
_this._cd.markForCheck();
|
|
132
|
+
}));
|
|
133
|
+
(/** @type {?} */ (this._formGroupDirective
|
|
134
|
+
.valueChanges)).pipe(distinctUntilChanged((/**
|
|
135
|
+
* @param {?} a
|
|
136
|
+
* @param {?} b
|
|
137
|
+
* @return {?}
|
|
138
|
+
*/
|
|
139
|
+
function (a, b) { return JSON.stringify(a) === JSON.stringify(b); })), this.debounceChange())
|
|
140
|
+
.subscribe((/**
|
|
141
|
+
* @return {?}
|
|
142
|
+
*/
|
|
143
|
+
function () {
|
|
144
|
+
_this.updateFormStateWithRawValue();
|
|
145
|
+
}));
|
|
146
|
+
(/** @type {?} */ (this._formGroupDirective
|
|
147
|
+
.statusChanges)).pipe(distinctUntilChanged(), this.debounceChange())
|
|
148
|
+
.subscribe((/**
|
|
149
|
+
* @param {?} status
|
|
150
|
+
* @return {?}
|
|
151
|
+
*/
|
|
152
|
+
function (status) {
|
|
153
|
+
_this._store.dispatch(new UpdateFormStatus({
|
|
154
|
+
status: status,
|
|
155
|
+
path: _this.path
|
|
156
|
+
}));
|
|
157
|
+
}));
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* @param {?=} withFormStatus
|
|
161
|
+
* @return {?}
|
|
162
|
+
*/
|
|
163
|
+
FormDirective.prototype.updateFormStateWithRawValue = /**
|
|
164
|
+
* @param {?=} withFormStatus
|
|
165
|
+
* @return {?}
|
|
166
|
+
*/
|
|
167
|
+
function (withFormStatus) {
|
|
168
|
+
var _this = this;
|
|
169
|
+
if (this._updating)
|
|
170
|
+
return;
|
|
171
|
+
/** @type {?} */
|
|
172
|
+
var value = this._formGroupDirective.control.getRawValue();
|
|
173
|
+
/** @type {?} */
|
|
174
|
+
var actions = [
|
|
175
|
+
new UpdateFormValue({
|
|
176
|
+
path: this.path,
|
|
177
|
+
value: value
|
|
178
|
+
}),
|
|
179
|
+
new UpdateFormDirty({
|
|
180
|
+
path: this.path,
|
|
181
|
+
dirty: this._formGroupDirective.dirty
|
|
182
|
+
}),
|
|
183
|
+
new UpdateFormErrors({
|
|
184
|
+
path: this.path,
|
|
185
|
+
errors: this._formGroupDirective.errors
|
|
186
|
+
})
|
|
187
|
+
];
|
|
188
|
+
if (withFormStatus) {
|
|
189
|
+
actions.push(new UpdateFormStatus({
|
|
190
|
+
path: this.path,
|
|
191
|
+
status: this._formGroupDirective.status
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
this._updating = true;
|
|
195
|
+
this._store.dispatch(actions).subscribe({
|
|
196
|
+
error: (/**
|
|
197
|
+
* @return {?}
|
|
198
|
+
*/
|
|
199
|
+
function () { return (_this._updating = false); }),
|
|
200
|
+
complete: (/**
|
|
201
|
+
* @return {?}
|
|
202
|
+
*/
|
|
203
|
+
function () { return (_this._updating = false); })
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* @return {?}
|
|
208
|
+
*/
|
|
209
|
+
FormDirective.prototype.ngOnDestroy = /**
|
|
210
|
+
* @return {?}
|
|
211
|
+
*/
|
|
212
|
+
function () {
|
|
213
|
+
this._destroy$.next();
|
|
214
|
+
this._destroy$.complete();
|
|
215
|
+
if (this.clearDestroy) {
|
|
216
|
+
this._store.dispatch(new UpdateForm({
|
|
217
|
+
path: this.path,
|
|
218
|
+
value: null,
|
|
219
|
+
dirty: null,
|
|
220
|
+
status: null,
|
|
221
|
+
errors: null
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* @private
|
|
227
|
+
* @return {?}
|
|
228
|
+
*/
|
|
229
|
+
FormDirective.prototype.debounceChange = /**
|
|
230
|
+
* @private
|
|
231
|
+
* @return {?}
|
|
232
|
+
*/
|
|
233
|
+
function () {
|
|
234
|
+
var _this = this;
|
|
235
|
+
/** @type {?} */
|
|
236
|
+
var skipDebounceTime = this._formGroupDirective.control.updateOn !== 'change' || this.debounce < 0;
|
|
237
|
+
return skipDebounceTime
|
|
238
|
+
? (/**
|
|
239
|
+
* @param {?} change
|
|
240
|
+
* @return {?}
|
|
241
|
+
*/
|
|
242
|
+
function (change) { return change.pipe(takeUntil(_this._destroy$)); })
|
|
243
|
+
: (/**
|
|
244
|
+
* @param {?} change
|
|
245
|
+
* @return {?}
|
|
246
|
+
*/
|
|
247
|
+
function (change) {
|
|
248
|
+
return change.pipe(debounceTime(_this.debounce), takeUntil(_this._destroy$));
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
Object.defineProperty(FormDirective.prototype, "form", {
|
|
252
|
+
get: /**
|
|
253
|
+
* @private
|
|
254
|
+
* @return {?}
|
|
255
|
+
*/
|
|
256
|
+
function () {
|
|
257
|
+
return this._formGroupDirective.form;
|
|
258
|
+
},
|
|
259
|
+
enumerable: true,
|
|
260
|
+
configurable: true
|
|
261
|
+
});
|
|
262
|
+
/**
|
|
263
|
+
* @private
|
|
264
|
+
* @param {?} path
|
|
265
|
+
* @return {?}
|
|
266
|
+
*/
|
|
267
|
+
FormDirective.prototype.getStateStream = /**
|
|
268
|
+
* @private
|
|
269
|
+
* @param {?} path
|
|
270
|
+
* @return {?}
|
|
271
|
+
*/
|
|
272
|
+
function (path) {
|
|
273
|
+
return this._store.select((/**
|
|
274
|
+
* @param {?} state
|
|
275
|
+
* @return {?}
|
|
276
|
+
*/
|
|
277
|
+
function (state) { return getValue(state, path); })).pipe(takeUntil(this._destroy$));
|
|
278
|
+
};
|
|
279
|
+
FormDirective.decorators = [
|
|
280
|
+
{ type: Directive, args: [{ selector: '[ngxsForm]' },] }
|
|
281
|
+
];
|
|
282
|
+
/** @nocollapse */
|
|
283
|
+
FormDirective.ctorParameters = function () { return [
|
|
284
|
+
{ type: Actions },
|
|
285
|
+
{ type: Store },
|
|
286
|
+
{ type: FormGroupDirective },
|
|
287
|
+
{ type: ChangeDetectorRef }
|
|
288
|
+
]; };
|
|
289
|
+
FormDirective.propDecorators = {
|
|
290
|
+
path: [{ type: Input, args: ['ngxsForm',] }],
|
|
291
|
+
debounce: [{ type: Input, args: ['ngxsFormDebounce',] }],
|
|
292
|
+
clearDestroy: [{ type: Input, args: ['ngxsFormClearOnDestroy',] }]
|
|
293
|
+
};
|
|
294
|
+
return FormDirective;
|
|
295
|
+
}());
|
|
296
|
+
export { FormDirective };
|
|
297
|
+
if (false) {
|
|
298
|
+
/** @type {?} */
|
|
299
|
+
FormDirective.prototype.path;
|
|
300
|
+
/** @type {?} */
|
|
301
|
+
FormDirective.prototype.debounce;
|
|
302
|
+
/** @type {?} */
|
|
303
|
+
FormDirective.prototype._clearDestroy;
|
|
304
|
+
/**
|
|
305
|
+
* @type {?}
|
|
306
|
+
* @private
|
|
307
|
+
*/
|
|
308
|
+
FormDirective.prototype._destroy$;
|
|
309
|
+
/**
|
|
310
|
+
* @type {?}
|
|
311
|
+
* @private
|
|
312
|
+
*/
|
|
313
|
+
FormDirective.prototype._updating;
|
|
314
|
+
/**
|
|
315
|
+
* @type {?}
|
|
316
|
+
* @private
|
|
317
|
+
*/
|
|
318
|
+
FormDirective.prototype._actions$;
|
|
319
|
+
/**
|
|
320
|
+
* @type {?}
|
|
321
|
+
* @private
|
|
322
|
+
*/
|
|
323
|
+
FormDirective.prototype._store;
|
|
324
|
+
/**
|
|
325
|
+
* @type {?}
|
|
326
|
+
* @private
|
|
327
|
+
*/
|
|
328
|
+
FormDirective.prototype._formGroupDirective;
|
|
329
|
+
/**
|
|
330
|
+
* @type {?}
|
|
331
|
+
* @private
|
|
332
|
+
*/
|
|
333
|
+
FormDirective.prototype._cd;
|
|
334
|
+
}
|
|
335
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvZm9ybS1wbHVnaW4vIiwic291cmNlcyI6WyJzcmMvZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFhLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNoQixNQUFNLFdBQVcsQ0FBQztBQUVuQjtJQXNCRSx1QkFDVSxTQUFrQixFQUNsQixNQUFhLEVBQ2IsbUJBQXVDLEVBQ3ZDLEdBQXNCO1FBSHRCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF2QmhDLFNBQUksR0FBVyxtQkFBQSxJQUFJLEVBQUMsQ0FBQztRQUdyQixhQUFRLEdBQUcsR0FBRyxDQUFDO1FBV2Ysa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFTCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN6QyxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBT3ZCLENBQUM7SUFuQkosc0JBQ0ksdUNBQVk7Ozs7UUFJaEI7WUFDRSxPQUFPLElBQUks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LEtBQUssRUFBRSxJQUFJLENBQUMsRUFBckIsQ0FBcUIsRUFBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQzs7Z0JBNUxGLFNBQVMsU0FBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7Ozs7Z0JBWjVCLE9BQU87Z0JBQWdDLEtBQUs7Z0JBRGpDLGtCQUFrQjtnQkFEN0IsaUJBQWlCOzs7dUJBZ0J2QixLQUFLLFNBQUMsVUFBVTsyQkFHaEIsS0FBSyxTQUFDLGtCQUFrQjsrQkFHeEIsS0FBSyxTQUFDLHdCQUF3Qjs7SUFxTGpDLG9CQUFDO0NBQUEsQUE3TEQsSUE2TEM7U0E1TFksYUFBYTs7O0lBQ3hCLDZCQUNxQjs7SUFFckIsaUNBQ2U7O0lBV2Ysc0NBQXNCOzs7OztJQUV0QixrQ0FBaUQ7Ozs7O0lBQ2pELGtDQUEwQjs7Ozs7SUFHeEIsa0NBQTBCOzs7OztJQUMxQiwrQkFBcUI7Ozs7O0lBQ3JCLDRDQUErQzs7Ozs7SUFDL0MsNEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGlvbnMsIGdldFZhbHVlLCBvZkFjdGlvbkRpc3BhdGNoZWQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBSZXNldEZvcm0sXG4gIFVwZGF0ZUZvcm0sXG4gIFVwZGF0ZUZvcm1EaXJ0eSxcbiAgVXBkYXRlRm9ybUVycm9ycyxcbiAgVXBkYXRlRm9ybVN0YXR1cyxcbiAgVXBkYXRlRm9ybVZhbHVlXG59IGZyb20gJy4vYWN0aW9ucyc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tuZ3hzRm9ybV0nIH0pXG5leHBvcnQgY2xhc3MgRm9ybURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCduZ3hzRm9ybScpXG4gIHBhdGg6IHN0cmluZyA9IG51bGwhO1xuXG4gIEBJbnB1dCgnbmd4c0Zvcm1EZWJvdW5jZScpXG4gIGRlYm91bmNlID0gMTAwO1xuXG4gIEBJbnB1dCgnbmd4c0Zvcm1DbGVhck9uRGVzdHJveScpXG4gIHNldCBjbGVhckRlc3Ryb3kodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2xlYXJEZXN0cm95ID0gdmFsICE9IG51bGwgJiYgYCR7dmFsfWAgIT09ICdmYWxzZSc7XG4gIH1cblxuICBnZXQgY2xlYXJEZXN0cm95KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jbGVhckRlc3Ryb3k7XG4gIH1cblxuICBfY2xlYXJEZXN0cm95ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF91cGRhdGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgX3N0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIF9mb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2FjdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgb2ZBY3Rpb25EaXNwYXRjaGVkKFJlc2V0Rm9ybSksXG4gICAgICAgIGZpbHRlcigoYWN0aW9uOiBSZXNldEZvcm0pID0+IGFjdGlvbi5wYXlsb2FkLnBhdGggPT09IHRoaXMucGF0aCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgcGF5bG9hZDogeyB2YWx1ZSB9IH06IFJlc2V0Rm9ybSkgPT4ge1xuICAgICAgICB0aGlzLmZvcm0ucmVzZXQodmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1TdGF0ZVdpdGhSYXdWYWx1ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZ2V0U3RhdGVTdHJlYW0oYCR7dGhpcy5wYXRofS5tb2RlbGApLnN1YnNjcmliZShtb2RlbCA9PiB7XG4gICAgICBpZiAodGhpcy5fdXBkYXRpbmcgfHwgIW1vZGVsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUobW9kZWwpO1xuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmdldFN0YXRlU3RyZWFtKGAke3RoaXMucGF0aH0uZGlydHlgKS5zdWJzY3JpYmUoZGlydHkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybS5kaXJ0eSA9PT0gZGlydHkgfHwgdHlwZW9mIGRpcnR5ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBPbiBmaXJzdCBzdGF0ZSBjaGFuZ2UsIHN5bmMgZm9ybSBtb2RlbCwgc3RhdHVzIGFuZCBkaXJ0eSB3aXRoIHN0YXRlXG4gICAgdGhpcy5fc3RvcmVcbiAgICAgIC5zZWxlY3RPbmNlKHN0YXRlID0+IGdldFZhbHVlKHN0YXRlLCB0aGlzLnBhdGgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFtcbiAgICAgICAgICBuZXcgVXBkYXRlRm9ybVZhbHVlKHtcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtU3RhdHVzKHtcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5mb3JtLnN0YXR1c1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtRGlydHkoe1xuICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgICAgZGlydHk6IHRoaXMuZm9ybS5kaXJ0eVxuICAgICAgICAgIH0pXG4gICAgICAgIF0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmdldFN0YXRlU3RyZWFtKGAke3RoaXMucGF0aH0uZGlzYWJsZWRgKS5zdWJzY3JpYmUoZGlzYWJsZWQgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHwgdHlwZW9mIGRpc2FibGVkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmVcbiAgICAgIC52YWx1ZUNoYW5nZXMhLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYikpLFxuICAgICAgICB0aGlzLmRlYm91bmNlQ2hhbmdlKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1TdGF0ZVdpdGhSYXdWYWx1ZSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmVcbiAgICAgIC5zdGF0dXNDaGFuZ2VzIS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRoaXMuZGVib3VuY2VDaGFuZ2UoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtU3RhdHVzKHtcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUZvcm1TdGF0ZVdpdGhSYXdWYWx1ZSh3aXRoRm9ybVN0YXR1cz86IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fdXBkYXRpbmcpIHJldHVybjtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLmNvbnRyb2wuZ2V0UmF3VmFsdWUoKTtcblxuICAgIGNvbnN0IGFjdGlvbnM6IGFueVtdID0gW1xuICAgICAgbmV3IFVwZGF0ZUZvcm1WYWx1ZSh7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgdmFsdWVcbiAgICAgIH0pLFxuICAgICAgbmV3IFVwZGF0ZUZvcm1EaXJ0eSh7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgZGlydHk6IHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5kaXJ0eVxuICAgICAgfSksXG4gICAgICBuZXcgVXBkYXRlRm9ybUVycm9ycyh7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgZXJyb3JzOiB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuZXJyb3JzXG4gICAgICB9KVxuICAgIF07XG5cbiAgICBpZiAod2l0aEZvcm1TdGF0dXMpIHtcbiAgICAgIGFjdGlvbnMucHVzaChcbiAgICAgICAgbmV3IFVwZGF0ZUZvcm1TdGF0dXMoe1xuICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICBzdGF0dXM6IHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5zdGF0dXNcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRpbmcgPSB0cnVlO1xuICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKGFjdGlvbnMpLnN1YnNjcmliZSh7XG4gICAgICBlcnJvcjogKCkgPT4gKHRoaXMuX3VwZGF0aW5nID0gZmFsc2UpLFxuICAgICAgY29tcGxldGU6ICgpID0+ICh0aGlzLl91cGRhdGluZyA9IGZhbHNlKVxuICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgaWYgKHRoaXMuY2xlYXJEZXN0cm95KSB7XG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgbmV3IFVwZGF0ZUZvcm0oe1xuICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICBkaXJ0eTogbnVsbCxcbiAgICAgICAgICBzdGF0dXM6IG51bGwsXG4gICAgICAgICAgZXJyb3JzOiBudWxsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVib3VuY2VDaGFuZ2UoKSB7XG4gICAgY29uc3Qgc2tpcERlYm91bmNlVGltZSA9XG4gICAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuY29udHJvbC51cGRhdGVPbiAhPT0gJ2NoYW5nZScgfHwgdGhpcy5kZWJvdW5jZSA8IDA7XG5cbiAgICByZXR1cm4gc2tpcERlYm91bmNlVGltZVxuICAgICAgPyAoY2hhbmdlOiBPYnNlcnZhYmxlPGFueT4pID0+IGNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICA6IChjaGFuZ2U6IE9ic2VydmFibGU8YW55PikgPT5cbiAgICAgICAgICBjaGFuZ2UucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZm9ybSgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuZm9ybTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhdGVTdHJlYW0ocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlLnNlbGVjdChzdGF0ZSA9PiBnZXRWYWx1ZShzdGF0ZSwgcGF0aCkpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSk7XG4gIH1cbn1cbiJdfQ==
|