@valtimo/form-view-model 12.7.0 → 12.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/form-view-model/form-view-model.component.mjs +127 -104
- package/esm2022/lib/services/view-model.service.mjs +8 -5
- package/fesm2022/valtimo-form-view-model.mjs +134 -109
- package/fesm2022/valtimo-form-view-model.mjs.map +1 -1
- package/lib/components/form-view-model/form-view-model.component.d.ts +14 -4
- package/lib/components/form-view-model/form-view-model.component.d.ts.map +1 -1
- package/lib/services/view-model.service.d.ts +4 -4
- package/lib/services/view-model.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Injectable } from '@angular/core';
|
|
17
16
|
import { HttpHeaders } from '@angular/common/http';
|
|
17
|
+
import { Injectable } from '@angular/core';
|
|
18
18
|
import { BaseApiService } from '@valtimo/config';
|
|
19
19
|
import { InterceptorSkip } from '@valtimo/security';
|
|
20
20
|
import * as i0 from "@angular/core";
|
|
@@ -56,33 +56,36 @@ export class ViewModelService extends BaseApiService {
|
|
|
56
56
|
headers: new HttpHeaders().set(InterceptorSkip, '400'),
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
|
-
getViewModelForStartForm(formName, processDefinitionKey) {
|
|
59
|
+
getViewModelForStartForm(formName, processDefinitionKey, documentId = null) {
|
|
60
60
|
return this.httpClient.get(this.getApiUrl('/v1/form/view-model/start-form'), {
|
|
61
61
|
params: {
|
|
62
62
|
formName,
|
|
63
63
|
processDefinitionKey,
|
|
64
|
+
...(!!documentId && { documentId }),
|
|
64
65
|
},
|
|
65
66
|
headers: new HttpHeaders().set(InterceptorSkip, '400'),
|
|
66
67
|
});
|
|
67
68
|
}
|
|
68
|
-
updateViewModelForStartForm(formName, processDefinitionKey, viewModel, page, isWizard) {
|
|
69
|
+
updateViewModelForStartForm(formName, processDefinitionKey, documentId, viewModel, page, isWizard) {
|
|
69
70
|
const params = {
|
|
70
71
|
formName,
|
|
71
72
|
processDefinitionKey,
|
|
72
73
|
isWizard,
|
|
73
74
|
...(!isNaN(page) && { page }),
|
|
75
|
+
...(!!documentId && { documentId }),
|
|
74
76
|
};
|
|
75
77
|
return this.httpClient.post(this.getApiUrl(`/v1/form/view-model/start-form`), viewModel, {
|
|
76
78
|
params,
|
|
77
79
|
headers: new HttpHeaders().set(InterceptorSkip, '400'),
|
|
78
80
|
});
|
|
79
81
|
}
|
|
80
|
-
submitViewModelForStartForm(formName, processDefinitionKey, documentDefinitionName, viewModel) {
|
|
82
|
+
submitViewModelForStartForm(formName, processDefinitionKey, documentId, documentDefinitionName, viewModel) {
|
|
81
83
|
return this.httpClient.post(this.getApiUrl(`/v1/form/view-model/submit/start-form`), viewModel, {
|
|
82
84
|
params: {
|
|
83
85
|
formName,
|
|
84
86
|
processDefinitionKey,
|
|
85
87
|
documentDefinitionName,
|
|
88
|
+
...(!!documentId && { documentId }),
|
|
86
89
|
},
|
|
87
90
|
headers: new HttpHeaders().set(InterceptorSkip, '400'),
|
|
88
91
|
});
|
|
@@ -94,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
94
97
|
type: Injectable,
|
|
95
98
|
args: [{ providedIn: 'root' }]
|
|
96
99
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1tb2RlbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9mb3JtLXZpZXctbW9kZWwvc3JjL2xpYi9zZXJ2aWNlcy92aWV3LW1vZGVsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQWEsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsY0FBYyxFQUFnQixNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUlsRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsY0FBYztJQUNsRCxZQUNxQixVQUFzQixFQUN0QixhQUE0QjtRQUUvQyxLQUFLLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBSGQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUdqRCxDQUFDO0lBRU0sWUFBWSxDQUFDLFFBQWdCLEVBQUUsY0FBc0I7UUFDMUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBTSxJQUFJLENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDLEVBQUU7WUFDL0UsTUFBTSxFQUFFO2dCQUNOLFFBQVE7Z0JBQ1IsY0FBYzthQUNmO1lBQ0QsT0FBTyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUM7U0FDdkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWUsQ0FDcEIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsU0FBaUIsRUFDakIsSUFBWSxFQUNaLFFBQWlCO1FBRWpCLE1BQU0sTUFBTSxHQUFHO1lBQ2IsUUFBUTtZQUNSLGNB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b3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmFzZUFwaVNlcnZpY2UsIENvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0ludGVyY2VwdG9yU2tpcH0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVmlld01vZGVsU2VydmljZSBleHRlbmRzIEJhc2VBcGlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaHR0cENsaWVudCwgY29uZmlnU2VydmljZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Vmlld01vZGVsKGZvcm1OYW1lOiBzdHJpbmcsIHRhc2tJbnN0YW5jZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PGFueT4odGhpcy5nZXRBcGlVcmwoJy92MS9mb3JtL3ZpZXctbW9kZWwvdXNlci10YXNrJyksIHtcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBmb3JtTmFtZSxcbiAgICAgICAgdGFza0luc3RhbmNlSWQsXG4gICAgICB9LFxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KEludGVyY2VwdG9yU2tpcCwgJzQwMCcpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVZpZXdNb2RlbChcbiAgICBmb3JtTmFtZTogc3RyaW5nLFxuICAgIHRhc2tJbnN0YW5jZUlkOiBzdHJpbmcsXG4gICAgdmlld01vZGVsOiBvYmplY3QsXG4gICAgcGFnZTogbnVtYmVyLFxuICAgIGlzV2l6YXJkOiBib29sZWFuXG4gICk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgZm9ybU5hbWUsXG4gICAgICB0YXNrSW5zdGFuY2VJZCxcbiAgICAgIGlzV2l6YXJkLFxuICAgICAgLi4uKCFpc05hTihwYWdlKSAmJiB7cGFnZX0pLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuZ2V0QXBpVXJsKGAvdjEvZm9ybS92aWV3LW1vZGVsL3VzZXItdGFza2ApLCB2aWV3TW9kZWwsIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldChJbnRlcmNlcHRvclNraXAsICc0MDAnKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXRWaWV3TW9kZWwoXG4gICAgZm9ybU5hbWU6IHN0cmluZyxcbiAgICB0YXNrSW5zdGFuY2VJZDogc3RyaW5nLFxuICAgIHZpZXdNb2RlbDogb2JqZWN0XG4gICk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuZ2V0QXBpVXJsKGAvdjEvZm9ybS92aWV3LW1vZGVsL3N1Ym1pdC91c2VyLXRhc2tgKSwgdmlld01vZGVsLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgZm9ybU5hbWUsXG4gICAgICAgIHRhc2tJbnN0YW5jZUlkLFxuICAgICAgfSxcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldChJbnRlcmNlcHRvclNraXAsICc0MDAnKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWaWV3TW9kZWxGb3JTdGFydEZvcm0oXG4gICAgZm9ybU5hbWU6IHN0cmluZyxcbiAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nLFxuICAgIGRvY3VtZW50SWQ6IHN0cmluZyA9IG51bGxcbiAgKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxhbnk+KHRoaXMuZ2V0QXBpVXJsKCcvdjEvZm9ybS92aWV3LW1vZGVsL3N0YXJ0LWZvcm0nKSwge1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIGZvcm1OYW1lLFxuICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleSxcbiAgICAgICAgLi4uKCEhZG9jdW1lbnRJZCAmJiB7ZG9jdW1lbnRJZH0pLFxuICAgICAgfSxcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldChJbnRlcmNlcHRvclNraXAsICc0MDAnKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVWaWV3TW9kZWxGb3JTdGFydEZvcm0oXG4gICAgZm9ybU5hbWU6IHN0cmluZyxcbiAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nLFxuICAgIGRvY3VtZW50SWQ6IHN0cmluZyxcbiAgICB2aWV3TW9kZWw6IG9iamVjdCxcbiAgICBwYWdlOiBudW1iZXIsXG4gICAgaXNXaXphcmQ6IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBmb3JtTmFtZSxcbiAgICAgIHByb2Nlc3NEZWZpbml0aW9uS2V5LFxuICAgICAgaXNXaXphcmQsXG4gICAgICAuLi4oIWlzTmFOKHBhZ2UpICYmIHtwYWdlfSksXG4gICAgICAuLi4oISFkb2N1bWVudElkICYmIHtkb2N1bWVudElkfSksXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXRBcGlVcmwoYC92MS9mb3JtL3ZpZXctbW9kZWwvc3RhcnQtZm9ybWApLCB2aWV3TW9kZWwsIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldChJbnRlcmNlcHRvclNraXAsICc0MDAnKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXRWaWV3TW9kZWxGb3JTdGFydEZvcm0oXG4gICAgZm9ybU5hbWU6IHN0cmluZyxcbiAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nLFxuICAgIGRvY3VtZW50SWQ6IHN0cmluZyxcbiAgICBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmcsXG4gICAgdmlld01vZGVsOiBvYmplY3RcbiAgKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXG4gICAgICB0aGlzLmdldEFwaVVybChgL3YxL2Zvcm0vdmlldy1tb2RlbC9zdWJtaXQvc3RhcnQtZm9ybWApLFxuICAgICAgdmlld01vZGVsLFxuICAgICAge1xuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBmb3JtTmFtZSxcbiAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleSxcbiAgICAgICAgICBkb2N1bWVudERlZmluaXRpb25OYW1lLFxuICAgICAgICAgIC4uLighIWRvY3VtZW50SWQgJiYge2RvY3VtZW50SWR9KSxcbiAgICAgICAgfSxcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KEludGVyY2VwdG9yU2tpcCwgJzQwMCcpLFxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, EventEmitter,
|
|
2
|
+
import { Injectable, EventEmitter, Output, Input, ViewChild, Component, NgModule } from '@angular/core';
|
|
3
3
|
import moment from 'moment';
|
|
4
|
-
import { BehaviorSubject, Subject, combineLatest,
|
|
4
|
+
import { BehaviorSubject, Subject, combineLatest, filter, take, switchMap, tap } from 'rxjs';
|
|
5
5
|
import * as i5 from '@formio/angular';
|
|
6
6
|
import { FormioModule } from '@formio/angular';
|
|
7
7
|
import { map, distinctUntilChanged } from 'rxjs/operators';
|
|
8
8
|
import { deepmerge } from 'deepmerge-ts';
|
|
9
|
+
import * as i1 from '@angular/common/http';
|
|
10
|
+
import { HttpHeaders, HttpErrorResponse } from '@angular/common/http';
|
|
9
11
|
import * as i4 from '@angular/common';
|
|
10
12
|
import { CommonModule } from '@angular/common';
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
13
|
+
import * as i6 from 'carbon-components-angular';
|
|
14
|
+
import { LayerModule } from 'carbon-components-angular';
|
|
14
15
|
import * as i2 from '@valtimo/config';
|
|
15
16
|
import { BaseApiService, FORM_VIEW_MODEL_TOKEN } from '@valtimo/config';
|
|
16
17
|
import { InterceptorSkip } from '@valtimo/security';
|
|
@@ -68,33 +69,36 @@ class ViewModelService extends BaseApiService {
|
|
|
68
69
|
headers: new HttpHeaders().set(InterceptorSkip, '400'),
|
|
69
70
|
});
|
|
70
71
|
}
|
|
71
|
-
getViewModelForStartForm(formName, processDefinitionKey) {
|
|
72
|
+
getViewModelForStartForm(formName, processDefinitionKey, documentId = null) {
|
|
72
73
|
return this.httpClient.get(this.getApiUrl('/v1/form/view-model/start-form'), {
|
|
73
74
|
params: {
|
|
74
75
|
formName,
|
|
75
76
|
processDefinitionKey,
|
|
77
|
+
...(!!documentId && { documentId }),
|
|
76
78
|
},
|
|
77
79
|
headers: new HttpHeaders().set(InterceptorSkip, '400'),
|
|
78
80
|
});
|
|
79
81
|
}
|
|
80
|
-
updateViewModelForStartForm(formName, processDefinitionKey, viewModel, page, isWizard) {
|
|
82
|
+
updateViewModelForStartForm(formName, processDefinitionKey, documentId, viewModel, page, isWizard) {
|
|
81
83
|
const params = {
|
|
82
84
|
formName,
|
|
83
85
|
processDefinitionKey,
|
|
84
86
|
isWizard,
|
|
85
87
|
...(!isNaN(page) && { page }),
|
|
88
|
+
...(!!documentId && { documentId }),
|
|
86
89
|
};
|
|
87
90
|
return this.httpClient.post(this.getApiUrl(`/v1/form/view-model/start-form`), viewModel, {
|
|
88
91
|
params,
|
|
89
92
|
headers: new HttpHeaders().set(InterceptorSkip, '400'),
|
|
90
93
|
});
|
|
91
94
|
}
|
|
92
|
-
submitViewModelForStartForm(formName, processDefinitionKey, documentDefinitionName, viewModel) {
|
|
95
|
+
submitViewModelForStartForm(formName, processDefinitionKey, documentId, documentDefinitionName, viewModel) {
|
|
93
96
|
return this.httpClient.post(this.getApiUrl(`/v1/form/view-model/submit/start-form`), viewModel, {
|
|
94
97
|
params: {
|
|
95
98
|
formName,
|
|
96
99
|
processDefinitionKey,
|
|
97
100
|
documentDefinitionName,
|
|
101
|
+
...(!!documentId && { documentId }),
|
|
98
102
|
},
|
|
99
103
|
headers: new HttpHeaders().set(InterceptorSkip, '400'),
|
|
100
104
|
});
|
|
@@ -151,6 +155,8 @@ class FormViewModelComponent {
|
|
|
151
155
|
const form = {
|
|
152
156
|
loadInitialViewModel: () => instance.loadInitialViewModel(),
|
|
153
157
|
updateViewModel: () => instance.updateViewModel(),
|
|
158
|
+
loadInitialStartFormViewModel: () => instance.loadInitialViewModelForStartForm(),
|
|
159
|
+
updateViewStartFormModel: () => instance.updateViewModelForStartForm(),
|
|
154
160
|
...formValue,
|
|
155
161
|
};
|
|
156
162
|
this.form$.next(form);
|
|
@@ -164,6 +170,9 @@ class FormViewModelComponent {
|
|
|
164
170
|
set isStartForm(isStartFormValue) {
|
|
165
171
|
this.isStartForm$.next(isStartFormValue);
|
|
166
172
|
}
|
|
173
|
+
set documentId(documentId) {
|
|
174
|
+
this.documentId$.next(documentId);
|
|
175
|
+
}
|
|
167
176
|
set processDefinitionKey(processDefinitionKeyValue) {
|
|
168
177
|
this.processDefinitionKey$.next(processDefinitionKeyValue);
|
|
169
178
|
}
|
|
@@ -175,14 +184,15 @@ class FormViewModelComponent {
|
|
|
175
184
|
this.translateService = translateService;
|
|
176
185
|
this.stateService = stateService;
|
|
177
186
|
this.formSubmit = new EventEmitter();
|
|
178
|
-
this.errors = [];
|
|
179
187
|
this.refreshForm = new EventEmitter();
|
|
180
188
|
this._preventNextPage = false;
|
|
181
189
|
this._preventPreviousPage = false;
|
|
182
190
|
this._isWizard = false;
|
|
191
|
+
this.pendingUpdateSubscription = null;
|
|
183
192
|
this.submission$ = new BehaviorSubject({});
|
|
184
193
|
this.form$ = new BehaviorSubject(undefined);
|
|
185
194
|
this.formName$ = new BehaviorSubject(undefined);
|
|
195
|
+
this.formErrors$ = new BehaviorSubject([]);
|
|
186
196
|
this.options$ = new BehaviorSubject(undefined);
|
|
187
197
|
this.taskInstanceId$ = new BehaviorSubject(undefined);
|
|
188
198
|
this.tokenSetInLocalStorage$ = new BehaviorSubject(false);
|
|
@@ -191,6 +201,7 @@ class FormViewModelComponent {
|
|
|
191
201
|
this.focus$ = new BehaviorSubject(null);
|
|
192
202
|
this.loading$ = new BehaviorSubject(true);
|
|
193
203
|
this.isStartForm$ = new BehaviorSubject(false);
|
|
204
|
+
this.documentId$ = new BehaviorSubject(null);
|
|
194
205
|
this.processDefinitionKey$ = new BehaviorSubject(undefined);
|
|
195
206
|
this.documentDefinitionName$ = new BehaviorSubject(undefined);
|
|
196
207
|
this.updateForm = new Subject();
|
|
@@ -201,13 +212,14 @@ class FormViewModelComponent {
|
|
|
201
212
|
},
|
|
202
213
|
});
|
|
203
214
|
this.formioOptions$ = combineLatest([
|
|
204
|
-
this.currentLanguage$,
|
|
205
215
|
this.options$,
|
|
206
216
|
this._overrideOptions$,
|
|
207
|
-
]).pipe(map(([
|
|
217
|
+
]).pipe(map(([options, overrideOptions]) => {
|
|
218
|
+
return deepmerge(options, overrideOptions);
|
|
219
|
+
}));
|
|
220
|
+
this.renderOptions$ = combineLatest([this.currentLanguage$]).pipe(map(([language]) => {
|
|
208
221
|
const formioTranslations = this.translateService.instant('formioTranslations');
|
|
209
|
-
|
|
210
|
-
...options,
|
|
222
|
+
return {
|
|
211
223
|
language,
|
|
212
224
|
...(typeof formioTranslations === 'object'
|
|
213
225
|
? {
|
|
@@ -218,7 +230,6 @@ class FormViewModelComponent {
|
|
|
218
230
|
}
|
|
219
231
|
: {}),
|
|
220
232
|
};
|
|
221
|
-
return deepmerge(defaultOptions, overrideOptions);
|
|
222
233
|
}));
|
|
223
234
|
}
|
|
224
235
|
ngOnInit() {
|
|
@@ -229,20 +240,26 @@ class FormViewModelComponent {
|
|
|
229
240
|
this.loadInitialViewModel();
|
|
230
241
|
}
|
|
231
242
|
this.focusSubscription = this.focus$
|
|
232
|
-
.pipe(
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
+
.pipe(filter(e => {
|
|
244
|
+
// We only want to handle blur events after entering an input
|
|
245
|
+
return !!e && e.target instanceof HTMLInputElement;
|
|
246
|
+
}))
|
|
247
|
+
.subscribe(() => {
|
|
248
|
+
this.pendingUpdateSubscription?.unsubscribe();
|
|
249
|
+
this.blurSubscription?.unsubscribe();
|
|
250
|
+
this.blurSubscription = this.blur$
|
|
251
|
+
.pipe(filter(e => {
|
|
252
|
+
// Filter out events where relatedTarget is not null.
|
|
253
|
+
// The relatedTarget will be null when no new input is focused.
|
|
254
|
+
return !e.relatedTarget;
|
|
255
|
+
}))
|
|
256
|
+
.subscribe(() => {
|
|
257
|
+
this.blurSubscription?.unsubscribe();
|
|
258
|
+
this.setWaitCursor(true);
|
|
259
|
+
this.updateForm.next(true);
|
|
243
260
|
});
|
|
244
261
|
});
|
|
245
|
-
this.updateSubscription = this.updateForm.
|
|
262
|
+
this.updateSubscription = this.updateForm.subscribe(() => {
|
|
246
263
|
if (this.isStartForm$.value) {
|
|
247
264
|
this.updateViewModelForStartForm();
|
|
248
265
|
}
|
|
@@ -252,64 +269,71 @@ class FormViewModelComponent {
|
|
|
252
269
|
});
|
|
253
270
|
}
|
|
254
271
|
ngOnDestroy() {
|
|
255
|
-
this.
|
|
256
|
-
this.
|
|
272
|
+
this.blurSubscription?.unsubscribe();
|
|
273
|
+
this.focusSubscription?.unsubscribe();
|
|
274
|
+
this.updateSubscription?.unsubscribe();
|
|
275
|
+
this.pendingUpdateSubscription?.unsubscribe();
|
|
276
|
+
this.setWaitCursor(false);
|
|
257
277
|
}
|
|
258
278
|
beforeSubmitHook(instance) {
|
|
259
279
|
return (submission, callback) => instance.beforeSubmit(submission, callback);
|
|
260
280
|
}
|
|
261
281
|
beforeSubmit(submission, callback) {
|
|
282
|
+
this.pendingUpdateSubscription?.unsubscribe();
|
|
283
|
+
this.setWaitCursor(false);
|
|
262
284
|
combineLatest([
|
|
263
285
|
this.formName$,
|
|
264
286
|
this.taskInstanceId$,
|
|
265
287
|
this.processDefinitionKey$,
|
|
266
288
|
this.documentDefinitionName$,
|
|
267
289
|
this.isStartForm$,
|
|
290
|
+
this.documentId$,
|
|
268
291
|
])
|
|
269
|
-
.pipe(take(1), switchMap(([formName, taskInstanceId, processDefinitionKey, documentDefinitionName, isStartForm,]) => isStartForm
|
|
292
|
+
.pipe(take(1), switchMap(([formName, taskInstanceId, processDefinitionKey, documentDefinitionName, isStartForm, documentId,]) => isStartForm
|
|
270
293
|
? this.viewModelService
|
|
271
|
-
.submitViewModelForStartForm(formName, processDefinitionKey, documentDefinitionName, submission.data)
|
|
272
|
-
.pipe(take(1), switchMap(response => {
|
|
273
|
-
callback(null, submission);
|
|
274
|
-
return of(response);
|
|
275
|
-
}), catchError(error => {
|
|
276
|
-
this.handleFormError(error);
|
|
277
|
-
callback({ message: ' ', component: null }, null);
|
|
278
|
-
return EMPTY; // return an empty observable to complete the stream
|
|
279
|
-
}))
|
|
294
|
+
.submitViewModelForStartForm(formName, processDefinitionKey, documentId, documentDefinitionName, submission.data)
|
|
280
295
|
: this.viewModelService
|
|
281
|
-
.submitViewModel(formName, taskInstanceId, submission.data)
|
|
282
|
-
|
|
296
|
+
.submitViewModel(formName, taskInstanceId, submission.data)))
|
|
297
|
+
.subscribe({
|
|
298
|
+
next: _ => {
|
|
283
299
|
callback(null, submission);
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
this.
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
300
|
+
},
|
|
301
|
+
error: err => {
|
|
302
|
+
this.handleSubmissionError(err, callback);
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
handleSubmissionError(error, callback) {
|
|
307
|
+
callback({ message: '', component: null, silent: true }, null);
|
|
308
|
+
if (error instanceof HttpErrorResponse) {
|
|
309
|
+
this.handleFormError(error);
|
|
310
|
+
}
|
|
291
311
|
}
|
|
292
312
|
handleFormError(error) {
|
|
293
313
|
const formInstance = this.formio.formio;
|
|
294
|
-
this.
|
|
295
|
-
if (error.error
|
|
314
|
+
this.formErrors$.next([]);
|
|
315
|
+
if (error.error?.componentErrors) {
|
|
316
|
+
const errors = [];
|
|
296
317
|
error.error.componentErrors.forEach(componentError => {
|
|
297
318
|
const component = formInstance.getComponent(componentError.component);
|
|
298
319
|
if (component == null) {
|
|
299
|
-
|
|
320
|
+
errors.push(componentError.message);
|
|
300
321
|
}
|
|
301
322
|
else {
|
|
302
|
-
|
|
323
|
+
// `true` makes the error dirty, setting the css class properly
|
|
324
|
+
component.setCustomValidity(componentError.message, true);
|
|
303
325
|
}
|
|
304
326
|
});
|
|
327
|
+
this.formErrors$.next(errors);
|
|
305
328
|
}
|
|
306
|
-
else {
|
|
329
|
+
else if (error.error?.error) {
|
|
307
330
|
const component = formInstance.getComponent(error.error?.component);
|
|
308
331
|
if (component == null) {
|
|
309
|
-
this.
|
|
332
|
+
this.formErrors$.next([error.error.error]);
|
|
310
333
|
}
|
|
311
334
|
else {
|
|
312
|
-
|
|
335
|
+
// `true` makes the error dirty, setting the css class properly
|
|
336
|
+
component.setCustomValidity(error.error.error, true);
|
|
313
337
|
}
|
|
314
338
|
}
|
|
315
339
|
}
|
|
@@ -358,36 +382,11 @@ class FormViewModelComponent {
|
|
|
358
382
|
}))))
|
|
359
383
|
.subscribe();
|
|
360
384
|
}
|
|
361
|
-
updateViewModel() {
|
|
362
|
-
this.loading$
|
|
363
|
-
.pipe(take(1), switchMap(updating => {
|
|
364
|
-
if (!updating) {
|
|
365
|
-
this.loading$.next(true);
|
|
366
|
-
return combineLatest([this.formName$, this.taskInstanceId$, this.change$]).pipe(take(1), switchMap(([formName, taskInstanceId, change]) => this.viewModelService
|
|
367
|
-
.updateViewModel(formName, taskInstanceId, change.data, this.formio.formio.page, this._isWizard)
|
|
368
|
-
.pipe(tap({
|
|
369
|
-
next: viewModel => {
|
|
370
|
-
const submission = this.submission$.value;
|
|
371
|
-
submission.data = viewModel;
|
|
372
|
-
this.submission$.next(submission);
|
|
373
|
-
this.handlePageChange();
|
|
374
|
-
this.refreshForm.emit({ submission: submission });
|
|
375
|
-
this.loading$.next(false);
|
|
376
|
-
this.errors = [];
|
|
377
|
-
},
|
|
378
|
-
error: error => {
|
|
379
|
-
this.loading$.next(false);
|
|
380
|
-
this.handleFormError(error);
|
|
381
|
-
},
|
|
382
|
-
}))));
|
|
383
|
-
}
|
|
384
|
-
return of(null); // Fallback to return an observable if updating is true
|
|
385
|
-
}))
|
|
386
|
-
.subscribe();
|
|
387
|
-
}
|
|
388
385
|
loadInitialViewModelForStartForm() {
|
|
389
|
-
combineLatest([this.formName$, this.processDefinitionKey$])
|
|
390
|
-
.pipe(take(1), switchMap(([formName, processDefinitionKey]) => this.viewModelService
|
|
386
|
+
combineLatest([this.formName$, this.processDefinitionKey$, this.documentId$])
|
|
387
|
+
.pipe(take(1), switchMap(([formName, processDefinitionKey, documentId]) => this.viewModelService
|
|
388
|
+
.getViewModelForStartForm(formName, processDefinitionKey, documentId)
|
|
389
|
+
.pipe(tap(viewModel => {
|
|
391
390
|
this.submission$.next({ data: viewModel });
|
|
392
391
|
this.change$.pipe(take(1)).subscribe(() => {
|
|
393
392
|
this.loading$.next(false);
|
|
@@ -396,39 +395,63 @@ class FormViewModelComponent {
|
|
|
396
395
|
}))))
|
|
397
396
|
.subscribe();
|
|
398
397
|
}
|
|
398
|
+
updateViewModel() {
|
|
399
|
+
this.pendingUpdateSubscription?.unsubscribe();
|
|
400
|
+
this.pendingUpdateSubscription = combineLatest([
|
|
401
|
+
this.formName$,
|
|
402
|
+
this.taskInstanceId$,
|
|
403
|
+
this.change$,
|
|
404
|
+
])
|
|
405
|
+
.pipe(take(1), switchMap(([formName, taskInstanceId, change]) => this.viewModelService
|
|
406
|
+
.updateViewModel(formName, taskInstanceId, change.data, this.formio.formio.page, this._isWizard)
|
|
407
|
+
.pipe(tap({
|
|
408
|
+
next: viewModel => this.handleViewModelUpdate(viewModel),
|
|
409
|
+
error: error => this.handleViewModelUpdateError(error),
|
|
410
|
+
}))))
|
|
411
|
+
.subscribe();
|
|
412
|
+
}
|
|
399
413
|
updateViewModelForStartForm() {
|
|
400
|
-
this.
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
this.loading$.next(false);
|
|
414
|
-
this.errors = [];
|
|
415
|
-
},
|
|
416
|
-
error: error => {
|
|
417
|
-
this.loading$.next(false);
|
|
418
|
-
this.handleFormError(error);
|
|
419
|
-
},
|
|
420
|
-
}))));
|
|
421
|
-
}
|
|
422
|
-
return of(null); // Fallback to return an observable if updating is true
|
|
423
|
-
}))
|
|
414
|
+
this.pendingUpdateSubscription?.unsubscribe();
|
|
415
|
+
this.pendingUpdateSubscription = combineLatest([
|
|
416
|
+
this.formName$,
|
|
417
|
+
this.processDefinitionKey$,
|
|
418
|
+
this.change$,
|
|
419
|
+
this.documentId$,
|
|
420
|
+
])
|
|
421
|
+
.pipe(take(1), switchMap(([formName, processDefinitionKey, change, documentId]) => this.viewModelService
|
|
422
|
+
.updateViewModelForStartForm(formName, processDefinitionKey, documentId, change.data, this.formio.formio.page, this._isWizard)
|
|
423
|
+
.pipe(tap({
|
|
424
|
+
next: viewModel => this.handleViewModelUpdate(viewModel),
|
|
425
|
+
error: error => this.handleViewModelUpdateError(error),
|
|
426
|
+
}))))
|
|
424
427
|
.subscribe();
|
|
425
428
|
}
|
|
429
|
+
handleViewModelUpdate(viewModel) {
|
|
430
|
+
const submission = this.submission$.value;
|
|
431
|
+
submission.data = viewModel;
|
|
432
|
+
this.submission$.next(submission);
|
|
433
|
+
this.handlePageChange();
|
|
434
|
+
this.refreshForm.emit({ submission });
|
|
435
|
+
this.pendingUpdateSubscription?.unsubscribe();
|
|
436
|
+
this.pendingUpdateSubscription = null;
|
|
437
|
+
this.formErrors$.next([]);
|
|
438
|
+
this.setWaitCursor(false);
|
|
439
|
+
}
|
|
440
|
+
handleViewModelUpdateError(error) {
|
|
441
|
+
this.pendingUpdateSubscription?.unsubscribe();
|
|
442
|
+
this.pendingUpdateSubscription = null;
|
|
443
|
+
this.handleFormError(error);
|
|
444
|
+
this.setWaitCursor(false);
|
|
445
|
+
}
|
|
446
|
+
setWaitCursor(enabled) {
|
|
447
|
+
document.body.style.cursor = enabled ? 'wait' : 'auto';
|
|
448
|
+
}
|
|
426
449
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormViewModelComponent, deps: [{ token: ViewModelService }, { token: i2$1.TranslateService }, { token: i3.FormIoStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
427
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormViewModelComponent, isStandalone: true, selector: "valtimo-form-view-model", inputs: { options: "options", submission: "submission", form: "form", formName: "formName", taskInstanceId: "taskInstanceId", isStartForm: "isStartForm", processDefinitionKey: "processDefinitionKey", documentDefinitionName: "documentDefinitionName" }, outputs: { formSubmit: "formSubmit" }, viewQueries: [{ propertyName: "formio", first: true, predicate: ["formio"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"form-container formio-carbon\"\n *ngIf=\"{\n submission: submission$ | async,\n form: form$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async,\n formioOptions: formioOptions$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"overlay\">\n <div class=\"spinner\">\n <i class=\"fa fa-spinner fa-spin\"></i>\n </div>\n </div>\n\n <div *ngIf=\"errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of errors\" class=\"pl-2\">\n {{ error }}\n </li>\n </ol>\n </div>\n\n <formio\n #formio\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [options]=\"obs.formioOptions\"\n [refresh]=\"refreshForm\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n (focusin)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n (nextPage)=\"onNextPage()\"\n (prevPage)=\"onPreviousPage()\"\n ></formio>\n</div>\n", styles: [".form-container{position:relative}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#fffc;z-index:1000;display:flex;justify-content:center;align-items:center;pointer-events:all}.spinner{font-size:3rem;color:#007bff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormioModule }, { kind: "component", type: i5.FormioComponent, selector: "formio" }] }); }
|
|
450
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormViewModelComponent, isStandalone: true, selector: "valtimo-form-view-model", inputs: { options: "options", submission: "submission", form: "form", formName: "formName", taskInstanceId: "taskInstanceId", isStartForm: "isStartForm", documentId: "documentId", processDefinitionKey: "processDefinitionKey", documentDefinitionName: "documentDefinitionName" }, outputs: { formSubmit: "formSubmit" }, viewQueries: [{ propertyName: "formio", first: true, predicate: ["formio"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"form-container formio-carbon\"\n cdsLayer=\"1.0\"\n *ngIf=\"{\n submission: submission$ | async,\n form: form$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async,\n formioOptions: formioOptions$ | async,\n loading: loading$ | async,\n errors: formErrors$ | async,\n renderOptions: renderOptions$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"overlay\">\n <div class=\"spinner\">\n <i class=\"fa fa-spinner fa-spin\"></i>\n </div>\n </div>\n\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\" class=\"pl-2\">\n {{ error }}\n </li>\n </ol>\n </div>\n\n <formio\n #formio\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [options]=\"obs.formioOptions\"\n [renderOptions]=\"obs.renderOptions\"\n [refresh]=\"refreshForm\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n (focusin)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n (nextPage)=\"onNextPage()\"\n (prevPage)=\"onPreviousPage()\"\n ></formio>\n</div>\n", styles: [".form-container{position:relative}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#fffc;z-index:1000;display:flex;justify-content:center;align-items:center;pointer-events:all}.spinner{font-size:3rem;color:#007bff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormioModule }, { kind: "component", type: i5.FormioComponent, selector: "formio" }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i6.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }] }); }
|
|
428
451
|
}
|
|
429
452
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormViewModelComponent, decorators: [{
|
|
430
453
|
type: Component,
|
|
431
|
-
args: [{ selector: 'valtimo-form-view-model', standalone: true, imports: [CommonModule, FormioModule], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"form-container formio-carbon\"\n *ngIf=\"{\n submission: submission$ | async,\n form: form$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async,\n formioOptions: formioOptions$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"overlay\">\n <div class=\"spinner\">\n <i class=\"fa fa-spinner fa-spin\"></i>\n </div>\n </div>\n\n <div *ngIf=\"errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of errors\" class=\"pl-2\">\n {{ error }}\n </li>\n </ol>\n </div>\n\n <formio\n #formio\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [options]=\"obs.formioOptions\"\n [refresh]=\"refreshForm\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n (focusin)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n (nextPage)=\"onNextPage()\"\n (prevPage)=\"onPreviousPage()\"\n ></formio>\n</div>\n", styles: [".form-container{position:relative}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#fffc;z-index:1000;display:flex;justify-content:center;align-items:center;pointer-events:all}.spinner{font-size:3rem;color:#007bff}\n"] }]
|
|
454
|
+
args: [{ selector: 'valtimo-form-view-model', standalone: true, imports: [CommonModule, FormioModule, LayerModule], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"form-container formio-carbon\"\n cdsLayer=\"1.0\"\n *ngIf=\"{\n submission: submission$ | async,\n form: form$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async,\n formioOptions: formioOptions$ | async,\n loading: loading$ | async,\n errors: formErrors$ | async,\n renderOptions: renderOptions$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"overlay\">\n <div class=\"spinner\">\n <i class=\"fa fa-spinner fa-spin\"></i>\n </div>\n </div>\n\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\" class=\"pl-2\">\n {{ error }}\n </li>\n </ol>\n </div>\n\n <formio\n #formio\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [options]=\"obs.formioOptions\"\n [renderOptions]=\"obs.renderOptions\"\n [refresh]=\"refreshForm\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n (focusin)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n (nextPage)=\"onNextPage()\"\n (prevPage)=\"onPreviousPage()\"\n ></formio>\n</div>\n", styles: [".form-container{position:relative}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#fffc;z-index:1000;display:flex;justify-content:center;align-items:center;pointer-events:all}.spinner{font-size:3rem;color:#007bff}\n"] }]
|
|
432
455
|
}], ctorParameters: () => [{ type: ViewModelService }, { type: i2$1.TranslateService }, { type: i3.FormIoStateService }], propDecorators: { formio: [{
|
|
433
456
|
type: ViewChild,
|
|
434
457
|
args: ['formio']
|
|
@@ -444,6 +467,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
444
467
|
type: Input
|
|
445
468
|
}], isStartForm: [{
|
|
446
469
|
type: Input
|
|
470
|
+
}], documentId: [{
|
|
471
|
+
type: Input
|
|
447
472
|
}], processDefinitionKey: [{
|
|
448
473
|
type: Input
|
|
449
474
|
}], documentDefinitionName: [{
|